@echomem/mcp 1.4.18 → 1.4.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -5
- package/dist/codex-session-files.js +7 -1
- package/dist/hud/server.js +17 -13
- package/dist/hud/web.js +204 -13
- package/dist/index.js +61 -30
- package/dist/keystore.js +9 -19
- package/dist/migrate.js +78 -36
- package/dist/setup-page/client-core.js +31 -1
- package/dist/setup-page/client-extraction.js +581 -157
- package/dist/setup-page/client-lifecycle.js +64 -43
- package/dist/setup-page/client-report-city.js +14 -5
- package/dist/setup-page/styles-extraction.js +1176 -148
- package/dist/setup-page/styles-foundation.js +20 -15
- package/dist/setup-page/styles-website-alignment.js +818 -0
- package/dist/setup-page/styles.js +2 -0
- package/dist/setup-preview.js +64 -1
- package/dist/setup.js +328 -39
- package/dist/v1-contract.js +8 -8
- package/package.json +1 -1
- package/templates/codex-skills/echomem-forget/SKILL.md +16 -0
- package/templates/codex-skills/echomem-forget/agents/openai.yaml +6 -0
- package/templates/codex-skills/echomem-login/SKILL.md +27 -0
- package/templates/codex-skills/echomem-login/agents/openai.yaml +6 -0
- package/templates/codex-skills/echomem-save/SKILL.md +14 -0
- package/templates/codex-skills/echomem-save/agents/openai.yaml +6 -0
- package/templates/codex-skills/echomem-search/SKILL.md +14 -0
- package/templates/codex-skills/echomem-search/agents/openai.yaml +6 -0
package/dist/v1-contract.js
CHANGED
|
@@ -108,7 +108,7 @@ export function listToolSpecs(opts = {}) {
|
|
|
108
108
|
const currentTime = new Date().toISOString();
|
|
109
109
|
const map = opts.map?.trim();
|
|
110
110
|
const updateNotice = opts.updateNotice?.trim();
|
|
111
|
-
const
|
|
111
|
+
const recallPlanNote = "Available on every plan: Free includes 10 searches each week, Pro includes 100, and Power includes 250.";
|
|
112
112
|
const searchBillingReplyInstruction = "If search returns an ACTION REQUIRED subscription message, tell the user to start their trial or subscription and include the exact URL from that result verbatim. Do not respond only with \"connect\" or \"upgrade\".";
|
|
113
113
|
const updateSection = updateNotice ? `\n\nUPDATE NOTICE: ${updateNotice}` : "";
|
|
114
114
|
const mapSection = map
|
|
@@ -117,7 +117,7 @@ export function listToolSpecs(opts = {}) {
|
|
|
117
117
|
return [
|
|
118
118
|
{
|
|
119
119
|
name: canonicalToolNames.search,
|
|
120
|
-
description: withMcpVersion(`Recall the user's prior decisions, preferences, and project context from EchoMem — their long-term memory across ALL their AI tools, not just this session. Use it instead of re-deriving or re-asking what the user already settled. ${
|
|
120
|
+
description: withMcpVersion(`Recall the user's prior decisions, preferences, and project context from EchoMem — their long-term memory across ALL their AI tools, not just this session. Use it instead of re-deriving or re-asking what the user already settled. ${recallPlanNote} ${searchBillingReplyInstruction}${mapSection}\nReturns the ranked memories; set includeAnswer=true only if you need the legacy synthesized answer. Current time: ${currentTime}.${updateSection}`),
|
|
121
121
|
inputSchema: {
|
|
122
122
|
type: "object",
|
|
123
123
|
properties: {
|
|
@@ -140,7 +140,7 @@ export function listToolSpecs(opts = {}) {
|
|
|
140
140
|
},
|
|
141
141
|
{
|
|
142
142
|
name: "search_memories_by_description_semantic",
|
|
143
|
-
description: `Legacy alias for search_memories. ${
|
|
143
|
+
description: `Legacy alias for search_memories. ${recallPlanNote} ${searchBillingReplyInstruction}`,
|
|
144
144
|
inputSchema: {
|
|
145
145
|
type: "object",
|
|
146
146
|
properties: {
|
|
@@ -163,7 +163,7 @@ export function listToolSpecs(opts = {}) {
|
|
|
163
163
|
},
|
|
164
164
|
{
|
|
165
165
|
name: canonicalToolNames.save,
|
|
166
|
-
description: "Save this conversation into EchoMem as long-term memory (durable memories are extracted automatically).
|
|
166
|
+
description: "Save this conversation into EchoMem as long-term memory (durable memories are extracted automatically). New extraction input uses the plan's weekly processing allowance; if the limit is reached, nothing is saved. passthrough=true stores the text verbatim as a session capsule.",
|
|
167
167
|
inputSchema: {
|
|
168
168
|
type: "object",
|
|
169
169
|
properties: {
|
|
@@ -196,7 +196,7 @@ export function listToolSpecs(opts = {}) {
|
|
|
196
196
|
},
|
|
197
197
|
{
|
|
198
198
|
name: canonicalToolNames.timeRange,
|
|
199
|
-
description: `Retrieve memories within a specific date range. ${
|
|
199
|
+
description: `Retrieve memories within a specific date range. ${recallPlanNote} Current time: ${currentTime}.`,
|
|
200
200
|
inputSchema: {
|
|
201
201
|
type: "object",
|
|
202
202
|
properties: {
|
|
@@ -214,7 +214,7 @@ export function listToolSpecs(opts = {}) {
|
|
|
214
214
|
},
|
|
215
215
|
{
|
|
216
216
|
name: canonicalToolNames.keywords,
|
|
217
|
-
description: `Search memories based on keywords in keys field. ${
|
|
217
|
+
description: `Search memories based on keywords in keys field. ${recallPlanNote}`,
|
|
218
218
|
inputSchema: {
|
|
219
219
|
type: "object",
|
|
220
220
|
properties: {
|
|
@@ -371,7 +371,7 @@ export function listToolSpecs(opts = {}) {
|
|
|
371
371
|
},
|
|
372
372
|
{
|
|
373
373
|
name: canonicalToolNames.getByContext,
|
|
374
|
-
description: withMcpVersion(`Deterministically re-fetch the exact batch of memories saved under one contextId — no semantic search, no ranking, just that session's saved capsule. ${
|
|
374
|
+
description: withMcpVersion(`Deterministically re-fetch the exact batch of memories saved under one contextId — no semantic search, no ranking, just that session's saved capsule. ${recallPlanNote} save_conversation returns a contextId; pass it here to pull back precisely those memories, e.g. to warm up a fresh session with what a prior session saved, or to verify the saved facts are still present. Current time: ${currentTime}.`),
|
|
375
375
|
inputSchema: {
|
|
376
376
|
type: "object",
|
|
377
377
|
properties: {
|
|
@@ -388,7 +388,7 @@ export function listToolSpecs(opts = {}) {
|
|
|
388
388
|
},
|
|
389
389
|
{
|
|
390
390
|
name: canonicalToolNames.checkpointByContext,
|
|
391
|
-
description: withMcpVersion(`Rebuild a clean-context checkpoint / decision log from one EchoMem contextId. ${
|
|
391
|
+
description: withMcpVersion(`Rebuild a clean-context checkpoint / decision log from one EchoMem contextId. ${recallPlanNote} Use this when the user or EchoMem HUD gives you a contextId for a renewed coding session and you need the session handoff, not a raw memory dump. It deterministically fetches that context and formats it as orientation state: decisions, carryover, constraints, and checkpoints. Current time: ${currentTime}.`),
|
|
392
392
|
inputSchema: {
|
|
393
393
|
type: "object",
|
|
394
394
|
properties: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@echomem/mcp",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.20",
|
|
4
4
|
"description": "EchoMem MCP bridge: cloud-first memory tools, local context HUD, and the Agent Doctor workspace forensics report (cost ledger + 3D repo city)",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: echomem-forget
|
|
3
|
+
description: Find, review, and delete outdated or incorrect memories from EchoMem. Use when the user asks EchoMem to forget, remove, or correct remembered information, or says a stored fact is no longer true. Require an explicit confirmation before the destructive delete step and do not operate on another memory provider unless requested.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# EchoMem Forget
|
|
7
|
+
|
|
8
|
+
Use EchoMem's two-step deletion workflow.
|
|
9
|
+
|
|
10
|
+
1. Search EchoMem when needed to identify the exact memory and its ID.
|
|
11
|
+
2. Call `delete_memory` with the memory ID only to preview the target and receive a confirmation token.
|
|
12
|
+
3. Show the preview and ask the user to confirm deletion of that exact memory.
|
|
13
|
+
4. Only after confirmation, call `delete_memory` with `confirmed: true` and the exact token.
|
|
14
|
+
5. If the user supplied corrected information, offer to save the replacement with `save_conversation` after deletion.
|
|
15
|
+
|
|
16
|
+
Never bypass the preview or confirmation step.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "EchoMem Forget"
|
|
3
|
+
short_description: "Review and delete an EchoMem memory"
|
|
4
|
+
default_prompt: "Use $echomem-forget to find the outdated memory, show me what will be deleted, and ask for confirmation."
|
|
5
|
+
policy:
|
|
6
|
+
allow_implicit_invocation: true
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: echomem-login
|
|
3
|
+
description: Connect, authenticate, diagnose, or unlock the local EchoMem MCP bridge. Use when EchoMem reports a missing token, locked or expired encryption key, disconnected MCP server, setup problem, or when the user asks to log in, connect a device, check EchoMem status, or unlock their memory vault.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# EchoMem Login
|
|
7
|
+
|
|
8
|
+
Use the installed EchoMem CLI and keep credentials out of chat and client configuration.
|
|
9
|
+
|
|
10
|
+
- Run `echomem-mcp status` to diagnose the current connection.
|
|
11
|
+
- Run `echomem-mcp login` to connect the device through the browser approval flow.
|
|
12
|
+
- EchoMem treats the MCP bridge as a trusted device. A verified local key stays available until the
|
|
13
|
+
user runs `echomem-mcp lock`, logs out, or removes the local credentials. When the key is absent,
|
|
14
|
+
tell the user to open their own Terminal and run `echomem-mcp unlock`.
|
|
15
|
+
- Run `echomem-mcp setup --client codex --skip-login` when the MCP entry itself is missing.
|
|
16
|
+
|
|
17
|
+
Do not run the bare interactive `echomem-mcp unlock` command through an agent shell: it waits for a
|
|
18
|
+
private passphrase that the user must enter themselves. Tell the user that the prompt reads
|
|
19
|
+
`Vault passphrase (typing is hidden):`, no characters appear while typing, and they should press
|
|
20
|
+
Return when finished. After it succeeds, retry the MCP action in the current session; no editor
|
|
21
|
+
restart is needed.
|
|
22
|
+
|
|
23
|
+
Use `echomem-mcp lock` when the user wants to remove the local vault key without disconnecting their
|
|
24
|
+
device login.
|
|
25
|
+
|
|
26
|
+
Prefer the interactive browser flow for login. Never print, log, or ask the user to paste tokens,
|
|
27
|
+
passphrases, or encryption keys into the conversation or expose them through command-line flags.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: echomem-save
|
|
3
|
+
description: Save durable knowledge to EchoMem, the user's cross-agent long-term memory. Use when the user asks to remember, save, preserve, or carry forward information, or when active EchoMem guidance requires capturing a meaningful decision, resolved bug, architectural choice, preference, or project milestone. Prefer EchoMem when it is connected; do not silently save to another memory provider.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# EchoMem Save
|
|
7
|
+
|
|
8
|
+
Use the `save_conversation` tool from the `echomem` MCP server.
|
|
9
|
+
|
|
10
|
+
1. Capture the goal, decision or outcome, important reasoning, and relevant files or constraints. Omit noise and unrelated transcript content.
|
|
11
|
+
2. Prefer structured `messages`; add a concise title, source, and useful tags.
|
|
12
|
+
3. Use `passthrough: true` only when the user explicitly needs a verbatim session capsule.
|
|
13
|
+
4. Never include secrets, credentials, or unnecessary sensitive content.
|
|
14
|
+
5. Confirm what EchoMem saved. If saving fails, report the failure without switching providers silently.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: echomem-search
|
|
3
|
+
description: Search EchoMem, the user's cross-agent long-term memory, for prior decisions, preferences, project context, and past work. Use when a request refers to previous work or sessions, asks what was decided or how something was implemented, needs a catch-up, or plausibly depends on context the user settled before. Prefer EchoMem when it is connected; do not silently substitute another memory provider.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# EchoMem Search
|
|
7
|
+
|
|
8
|
+
Use the `echomem` MCP server as the source of long-term memory.
|
|
9
|
+
|
|
10
|
+
1. Call `search_memories` with a concise query describing the context needed. Keep `includeAnswer` false unless an EchoMem-generated synthesis is specifically useful.
|
|
11
|
+
2. Use `get_memories_by_time_range` for explicit dates, `search_memories_by_keywords` for exact terms, and `get_checkpoint_by_context` when a carryover references an EchoMem checkpoint.
|
|
12
|
+
3. Distinguish recalled facts from inference and preserve dates or provenance returned by EchoMem.
|
|
13
|
+
4. If EchoMem returns an action-required URL, give the user that exact URL and explanation.
|
|
14
|
+
5. If EchoMem is unavailable, say so. Do not switch to another memory provider unless the user requests it.
|