@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 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 (e.g., "User prefers dark mode") |
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" category="preference"* → Stores the memory
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, category?: string): Promise<{
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;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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: "openclaw-agent",
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, category = "other") {
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: { category, source: "function_call" }
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.17",
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, category = "other" } = params;
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(), category);
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) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "memoryx-openclaw-plugin",
3
3
  "name": "MemoryX Real-time Plugin",
4
- "version": "1.1.17",
4
+ "version": "1.1.18",
5
5
  "description": "Real-time memory capture and recall for OpenClaw",
6
6
  "kind": "memory",
7
7
  "main": "./dist/index.js",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@t0ken.ai/memoryx-openclaw-plugin",
3
- "version": "1.1.17",
3
+ "version": "1.1.19",
4
4
  "description": "MemoryX real-time memory capture and recall plugin for OpenClaw",
5
5
  "type": "module",
6
6
  "author": "MemoryX Team",