@hippodid/openclaw-plugin 1.0.8 → 1.0.10

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
@@ -34,6 +34,19 @@ Restart the gateway:
34
34
  openclaw gateway restart
35
35
  ```
36
36
 
37
+ ## Local Dev Install
38
+
39
+ You can test the plugin locally without publishing to npm:
40
+
41
+ ```bash
42
+ npm run build
43
+ openclaw plugins install --link .
44
+ openclaw gateway restart
45
+ openclaw plugins info hippodid
46
+ ```
47
+
48
+ That links OpenClaw directly to this working tree, so rebuilding `dist/` updates what the gateway loads.
49
+
37
50
  ## How It Works
38
51
 
39
52
  ```
@@ -50,15 +63,30 @@ The plugin runs as a **non-slot plugin** — it doesn't replace your existing me
50
63
  Already have memory files from previous sessions?
51
64
 
52
65
  ```bash
53
- openclaw run hippodid:import --workspace ~/.openclaw/workspace
66
+ /hippodid import ~/.openclaw/workspace
54
67
  ```
55
68
 
56
69
  This uploads all `MEMORY.md` + `memory/*.md` files to your HippoDid character in one pass.
57
70
 
58
- ## CLI Commands
71
+ ## Commands
59
72
 
60
- | Command | Description |
61
- |---------|-------------|
73
+ HippoDid exposes two command surfaces:
74
+
75
+ 1. Chat commands handled by OpenClaw's command router:
76
+ - `/hippodid status`
77
+ - `/hippodid sync`
78
+ - `/hippodid import [workspace-path]`
79
+ 2. Agent/tool calls available inside the runtime:
80
+ - `hippodid:status`
81
+ - `hippodid:sync`
82
+ - `hippodid:import`
83
+
84
+ Important: `openclaw agent --message "/hippodid status"` does **not** go through OpenClaw's slash-command router. That path sends the text straight to the agent, so `/hippodid ...` may be interpreted as ordinary user text instead of a plugin command. Use a real OpenClaw chat/channel surface for slash commands, or use the tool forms above for direct agent runs.
85
+
86
+ ## Tool Names
87
+
88
+ | Tool | Description |
89
+ |------|-------------|
62
90
  | `hippodid:status` | Show tier, sync status, watched paths |
63
91
  | `hippodid:sync` | Trigger immediate sync of all watched files |
64
92
  | `hippodid:import` | Import existing workspace memory |
@@ -102,7 +130,7 @@ This uploads all `MEMORY.md` + `memory/*.md` files to your HippoDid character in
102
130
  | `apiKey` | string | *required* | HippoDid API key (`hd_sk_...`) |
103
131
  | `characterId` | string | *required* | Target character ID |
104
132
  | `baseUrl` | string | `https://api.hippodid.com` | API endpoint |
105
- | `syncIntervalSeconds` | number | `300` | Debounce interval for file sync (min: 60s) |
133
+ | `syncIntervalSeconds` | number | `300` | Debounce interval for file sync. The server enforces a tier-based minimum. |
106
134
  | `autoRecall` | boolean | `false` | Inject relevant memories before each turn (paid tier) |
107
135
  | `autoCapture` | boolean | `false` | Extract and store facts after each turn (paid tier) |
108
136
  | `additionalPaths` | array | `[]` | Extra files/directories to watch |
@@ -120,6 +148,8 @@ This uploads all `MEMORY.md` + `memory/*.md` files to your HippoDid character in
120
148
  - **Auto-Capture**: Facts automatically extracted from conversations via AUDN pipeline
121
149
  - Lower sync interval minimums
122
150
 
151
+ If the server reports `autoRecallAvailable` or `autoCaptureAvailable`, the plugin enables those hooks automatically when the matching config flag is `true`.
152
+
123
153
  ## Workspace Auto-Detection
124
154
 
125
155
  The plugin automatically finds your memory files by searching:
@@ -136,6 +166,12 @@ Add `additionalPaths` in config to watch extra files or directories.
136
166
  - Node.js 22+
137
167
  - HippoDid account (free at hippodid.dev)
138
168
 
169
+ ## Notes
170
+
171
+ - The plugin ships compiled output from `dist/` and reads its displayed version from `package.json` at runtime.
172
+ - Current HippoDid servers accept `Authorization: Bearer <apiKey>`. The plugin also sends the legacy `X-Api-Key` header for compatibility.
173
+ - File sync has been verified locally against a linked OpenClaw install, including watcher-driven sync and cloud status updates.
174
+
139
175
  ## License
140
176
 
141
177
  Apache 2.0
@@ -1 +1 @@
1
- {"version":3,"file":"hippodid-client.d.ts","sourceRoot":"","sources":["../src/hippodid-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,MAAM,EACN,QAAQ,EAER,YAAY,EAEZ,kBAAkB,EAGlB,kBAAkB,EAClB,YAAY,EAEb,MAAM,YAAY,CAAC;AAYpB,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxD,QAAQ,CACN,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IACjC,aAAa,CACX,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC,CAAC;IAC9C,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACxE,cAAc,CACZ,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IACnC,SAAS,CACP,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;CAC1B;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,CAuO5E"}
1
+ {"version":3,"file":"hippodid-client.d.ts","sourceRoot":"","sources":["../src/hippodid-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,MAAM,EACN,QAAQ,EAER,YAAY,EAEZ,kBAAkB,EAGlB,kBAAkB,EAClB,YAAY,EAEb,MAAM,YAAY,CAAC;AAYpB,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxD,QAAQ,CACN,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IACjC,aAAa,CACX,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC,CAAC;IAC9C,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACxE,cAAc,CACZ,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IACnC,SAAS,CACP,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;CAC1B;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,CAmP5E"}
@@ -6,6 +6,7 @@ export function createClient(apiKey, baseUrl) {
6
6
  let tierCache = null;
7
7
  function headers() {
8
8
  return {
9
+ Authorization: `Bearer ${apiKey}`,
9
10
  'X-Api-Key': apiKey,
10
11
  'Content-Type': 'application/json',
11
12
  };
@@ -68,9 +69,15 @@ export function createClient(apiKey, baseUrl) {
68
69
  return {
69
70
  tier: raw.tier,
70
71
  features: {
71
- autoRecallAvailable: raw.features.auto_recall_available,
72
- autoCaptureAvailable: raw.features.auto_capture_available,
73
- minSyncIntervalSeconds: raw.features.min_sync_interval_seconds,
72
+ autoRecallAvailable: raw.features.autoRecallAvailable ??
73
+ raw.features.auto_recall_available ??
74
+ false,
75
+ autoCaptureAvailable: raw.features.autoCaptureAvailable ??
76
+ raw.features.auto_capture_available ??
77
+ false,
78
+ minSyncIntervalSeconds: raw.features.minSyncIntervalSeconds ??
79
+ raw.features.min_sync_interval_seconds ??
80
+ 60,
74
81
  },
75
82
  };
76
83
  }
@@ -104,8 +111,10 @@ export function createClient(apiKey, baseUrl) {
104
111
  },
105
112
  async syncFile(characterId, sourcePath, label, fileContent, checksum) {
106
113
  const result = await request('POST', `/v1/characters/${encodeURIComponent(characterId)}/sync`, {
114
+ filePath: sourcePath,
107
115
  source_path: sourcePath,
108
116
  label,
117
+ fileContent: fileContent,
109
118
  file_content: fileContent,
110
119
  checksum,
111
120
  });
@@ -1 +1 @@
1
- {"version":3,"file":"hippodid-client.js","sourceRoot":"","sources":["../src/hippodid-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hippodid-client.js","sourceRoot":"","sources":["../src/hippodid-client.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"auto-capture.d.ts","sourceRoot":"","sources":["../../src/hooks/auto-capture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE;IAAE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC3D,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CA2BpB"}
1
+ {"version":3,"file":"auto-capture.d.ts","sourceRoot":"","sources":["../../src/hooks/auto-capture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE;IAAE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC3D,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAmEpB"}
@@ -1,15 +1,26 @@
1
1
  export function createAutoCaptureHook(client, config, logger) {
2
2
  return (api) => {
3
- api.registerHook('agent_end', async (ctx) => {
3
+ api.on('agent_end', async (ctx) => {
4
4
  try {
5
- const user = ctx?.userMessage ?? ctx?.prompt ?? ctx?.input ?? '';
6
- const assistant = ctx?.assistantMessage ?? ctx?.response ?? ctx?.output ?? '';
5
+ const user = ctx?.userMessage ??
6
+ ctx?.message ??
7
+ ctx?.prompt ??
8
+ ctx?.input ??
9
+ ctx?.finalUserMessage ??
10
+ '';
11
+ const assistant = ctx?.assistantMessage ??
12
+ ctx?.response ??
13
+ ctx?.output ??
14
+ ctx?.finalResponse ??
15
+ '';
7
16
  if (!user && !assistant)
8
17
  return;
9
18
  const content = [
10
19
  user ? `User: ${user}` : '',
11
20
  assistant ? `Assistant: ${assistant}` : '',
12
- ].filter(Boolean).join('\n');
21
+ ]
22
+ .filter(Boolean)
23
+ .join('\n');
13
24
  const result = await client.addMemory(config.characterId, content);
14
25
  if (result.ok) {
15
26
  logger.info('hippodid: captured conversation turn');
@@ -18,8 +29,31 @@ export function createAutoCaptureHook(client, config, logger) {
18
29
  catch (e) {
19
30
  logger.warn(`hippodid: capture error: ${e instanceof Error ? e.message : String(e)}`);
20
31
  }
21
- }, { name: 'hippodid.agent-end', description: 'Capture conversation to HippoDid after agent responds' });
22
- logger.info('hippodid: auto-capture hook registered (agent_end)');
32
+ });
33
+ api.registerTool({
34
+ name: 'hippodid:remember',
35
+ description: 'Save important information to HippoDid character memory. Call this to store facts, decisions, preferences, or context that should persist across sessions.',
36
+ args: [
37
+ {
38
+ name: 'content',
39
+ description: 'The information to remember',
40
+ required: true,
41
+ },
42
+ ],
43
+ execute: async (args) => {
44
+ const content = args['content'] ?? '';
45
+ if (!content)
46
+ return 'Nothing to remember.';
47
+ const result = await client.addMemory(config.characterId, content);
48
+ if (result.ok) {
49
+ logger.info(`hippodid: captured memory: ${content.slice(0, 80)}...`);
50
+ return 'Remembered.';
51
+ }
52
+ logger.warn(`hippodid: capture failed: ${result.error.message}`);
53
+ return `Failed to remember: ${result.error.message}`;
54
+ },
55
+ });
56
+ logger.info('hippodid: auto-capture hook + hippodid:remember tool registered');
23
57
  };
24
58
  }
25
59
  //# sourceMappingURL=auto-capture.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auto-capture.js","sourceRoot":"","sources":["../../src/hooks/auto-capture.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,qBAAqB,CACnC,MAAsB,EACtB,MAAoB,EACpB,MAA4D;IAE5D,OAAO,CAAC,GAAQ,EAAE,EAAE;QAClB,GAAG,CAAC,YAAY,CACd,WAAW,EACX,KAAK,EAAE,GAAQ,EAAE,EAAE;YACjB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,GAAG,EAAE,WAAW,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC;gBACjE,MAAM,SAAS,GAAG,GAAG,EAAE,gBAAgB,IAAI,GAAG,EAAE,QAAQ,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,CAAC;gBAC9E,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS;oBAAE,OAAO;gBAEhC,MAAM,OAAO,GAAG;oBACd,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;oBAC3B,SAAS,CAAC,CAAC,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE;iBAC3C,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAE7B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBACnE,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;oBACd,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACxF,CAAC;QACH,CAAC,EACD,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,uDAAuD,EAAE,CACrG,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IACpE,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"auto-capture.js","sourceRoot":"","sources":["../../src/hooks/auto-capture.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,qBAAqB,CACnC,MAAsB,EACtB,MAAoB,EACpB,MAA4D;IAE5D,OAAO,CAAC,GAAQ,EAAE,EAAE;QAClB,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,GAAQ,EAAE,EAAE;YACrC,IAAI,CAAC;gBACH,MAAM,IAAI,GACR,GAAG,EAAE,WAAW;oBAChB,GAAG,EAAE,OAAO;oBACZ,GAAG,EAAE,MAAM;oBACX,GAAG,EAAE,KAAK;oBACV,GAAG,EAAE,gBAAgB;oBACrB,EAAE,CAAC;gBACL,MAAM,SAAS,GACb,GAAG,EAAE,gBAAgB;oBACrB,GAAG,EAAE,QAAQ;oBACb,GAAG,EAAE,MAAM;oBACX,GAAG,EAAE,aAAa;oBAClB,EAAE,CAAC;gBACL,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS;oBAAE,OAAO;gBAEhC,MAAM,OAAO,GAAG;oBACd,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;oBAC3B,SAAS,CAAC,CAAC,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE;iBAC3C;qBACE,MAAM,CAAC,OAAO,CAAC;qBACf,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEd,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBACnE,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;oBACd,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,CACT,4BAA4B,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACzE,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,YAAY,CAAC;YACf,IAAI,EAAE,mBAAmB;YACzB,WAAW,EACT,4JAA4J;YAC9J,IAAI,EAAE;gBACJ;oBACE,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,6BAA6B;oBAC1C,QAAQ,EAAE,IAAI;iBACf;aACF;YACD,OAAO,EAAE,KAAK,EAAE,IAA4B,EAAE,EAAE;gBAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gBACtC,IAAI,CAAC,OAAO;oBAAE,OAAO,sBAAsB,CAAC;gBAE5C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBACnE,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;oBACd,MAAM,CAAC,IAAI,CAAC,8BAA8B,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;oBACrE,OAAO,aAAa,CAAC;gBACvB,CAAC;gBAED,MAAM,CAAC,IAAI,CAAC,6BAA6B,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACjE,OAAO,uBAAuB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACvD,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CACT,iEAAiE,CAClE,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"auto-recall.d.ts","sourceRoot":"","sources":["../../src/hooks/auto-recall.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE;IAAE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC3D,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CA0BpB"}
1
+ {"version":3,"file":"auto-recall.d.ts","sourceRoot":"","sources":["../../src/hooks/auto-recall.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE;IAAE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC3D,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAsDpB"}
@@ -1,25 +1,48 @@
1
1
  export function createAutoRecallHook(client, config, logger) {
2
2
  return (api) => {
3
- api.registerHook('before_agent_start', async (ctx) => {
3
+ api.on('before_agent_start', async (ctx) => {
4
4
  try {
5
5
  const query = ctx?.prompt ?? ctx?.message ?? ctx?.input ?? '';
6
- if (!query)
6
+ if (!query || query.length < 5) {
7
7
  return;
8
+ }
8
9
  const result = await client.searchMemories(config.characterId, query);
9
10
  if (result.ok && result.value?.length > 0) {
10
11
  const memories = result.value
11
12
  .map((m) => m.content ?? m.text ?? m.body ?? '')
12
13
  .filter(Boolean)
13
14
  .join('\n---\n');
14
- ctx.prependContext?.(`## HippoDid Memories\n${memories}\n`);
15
15
  logger.info(`hippodid: recalled ${result.value.length} memories`);
16
+ return {
17
+ prependContext: `## HippoDid Memories\n${memories}\n`,
18
+ };
16
19
  }
17
20
  }
18
21
  catch (e) {
19
22
  logger.warn(`hippodid: recall error: ${e instanceof Error ? e.message : String(e)}`);
20
23
  }
21
- }, { name: 'hippodid.before-agent-start', description: 'Inject HippoDid memories before agent responds' });
22
- logger.info('hippodid: auto-recall hook registered (before_agent_start)');
24
+ });
25
+ api.registerTool({
26
+ name: 'hippodid:recall',
27
+ description: 'Search HippoDid character memory and return relevant context. Call this at the start of a task to recall relevant memories.',
28
+ args: [
29
+ {
30
+ name: 'query',
31
+ description: 'What to search for in memory',
32
+ required: true,
33
+ },
34
+ ],
35
+ execute: async (args) => {
36
+ const query = args['query'] ?? '';
37
+ const result = await client.searchMemories(config.characterId, query);
38
+ if (result.ok && result.value.length > 0) {
39
+ logger.info(`hippodid: recalled ${result.value.length} memories for query: ${query}`);
40
+ return result.value.map((m) => m.content).join('\n\n');
41
+ }
42
+ return 'No memories found.';
43
+ },
44
+ });
45
+ logger.info('hippodid: auto-recall hook + hippodid:recall tool registered');
23
46
  };
24
47
  }
25
48
  //# sourceMappingURL=auto-recall.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auto-recall.js","sourceRoot":"","sources":["../../src/hooks/auto-recall.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,oBAAoB,CAClC,MAAsB,EACtB,MAAoB,EACpB,MAA4D;IAE5D,OAAO,CAAC,GAAQ,EAAE,EAAE;QAClB,GAAG,CAAC,YAAY,CACd,oBAAoB,EACpB,KAAK,EAAE,GAAQ,EAAE,EAAE;YACjB,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC9D,IAAI,CAAC,KAAK;oBAAE,OAAO;gBAEnB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;gBACtE,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK;yBAC1B,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;yBACpD,MAAM,CAAC,OAAO,CAAC;yBACf,IAAI,CAAC,SAAS,CAAC,CAAC;oBACnB,GAAG,CAAC,cAAc,EAAE,CAAC,yBAAyB,QAAQ,IAAI,CAAC,CAAC;oBAC5D,MAAM,CAAC,IAAI,CAAC,sBAAsB,MAAM,CAAC,KAAK,CAAC,MAAM,WAAW,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACvF,CAAC;QACH,CAAC,EACD,EAAE,IAAI,EAAE,6BAA6B,EAAE,WAAW,EAAE,gDAAgD,EAAE,CACvG,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;IAC5E,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"auto-recall.js","sourceRoot":"","sources":["../../src/hooks/auto-recall.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,oBAAoB,CAClC,MAAsB,EACtB,MAAoB,EACpB,MAA4D;IAE5D,OAAO,CAAC,GAAQ,EAAE,EAAE;QAClB,GAAG,CAAC,EAAE,CAAC,oBAAoB,EAAE,KAAK,EAAE,GAAQ,EAAE,EAAE;YAC9C,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC9D,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/B,OAAO;gBACT,CAAC;gBAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;gBACtE,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK;yBAC1B,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;yBACpD,MAAM,CAAC,OAAO,CAAC;yBACf,IAAI,CAAC,SAAS,CAAC,CAAC;oBAEnB,MAAM,CAAC,IAAI,CAAC,sBAAsB,MAAM,CAAC,KAAK,CAAC,MAAM,WAAW,CAAC,CAAC;oBAClE,OAAO;wBACL,cAAc,EAAE,yBAAyB,QAAQ,IAAI;qBACtD,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,CACT,2BAA2B,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACxE,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,YAAY,CAAC;YACf,IAAI,EAAE,iBAAiB;YACvB,WAAW,EACT,6HAA6H;YAC/H,IAAI,EAAE;gBACJ;oBACE,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,8BAA8B;oBAC3C,QAAQ,EAAE,IAAI;iBACf;aACF;YACD,OAAO,EAAE,KAAK,EAAE,IAA4B,EAAE,EAAE;gBAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;gBACtE,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzC,MAAM,CAAC,IAAI,CACT,sBAAsB,MAAM,CAAC,KAAK,CAAC,MAAM,wBAAwB,KAAK,EAAE,CACzE,CAAC;oBACF,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACzD,CAAC;gBACD,OAAO,oBAAoB,CAAC;YAC9B,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;IAC9E,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"memory-flush.d.ts","sourceRoot":"","sources":["../../src/hooks/memory-flush.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE;IAAE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC3D,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAQpB"}
1
+ {"version":3,"file":"memory-flush.d.ts","sourceRoot":"","sources":["../../src/hooks/memory-flush.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE;IAAE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC3D,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAiBpB"}
@@ -1,10 +1,15 @@
1
1
  export function createMemoryFlushHook(fileSync, logger) {
2
- return (_api) => {
3
- // OpenClaw 2026 does not support api.on() for event hooks.
4
- // Pre-compaction flush is available via the hippodid:sync tool,
5
- // which agents can call explicitly before a compaction.
6
- // Background sync is handled by fileSync.start() interval.
7
- logger.info('hippodid: memory flush handler ready (use hippodid:sync tool to trigger)');
2
+ return (api) => {
3
+ api.on('before_compaction', async () => {
4
+ try {
5
+ const { synced, changed } = await fileSync.flushNow();
6
+ logger.info(`hippodid: flushed ${synced} files before compaction (${changed} changed)`);
7
+ }
8
+ catch (e) {
9
+ logger.warn(`hippodid: compaction flush failed: ${e instanceof Error ? e.message : 'unknown'}`);
10
+ }
11
+ });
12
+ logger.info('hippodid: memory flush handler registered');
8
13
  };
9
14
  }
10
15
  //# sourceMappingURL=memory-flush.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory-flush.js","sourceRoot":"","sources":["../../src/hooks/memory-flush.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,qBAAqB,CACnC,QAAkB,EAClB,MAA4D;IAE5D,OAAO,CAAC,IAAS,EAAE,EAAE;QACnB,2DAA2D;QAC3D,gEAAgE;QAChE,wDAAwD;QACxD,2DAA2D;QAC3D,MAAM,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;IAC1F,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"memory-flush.js","sourceRoot":"","sources":["../../src/hooks/memory-flush.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,qBAAqB,CACnC,QAAkB,EAClB,MAA4D;IAE5D,OAAO,CAAC,GAAQ,EAAE,EAAE;QAClB,GAAG,CAAC,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;YACrC,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACtD,MAAM,CAAC,IAAI,CACT,qBAAqB,MAAM,6BAA6B,OAAO,WAAW,CAC3E,CAAC;YACJ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,CACT,sCAAsC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CACnF,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IAC3D,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"session-lifecycle.d.ts","sourceRoot":"","sources":["../../src/hooks/session-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,OAAO,EACnB,MAAM,EAAE;IAAE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC3D,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAOpB"}
1
+ {"version":3,"file":"session-lifecycle.d.ts","sourceRoot":"","sources":["../../src/hooks/session-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,OAAO,EACnB,MAAM,EAAE;IAAE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC3D,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAoCpB"}
@@ -1,9 +1,29 @@
1
1
  export function createSessionHooks(fileSync, tierManager, autoRecall, logger) {
2
- return (_api) => {
3
- // OpenClaw 2026 does not support api.on() for session lifecycle events.
4
- // Session start hydration happens automatically via fileSync.start()
5
- // which pulls cloud state on initialization.
6
- logger.info('hippodid: session lifecycle handler ready');
2
+ return (api) => {
3
+ api.on('session_start', async () => {
4
+ try {
5
+ await tierManager.initialize();
6
+ if (!tierManager.shouldHydrateOnStart(autoRecall)) {
7
+ logger.info('hippodid: session start hydration skipped because auto-recall is active');
8
+ return;
9
+ }
10
+ const hydrated = await fileSync.hydrateFromCloud();
11
+ logger.info(`hippodid: session started, hydrated ${hydrated} files`);
12
+ }
13
+ catch (e) {
14
+ logger.warn(`hippodid: session start error: ${e instanceof Error ? e.message : 'unknown'}`);
15
+ }
16
+ });
17
+ api.on('session_end', async () => {
18
+ try {
19
+ const { synced, changed } = await fileSync.flushNow();
20
+ logger.info(`hippodid: session ended, flushed ${synced} files (${changed} changed)`);
21
+ }
22
+ catch (e) {
23
+ logger.warn(`hippodid: session end error: ${e instanceof Error ? e.message : 'unknown'}`);
24
+ }
25
+ });
26
+ logger.info('hippodid: session lifecycle hooks registered');
7
27
  };
8
28
  }
9
29
  //# sourceMappingURL=session-lifecycle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-lifecycle.js","sourceRoot":"","sources":["../../src/hooks/session-lifecycle.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,kBAAkB,CAChC,QAAkB,EAClB,WAAwB,EACxB,UAAmB,EACnB,MAA4D;IAE5D,OAAO,CAAC,IAAS,EAAE,EAAE;QACnB,wEAAwE;QACxE,qEAAqE;QACrE,6CAA6C;QAC7C,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IAC3D,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"session-lifecycle.js","sourceRoot":"","sources":["../../src/hooks/session-lifecycle.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,kBAAkB,CAChC,QAAkB,EAClB,WAAwB,EACxB,UAAmB,EACnB,MAA4D;IAE5D,OAAO,CAAC,GAAQ,EAAE,EAAE;QAClB,GAAG,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;YACjC,IAAI,CAAC;gBACH,MAAM,WAAW,CAAC,UAAU,EAAE,CAAC;gBAC/B,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC;oBAClD,MAAM,CAAC,IAAI,CACT,yEAAyE,CAC1E,CAAC;oBACF,OAAO;gBACT,CAAC;gBAED,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,gBAAgB,EAAE,CAAC;gBACnD,MAAM,CAAC,IAAI,CAAC,uCAAuC,QAAQ,QAAQ,CAAC,CAAC;YACvE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,CACT,kCAAkC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAC/E,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;YAC/B,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACtD,MAAM,CAAC,IAAI,CACT,oCAAoC,MAAM,WAAW,OAAO,WAAW,CACxE,CAAC;YACJ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,CACT,gCAAgC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAC7E,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAC9D,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;kBAiBgB,GAAG,GAAG,IAAI;;AAH1B,wBA2GE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;kBAqBgB,GAAG,GAAG,IAAI;;AAH1B,wBA2GE"}