@supermemory/openclaw-supermemory 1.0.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/.github/workflows/ci.yml +31 -0
- package/README.md +89 -0
- package/biome.json +78 -0
- package/bun.lock +1468 -0
- package/client.ts +205 -0
- package/commands/cli.ts +96 -0
- package/commands/slash.ts +80 -0
- package/config.ts +99 -0
- package/hooks/capture.ts +99 -0
- package/hooks/recall.ts +166 -0
- package/index.ts +64 -0
- package/lib/validate.d.ts +28 -0
- package/lib/validate.js +1 -0
- package/logger.ts +54 -0
- package/memory.ts +25 -0
- package/openclaw.plugin.json +63 -0
- package/package.json +28 -0
- package/tools/forget.ts +58 -0
- package/tools/profile.ts +68 -0
- package/tools/search.ts +70 -0
- package/tools/store.ts +54 -0
- package/tsconfig.json +24 -0
- package/types/openclaw.d.ts +24 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
name: CI - Type Check, Format & Lint
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
|
|
6
|
+
jobs:
|
|
7
|
+
quality-checks:
|
|
8
|
+
name: Quality Checks
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
steps:
|
|
11
|
+
- name: Checkout code
|
|
12
|
+
uses: actions/checkout@v4
|
|
13
|
+
|
|
14
|
+
- name: Setup Bun
|
|
15
|
+
uses: oven-sh/setup-bun@v2
|
|
16
|
+
with:
|
|
17
|
+
bun-version: 1.2.17
|
|
18
|
+
|
|
19
|
+
- name: Install dependencies
|
|
20
|
+
run: bun install --frozen-lockfile
|
|
21
|
+
|
|
22
|
+
- name: Setup Biome
|
|
23
|
+
uses: biomejs/setup-biome@v2
|
|
24
|
+
with:
|
|
25
|
+
version: 2.3.8
|
|
26
|
+
|
|
27
|
+
- name: Run TypeScript type checking
|
|
28
|
+
run: bun run check-types
|
|
29
|
+
|
|
30
|
+
- name: Run Biome CI (format & lint)
|
|
31
|
+
run: biome ci .
|
package/README.md
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Supermemory Plugin for OpenClaw (previously Clawdbot)
|
|
2
|
+
|
|
3
|
+
<img width="1200" height="628" alt="Announcement-3 (2)" src="https://github.com/user-attachments/assets/caa5acaa-8246-4172-af3a-9cfed2a452c1" />
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
Long-term memory for OpenClaw. Automatically remembers conversations, recalls relevant context, and builds a persistent user profile — all powered by [Supermemory](https://supermemory.ai) cloud. No local infrastructure required.
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
openclaw plugins install @supermemory/openclaw-supermemory
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Restart OpenClaw after installing.
|
|
16
|
+
|
|
17
|
+
## Configuration
|
|
18
|
+
|
|
19
|
+
The only required value is your Supermemory API key. Get one at [console.supermemory.ai](https://console.supermemory.ai).
|
|
20
|
+
|
|
21
|
+
Set it as an environment variable:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
export SUPERMEMORY_OPENCLAW_API_KEY="sm_..."
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Or configure it directly in `openclaw.json`:
|
|
28
|
+
|
|
29
|
+
```json5
|
|
30
|
+
{
|
|
31
|
+
"plugins": {
|
|
32
|
+
"entries": {
|
|
33
|
+
"openclaw-supermemory": {
|
|
34
|
+
"enabled": true,
|
|
35
|
+
"config": {
|
|
36
|
+
"apiKey": "${SUPERMEMORY_OPENCLAW_API_KEY}"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Advanced options
|
|
45
|
+
|
|
46
|
+
| Key | Type | Default | Description |
|
|
47
|
+
|-----|------|---------|-------------|
|
|
48
|
+
| `containerTag` | `string` | `openclaw_{hostname}` | Memory namespace. All channels share this tag. |
|
|
49
|
+
| `autoRecall` | `boolean` | `true` | Inject relevant memories before every AI turn. |
|
|
50
|
+
| `autoCapture` | `boolean` | `true` | Automatically store conversation content after every turn. |
|
|
51
|
+
| `maxRecallResults` | `number` | `10` | Max memories injected into context per turn. |
|
|
52
|
+
| `profileFrequency` | `number` | `50` | Inject full user profile every N turns. Search results are injected every turn. |
|
|
53
|
+
| `captureMode` | `string` | `"all"` | `"all"` filters short texts and injected context. `"everything"` captures all messages. |
|
|
54
|
+
| `debug` | `boolean` | `false` | Verbose debug logs for API calls and responses. |
|
|
55
|
+
|
|
56
|
+
## How it works
|
|
57
|
+
|
|
58
|
+
Once installed, the plugin works automatically with zero interaction:
|
|
59
|
+
|
|
60
|
+
- **Auto-Recall** — Before every AI turn, the plugin queries Supermemory for relevant memories and injects them as context. The AI sees your user profile (preferences, facts) and semantically similar past conversations.
|
|
61
|
+
- **Auto-Capture** — After every AI turn, the last user/assistant exchange is sent to Supermemory for extraction and long-term storage.
|
|
62
|
+
|
|
63
|
+
Everything runs in the cloud. Supermemory handles extraction, deduplication, and profile building on its end.
|
|
64
|
+
|
|
65
|
+
## Slash Commands
|
|
66
|
+
|
|
67
|
+
| Command | Description |
|
|
68
|
+
|---------|-------------|
|
|
69
|
+
| `/remember <text>` | Manually save something to memory. |
|
|
70
|
+
| `/recall <query>` | Search your memories and see results with similarity scores. |
|
|
71
|
+
|
|
72
|
+
## AI Tools
|
|
73
|
+
|
|
74
|
+
The AI can use these tools autonomously during conversations:
|
|
75
|
+
|
|
76
|
+
| Tool | Description |
|
|
77
|
+
|------|-------------|
|
|
78
|
+
| `supermemory_store` | Save information to long-term memory. |
|
|
79
|
+
| `supermemory_search` | Search memories by query. |
|
|
80
|
+
| `supermemory_forget` | Delete a memory by query. |
|
|
81
|
+
| `supermemory_profile` | View the user profile (persistent facts + recent context). |
|
|
82
|
+
|
|
83
|
+
## CLI Commands
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
openclaw supermemory search <query> # Search memories
|
|
87
|
+
openclaw supermemory profile # View user profile
|
|
88
|
+
openclaw supermemory wipe # Delete all memories (destructive, requires confirmation)
|
|
89
|
+
```
|
package/biome.json
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://biomejs.dev/schemas/2.3.8/schema.json",
|
|
3
|
+
"assist": {
|
|
4
|
+
"actions": {
|
|
5
|
+
"source": {
|
|
6
|
+
"organizeImports": "on",
|
|
7
|
+
"useSortedAttributes": "on",
|
|
8
|
+
"useSortedKeys": "off"
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"enabled": true
|
|
12
|
+
},
|
|
13
|
+
"files": {
|
|
14
|
+
"includes": [
|
|
15
|
+
"**",
|
|
16
|
+
"!**/node_modules",
|
|
17
|
+
"!**/dist",
|
|
18
|
+
"!**/bun.lock",
|
|
19
|
+
"!**/*.lock",
|
|
20
|
+
"!lib/validate.js"
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
"formatter": {
|
|
24
|
+
"enabled": true,
|
|
25
|
+
"indentStyle": "tab"
|
|
26
|
+
},
|
|
27
|
+
"javascript": {
|
|
28
|
+
"formatter": {
|
|
29
|
+
"quoteStyle": "double",
|
|
30
|
+
"semicolons": "asNeeded"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"linter": {
|
|
34
|
+
"domains": {
|
|
35
|
+
"project": "none"
|
|
36
|
+
},
|
|
37
|
+
"enabled": true,
|
|
38
|
+
"rules": {
|
|
39
|
+
"correctness": {
|
|
40
|
+
"useYield": "warn",
|
|
41
|
+
"noUnusedVariables": {
|
|
42
|
+
"level": "warn",
|
|
43
|
+
"options": {
|
|
44
|
+
"ignoreRestSiblings": true
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"noUnusedImports": "warn",
|
|
48
|
+
"useParseIntRadix": "off"
|
|
49
|
+
},
|
|
50
|
+
"recommended": true,
|
|
51
|
+
"style": {
|
|
52
|
+
"noDefaultExport": "off",
|
|
53
|
+
"noInferrableTypes": "error",
|
|
54
|
+
"noNonNullAssertion": "warn",
|
|
55
|
+
"noParameterAssign": "error",
|
|
56
|
+
"noUnusedTemplateLiteral": "error",
|
|
57
|
+
"noUselessElse": "error",
|
|
58
|
+
"useAsConstAssertion": "error",
|
|
59
|
+
"useDefaultParameterLast": "error",
|
|
60
|
+
"useEnumInitializers": "error",
|
|
61
|
+
"useNamingConvention": {
|
|
62
|
+
"level": "off",
|
|
63
|
+
"options": {
|
|
64
|
+
"strictCase": false
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
"useNumberNamespace": "error",
|
|
68
|
+
"useSelfClosingElements": "error",
|
|
69
|
+
"useSingleVarDeclarator": "error"
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
"vcs": {
|
|
74
|
+
"clientKind": "git",
|
|
75
|
+
"enabled": true,
|
|
76
|
+
"useIgnoreFile": true
|
|
77
|
+
}
|
|
78
|
+
}
|