oh-my-claudecode 0.1.5 → 0.2.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 (161) hide show
  1. package/README.md +28 -4
  2. package/bin/yith-mcp.js +5 -0
  3. package/commands/bind-necronomicon.md +106 -0
  4. package/commands/cthulhu.md +9 -0
  5. package/dist/agents/cthulhu.d.ts.map +1 -1
  6. package/dist/agents/cthulhu.js +7 -0
  7. package/dist/agents/cthulhu.js.map +1 -1
  8. package/dist/cli/doctor.d.ts +7 -0
  9. package/dist/cli/doctor.d.ts.map +1 -1
  10. package/dist/cli/doctor.js +156 -0
  11. package/dist/cli/doctor.js.map +1 -1
  12. package/dist/cli/index.js +7 -2
  13. package/dist/cli/index.js.map +1 -1
  14. package/dist/cli/install.d.ts.map +1 -1
  15. package/dist/cli/install.js +264 -1
  16. package/dist/cli/install.js.map +1 -1
  17. package/dist/features/yith-archive/config.d.ts.map +1 -1
  18. package/dist/features/yith-archive/config.js +6 -1
  19. package/dist/features/yith-archive/config.js.map +1 -1
  20. package/dist/features/yith-archive/functions/auto-forget.d.ts.map +1 -1
  21. package/dist/features/yith-archive/functions/auto-forget.js +3 -2
  22. package/dist/features/yith-archive/functions/auto-forget.js.map +1 -1
  23. package/dist/features/yith-archive/functions/backfill.d.ts +27 -0
  24. package/dist/features/yith-archive/functions/backfill.d.ts.map +1 -0
  25. package/dist/features/yith-archive/functions/backfill.js +414 -0
  26. package/dist/features/yith-archive/functions/backfill.js.map +1 -0
  27. package/dist/features/yith-archive/functions/compress.d.ts +7 -0
  28. package/dist/features/yith-archive/functions/compress.d.ts.map +1 -1
  29. package/dist/features/yith-archive/functions/compress.js +127 -0
  30. package/dist/features/yith-archive/functions/compress.js.map +1 -1
  31. package/dist/features/yith-archive/functions/consolidate.d.ts +11 -0
  32. package/dist/features/yith-archive/functions/consolidate.d.ts.map +1 -1
  33. package/dist/features/yith-archive/functions/consolidate.js +221 -3
  34. package/dist/features/yith-archive/functions/consolidate.js.map +1 -1
  35. package/dist/features/yith-archive/functions/consolidation-pipeline.d.ts +21 -0
  36. package/dist/features/yith-archive/functions/consolidation-pipeline.d.ts.map +1 -1
  37. package/dist/features/yith-archive/functions/consolidation-pipeline.js +522 -0
  38. package/dist/features/yith-archive/functions/consolidation-pipeline.js.map +1 -1
  39. package/dist/features/yith-archive/functions/crystallize.d.ts +20 -0
  40. package/dist/features/yith-archive/functions/crystallize.d.ts.map +1 -1
  41. package/dist/features/yith-archive/functions/crystallize.js +136 -0
  42. package/dist/features/yith-archive/functions/crystallize.js.map +1 -1
  43. package/dist/features/yith-archive/functions/diagnostics.d.ts.map +1 -1
  44. package/dist/features/yith-archive/functions/diagnostics.js +2 -1
  45. package/dist/features/yith-archive/functions/diagnostics.js.map +1 -1
  46. package/dist/features/yith-archive/functions/evict.d.ts.map +1 -1
  47. package/dist/features/yith-archive/functions/evict.js +3 -2
  48. package/dist/features/yith-archive/functions/evict.js.map +1 -1
  49. package/dist/features/yith-archive/functions/export-import.d.ts.map +1 -1
  50. package/dist/features/yith-archive/functions/export-import.js +19 -1
  51. package/dist/features/yith-archive/functions/export-import.js.map +1 -1
  52. package/dist/features/yith-archive/functions/flow-compress.d.ts +2 -0
  53. package/dist/features/yith-archive/functions/flow-compress.d.ts.map +1 -1
  54. package/dist/features/yith-archive/functions/flow-compress.js +130 -1
  55. package/dist/features/yith-archive/functions/flow-compress.js.map +1 -1
  56. package/dist/features/yith-archive/functions/graph.d.ts +2 -0
  57. package/dist/features/yith-archive/functions/graph.d.ts.map +1 -1
  58. package/dist/features/yith-archive/functions/graph.js +115 -0
  59. package/dist/features/yith-archive/functions/graph.js.map +1 -1
  60. package/dist/features/yith-archive/functions/query-expansion.d.ts +2 -0
  61. package/dist/features/yith-archive/functions/query-expansion.d.ts.map +1 -1
  62. package/dist/features/yith-archive/functions/query-expansion.js +75 -0
  63. package/dist/features/yith-archive/functions/query-expansion.js.map +1 -1
  64. package/dist/features/yith-archive/functions/reflect.d.ts +6 -0
  65. package/dist/features/yith-archive/functions/reflect.d.ts.map +1 -1
  66. package/dist/features/yith-archive/functions/reflect.js +240 -0
  67. package/dist/features/yith-archive/functions/reflect.js.map +1 -1
  68. package/dist/features/yith-archive/functions/relations.d.ts.map +1 -1
  69. package/dist/features/yith-archive/functions/relations.js +5 -4
  70. package/dist/features/yith-archive/functions/relations.js.map +1 -1
  71. package/dist/features/yith-archive/functions/remember.d.ts.map +1 -1
  72. package/dist/features/yith-archive/functions/remember.js +6 -3
  73. package/dist/features/yith-archive/functions/remember.js.map +1 -1
  74. package/dist/features/yith-archive/functions/retention.d.ts.map +1 -1
  75. package/dist/features/yith-archive/functions/retention.js +2 -1
  76. package/dist/features/yith-archive/functions/retention.js.map +1 -1
  77. package/dist/features/yith-archive/functions/search.d.ts +52 -0
  78. package/dist/features/yith-archive/functions/search.d.ts.map +1 -1
  79. package/dist/features/yith-archive/functions/search.js +243 -27
  80. package/dist/features/yith-archive/functions/search.js.map +1 -1
  81. package/dist/features/yith-archive/functions/skill-extract.d.ts +2 -0
  82. package/dist/features/yith-archive/functions/skill-extract.d.ts.map +1 -1
  83. package/dist/features/yith-archive/functions/skill-extract.js +192 -0
  84. package/dist/features/yith-archive/functions/skill-extract.js.map +1 -1
  85. package/dist/features/yith-archive/functions/sliding-window.d.ts +22 -0
  86. package/dist/features/yith-archive/functions/sliding-window.d.ts.map +1 -1
  87. package/dist/features/yith-archive/functions/sliding-window.js +327 -0
  88. package/dist/features/yith-archive/functions/sliding-window.js.map +1 -1
  89. package/dist/features/yith-archive/functions/snapshot.d.ts.map +1 -1
  90. package/dist/features/yith-archive/functions/snapshot.js +14 -0
  91. package/dist/features/yith-archive/functions/snapshot.js.map +1 -1
  92. package/dist/features/yith-archive/functions/summarize.d.ts +2 -0
  93. package/dist/features/yith-archive/functions/summarize.d.ts.map +1 -1
  94. package/dist/features/yith-archive/functions/summarize.js +113 -0
  95. package/dist/features/yith-archive/functions/summarize.js.map +1 -1
  96. package/dist/features/yith-archive/functions/temporal-graph.d.ts +5 -0
  97. package/dist/features/yith-archive/functions/temporal-graph.d.ts.map +1 -1
  98. package/dist/features/yith-archive/functions/temporal-graph.js +129 -0
  99. package/dist/features/yith-archive/functions/temporal-graph.js.map +1 -1
  100. package/dist/features/yith-archive/functions/working-memory.d.ts.map +1 -1
  101. package/dist/features/yith-archive/functions/working-memory.js +2 -1
  102. package/dist/features/yith-archive/functions/working-memory.js.map +1 -1
  103. package/dist/features/yith-archive/index.d.ts +15 -0
  104. package/dist/features/yith-archive/index.d.ts.map +1 -1
  105. package/dist/features/yith-archive/index.js +83 -21
  106. package/dist/features/yith-archive/index.js.map +1 -1
  107. package/dist/features/yith-archive/providers/embedding/local.d.ts +28 -2
  108. package/dist/features/yith-archive/providers/embedding/local.d.ts.map +1 -1
  109. package/dist/features/yith-archive/providers/embedding/local.js +57 -7
  110. package/dist/features/yith-archive/providers/embedding/local.js.map +1 -1
  111. package/dist/features/yith-archive/providers/index.d.ts +31 -1
  112. package/dist/features/yith-archive/providers/index.d.ts.map +1 -1
  113. package/dist/features/yith-archive/providers/index.js +70 -0
  114. package/dist/features/yith-archive/providers/index.js.map +1 -1
  115. package/dist/features/yith-archive/state/hybrid-search.d.ts.map +1 -1
  116. package/dist/features/yith-archive/state/hybrid-search.js +28 -8
  117. package/dist/features/yith-archive/state/hybrid-search.js.map +1 -1
  118. package/dist/features/yith-archive/state/index-persistence.d.ts +31 -1
  119. package/dist/features/yith-archive/state/index-persistence.d.ts.map +1 -1
  120. package/dist/features/yith-archive/state/index-persistence.js +92 -5
  121. package/dist/features/yith-archive/state/index-persistence.js.map +1 -1
  122. package/dist/features/yith-archive/state/kv.d.ts +9 -1
  123. package/dist/features/yith-archive/state/kv.d.ts.map +1 -1
  124. package/dist/features/yith-archive/state/kv.js +33 -5
  125. package/dist/features/yith-archive/state/kv.js.map +1 -1
  126. package/dist/features/yith-archive/state/logger.d.ts.map +1 -1
  127. package/dist/features/yith-archive/state/logger.js +6 -3
  128. package/dist/features/yith-archive/state/logger.js.map +1 -1
  129. package/dist/features/yith-archive/state/schema.d.ts +10 -0
  130. package/dist/features/yith-archive/state/schema.d.ts.map +1 -1
  131. package/dist/features/yith-archive/state/schema.js +10 -0
  132. package/dist/features/yith-archive/state/schema.js.map +1 -1
  133. package/dist/features/yith-archive/state/search-index.d.ts +32 -1
  134. package/dist/features/yith-archive/state/search-index.d.ts.map +1 -1
  135. package/dist/features/yith-archive/state/search-index.js +77 -7
  136. package/dist/features/yith-archive/state/search-index.js.map +1 -1
  137. package/dist/features/yith-archive/state/work-packets.d.ts +208 -0
  138. package/dist/features/yith-archive/state/work-packets.d.ts.map +1 -0
  139. package/dist/features/yith-archive/state/work-packets.js +201 -0
  140. package/dist/features/yith-archive/state/work-packets.js.map +1 -0
  141. package/dist/hooks/cthulhu-auto.d.ts +1 -1
  142. package/dist/hooks/cthulhu-auto.d.ts.map +1 -1
  143. package/dist/hooks/cthulhu-auto.js +18 -0
  144. package/dist/hooks/cthulhu-auto.js.map +1 -1
  145. package/dist/hooks/memory-override.d.ts +1 -1
  146. package/dist/hooks/memory-override.d.ts.map +1 -1
  147. package/dist/hooks/memory-override.js +80 -23
  148. package/dist/hooks/memory-override.js.map +1 -1
  149. package/dist/mcp/yith-catalog.d.ts +66 -0
  150. package/dist/mcp/yith-catalog.d.ts.map +1 -0
  151. package/dist/mcp/yith-catalog.js +322 -0
  152. package/dist/mcp/yith-catalog.js.map +1 -0
  153. package/dist/mcp/yith-server.d.ts +13 -0
  154. package/dist/mcp/yith-server.d.ts.map +1 -0
  155. package/dist/mcp/yith-server.js +102 -0
  156. package/dist/mcp/yith-server.js.map +1 -0
  157. package/dist/mcp/yith-tools.d.ts +27 -0
  158. package/dist/mcp/yith-tools.d.ts.map +1 -0
  159. package/dist/mcp/yith-tools.js +405 -0
  160. package/dist/mcp/yith-tools.js.map +1 -0
  161. package/package.json +4 -2
package/README.md CHANGED
@@ -57,10 +57,11 @@ These aren't three plugins you pick and choose. They're one integrated system th
57
57
  | Capability | What it does |
58
58
  |---|---|
59
59
  | **11 Elder God agents** | Cthulhu orchestrator + 10 specialists (search, advisory, planning, review, docs, autonomy, vision, etc.) |
60
- | **Yith Archive** | Persistent cross-session memory with retrieval-based injection. Dozens of memory primitives: remember, search, consolidate, evict, crystallize, reflect, temporal graph, pattern extraction, and more. |
60
+ | **Yith Archive** | Persistent cross-session memory with retrieval-based injection. Dozens of memory primitives: remember, search, consolidate, evict, crystallize, reflect, temporal graph, pattern extraction, and more. Exposed to Claude Code as a stdio MCP server with 7 tools. |
61
+ | **Work-packet protocol** | LLM-requiring memory ops (consolidate, summarize, reflect, etc.) run in sessions with no API key — each function has a state-machine variant that emits prompts for the parent agent to execute with its own subscription auth. |
61
62
  | **Block Summarizer** | In-session delegation summarization with on-disk block archive |
62
63
  | **8 lifecycle hooks** | Auto-activation, memory redirect, todo enforcement, completion loops, code-quality checks, rule injection, write guards |
63
- | **9 slash commands** | Direct-invoke any mode or flow from the Claude Code chat bar |
64
+ | **10 slash commands** | Direct-invoke any mode or flow from the Claude Code chat bar |
64
65
  | **Intent gate** | Every user message is classified and routed before Cthulhu acts |
65
66
  | **Work plan system** | Multi-step planning flow with interview → scope → plan → review before execution |
66
67
  | **3-level config** | Defaults → user (`~/.claude/oh-my-claudecode.jsonc`) → project (`.claude/...`) with Zod validation and partial parsing |
@@ -135,12 +136,34 @@ Named for the Great Race of Yith from *The Shadow Out of Time* — mind-transfer
135
136
 
136
137
  ### What it gives you
137
138
 
138
- - **Hybrid retrieval** — BM25 keyword search combined with optional semantic embedding search (via `@xenova/transformers`) and a graph retrieval weight. Only the most relevant memories get injected into new sessions, not everything.
139
+ - **Hybrid retrieval** — BM25 keyword search combined with semantic embedding search (local nomic model by default, 768 dims, lazy-downloaded on first use) and a graph retrieval weight. Memories AND observations both land in the same index at write-time, so `yith_search` returns freshly-written memories immediately.
140
+ - **Exposed as an MCP server** — during `install`, Yith Archive is registered with Claude Code as a stdio MCP server named `yith-archive`. Sessions get 7 tools: `yith_remember`, `yith_search`, `yith_recall`, `yith_context`, `yith_observe`, `yith_commit_work`, and `yith_trigger` (escape hatch for ~90 advanced memory functions, with a curated top-20 catalog embedded in the tool description).
139
141
  - **Rich memory primitives** — `remember`, `search`, `recall`, `context`, `observe`, plus dozens more under the hood: consolidation pipelines, temporal graph retrieval, lesson crystallization, pattern extraction, eviction and retention policies, file-scoped memory index, sliding window compression, query expansion, working memory, session timeline, export/import.
140
142
  - **Automatic capture** — notable events during a session can be observed into the archive; a background consolidation pass merges similar memories into distilled lessons.
141
- - **Zero external runtime** — file-backed JSON storage under `~/.oh-my-claudecode/yith/store.json`. No database, no background server, no subprocess, no network, no ports to manage.
143
+ - **Zero external runtime** — file-backed JSON storage at `~/.oh-my-claudecode/yith/necronomicon.json` (legacy installs are auto-migrated from `store.json` on boot). Atomic writes via tmpfile + rename so a crash mid-write can't corrupt the tome. No database, no background server, no subprocess, no network, no ports to manage. The MCP server itself is registered user-level in `~/.claude.json`.
144
+ - **Crash-safe work-packet flows** — pending continuations for LLM-requiring operations persist to the same store and survive server restarts; resuming with the same continuation token picks up where the flow left off.
142
145
  - **Replaces Claude Code's built-in auto-memory** via the `memory-override` SessionStart hook, which tells the session not to write to the built-in memory files. Disable the override with `disabled_hooks: ["memory-override"]` if you prefer to keep the built-in system active.
143
146
 
147
+ ### Work-packet protocol — LLM ops without an API key
148
+
149
+ 13 of Yith's memory operations need an LLM to do their work (`crystallize`, `consolidate`, `consolidate-pipeline`, `compress`, `summarize`, `flow-compress`, `graph-extract`, `temporal-graph-extract`, `expand-query`, `skill-extract`, `reflect`, `enrich-window`, `enrich-session`). If Yith has its own `ANTHROPIC_API_KEY` in `~/.oh-my-claudecode/yith/.env`, these run directly in-process.
150
+
151
+ If no API key is configured, the session doesn't lose access to these functions — they just route through the **work-packet protocol** instead. Each LLM-requiring function has a `-step` state-machine variant that emits `WorkPacket` descriptors (systemPrompt + userPrompt + metadata) instead of calling the LLM itself. The flow looks like this:
152
+
153
+ ```
154
+ yith_trigger("mem::consolidate-pipeline", {...})
155
+
156
+ {status: "needs_llm_work", workPackets: [...], continuation: "wp_..."}
157
+
158
+ Claude Code session executes each packet's prompts with its own subscription auth
159
+
160
+ yith_commit_work(continuation, [{id, completion}, ...])
161
+
162
+ {status: "needs_llm_work", ...} (another round) OR {status: "success", result}
163
+ ```
164
+
165
+ Multi-call functions like `consolidate-pipeline` chain multiple rounds (semantic → reflect → procedural). Loop functions like `consolidate` / `reflect` / `enrich-session` emit packets in adaptive batches via `planLoopBatches` — small loops go "all-at-once" in one round, large loops batch in chunks sized by packet count or total prompt bytes. `doctor --yith-functions` marks LLM-requiring functions with a ⚡ so callers know to expect the `needs_llm_work` envelope.
166
+
144
167
  ### Programmatic API
145
168
 
146
169
  ```ts
@@ -210,6 +233,7 @@ After installation these are available in Claude Code sessions:
210
233
  | Command | Description |
211
234
  |---------|-------------|
212
235
  | `/cthulhu` | Activate Cthulhu orchestrator mode (also creates `.elder-gods/` on first use) |
236
+ | `/bind-necronomicon` | First-time Yith Archive setup ritual — tome check, embedding warmup, search verify, optional session backfill |
213
237
  | `/shoggoth` | Fast parallel codebase search |
214
238
  | `/yog-sothoth` | Consult the architecture/debug advisor |
215
239
  | `/elder-loop` | Start the self-referential completion loop |
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+ import('../dist/mcp/yith-server.js').catch((err) => {
3
+ console.error('yith-mcp: failed to load server', err.message);
4
+ process.exit(1);
5
+ });
@@ -0,0 +1,106 @@
1
+ ---
2
+ name: bind-necronomicon
3
+ description: First-run setup ritual for Yith Archive. Verifies the MCP server is reachable, warms up the embedding model, and offers to backfill past Claude Code sessions into the Necronomicon. Safe to run multiple times — it detects what's already done.
4
+ ---
5
+
6
+ You are performing the binding ritual for the **Necronomicon** — the on-disk grimoire that the Great Race of Yith maintains for this machine. The Necronomicon is the physical JSON file at `~/.oh-my-claudecode/yith/necronomicon.json`; Yith Archive is the archival practice that writes to and reads from it. Both names refer to the same system, viewed through different lenses.
7
+
8
+ Run the ritual in phases. For each phase, print a header line, run the check, and report the outcome with a status glyph (`✓`, `⚠`, `✗`, or `…`) and a short explanation. Do NOT proceed to the next phase until the current one is resolved.
9
+
10
+ ## Phase I — The Tome Exists
11
+
12
+ Check whether the Necronomicon has been bound on this machine.
13
+
14
+ 1. Use the `yith_context` MCP tool with a placeholder project like `{ project: "." }`. This is a lightweight call that exercises the MCP server without writing anything.
15
+ 2. If the tool returns successfully (even with empty context), the server is reachable → `✓ Necronomicon is bound and the Great Race answers.`
16
+ 3. If the MCP tool is not available at all (the `yith_trigger`/`yith_context` tools don't appear in your tool list), the MCP server is not registered. Tell the user to run `oh-my-claudecode install` in their terminal, then start a NEW Claude Code session and re-run `/bind-necronomicon`. Stop here.
17
+ 4. If the tool is available but errors out, report the error verbatim and stop.
18
+
19
+ ## Phase II — The Embedding Sigil
20
+
21
+ If this is a fresh install, the local nomic embedding model (~137 MB) has not been downloaded yet. The first memory write or search triggers the download. We'll warm it up explicitly now so the first real use is fast.
22
+
23
+ 1. Call `yith_remember` with a harmless sentinel memory:
24
+ ```
25
+ yith_remember({
26
+ content: "Necronomicon binding sentinel — written during /bind-necronomicon ritual",
27
+ type: "reference",
28
+ concepts: ["bind-necronomicon", "sentinel"]
29
+ })
30
+ ```
31
+ 2. The response may take 30-90 seconds on first call because the nomic model downloads in the background. While you wait, print a progress indicator to the user:
32
+ ```
33
+ ▓▓▓▓▓▓▓▓▓░░░░░░░░ warming up the embedding sigil...
34
+ ```
35
+ (Only one frame — you cannot actually animate in a Claude Code session. The single bar communicates "work is happening, this is the expected delay.")
36
+ 3. If the call succeeds → `✓ The embedding sigil pulses. Model is cached under ~/.cache/huggingface/.`
37
+ 4. If the call fails with a network error, tell the user the nomic download needs internet and offer to skip this phase (BM25-only mode still works). Continue.
38
+ 5. If the call fails with a parse or validation error, report it and stop.
39
+
40
+ ## Phase III — Searching the Tome
41
+
42
+ Verify hybrid search actually returns the sentinel memory we just wrote.
43
+
44
+ 1. Call `yith_search({ query: "Necronomicon binding sentinel", limit: 5 })`.
45
+ 2. If the result contains at least one hit referencing the sentinel → `✓ Hybrid search is operational (BM25 + vector index in sync).`
46
+ 3. If zero hits but the sentinel is definitely in KV (you can verify with `yith_trigger({ name: "mem::diagnose", args: {} })`), the index is out of sync. Call `yith_trigger({ name: "mem::rebuild-index", args: {} })` if such a function exists, or tell the user to restart their Claude Code session (the MCP server rebuilds the index on boot). Continue.
47
+
48
+ ## Phase IV — Past Sessions (Optional)
49
+
50
+ The user may have Claude Code transcripts from past sessions on this machine, in `~/.claude/projects/<sanitized-cwd>/*.jsonl`. Offer to backfill them into the Necronomicon so the archive has history from before it existed.
51
+
52
+ 1. Ask the user: "Would you like to backfill past Claude Code sessions into the Necronomicon? This reads your historical `~/.claude/projects/` transcripts and converts user prompts + assistant responses + tool calls into observations that get compressed and made searchable. (yes / skip / specific-project-path)"
53
+ 2. If the user says `skip`, note it and move on.
54
+ 3. If they say `yes` or provide a path, run:
55
+ ```
56
+ yith_trigger({
57
+ name: "mem::backfill-sessions",
58
+ args: {
59
+ projectCwd: <path or "." for cwd>,
60
+ dryRun: false,
61
+ maxObservations: 500
62
+ }
63
+ })
64
+ ```
65
+ 4. The backfill runs through the work-packet loop. Each compression round will return a `needs_llm_work` envelope with one or more packets. For each round:
66
+ - Run the packets' prompts through your own reasoning (inline — the systemPrompt + userPrompt describe a compression task, you act as the LLM for Yith).
67
+ - Commit the completions via `yith_commit_work({ continuation, packetResults: [...] })`.
68
+ - Loop until the response is terminal.
69
+ 5. Between rounds, render a progress bar using monospace ASCII:
70
+ ```
71
+ [▓▓▓▓▓▓░░░░░░░░░░░░] 34% — 171/500 observations compressed
72
+ ```
73
+ Update the numbers in each round's status message. Users can't get an animated bar, but a re-printed bar in each tool call shows forward motion.
74
+ 6. Report the final counts from the backfill terminal result.
75
+
76
+ ## Phase V — Sealing the Ritual
77
+
78
+ 1. Print a summary of what was done:
79
+ ```
80
+ ═════════════════════════════════════════════════════
81
+ The Necronomicon is bound.
82
+ ═════════════════════════════════════════════════════
83
+ Tome: ~/.oh-my-claudecode/yith/necronomicon.json
84
+ MCP server: yith-archive (reachable)
85
+ Embedding model: local:nomic-embed-text-v1.5 (768 dims)
86
+ Memories: <count from yith_trigger mem::diagnose>
87
+ Observations: <count from yith_trigger mem::diagnose>
88
+ Backfill: <yes/skipped + counts>
89
+ ═════════════════════════════════════════════════════
90
+ The Great Race of Yith now remembers this machine.
91
+ Every new Claude Code session will have access to
92
+ the Necronomicon through yith_search, yith_remember,
93
+ yith_context, and the other MCP tools.
94
+ ```
95
+ 2. If any phase reported a warning, restate the warnings at the end so the user doesn't miss them.
96
+
97
+ ## Re-entry
98
+
99
+ This command is idempotent. Running it twice in a row:
100
+ - Phase I passes immediately (MCP reachable)
101
+ - Phase II is a no-op if the embedding model is already cached (the call returns fast)
102
+ - Phase III passes immediately
103
+ - Phase IV offers to backfill again (the user can skip if they already did it)
104
+ - Phase V prints the final summary
105
+
106
+ Run it any time you want to verify the Necronomicon is still bound.
@@ -7,6 +7,15 @@ Activate Cthulhu orchestrator mode.
7
7
 
8
8
  **First**: ensure `.elder-gods/` exists at the project root. If it does not, create it now (empty is fine — `mkdir .elder-gods`). This marker makes every future Claude Code session in this project auto-activate Cthulhu via the `cthulhu-auto` SessionStart hook, so the user will not need to run `/cthulhu` again here. If the directory already exists, proceed silently.
9
9
 
10
+ **Second — Necronomicon preflight**: before accepting the user's request, verify that the Yith Archive memory system is bound on this machine. Run ONE lightweight check:
11
+
12
+ - Try calling `yith_context({ project: "." })` (the Yith MCP tool).
13
+ - If the tool **is not available at all** (no `yith_context` in your tool list), or if the call errors with "MCP server not connected" / similar, the Necronomicon has not been bound yet.
14
+ - In that case, tell the user exactly: "I notice the Necronomicon hasn't been bound on this machine yet. Run `/bind-necronomicon` first — it's a one-time setup ritual that verifies the MCP server, warms up the embedding model, and optionally backfills past sessions. After that, every Cthulhu session will have persistent memory across projects. Run `/bind-necronomicon` now, or proceed without memory for this session?" Wait for the user's decision before doing anything else.
15
+ - If the tool call succeeds (even with empty context), proceed silently — the Necronomicon is ready.
16
+
17
+ Do this preflight exactly once per session, not before every user message.
18
+
10
19
  You are now operating as Cthulhu, the Great Dreamer — primary orchestrator of the oh-my-claudecode system.
11
20
 
12
21
  Your operating principles:
@@ -1 +1 @@
1
- {"version":3,"file":"cthulhu.d.ts","sourceRoot":"","sources":["../../src/agents/cthulhu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAa,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAiB,MAAM,YAAY,CAAA;AAIlG;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,uBAAuB,EAAE,mBAKrC,CAAA;AA6VD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,eAAe,GAAE,cAAc,EAAO,EACtC,kBAAkB,GAAE,MAAM,EAAO,EACjC,eAAe,GAAE,cAAc,EAAO,EACtC,mBAAmB,GAAE,iBAAiB,EAAO,EAC7C,aAAa,UAAQ,GACpB,WAAW,CAyBb;yBAhCe,kBAAkB"}
1
+ {"version":3,"file":"cthulhu.d.ts","sourceRoot":"","sources":["../../src/agents/cthulhu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAa,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAiB,MAAM,YAAY,CAAA;AAIlG;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,uBAAuB,EAAE,mBAKrC,CAAA;AAoWD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,eAAe,GAAE,cAAc,EAAO,EACtC,kBAAkB,GAAE,MAAM,EAAO,EACjC,eAAe,GAAE,cAAc,EAAO,EACtC,mBAAmB,GAAE,iBAAiB,EAAO,EAC7C,aAAa,UAAQ,GACpB,WAAW,CAyBb;yBAhCe,kBAAkB"}
@@ -328,6 +328,13 @@ If the user's approach seems problematic:
328
328
  - **NEVER** suppress type errors or linter warnings with ignore comments
329
329
  - **NEVER** add features not requested
330
330
  - **NEVER** refactor while fixing bugs
331
+ - **NEVER** estimate work in human time units (days, weeks, sprints, story
332
+ points, "a few hours of dev work"). You are not a human team and you do not
333
+ run on a human calendar. Effort is measured in tool calls, files touched,
334
+ parallel agent fires, and verification passes — not engineering-days.
335
+ If the user asks "how long", respond in those units, or in a seconds-to-minutes
336
+ range scoped to the current session. Human-time framing is a category error
337
+ and must be refused.
331
338
 
332
339
  ## Anti-Patterns
333
340
 
@@ -1 +1 @@
1
- {"version":3,"file":"cthulhu.js","sourceRoot":"","sources":["../../src/agents/cthulhu.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cthulhu.js","sourceRoot":"","sources":["../../src/agents/cthulhu.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,9 @@
1
+ /**
2
+ * Print the full Yith function catalog grouped by category. Invoked via
3
+ * `oh-my-claudecode doctor --yith-functions`. Doesn't touch the runtime
4
+ * archive — just reads from the static catalog module, which is the
5
+ * single source of truth for what functions exist.
6
+ */
7
+ export declare function printYithFunctionCatalog(): void;
1
8
  export declare function runDoctor(projectDirectory?: string): Promise<void>;
2
9
  //# sourceMappingURL=doctor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAkCA,wBAAsB,SAAS,CAAC,gBAAgB,GAAE,MAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsHvF"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AA0BA;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAiC/C;AAwBD,wBAAsB,SAAS,CAAC,gBAAgB,GAAE,MAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsQvF"}
@@ -3,11 +3,48 @@ import * as path from "path";
3
3
  import { ALL_HOOK_DEFINITIONS } from "../hooks/index.js";
4
4
  import { AGENT_METADATA_MAP } from "../agents/builtin-agents.js";
5
5
  import { loadPluginConfig } from "../plugin-config.js";
6
+ import { FULL_CATALOG, groupFullCatalog, LLM_REQUIRED_FUNCTIONS, } from "../mcp/yith-catalog.js";
6
7
  const HOME = process.env.HOME ?? process.env.USERPROFILE ?? "";
7
8
  const CLAUDE_DIR = path.join(HOME, ".claude");
8
9
  const HOOKS_DIR = path.join(CLAUDE_DIR, "hooks");
9
10
  const SKILLS_DIR = path.join(CLAUDE_DIR, "skills");
10
11
  const SETTINGS_PATH = path.join(CLAUDE_DIR, "settings.json");
12
+ /**
13
+ * Claude Code reads user-level MCP servers from ~/.claude.json (top-
14
+ * level `mcpServers`), NOT from ~/.claude/settings.json. The doctor
15
+ * check MUST query this file to report the real registration state.
16
+ */
17
+ const CLAUDE_JSON_PATH = path.join(HOME, ".claude.json");
18
+ const YITH_DATA_DIR = path.join(HOME, ".oh-my-claudecode", "yith");
19
+ const YITH_ENV_PATH = path.join(YITH_DATA_DIR, ".env");
20
+ const MCP_SERVER_NAME = "yith-archive";
21
+ /**
22
+ * Print the full Yith function catalog grouped by category. Invoked via
23
+ * `oh-my-claudecode doctor --yith-functions`. Doesn't touch the runtime
24
+ * archive — just reads from the static catalog module, which is the
25
+ * single source of truth for what functions exist.
26
+ */
27
+ export function printYithFunctionCatalog() {
28
+ console.log("\n╔══════════════════════════════════════════════════════╗");
29
+ console.log("║ Yith Memory Function Catalog ║");
30
+ console.log("╚══════════════════════════════════════════════════════╝\n");
31
+ console.log(` ${FULL_CATALOG.length} functions available via yith_trigger(name, args)`);
32
+ console.log(` ⚡ = needs an LLM (routes through work-packet loop in no-key mode)\n`);
33
+ const groups = groupFullCatalog();
34
+ for (const [category, entries] of groups) {
35
+ console.log(` ── ${category} ${"─".repeat(Math.max(2, 50 - category.length))}`);
36
+ const width = Math.max(...entries.map((e) => e.name.length));
37
+ for (const entry of entries) {
38
+ const marker = LLM_REQUIRED_FUNCTIONS.has(entry.name) ? "⚡ " : " ";
39
+ console.log(` ${marker}${entry.name.padEnd(width)} ${entry.summary}`);
40
+ }
41
+ console.log();
42
+ }
43
+ console.log(" Note: these are NOT first-class MCP tools. Invoke them via:");
44
+ console.log(' yith_trigger({ name: "mem::consolidate-pipeline", args: {} })\n');
45
+ console.log(" The five core memory operations (remember, search, recall, context,");
46
+ console.log(" observe) are first-class MCP tools prefixed `yith_` — use those directly.\n");
47
+ }
11
48
  function check(name, condition, okMsg, failMsg) {
12
49
  return {
13
50
  name,
@@ -78,6 +115,125 @@ export async function runDoctor(projectDirectory = process.cwd()) {
78
115
  });
79
116
  }
80
117
  }
118
+ // ── Check 8: Yith data directory ────────────────────────────────────────────
119
+ const yithDirExists = fs.existsSync(YITH_DATA_DIR);
120
+ results.push(check("Yith data dir", yithDirExists, `${YITH_DATA_DIR} exists`, `${YITH_DATA_DIR} not found — run: oh-my-claudecode install`));
121
+ // ── Check 9: Yith MCP server registered in ~/.claude.json ─────────────────
122
+ // Claude Code reads user-level MCP servers from ~/.claude.json top-
123
+ // level `mcpServers`, NOT from ~/.claude/settings.json. Check the
124
+ // right file or the report is meaningless. Also warn if a stale
125
+ // entry still exists in settings.json (old buggy install).
126
+ const claudeJsonExists = fs.existsSync(CLAUDE_JSON_PATH);
127
+ if (claudeJsonExists) {
128
+ try {
129
+ const claudeJson = JSON.parse(fs.readFileSync(CLAUDE_JSON_PATH, "utf-8"));
130
+ const mcpServers = claudeJson.mcpServers;
131
+ const yithEntry = mcpServers?.[MCP_SERVER_NAME];
132
+ if (yithEntry) {
133
+ const serverCmd = yithEntry.args?.[0] ?? yithEntry.command ?? "(unknown)";
134
+ results.push({
135
+ name: "Yith MCP server",
136
+ status: "ok",
137
+ message: `Registered in ~/.claude.json → ${path.basename(serverCmd)}`,
138
+ });
139
+ }
140
+ else {
141
+ results.push({
142
+ name: "Yith MCP server",
143
+ status: "error",
144
+ message: "Not registered in ~/.claude.json.mcpServers — run: oh-my-claudecode install",
145
+ });
146
+ }
147
+ }
148
+ catch {
149
+ results.push({
150
+ name: "Yith MCP server",
151
+ status: "error",
152
+ message: "~/.claude.json is not valid JSON — cannot check MCP registration",
153
+ });
154
+ }
155
+ }
156
+ else {
157
+ results.push({
158
+ name: "Yith MCP server",
159
+ status: "warn",
160
+ message: "~/.claude.json not found — open Claude Code at least once, then re-run install",
161
+ });
162
+ }
163
+ // Warn if a stale yith-archive entry still exists in the wrong file
164
+ // (upgraded from an older broken install and didn't re-run install).
165
+ if (settingsExists) {
166
+ try {
167
+ const settings = JSON.parse(fs.readFileSync(SETTINGS_PATH, "utf-8"));
168
+ const stale = settings.mcpServers?.[MCP_SERVER_NAME];
169
+ if (stale) {
170
+ results.push({
171
+ name: "Legacy MCP entry",
172
+ status: "warn",
173
+ message: "Stale yith-archive entry in ~/.claude/settings.json — run: oh-my-claudecode install (will auto-clean)",
174
+ });
175
+ }
176
+ }
177
+ catch {
178
+ /* settings.json unparseable, handled by earlier check */
179
+ }
180
+ }
181
+ // ── Check 10: Boot Yith archive and report health ──────────────────────────
182
+ if (yithDirExists) {
183
+ try {
184
+ const { createYithArchive } = await import("../features/yith-archive/index.js");
185
+ const archive = createYithArchive();
186
+ const memoriesMap = (await archive.kv.get("mem:memories", "")) ?? {};
187
+ // kv.list on the memories scope returns the individual memory records.
188
+ const memoryCount = (await archive.kv.list("mem:memories")).length;
189
+ const observationCount = (await archive.kv.list("mem:observations")).length;
190
+ void memoriesMap;
191
+ // Read meta header to report embedding provider state
192
+ const meta = await archive.kv
193
+ .get("mem:index:meta", "current")
194
+ .catch(() => null);
195
+ const providerLine = meta
196
+ ? `${meta.embeddingProvider} (${meta.dimensions} dims, gen ${meta.generation})`
197
+ : "pending first flush";
198
+ results.push({
199
+ name: "Yith archive",
200
+ status: "ok",
201
+ message: `Loaded — ${memoryCount} memories, ${observationCount} observations, embeddings: ${providerLine}`,
202
+ });
203
+ await archive.shutdown();
204
+ }
205
+ catch (err) {
206
+ results.push({
207
+ name: "Yith archive",
208
+ status: "error",
209
+ message: `Failed to boot: ${err instanceof Error ? err.message : String(err)}`,
210
+ });
211
+ }
212
+ }
213
+ // ── Check 11: Yith .env permissions if it exists ────────────────────────────
214
+ if (fs.existsSync(YITH_ENV_PATH)) {
215
+ try {
216
+ const stat = fs.statSync(YITH_ENV_PATH);
217
+ const mode = stat.mode & 0o777;
218
+ if (mode === 0o600) {
219
+ results.push({
220
+ name: "Yith .env perms",
221
+ status: "ok",
222
+ message: `${YITH_ENV_PATH} mode 600`,
223
+ });
224
+ }
225
+ else {
226
+ results.push({
227
+ name: "Yith .env perms",
228
+ status: "warn",
229
+ message: `${YITH_ENV_PATH} mode ${mode.toString(8)} — should be 600`,
230
+ });
231
+ }
232
+ }
233
+ catch {
234
+ /* skip */
235
+ }
236
+ }
81
237
  // ── Print results ────────────────────────────────────────────────────────────
82
238
  const icons = { ok: "✓", warn: "⚠", error: "✗" };
83
239
  const colors = { ok: "\x1b[32m", warn: "\x1b[33m", error: "\x1b[31m" };
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -2,7 +2,7 @@ import { Command } from "commander";
2
2
  import * as path from "path";
3
3
  import { fileURLToPath } from "url";
4
4
  import { runInstall } from "./install.js";
5
- import { runDoctor } from "./doctor.js";
5
+ import { runDoctor, printYithFunctionCatalog } from "./doctor.js";
6
6
  const __filename = fileURLToPath(import.meta.url);
7
7
  const __dirname = path.dirname(__filename);
8
8
  const PACKAGE_ROOT = path.resolve(__dirname, "../..");
@@ -25,7 +25,12 @@ program
25
25
  .command("doctor")
26
26
  .description("Health diagnostics — verify installation is complete")
27
27
  .argument("[directory]", "Project directory to check", process.cwd())
28
- .action(async (directory) => {
28
+ .option("--yith-functions", "Print the full Yith memory function catalog and exit")
29
+ .action(async (directory, options) => {
30
+ if (options.yithFunctions) {
31
+ printYithFunctionCatalog();
32
+ return;
33
+ }
29
34
  await runDoctor(directory);
30
35
  });
31
36
  program
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;AAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AAErD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,kBAAkB,CAAC;KACxB,WAAW,CAAC,4CAA4C,CAAC;KACzD,OAAO,CAAC,OAAO,CAAC,CAAA;AAEnB,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,+DAA+D,CAAC;KAC5E,MAAM,CAAC,UAAU,EAAE,4CAA4C,CAAC;KAChE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,UAAU,CAAC;QACf,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,WAAW,EAAE,YAAY;KAC1B,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,sDAAsD,CAAC;KACnE,QAAQ,CAAC,aAAa,EAAE,4BAA4B,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;KACpE,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,EAAE;IAClC,MAAM,SAAS,CAAC,SAAS,CAAC,CAAA;AAC5B,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAA;IAC1E,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAA;IAE9E,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAA;IAC7D,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAA;IAC3D,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAA;IAE7D,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACrE,IAAI;QACJ,KAAK,EAAE,IAAI,CAAC,WAAW;QACvB,KAAK,EAAE,oBAAoB,CAAC,IAAI,CAAC,IAAI,QAAQ;QAC7C,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC,CAAC,CAAA;IAEH,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,CAAA;IACvG,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAA;AACf,CAAC,CAAC,CAAA;AAEJ,OAAO,CAAC,KAAK,EAAE,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/cli/install.ts"],"names":[],"mappings":"AAqJA,wBAAsB,UAAU,CAAC,OAAO,EAAE;IACxC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiFhB"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/cli/install.ts"],"names":[],"mappings":"AAqaA,wBAAsB,UAAU,CAAC,OAAO,EAAE;IACxC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiHhB"}