@joseairosa/recall 1.6.0 → 1.8.2
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/.claude/hooks.json +3 -0
- package/.claude/hooks.local.json +29 -0
- package/.claude/settings.json +20 -0
- package/.claude/settings.local.json +48 -6
- package/.claude/todo.json +29 -0
- package/.env.example +39 -3
- package/.github/workflows/ci.yml +36 -0
- package/.mcp.json +2 -13
- package/CHANGELOG.md +67 -0
- package/CLAUDE.md +230 -313
- package/Dockerfile +81 -0
- package/MEMORY_RELATIONSHIPS.md +1 -1
- package/QUICKSTART.md +151 -1
- package/README.md +331 -56
- package/WORKSPACE_MODES.md +1 -1
- package/batch_import.mjs +25 -0
- package/claude-plugin/.claude-plugin/plugin.json +8 -0
- package/claude-plugin/README.md +265 -0
- package/claude-plugin/agents/context-loader.md +69 -0
- package/claude-plugin/agents/result-aggregator.md +143 -0
- package/claude-plugin/agents/task-decomposer.md +107 -0
- package/claude-plugin/commands/decompose.md +114 -0
- package/claude-plugin/commands/load-context.md +74 -0
- package/claude-plugin/commands/rlm-status.md +140 -0
- package/claude-plugin/hooks/hooks.json +80 -0
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/coverage-final.json +4 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +146 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +210 -0
- package/dist/chunk-NXD57GSG.js +470 -0
- package/dist/chunk-NXD57GSG.js.map +1 -0
- package/dist/chunk-OZAKGLVT.js +8068 -0
- package/dist/chunk-OZAKGLVT.js.map +1 -0
- package/dist/chunk-PWIAD2V5.js +34 -0
- package/dist/chunk-PWIAD2V5.js.map +1 -0
- package/dist/index.js +16 -5519
- package/dist/index.js.map +1 -1
- package/dist/server-http.d.ts +1 -0
- package/dist/server-http.js +4897 -0
- package/dist/server-http.js.map +1 -0
- package/dist/types-B6WPSLBE.js +7 -0
- package/dist/types-B6WPSLBE.js.map +1 -0
- package/dist/types-TNRLD2XO.js +107 -0
- package/dist/types-TNRLD2XO.js.map +1 -0
- package/docker-compose.dev.yml +55 -0
- package/docker-compose.yml +48 -0
- package/export_memories.mjs +68 -0
- package/package.json +20 -4
- package/railway.json +14 -0
- package/scripts/import-local-to-production.js +103 -0
- package/scripts/install-plugin.sh +618 -0
- package/scripts/uninstall-plugin.sh +182 -0
- package/tests/README.md +61 -33
- package/tests/__mocks__/storage-client.mock.ts +279 -0
- package/tests/test-relationships-vr.ts +122 -0
- package/tests/test-relationships.js +3 -3
- package/tests/test-runtime.js +16 -10
- package/tests/test-time-window-vr.ts +343 -0
- package/tests/test-time-window.js +1 -1
- package/tests/test-v1.5.0-simple.sh +17 -31
- package/tests/test-v1.5.0.js +6 -6
- package/tests/test-vr-v1.7.0.ts +510 -0
- package/vitest.config.ts +21 -0
- package/web/.eslintrc.json +3 -0
- package/web/next-env.d.ts +5 -0
- package/web/next.config.ts +11 -0
- package/web/package-lock.json +8056 -0
- package/web/package.json +39 -0
- package/web/postcss.config.mjs +9 -0
- package/web/tailwind.config.ts +72 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/claude-code-hooks.json",
|
|
3
|
+
"hooks": {
|
|
4
|
+
"PostToolUse": [
|
|
5
|
+
{
|
|
6
|
+
"description": "Format TypeScript files with Prettier after writing",
|
|
7
|
+
"matcher": {
|
|
8
|
+
"tool": "Write",
|
|
9
|
+
"glob": "**/*.ts"
|
|
10
|
+
},
|
|
11
|
+
"command": "npx prettier --write \"$CLAUDE_FILE_PATH\""
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"description": "Format JSON files with Prettier after writing",
|
|
15
|
+
"matcher": {
|
|
16
|
+
"tool": "Write",
|
|
17
|
+
"glob": "**/*.json"
|
|
18
|
+
},
|
|
19
|
+
"command": "npx prettier --write \"$CLAUDE_FILE_PATH\""
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
"PostCommit": [
|
|
23
|
+
{
|
|
24
|
+
"description": "Run build verification after commits",
|
|
25
|
+
"command": "npm run build --silent"
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"Bash(npm run build)",
|
|
5
|
+
"Bash(npm run test)",
|
|
6
|
+
"Bash(npm run dev)",
|
|
7
|
+
"Bash(git status)",
|
|
8
|
+
"Bash(git diff:*)",
|
|
9
|
+
"Bash(git log:*)",
|
|
10
|
+
"Bash(gh pr:*)",
|
|
11
|
+
"Bash(gh issue:*)"
|
|
12
|
+
],
|
|
13
|
+
"deny": [],
|
|
14
|
+
"additionalDirectories": [
|
|
15
|
+
"/tmp"
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
"enableAllProjectMcpServers": false,
|
|
19
|
+
"enabledMcpjsonServers": []
|
|
20
|
+
}
|
|
@@ -1,13 +1,55 @@
|
|
|
1
1
|
{
|
|
2
2
|
"permissions": {
|
|
3
3
|
"allow": [
|
|
4
|
-
"Bash(gh pr merge
|
|
5
|
-
"Bash(npm publish
|
|
4
|
+
"Bash(gh pr merge *)",
|
|
5
|
+
"Bash(npm publish *)",
|
|
6
|
+
"Bash(gh release create *)",
|
|
7
|
+
"Bash(timeout 5 PORT=3333 REDIS_URL=redis://localhost:6379 npm run start:http:*)",
|
|
8
|
+
"Bash(echo:*)",
|
|
9
|
+
"Bash(REDIS_URL=redis://localhost:6379 OPENAI_API_KEY=test timeout:*)",
|
|
10
|
+
"Bash(REDIS_URL=redis://localhost:6379 OPENAI_API_KEY=test ANTHROPIC_API_KEY=test timeout 5 node dist/server-http.js)",
|
|
11
|
+
"Bash(railway:*)",
|
|
12
|
+
"Bash(RAILWAY_TOKEN=8d0f2331-d3e6-4592-a6d3-3fe713c509a7 railway logs:*)",
|
|
13
|
+
"Bash(RAILWAY_TOKEN=8d0f2331-d3e6-4592-a6d3-3fe713c509a7 railway service:*)",
|
|
14
|
+
"Bash(RAILWAY_TOKEN=8d0f2331-d3e6-4592-a6d3-3fe713c509a7 railway status:*)",
|
|
15
|
+
"Bash(RAILWAY_TOKEN=8d0f2331-d3e6-4592-a6d3-3fe713c509a7 railway redeploy:*)",
|
|
16
|
+
"Bash(RAILWAY_TOKEN=8d0f2331-d3e6-4592-a6d3-3fe713c509a7 railway domain:*)",
|
|
17
|
+
"mcp__memory__export_memories",
|
|
18
|
+
"mcp__memory__search_memories",
|
|
19
|
+
"Read(//private/tmp/**)",
|
|
20
|
+
"Read(//Users/joseairosa/.railway/**)",
|
|
21
|
+
"Read(//Users/joseairosa/Development/**)",
|
|
22
|
+
"Read(//tmp/claude-code/plugins/hookify/hooks/**)",
|
|
23
|
+
"Read(//private/tmp/claude-code/plugins/hookify/hooks/**)",
|
|
24
|
+
"Read(//tmp/claude-code/plugins/plugin-dev/skills/hook-development/**)",
|
|
25
|
+
"Read(//private/tmp/claude-code/plugins/plugin-dev/skills/hook-development/**)",
|
|
26
|
+
"Read(//tmp/claude-code/**)",
|
|
27
|
+
"Read(//private/tmp/claude-code/**)",
|
|
28
|
+
"Bash(chmod:*)",
|
|
29
|
+
"Read(//Users/joseairosa/.claude/**)",
|
|
30
|
+
"Bash(# Check if there''s a skills directory format needed ls ~/.claude/plugins/marketplaces/claude-plugins-official/external_plugins/stripe/skills/ cat ~/.claude/plugins/marketplaces/claude-plugins-official/external_plugins/stripe/commands/account-info.md)",
|
|
31
|
+
"mcp__recall-remote__summarize_session",
|
|
32
|
+
"Bash(while read key)",
|
|
33
|
+
"Bash(do echo \"=== $key ===\")",
|
|
34
|
+
"Bash(done)",
|
|
35
|
+
"Read(//Users/joseairosa/**)",
|
|
36
|
+
"Bash(gh run view:*)",
|
|
37
|
+
"Bash(gh run list:*)",
|
|
38
|
+
"Bash(xargs -I {} git push origin --delete {})",
|
|
39
|
+
"Read(//Users/joseairosa/Development/mcp/mem/**)",
|
|
40
|
+
"Bash(find:*)"
|
|
6
41
|
],
|
|
7
42
|
"deny": [],
|
|
8
|
-
"ask": []
|
|
43
|
+
"ask": [],
|
|
44
|
+
"additionalDirectories": [
|
|
45
|
+
"/Users/joseairosa/Development/mcp/mem/web/src/app",
|
|
46
|
+
"/Users/joseairosa/Development/mcp/mem/web/src/app/sign-in",
|
|
47
|
+
"/Users/joseairosa/Development/mcp/mem/web/src/app/sign-up/[[...sign-up]]",
|
|
48
|
+
"/tmp",
|
|
49
|
+
"/Users/joseairosa/Development/mcp/mem",
|
|
50
|
+
"/Users/joseairosa/Development/mcp/recallmcp.com"
|
|
51
|
+
]
|
|
9
52
|
},
|
|
10
|
-
"
|
|
11
|
-
|
|
12
|
-
]
|
|
53
|
+
"enableAllProjectMcpServers": false,
|
|
54
|
+
"enabledMcpjsonServers": []
|
|
13
55
|
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "1.0.0",
|
|
3
|
+
"lastUpdated": "2026-01-16T00:00:00Z",
|
|
4
|
+
"tasks": [],
|
|
5
|
+
"completed": [
|
|
6
|
+
{
|
|
7
|
+
"task": "Setup Boris-style slash commands",
|
|
8
|
+
"completedAt": "2026-01-16",
|
|
9
|
+
"files": [
|
|
10
|
+
".claude/commands/init.md",
|
|
11
|
+
".claude/commands/commit-push-pr.md",
|
|
12
|
+
".claude/commands/verify-app.md",
|
|
13
|
+
".claude/commands/code-simplifier.md",
|
|
14
|
+
".claude/commands/review-pr.md"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"task": "Setup PostToolUse hooks for code formatting",
|
|
19
|
+
"completedAt": "2026-01-16",
|
|
20
|
+
"files": [".claude/hooks.json"]
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"task": "Create shareable team settings",
|
|
24
|
+
"completedAt": "2026-01-16",
|
|
25
|
+
"files": [".claude/settings.json"]
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
"notes": "Task tracking for Recall MCP Server development. Keep this updated during work sessions."
|
|
29
|
+
}
|
package/.env.example
CHANGED
|
@@ -1,5 +1,41 @@
|
|
|
1
|
-
# Redis connection string
|
|
1
|
+
# Redis/Valkey connection string
|
|
2
2
|
REDIS_URL=redis://localhost:6379
|
|
3
3
|
|
|
4
|
-
#
|
|
5
|
-
|
|
4
|
+
# Embedding Provider API Keys (at least one required)
|
|
5
|
+
# Priority: Voyage > Cohere > OpenAI > DeepSeek > Grok > Anthropic
|
|
6
|
+
VOYAGE_API_KEY=
|
|
7
|
+
COHERE_API_KEY=
|
|
8
|
+
OPENAI_API_KEY=
|
|
9
|
+
DEEPSEEK_API_KEY=
|
|
10
|
+
GROK_API_KEY=
|
|
11
|
+
ANTHROPIC_API_KEY=
|
|
12
|
+
|
|
13
|
+
# Admin secret for creating API keys via POST /api/keys
|
|
14
|
+
# Leave empty to allow unauthenticated key creation (not recommended for production)
|
|
15
|
+
ADMIN_SECRET=
|
|
16
|
+
|
|
17
|
+
# Server configuration
|
|
18
|
+
PORT=8080
|
|
19
|
+
NODE_ENV=production
|
|
20
|
+
|
|
21
|
+
# Stripe billing (for SaaS)
|
|
22
|
+
STRIPE_SECRET_KEY=
|
|
23
|
+
STRIPE_WEBHOOK_SECRET=
|
|
24
|
+
STRIPE_PRICE_PRO=
|
|
25
|
+
STRIPE_PRICE_TEAM=
|
|
26
|
+
|
|
27
|
+
# Firebase Admin (for authentication)
|
|
28
|
+
GOOGLE_APPLICATION_CREDENTIALS=
|
|
29
|
+
FIREBASE_PROJECT_ID=
|
|
30
|
+
|
|
31
|
+
# Web app Firebase config (NEXT_PUBLIC_ prefix for client-side)
|
|
32
|
+
NEXT_PUBLIC_FIREBASE_API_KEY=
|
|
33
|
+
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=
|
|
34
|
+
NEXT_PUBLIC_FIREBASE_PROJECT_ID=
|
|
35
|
+
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=
|
|
36
|
+
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=
|
|
37
|
+
NEXT_PUBLIC_FIREBASE_APP_ID=
|
|
38
|
+
NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID=
|
|
39
|
+
|
|
40
|
+
# API URL for web app
|
|
41
|
+
NEXT_PUBLIC_API_URL=http://localhost:8080
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
build:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
|
|
13
|
+
steps:
|
|
14
|
+
- name: Checkout
|
|
15
|
+
uses: actions/checkout@v4
|
|
16
|
+
|
|
17
|
+
- name: Setup Node.js
|
|
18
|
+
uses: actions/setup-node@v4
|
|
19
|
+
with:
|
|
20
|
+
node-version: '20'
|
|
21
|
+
cache: 'npm'
|
|
22
|
+
|
|
23
|
+
- name: Install dependencies
|
|
24
|
+
run: npm ci --ignore-scripts
|
|
25
|
+
|
|
26
|
+
- name: Type check
|
|
27
|
+
run: npx tsc --noEmit
|
|
28
|
+
|
|
29
|
+
- name: Build
|
|
30
|
+
run: npm run build
|
|
31
|
+
|
|
32
|
+
- name: Verify build output
|
|
33
|
+
run: |
|
|
34
|
+
test -f dist/index.js || (echo "dist/index.js not found" && exit 1)
|
|
35
|
+
test -f dist/server-http.js || (echo "dist/server-http.js not found" && exit 1)
|
|
36
|
+
echo "Build verification passed"
|
package/.mcp.json
CHANGED
|
@@ -1,14 +1,3 @@
|
|
|
1
1
|
{
|
|
2
|
-
"mcpServers": {
|
|
3
|
-
|
|
4
|
-
"command": "node",
|
|
5
|
-
"args": [
|
|
6
|
-
"/Users/joseairosa/Development/mcp/mem/dist/index.js"
|
|
7
|
-
],
|
|
8
|
-
"env": {
|
|
9
|
-
"REDIS_URL": "redis://localhost:6379",
|
|
10
|
-
"ANTHROPIC_API_KEY": "YOUR_ANTHROPIC_API_KEY_HERE"
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
}
|
|
2
|
+
"mcpServers": {}
|
|
3
|
+
}
|
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,73 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## [1.8.2] - 2026-01-20
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **RLM (Recursive Language Model) Tools** - Process content larger than context windows
|
|
15
|
+
- `create_execution_context` - Store large content for processing
|
|
16
|
+
- `decompose_task` - Break into subtasks (filter/chunk/recursive/aggregate)
|
|
17
|
+
- `inject_context_snippet` - Extract relevant portions
|
|
18
|
+
- `update_subtask_result` - Store results
|
|
19
|
+
- `merge_results` - Combine subtask results
|
|
20
|
+
- `verify_answer` - Cross-check against source
|
|
21
|
+
- `should_use_rlm` - Check if RLM is needed for content size
|
|
22
|
+
- `get_execution_status` - Get chain progress
|
|
23
|
+
|
|
24
|
+
- **Search Output Modes** - Context efficiency (v1.8.1)
|
|
25
|
+
- `output_mode` parameter: `full`, `summary`, `compact`
|
|
26
|
+
- Reduces context usage for large result sets
|
|
27
|
+
|
|
28
|
+
- **Multi-Provider Embedding Support**
|
|
29
|
+
- Voyage AI (recommended for quality)
|
|
30
|
+
- Cohere (multilingual)
|
|
31
|
+
- OpenAI / Deepseek / Grok
|
|
32
|
+
- Anthropic (keyword fallback)
|
|
33
|
+
- Ollama (local inference)
|
|
34
|
+
- Auto-detection based on available API keys
|
|
35
|
+
|
|
36
|
+
- **New Prompts**
|
|
37
|
+
- `session_management` - For long work sessions
|
|
38
|
+
- `rlm_workflow` - Automatic RLM distribution
|
|
39
|
+
|
|
40
|
+
- **MemoryStore Improvements**
|
|
41
|
+
- `clearWorkspace()` - Delete all memories in workspace
|
|
42
|
+
|
|
43
|
+
### Fixed
|
|
44
|
+
|
|
45
|
+
- StorageClient interface: Added missing `hget` and `hdel` methods
|
|
46
|
+
- TypeScript type errors for CI build
|
|
47
|
+
|
|
48
|
+
### Tool Count
|
|
49
|
+
- **40+ tools** (was 28 in v1.6.0)
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## [1.7.0] - 2025-12-03
|
|
54
|
+
|
|
55
|
+
### Added
|
|
56
|
+
|
|
57
|
+
- **Valkey Support** - Now supports Valkey as an alternative backend to Redis
|
|
58
|
+
- New `BACKEND_TYPE` environment variable to select backend (`redis` or `valkey`)
|
|
59
|
+
- `VALKEY_HOST` and `VALKEY_PORT` configuration options
|
|
60
|
+
- Uses `@valkey/valkey-glide` client for Valkey connections
|
|
61
|
+
- Full feature parity with Redis backend
|
|
62
|
+
|
|
63
|
+
### Changed
|
|
64
|
+
|
|
65
|
+
- **Architecture Refactor** - Introduced storage abstraction layer
|
|
66
|
+
- New `StorageClient` interface for backend-agnostic storage operations
|
|
67
|
+
- `RedisAdapter` and `ValkeyAdapter` implement the common interface
|
|
68
|
+
- Factory pattern (`createStorageClient`) for backend selection
|
|
69
|
+
- Moved persistence code to `src/persistence/` directory
|
|
70
|
+
|
|
71
|
+
### Fixed
|
|
72
|
+
|
|
73
|
+
- Ported JavaScript tests to TypeScript for better type safety
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
10
77
|
## [1.6.0] - 2025-10-04
|
|
11
78
|
|
|
12
79
|
### Added
|