@t0ken.ai/memoryx-openclaw-plugin 1.1.17 → 1.1.19
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 +16 -3
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +66 -12
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -25,8 +25,7 @@ The plugin registers three tools that LLM can call during conversations:
|
|
|
25
25
|
|
|
26
26
|
| Parameter | Type | Required | Description |
|
|
27
27
|
|-----------|------|----------|-------------|
|
|
28
|
-
| `content` | string | Yes | The information to remember (
|
|
29
|
-
| `category` | enum | No | `preference`, `fact`, `plan`, `experience`, `opinion`, `other` |
|
|
28
|
+
| `content` | string | Yes | The information to remember (server will auto-categorize) |
|
|
30
29
|
|
|
31
30
|
### Example Usage
|
|
32
31
|
|
|
@@ -40,7 +39,7 @@ The plugin registers three tools that LLM can call during conversations:
|
|
|
40
39
|
**LLM**: *calls `memoryx_forget` with memory_id* → Deletes the memory
|
|
41
40
|
|
|
42
41
|
**User**: "Remember that my favorite color is blue"
|
|
43
|
-
**LLM**: *calls `memoryx_store` with content="User's favorite color is blue"
|
|
42
|
+
**LLM**: *calls `memoryx_store` with content="User's favorite color is blue"* → Stores the memory
|
|
44
43
|
|
|
45
44
|
## Install
|
|
46
45
|
|
|
@@ -49,6 +48,20 @@ openclaw plugins install @t0ken.ai/memoryx-openclaw-plugin
|
|
|
49
48
|
openclaw gateway restart
|
|
50
49
|
```
|
|
51
50
|
|
|
51
|
+
## Update
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
openclaw plugins update @t0ken.ai/memoryx-openclaw-plugin
|
|
55
|
+
openclaw gateway restart
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Or update all plugins:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
openclaw plugins update --all
|
|
62
|
+
openclaw gateway restart
|
|
63
|
+
```
|
|
64
|
+
|
|
52
65
|
## Configuration
|
|
53
66
|
|
|
54
67
|
Edit `~/.openclaw/openclaw.json`:
|
package/dist/index.d.ts
CHANGED
|
@@ -82,7 +82,7 @@ declare class MemoryXPlugin {
|
|
|
82
82
|
recall(query: string, limit?: number): Promise<RecallResult>;
|
|
83
83
|
endConversation(): Promise<void>;
|
|
84
84
|
forget(memoryId: string): Promise<boolean>;
|
|
85
|
-
store(content: string
|
|
85
|
+
store(content: string): Promise<{
|
|
86
86
|
success: boolean;
|
|
87
87
|
task_id?: string;
|
|
88
88
|
duplicate?: boolean;
|
|
@@ -98,6 +98,13 @@ declare class MemoryXPlugin {
|
|
|
98
98
|
rounds: number;
|
|
99
99
|
};
|
|
100
100
|
}>;
|
|
101
|
+
getAccountInfo(): Promise<{
|
|
102
|
+
apiKey: string | null;
|
|
103
|
+
projectId: string;
|
|
104
|
+
userId: string | null;
|
|
105
|
+
apiBaseUrl: string;
|
|
106
|
+
initialized: boolean;
|
|
107
|
+
}>;
|
|
101
108
|
}
|
|
102
109
|
declare const _default: {
|
|
103
110
|
id: string;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAqDH,UAAU,YAAY;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAiBD,UAAU,YAAY;IAClB,QAAQ,EAAE,KAAK,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,eAAe,EAAE,KAAK,CAAC;QACnB,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AA0JD,cAAM,mBAAmB;IACrB,OAAO,CAAC,qBAAqB,CAAc;IAC3C,OAAO,CAAC,qBAAqB,CAAyC;IACtE,OAAO,CAAC,cAAc,CAAsB;IAE5C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAK;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;;IAM7C,OAAO,CAAC,UAAU;IAIlB,iBAAiB,IAAI,MAAM;IAIrB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB3D,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAkBrC,oBAAoB,IAAI,IAAI;IAMtB,SAAS,IAAI,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAQ/F;AAED,cAAM,aAAa;IACf,OAAO,CAAC,MAAM,CAMZ;IAEF,OAAO,CAAC,mBAAmB,CAAkD;IAC7E,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAQ;IAC5C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAK;IACrC,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,WAAW,CAAkB;gBAEzB,YAAY,CAAC,EAAE,YAAY;IAQvC,IAAI,IAAI,IAAI;IAmBZ,OAAO,KAAK,OAAO,GAElB;YAEa,UAAU;YAWV,UAAU;YAIV,YAAY;IA+B1B,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,mBAAmB;YAMb,gBAAgB;IAiEjB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2B1D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,YAAY,CAAC;IA6D/D,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAKhC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA6B1C,KAAK,CAAC,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -311,7 +311,7 @@ class MemoryXPlugin {
|
|
|
311
311
|
body: JSON.stringify({
|
|
312
312
|
machine_fingerprint: fingerprint,
|
|
313
313
|
agent_type: "openclaw",
|
|
314
|
-
agent_name:
|
|
314
|
+
agent_name: os.hostname(),
|
|
315
315
|
platform: os.platform(),
|
|
316
316
|
platform_version: os.release()
|
|
317
317
|
})
|
|
@@ -516,7 +516,7 @@ class MemoryXPlugin {
|
|
|
516
516
|
return false;
|
|
517
517
|
}
|
|
518
518
|
}
|
|
519
|
-
async store(content
|
|
519
|
+
async store(content) {
|
|
520
520
|
this.init();
|
|
521
521
|
if (!this.config.apiKey) {
|
|
522
522
|
log("Store failed: no API key");
|
|
@@ -532,7 +532,7 @@ class MemoryXPlugin {
|
|
|
532
532
|
body: JSON.stringify({
|
|
533
533
|
content,
|
|
534
534
|
project_id: this.config.projectId,
|
|
535
|
-
metadata: {
|
|
535
|
+
metadata: { source: "function_call" }
|
|
536
536
|
})
|
|
537
537
|
});
|
|
538
538
|
if (!response.ok) {
|
|
@@ -592,12 +592,22 @@ class MemoryXPlugin {
|
|
|
592
592
|
conversationStatus: status
|
|
593
593
|
};
|
|
594
594
|
}
|
|
595
|
+
async getAccountInfo() {
|
|
596
|
+
this.init();
|
|
597
|
+
return {
|
|
598
|
+
apiKey: this.config.apiKey,
|
|
599
|
+
projectId: this.config.projectId,
|
|
600
|
+
userId: this.config.userId,
|
|
601
|
+
apiBaseUrl: this.config.apiBaseUrl,
|
|
602
|
+
initialized: this.config.initialized
|
|
603
|
+
};
|
|
604
|
+
}
|
|
595
605
|
}
|
|
596
606
|
let plugin;
|
|
597
607
|
export default {
|
|
598
608
|
id: "memoryx-openclaw-plugin",
|
|
599
609
|
name: "MemoryX Realtime Plugin",
|
|
600
|
-
version: "1.1.
|
|
610
|
+
version: "1.1.19",
|
|
601
611
|
description: "Real-time memory capture and recall for OpenClaw",
|
|
602
612
|
register(api, pluginConfig) {
|
|
603
613
|
api.logger.info("[MemoryX] Plugin registering...");
|
|
@@ -727,24 +737,19 @@ export default {
|
|
|
727
737
|
api.registerTool({
|
|
728
738
|
name: "memoryx_store",
|
|
729
739
|
label: "MemoryX Store",
|
|
730
|
-
description: "Save important information to long-term memory. Use when user explicitly asks to remember something, or when you identify important user preferences, facts, or decisions that should be persisted.",
|
|
740
|
+
description: "Save important information to long-term memory. Use when user explicitly asks to remember something, or when you identify important user preferences, facts, or decisions that should be persisted. The server will automatically categorize the memory.",
|
|
731
741
|
parameters: {
|
|
732
742
|
type: "object",
|
|
733
743
|
properties: {
|
|
734
744
|
content: {
|
|
735
745
|
type: "string",
|
|
736
746
|
description: "The information to remember. Should be a clear, concise statement. Examples: 'User prefers dark mode in all applications', 'User birthday is January 15th', 'User works as a software engineer at Acme Corp'"
|
|
737
|
-
},
|
|
738
|
-
category: {
|
|
739
|
-
type: "string",
|
|
740
|
-
enum: ["preference", "fact", "plan", "experience", "opinion", "other"],
|
|
741
|
-
description: "Category of the memory: preference (user likes/dislikes), fact (objective info), plan (future goals), experience (past events), opinion (user's views), other"
|
|
742
747
|
}
|
|
743
748
|
},
|
|
744
749
|
required: ["content"]
|
|
745
750
|
},
|
|
746
751
|
async execute(_toolCallId, params) {
|
|
747
|
-
const { content
|
|
752
|
+
const { content } = params;
|
|
748
753
|
if (!plugin) {
|
|
749
754
|
return {
|
|
750
755
|
content: [{ type: "text", text: "MemoryX plugin not initialized." }],
|
|
@@ -758,7 +763,7 @@ export default {
|
|
|
758
763
|
};
|
|
759
764
|
}
|
|
760
765
|
try {
|
|
761
|
-
const result = await plugin.store(content.trim()
|
|
766
|
+
const result = await plugin.store(content.trim());
|
|
762
767
|
if (result.success) {
|
|
763
768
|
return {
|
|
764
769
|
content: [{ type: "text", text: `Stored: "${content.slice(0, 100)}${content.length > 100 ? '...' : ''}"` }],
|
|
@@ -832,6 +837,55 @@ export default {
|
|
|
832
837
|
}
|
|
833
838
|
}
|
|
834
839
|
}, { name: "memoryx_list" });
|
|
840
|
+
api.registerTool({
|
|
841
|
+
name: "memoryx_account_info",
|
|
842
|
+
label: "MemoryX Account Info",
|
|
843
|
+
description: "Get MemoryX account information including API Key, Project ID, User ID, and API Base URL. Use when user asks about their MemoryX account, API key, project settings, or account status. Returns all stored account configuration from local database.",
|
|
844
|
+
parameters: {
|
|
845
|
+
type: "object",
|
|
846
|
+
properties: {}
|
|
847
|
+
},
|
|
848
|
+
async execute(_toolCallId, params) {
|
|
849
|
+
if (!plugin) {
|
|
850
|
+
return {
|
|
851
|
+
content: [{ type: "text", text: "MemoryX plugin not initialized." }],
|
|
852
|
+
details: { error: "not_initialized" }
|
|
853
|
+
};
|
|
854
|
+
}
|
|
855
|
+
try {
|
|
856
|
+
const accountInfo = await plugin.getAccountInfo();
|
|
857
|
+
if (!accountInfo) {
|
|
858
|
+
return {
|
|
859
|
+
content: [{ type: "text", text: "No account information found. The plugin may not be registered yet." }],
|
|
860
|
+
details: { error: "no_account" }
|
|
861
|
+
};
|
|
862
|
+
}
|
|
863
|
+
const lines = [
|
|
864
|
+
"MemoryX Account Information:",
|
|
865
|
+
`API Key: ${accountInfo.apiKey || 'Not set'}`,
|
|
866
|
+
`Project ID: ${accountInfo.projectId || 'default'}`,
|
|
867
|
+
`User ID: ${accountInfo.userId || 'Not set'}`,
|
|
868
|
+
`API Base URL: ${accountInfo.apiBaseUrl || DEFAULT_API_BASE}`,
|
|
869
|
+
`Initialized: ${accountInfo.initialized ? 'Yes' : 'No'}`
|
|
870
|
+
];
|
|
871
|
+
return {
|
|
872
|
+
content: [{ type: "text", text: lines.join("\n") }],
|
|
873
|
+
details: {
|
|
874
|
+
apiKey: accountInfo.apiKey,
|
|
875
|
+
projectId: accountInfo.projectId,
|
|
876
|
+
userId: accountInfo.userId,
|
|
877
|
+
apiBaseUrl: accountInfo.apiBaseUrl
|
|
878
|
+
}
|
|
879
|
+
};
|
|
880
|
+
}
|
|
881
|
+
catch (error) {
|
|
882
|
+
return {
|
|
883
|
+
content: [{ type: "text", text: `Failed to get account info: ${error.message}` }],
|
|
884
|
+
details: { error: error.message }
|
|
885
|
+
};
|
|
886
|
+
}
|
|
887
|
+
}
|
|
888
|
+
}, { name: "memoryx_account_info" });
|
|
835
889
|
api.on("message_received", async (event, ctx) => {
|
|
836
890
|
const { content } = event;
|
|
837
891
|
if (content && plugin) {
|
package/openclaw.plugin.json
CHANGED