@yun-zero/claw-memory 0.1.3 → 0.1.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/config/plugin.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,IAAI,GAAG,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,wBAAgB,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,YAAY,CAgCpD"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/config/plugin.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,IAAI,GAAG,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AASD,wBAAgB,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,YAAY,CAgCpD"}
@@ -1,9 +1,17 @@
1
+ import os from 'os';
2
+ import path from 'path';
3
+ function expandTilde(filepath) {
4
+ if (filepath.startsWith('~/') || filepath === '~') {
5
+ return path.join(os.homedir(), filepath.slice(1));
6
+ }
7
+ return filepath;
8
+ }
1
9
  export function getConfig(config) {
2
10
  const defaultConfig = {
3
11
  enabled: true,
4
12
  autoSave: true,
5
13
  saveMode: 'qa',
6
- dataDir: '~/.openclaw/claw-memory',
14
+ dataDir: expandTilde('~/.openclaw/claw-memory'),
7
15
  scheduler: {
8
16
  enabled: true,
9
17
  deduplicateTime: '01:00',
@@ -19,7 +27,7 @@ export function getConfig(config) {
19
27
  enabled: config.enabled ?? defaultConfig.enabled,
20
28
  autoSave: config.autoSave ?? defaultConfig.autoSave,
21
29
  saveMode: config.saveMode ?? defaultConfig.saveMode,
22
- dataDir: config.dataDir ?? defaultConfig.dataDir,
30
+ dataDir: expandTilde(config.dataDir ?? defaultConfig.dataDir),
23
31
  scheduler: {
24
32
  enabled: config.scheduler?.enabled ?? defaultConfig.scheduler.enabled,
25
33
  deduplicateTime: config.scheduler?.deduplicateTime ?? defaultConfig.scheduler.deduplicateTime,
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/config/plugin.ts"],"names":[],"mappings":"AAcA,MAAM,UAAU,SAAS,CAAC,MAAY;IACpC,MAAM,aAAa,GAAiB;QAClC,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,yBAAyB;QAClC,SAAS,EAAE;YACT,OAAO,EAAE,IAAI;YACb,eAAe,EAAE,OAAO;YACxB,SAAS,EAAE,OAAO;YAClB,UAAU,EAAE,OAAO;YACnB,WAAW,EAAE,OAAO;SACrB;KACF,CAAC;IAEF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,aAAa,CAAC,OAAO;QAChD,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,aAAa,CAAC,QAAQ;QACnD,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,aAAa,CAAC,QAAQ;QACnD,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,aAAa,CAAC,OAAO;QAChD,SAAS,EAAE;YACT,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,IAAI,aAAa,CAAC,SAAS,CAAC,OAAO;YACrE,eAAe,EAAE,MAAM,CAAC,SAAS,EAAE,eAAe,IAAI,aAAa,CAAC,SAAS,CAAC,eAAe;YAC7F,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS,IAAI,aAAa,CAAC,SAAS,CAAC,SAAS;YAC3E,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,UAAU,IAAI,aAAa,CAAC,SAAS,CAAC,UAAU;YAC9E,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,IAAI,aAAa,CAAC,SAAS,CAAC,WAAW;SAClF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/config/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAgBxB,SAAS,WAAW,CAAC,QAAgB;IACnC,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAY;IACpC,MAAM,aAAa,GAAiB;QAClC,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,WAAW,CAAC,yBAAyB,CAAC;QAC/C,SAAS,EAAE;YACT,OAAO,EAAE,IAAI;YACb,eAAe,EAAE,OAAO;YACxB,SAAS,EAAE,OAAO;YAClB,UAAU,EAAE,OAAO;YACnB,WAAW,EAAE,OAAO;SACrB;KACF,CAAC;IAEF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,aAAa,CAAC,OAAO;QAChD,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,aAAa,CAAC,QAAQ;QACnD,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,aAAa,CAAC,QAAQ;QACnD,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC;QAC7D,SAAS,EAAE;YACT,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,IAAI,aAAa,CAAC,SAAS,CAAC,OAAO;YACrE,eAAe,EAAE,MAAM,CAAC,SAAS,EAAE,eAAe,IAAI,aAAa,CAAC,SAAS,CAAC,eAAe;YAC7F,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS,IAAI,aAAa,CAAC,SAAS,CAAC,SAAS;YAC3E,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,UAAU,IAAI,aAAa,CAAC,SAAS,CAAC,UAAU;YAC9E,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,IAAI,aAAa,CAAC,SAAS,CAAC,WAAW;SAClF;KACF,CAAC;AACJ,CAAC"}
package/dist/plugin.d.ts CHANGED
@@ -1,10 +1,7 @@
1
+ import type { InternalHookHandler } from './types.js';
1
2
  export interface OpenClawPluginContext {
2
- hooks: {
3
- register: (event: string, handler: any) => Promise<void>;
4
- };
5
- tools: {
6
- register: (tool: any) => void;
7
- };
3
+ registerHook: (events: string | string[], handler: InternalHookHandler) => void;
4
+ registerTool: (tool: any) => void;
8
5
  config?: any;
9
6
  }
10
7
  export interface OpenClawPlugin {
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE;QACL,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KAC1D,CAAC;IACF,KAAK,EAAE;QACL,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;KAC/B,CAAC;IACF,MAAM,CAAC,EAAE,GAAG,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D;AAED,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,cAAc,CA0DzD;;AAGD,wBAA8B"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAChF,YAAY,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE,GAAG,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D;AAED,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,cAAc,CA0DzD;;AAGD,wBAA8B"}
package/dist/plugin.js CHANGED
@@ -8,8 +8,8 @@ export function createPlugin(config) {
8
8
  const pluginConfig = getConfig(config);
9
9
  return {
10
10
  name: 'claw-memory',
11
- version: '0.1.0',
12
- async register(context) {
11
+ version: '0.1.4',
12
+ async register(api) {
13
13
  if (!pluginConfig.enabled) {
14
14
  console.log('[ClawMemory] Plugin disabled');
15
15
  return;
@@ -18,7 +18,7 @@ export function createPlugin(config) {
18
18
  // 初始化数据库
19
19
  const db = getDatabase(pluginConfig.dataDir + '/memory.db');
20
20
  // 注册 message:sent hook
21
- await context.hooks.register('message:sent', async (event) => {
21
+ api.registerHook('message:sent', async (event) => {
22
22
  if (pluginConfig.autoSave) {
23
23
  try {
24
24
  await handleMessageSent(event, db, pluginConfig.dataDir);
@@ -29,12 +29,12 @@ export function createPlugin(config) {
29
29
  }
30
30
  });
31
31
  // 注册 agent:bootstrap hook
32
- await context.hooks.register('agent:bootstrap', async (bootstrapContext) => {
32
+ api.registerHook('agent:bootstrap', async (event) => {
33
33
  try {
34
34
  const summary = await handleAgentBootstrap(db);
35
35
  if (summary) {
36
- bootstrapContext.context = bootstrapContext.context || '';
37
- bootstrapContext.context += '\n\n' + summary;
36
+ event.context = event.context || '';
37
+ event.context += '\n\n' + summary;
38
38
  }
39
39
  }
40
40
  catch (error) {
@@ -42,7 +42,7 @@ export function createPlugin(config) {
42
42
  }
43
43
  });
44
44
  // 注册 Agent Tools
45
- registerMemoryTools(context.tools, db, pluginConfig.dataDir);
45
+ registerMemoryTools({ register: api.registerTool }, db, pluginConfig.dataDir);
46
46
  // 启动 Scheduler
47
47
  if (pluginConfig.scheduler.enabled) {
48
48
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAgB,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAkBpD,MAAM,UAAU,YAAY,CAAC,MAAY;IACvC,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAEvC,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,OAAO;QAEhB,KAAK,CAAC,QAAQ,CAAC,OAA8B;YAC3C,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;gBAC5C,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YAExC,SAAS;YACT,MAAM,EAAE,GAAG,WAAW,CAAC,YAAY,CAAC,OAAO,GAAG,YAAY,CAAC,CAAC;YAE5D,uBAAuB;YACvB,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,EAAE,KAAU,EAAE,EAAE;gBAChE,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;oBAC1B,IAAI,CAAC;wBACH,MAAM,iBAAiB,CAAC,KAAK,EAAE,EAAE,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;oBAC3D,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;oBAC9D,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,0BAA0B;YAC1B,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,EAAE,KAAK,EAAE,gBAAqB,EAAE,EAAE;gBAC9E,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,EAAE,CAAC,CAAC;oBAC/C,IAAI,OAAO,EAAE,CAAC;wBACZ,gBAAgB,CAAC,OAAO,GAAG,gBAAgB,CAAC,OAAO,IAAI,EAAE,CAAC;wBAC1D,gBAAgB,CAAC,OAAO,IAAI,MAAM,GAAG,OAAO,CAAC;oBAC/C,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,iBAAiB;YACjB,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;YAE7D,eAAe;YACf,IAAI,YAAY,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;gBACnC,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;oBAC5D,SAAS,CAAC,KAAK,EAAE,CAAC;gBACpB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACnD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,qBAAqB;AACrB,eAAe,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAgB,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAepD,MAAM,UAAU,YAAY,CAAC,MAAY;IACvC,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAEvC,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,OAAO;QAEhB,KAAK,CAAC,QAAQ,CAAC,GAA0B;YACvC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;gBAC5C,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YAExC,SAAS;YACT,MAAM,EAAE,GAAG,WAAW,CAAC,YAAY,CAAC,OAAO,GAAG,YAAY,CAAC,CAAC;YAE5D,uBAAuB;YACvB,GAAG,CAAC,YAAY,CAAC,cAAc,EAAE,KAAK,EAAE,KAAU,EAAE,EAAE;gBACpD,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;oBAC1B,IAAI,CAAC;wBACH,MAAM,iBAAiB,CAAC,KAAK,EAAE,EAAE,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;oBAC3D,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;oBAC9D,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,0BAA0B;YAC1B,GAAG,CAAC,YAAY,CAAC,iBAAiB,EAAE,KAAK,EAAE,KAAU,EAAE,EAAE;gBACvD,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,EAAE,CAAC,CAAC;oBAC/C,IAAI,OAAO,EAAE,CAAC;wBACZ,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;wBACpC,KAAK,CAAC,OAAO,IAAI,MAAM,GAAG,OAAO,CAAC;oBACpC,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,iBAAiB;YACjB,mBAAmB,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;YAE9E,eAAe;YACf,IAAI,YAAY,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;gBACnC,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;oBAC5D,SAAS,CAAC,KAAK,EAAE,CAAC;gBACpB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACnD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,qBAAqB;AACrB,eAAe,YAAY,EAAE,CAAC"}
package/dist/types.d.ts CHANGED
@@ -2,6 +2,7 @@
2
2
  * Claw-Memory Type Definitions
3
3
  * Lightweight AI memory system for OpenClaw and Claude Code
4
4
  */
5
+ export type InternalHookHandler = (event: any) => Promise<void> | void;
5
6
  export interface IntegratedSummary {
6
7
  active_areas: string[];
7
8
  key_topics: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "claw-memory",
3
3
  "name": "ClawMemory",
4
- "version": "0.1.3",
4
+ "version": "0.1.5",
5
5
  "description": "AI memory system - auto-save conversations and inject memory summary",
6
6
  "main": "./dist/index.js",
7
7
  "configSchema": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yun-zero/claw-memory",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "OpenClaw 记忆插件 - 自动保存对话,智能注入上下文",
5
5
  "main": "dist/plugin.js",
6
6
  "type": "module",
@@ -1,3 +1,6 @@
1
+ import os from 'os';
2
+ import path from 'path';
3
+
1
4
  export interface PluginConfig {
2
5
  enabled: boolean;
3
6
  autoSave: boolean;
@@ -12,12 +15,19 @@ export interface PluginConfig {
12
15
  };
13
16
  }
14
17
 
18
+ function expandTilde(filepath: string): string {
19
+ if (filepath.startsWith('~/') || filepath === '~') {
20
+ return path.join(os.homedir(), filepath.slice(1));
21
+ }
22
+ return filepath;
23
+ }
24
+
15
25
  export function getConfig(config?: any): PluginConfig {
16
26
  const defaultConfig: PluginConfig = {
17
27
  enabled: true,
18
28
  autoSave: true,
19
29
  saveMode: 'qa',
20
- dataDir: '~/.openclaw/claw-memory',
30
+ dataDir: expandTilde('~/.openclaw/claw-memory'),
21
31
  scheduler: {
22
32
  enabled: true,
23
33
  deduplicateTime: '01:00',
@@ -35,7 +45,7 @@ export function getConfig(config?: any): PluginConfig {
35
45
  enabled: config.enabled ?? defaultConfig.enabled,
36
46
  autoSave: config.autoSave ?? defaultConfig.autoSave,
37
47
  saveMode: config.saveMode ?? defaultConfig.saveMode,
38
- dataDir: config.dataDir ?? defaultConfig.dataDir,
48
+ dataDir: expandTilde(config.dataDir ?? defaultConfig.dataDir),
39
49
  scheduler: {
40
50
  enabled: config.scheduler?.enabled ?? defaultConfig.scheduler.enabled,
41
51
  deduplicateTime: config.scheduler?.deduplicateTime ?? defaultConfig.scheduler.deduplicateTime,
package/src/plugin.ts CHANGED
@@ -4,14 +4,11 @@ import { handleMessageSent } from './hooks/message.js';
4
4
  import { handleAgentBootstrap } from './hooks/bootstrap.js';
5
5
  import { registerMemoryTools } from './tools/memory.js';
6
6
  import { Scheduler } from './services/scheduler.js';
7
+ import type { InternalHookHandler } from './types.js';
7
8
 
8
9
  export interface OpenClawPluginContext {
9
- hooks: {
10
- register: (event: string, handler: any) => Promise<void>;
11
- };
12
- tools: {
13
- register: (tool: any) => void;
14
- };
10
+ registerHook: (events: string | string[], handler: InternalHookHandler) => void;
11
+ registerTool: (tool: any) => void;
15
12
  config?: any;
16
13
  }
17
14
 
@@ -26,9 +23,9 @@ export function createPlugin(config?: any): OpenClawPlugin {
26
23
 
27
24
  return {
28
25
  name: 'claw-memory',
29
- version: '0.1.0',
26
+ version: '0.1.4',
30
27
 
31
- async register(context: OpenClawPluginContext) {
28
+ async register(api: OpenClawPluginContext) {
32
29
  if (!pluginConfig.enabled) {
33
30
  console.log('[ClawMemory] Plugin disabled');
34
31
  return;
@@ -40,7 +37,7 @@ export function createPlugin(config?: any): OpenClawPlugin {
40
37
  const db = getDatabase(pluginConfig.dataDir + '/memory.db');
41
38
 
42
39
  // 注册 message:sent hook
43
- await context.hooks.register('message:sent', async (event: any) => {
40
+ api.registerHook('message:sent', async (event: any) => {
44
41
  if (pluginConfig.autoSave) {
45
42
  try {
46
43
  await handleMessageSent(event, db, pluginConfig.dataDir);
@@ -51,12 +48,12 @@ export function createPlugin(config?: any): OpenClawPlugin {
51
48
  });
52
49
 
53
50
  // 注册 agent:bootstrap hook
54
- await context.hooks.register('agent:bootstrap', async (bootstrapContext: any) => {
51
+ api.registerHook('agent:bootstrap', async (event: any) => {
55
52
  try {
56
53
  const summary = await handleAgentBootstrap(db);
57
54
  if (summary) {
58
- bootstrapContext.context = bootstrapContext.context || '';
59
- bootstrapContext.context += '\n\n' + summary;
55
+ event.context = event.context || '';
56
+ event.context += '\n\n' + summary;
60
57
  }
61
58
  } catch (error) {
62
59
  console.error('[ClawMemory] Failed to inject summary:', error);
@@ -64,7 +61,7 @@ export function createPlugin(config?: any): OpenClawPlugin {
64
61
  });
65
62
 
66
63
  // 注册 Agent Tools
67
- registerMemoryTools(context.tools, db, pluginConfig.dataDir);
64
+ registerMemoryTools({ register: api.registerTool }, db, pluginConfig.dataDir);
68
65
 
69
66
  // 启动 Scheduler
70
67
  if (pluginConfig.scheduler.enabled) {
package/src/types.ts CHANGED
@@ -3,6 +3,8 @@
3
3
  * Lightweight AI memory system for OpenClaw and Claude Code
4
4
  */
5
5
 
6
+ export type InternalHookHandler = (event: any) => Promise<void> | void;
7
+
6
8
  export interface IntegratedSummary {
7
9
  active_areas: string[];
8
10
  key_topics: string[];