@hippodid/openclaw-plugin 1.0.7 → 1.0.9
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/dist/hippodid-client.js +1 -1
- package/dist/hippodid-client.js.map +1 -1
- package/dist/hooks/auto-capture.d.ts.map +1 -1
- package/dist/hooks/auto-capture.js +25 -5
- package/dist/hooks/auto-capture.js.map +1 -1
- package/dist/hooks/auto-recall.d.ts.map +1 -1
- package/dist/hooks/auto-recall.js +28 -10
- package/dist/hooks/auto-recall.js.map +1 -1
- package/dist/index.js +9 -6
- package/dist/index.js.map +1 -1
- package/openclaw.plugin.json +1 -0
- package/package.json +2 -1
- package/skills/hippodid/SKILL.md +31 -0
- package/src/hippodid-client.ts +1 -1
- package/src/hooks/auto-capture.ts +31 -5
- package/src/hooks/auto-recall.ts +33 -10
- package/src/index.ts +9 -6
package/dist/hippodid-client.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hippodid-client.js","sourceRoot":"","sources":["../src/hippodid-client.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAClC,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAiCxC,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,OAAe;IAC1D,IAAI,SAAS,GAAsB,IAAI,CAAC;IAExC,SAAS,OAAO;QACd,OAAO;YACL,
|
|
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,
|
|
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,CAuDpB"}
|
|
@@ -1,8 +1,28 @@
|
|
|
1
1
|
export function createAutoCaptureHook(client, config, logger) {
|
|
2
2
|
return (api) => {
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
// Lifecycle hook: capture conversation after agent responds
|
|
4
|
+
api.registerHook('agent_end', async (ctx) => {
|
|
5
|
+
try {
|
|
6
|
+
const user = ctx?.userMessage ?? ctx?.prompt ?? ctx?.input ?? '';
|
|
7
|
+
const assistant = ctx?.assistantMessage ?? ctx?.response ?? ctx?.output ?? '';
|
|
8
|
+
if (!user && !assistant)
|
|
9
|
+
return;
|
|
10
|
+
const content = [
|
|
11
|
+
user ? `User: ${user}` : '',
|
|
12
|
+
assistant ? `Assistant: ${assistant}` : '',
|
|
13
|
+
].filter(Boolean).join('\n');
|
|
14
|
+
const result = await client.addMemory(config.characterId, content);
|
|
15
|
+
if (result.ok) {
|
|
16
|
+
logger.info('hippodid: captured conversation turn');
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
catch (e) {
|
|
20
|
+
logger.warn(`hippodid: capture error: ${e instanceof Error ? e.message : String(e)}`);
|
|
21
|
+
}
|
|
22
|
+
}, { name: 'hippodid.agent-end', description: 'Capture conversation to HippoDid after agent responds' });
|
|
23
|
+
// Explicit tool: agents can call hippodid:remember directly
|
|
24
|
+
api.registerTool({
|
|
25
|
+
name: 'hippodid:remember',
|
|
6
26
|
description: 'Save important information to HippoDid character memory. Call this to store facts, decisions, preferences, or context that should persist across sessions.',
|
|
7
27
|
args: [
|
|
8
28
|
{
|
|
@@ -11,7 +31,7 @@ export function createAutoCaptureHook(client, config, logger) {
|
|
|
11
31
|
required: true,
|
|
12
32
|
},
|
|
13
33
|
],
|
|
14
|
-
|
|
34
|
+
execute: async (args) => {
|
|
15
35
|
const content = args['content'] ?? '';
|
|
16
36
|
if (!content)
|
|
17
37
|
return 'Nothing to remember.';
|
|
@@ -26,7 +46,7 @@ export function createAutoCaptureHook(client, config, logger) {
|
|
|
26
46
|
}
|
|
27
47
|
},
|
|
28
48
|
});
|
|
29
|
-
logger.info('hippodid: auto-capture
|
|
49
|
+
logger.info('hippodid: auto-capture hook + hippodid:remember tool registered');
|
|
30
50
|
};
|
|
31
51
|
}
|
|
32
52
|
//# 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,
|
|
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,4DAA4D;QAC5D,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;QAEF,4DAA4D;QAC5D,GAAG,CAAC,YAAY,CAAC;YACf,IAAI,EAAE,mBAAmB;YACzB,WAAW,EAAE,4JAA4J;YACzK,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;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC,6BAA6B,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;oBACjE,OAAO,uBAAuB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACvD,CAAC;YACH,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;IACjF,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,
|
|
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,CAmDpB"}
|
|
@@ -1,8 +1,28 @@
|
|
|
1
1
|
export function createAutoRecallHook(client, config, logger) {
|
|
2
2
|
return (api) => {
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
// Lifecycle hook: inject memories before agent responds
|
|
4
|
+
api.registerHook('before_agent_start', async (ctx) => {
|
|
5
|
+
try {
|
|
6
|
+
const query = ctx?.prompt ?? ctx?.message ?? ctx?.input ?? '';
|
|
7
|
+
if (!query)
|
|
8
|
+
return;
|
|
9
|
+
const result = await client.searchMemories(config.characterId, query);
|
|
10
|
+
if (result.ok && result.value?.length > 0) {
|
|
11
|
+
const memories = result.value
|
|
12
|
+
.map((m) => m.content ?? m.text ?? m.body ?? '')
|
|
13
|
+
.filter(Boolean)
|
|
14
|
+
.join('\n---\n');
|
|
15
|
+
ctx.prependContext?.(`## HippoDid Memories\n${memories}\n`);
|
|
16
|
+
logger.info(`hippodid: recalled ${result.value.length} memories`);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
catch (e) {
|
|
20
|
+
logger.warn(`hippodid: recall error: ${e instanceof Error ? e.message : String(e)}`);
|
|
21
|
+
}
|
|
22
|
+
}, { name: 'hippodid.before-agent-start', description: 'Inject HippoDid memories before agent responds' });
|
|
23
|
+
// Explicit tool: agents can call hippodid:recall directly
|
|
24
|
+
api.registerTool({
|
|
25
|
+
name: 'hippodid:recall',
|
|
6
26
|
description: 'Search HippoDid character memory and return relevant context. Call this at the start of a task to recall relevant memories.',
|
|
7
27
|
args: [
|
|
8
28
|
{
|
|
@@ -11,21 +31,19 @@ export function createAutoRecallHook(client, config, logger) {
|
|
|
11
31
|
required: true,
|
|
12
32
|
},
|
|
13
33
|
],
|
|
14
|
-
|
|
34
|
+
execute: async (args) => {
|
|
15
35
|
const query = args['query'] ?? '';
|
|
16
36
|
const result = await client.searchMemories(config.characterId, query);
|
|
17
|
-
if (result.ok) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
return memories.map((m) => m.content).join('\n\n');
|
|
37
|
+
if (result.ok && result.value.length > 0) {
|
|
38
|
+
logger.info(`hippodid: recalled ${result.value.length} memories for query: ${query}`);
|
|
39
|
+
return result.value.map((m) => m.content).join('\n\n');
|
|
21
40
|
}
|
|
22
41
|
else {
|
|
23
|
-
logger.warn(`hippodid: recall failed: ${result.error.message}`);
|
|
24
42
|
return 'No memories found.';
|
|
25
43
|
}
|
|
26
44
|
},
|
|
27
45
|
});
|
|
28
|
-
logger.info('hippodid: auto-recall
|
|
46
|
+
logger.info('hippodid: auto-recall hook + hippodid:recall tool registered');
|
|
29
47
|
};
|
|
30
48
|
}
|
|
31
49
|
//# 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,
|
|
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,wDAAwD;QACxD,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;QAEF,0DAA0D;QAC1D,GAAG,CAAC,YAAY,CAAC;YACf,IAAI,EAAE,iBAAiB;YACvB,WAAW,EAAE,6HAA6H;YAC1I,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,CAAC,sBAAsB,MAAM,CAAC,KAAK,CAAC,MAAM,wBAAwB,KAAK,EAAE,CAAC,CAAC;oBACtF,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACzD,CAAC;qBAAM,CAAC;oBACN,OAAO,oBAAoB,CAAC;gBAC9B,CAAC;YACH,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;IAC9E,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -92,9 +92,10 @@ function resolveConfig(raw) {
|
|
|
92
92
|
};
|
|
93
93
|
}
|
|
94
94
|
function registerCommands(api, config, client, fileSync, tierManager, logger) {
|
|
95
|
-
api.registerTool(
|
|
95
|
+
api.registerTool({
|
|
96
|
+
name: 'hippodid:status',
|
|
96
97
|
description: 'Show HippoDid tier, sync status, and watched paths',
|
|
97
|
-
|
|
98
|
+
execute: async () => {
|
|
98
99
|
const tier = tierManager.getCurrentTier();
|
|
99
100
|
const statusResult = await client.getSyncStatus(config.characterId);
|
|
100
101
|
logger.info(`--- HippoDid Status ---`);
|
|
@@ -113,15 +114,17 @@ function registerCommands(api, config, client, fileSync, tierManager, logger) {
|
|
|
113
114
|
}
|
|
114
115
|
},
|
|
115
116
|
});
|
|
116
|
-
api.registerTool(
|
|
117
|
+
api.registerTool({
|
|
118
|
+
name: 'hippodid:sync',
|
|
117
119
|
description: 'Trigger immediate sync of all watched files',
|
|
118
|
-
|
|
120
|
+
execute: async () => {
|
|
119
121
|
logger.info('hippodid: manual sync triggered...');
|
|
120
122
|
const { synced, changed } = await fileSync.flushNow();
|
|
121
123
|
logger.info(`hippodid: manual sync complete — ${synced} files (${changed} changed)`);
|
|
122
124
|
},
|
|
123
125
|
});
|
|
124
|
-
api.registerTool(
|
|
126
|
+
api.registerTool({
|
|
127
|
+
name: 'hippodid:import',
|
|
125
128
|
description: 'Import existing workspace memory into HippoDid character',
|
|
126
129
|
args: [
|
|
127
130
|
{
|
|
@@ -130,7 +133,7 @@ function registerCommands(api, config, client, fileSync, tierManager, logger) {
|
|
|
130
133
|
required: false,
|
|
131
134
|
},
|
|
132
135
|
],
|
|
133
|
-
|
|
136
|
+
execute: async (args) => {
|
|
134
137
|
const { readdir } = await import('node:fs/promises');
|
|
135
138
|
const { join, extname } = await import('node:path');
|
|
136
139
|
const { createHash } = await import('node:crypto');
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/openclaw.plugin.json
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
"id": "hippodid",
|
|
3
3
|
"name": "HippoDid — Cloud Character Memory",
|
|
4
4
|
"description": "Cloud sync for MEMORY.md with structured character memory. Survives context compaction.",
|
|
5
|
+
"skills": ["./skills"],
|
|
5
6
|
"configSchema": {
|
|
6
7
|
"type": "object",
|
|
7
8
|
"additionalProperties": false,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hippodid/openclaw-plugin",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.9",
|
|
4
4
|
"description": "Cloud sync for MEMORY.md with structured character memory. Survives context compaction.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
"files": [
|
|
21
21
|
"dist",
|
|
22
22
|
"src",
|
|
23
|
+
"skills",
|
|
23
24
|
"openclaw.plugin.json",
|
|
24
25
|
"LICENSE",
|
|
25
26
|
"README.md"
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: hippodid
|
|
3
|
+
description: Use HippoDid to save memories that persist across sessions and survive context compaction. Use this when the user wants to remember something, recall past context, or sync memory files.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# HippoDid — Persistent Cloud Memory
|
|
7
|
+
|
|
8
|
+
HippoDid stores memories in the cloud so they survive context compaction and persist across sessions and devices.
|
|
9
|
+
|
|
10
|
+
## When to use this skill
|
|
11
|
+
|
|
12
|
+
- User says "remember", "save this", "don't forget", "note that" → call hippodid:remember
|
|
13
|
+
- User asks "what do you know about me", "do you remember", "recall" → call hippodid:recall
|
|
14
|
+
- You need context from previous sessions at the start of a task → call hippodid:recall
|
|
15
|
+
- User wants to sync their memory files → call hippodid:sync
|
|
16
|
+
|
|
17
|
+
## Tools
|
|
18
|
+
|
|
19
|
+
### hippodid:remember
|
|
20
|
+
Saves information to persistent HippoDid cloud memory. Always use this instead of writing to local memory files.
|
|
21
|
+
- content: the information to save (string, required)
|
|
22
|
+
|
|
23
|
+
### hippodid:recall
|
|
24
|
+
Searches HippoDid cloud memory for relevant context.
|
|
25
|
+
- query: what to search for (string, required)
|
|
26
|
+
|
|
27
|
+
### hippodid:sync
|
|
28
|
+
Force-syncs all watched files to HippoDid cloud immediately.
|
|
29
|
+
|
|
30
|
+
### hippodid:status
|
|
31
|
+
Shows HippoDid connection status, tier, and watched paths.
|
package/src/hippodid-client.ts
CHANGED
|
@@ -7,9 +7,34 @@ export function createAutoCaptureHook(
|
|
|
7
7
|
logger: { info(msg: string): void; warn(msg: string): void },
|
|
8
8
|
): (api: any) => void {
|
|
9
9
|
return (api: any) => {
|
|
10
|
-
//
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
// Lifecycle hook: capture conversation after agent responds
|
|
11
|
+
api.registerHook(
|
|
12
|
+
'agent_end',
|
|
13
|
+
async (ctx: any) => {
|
|
14
|
+
try {
|
|
15
|
+
const user = ctx?.userMessage ?? ctx?.prompt ?? ctx?.input ?? '';
|
|
16
|
+
const assistant = ctx?.assistantMessage ?? ctx?.response ?? ctx?.output ?? '';
|
|
17
|
+
if (!user && !assistant) return;
|
|
18
|
+
|
|
19
|
+
const content = [
|
|
20
|
+
user ? `User: ${user}` : '',
|
|
21
|
+
assistant ? `Assistant: ${assistant}` : '',
|
|
22
|
+
].filter(Boolean).join('\n');
|
|
23
|
+
|
|
24
|
+
const result = await client.addMemory(config.characterId, content);
|
|
25
|
+
if (result.ok) {
|
|
26
|
+
logger.info('hippodid: captured conversation turn');
|
|
27
|
+
}
|
|
28
|
+
} catch (e) {
|
|
29
|
+
logger.warn(`hippodid: capture error: ${e instanceof Error ? e.message : String(e)}`);
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
{ name: 'hippodid.agent-end', description: 'Capture conversation to HippoDid after agent responds' },
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
// Explicit tool: agents can call hippodid:remember directly
|
|
36
|
+
api.registerTool({
|
|
37
|
+
name: 'hippodid:remember',
|
|
13
38
|
description: 'Save important information to HippoDid character memory. Call this to store facts, decisions, preferences, or context that should persist across sessions.',
|
|
14
39
|
args: [
|
|
15
40
|
{
|
|
@@ -18,7 +43,7 @@ export function createAutoCaptureHook(
|
|
|
18
43
|
required: true,
|
|
19
44
|
},
|
|
20
45
|
],
|
|
21
|
-
|
|
46
|
+
execute: async (args: Record<string, string>) => {
|
|
22
47
|
const content = args['content'] ?? '';
|
|
23
48
|
if (!content) return 'Nothing to remember.';
|
|
24
49
|
|
|
@@ -32,6 +57,7 @@ export function createAutoCaptureHook(
|
|
|
32
57
|
}
|
|
33
58
|
},
|
|
34
59
|
});
|
|
35
|
-
|
|
60
|
+
|
|
61
|
+
logger.info('hippodid: auto-capture hook + hippodid:remember tool registered');
|
|
36
62
|
};
|
|
37
63
|
}
|
package/src/hooks/auto-recall.ts
CHANGED
|
@@ -7,9 +7,33 @@ export function createAutoRecallHook(
|
|
|
7
7
|
logger: { info(msg: string): void; warn(msg: string): void },
|
|
8
8
|
): (api: any) => void {
|
|
9
9
|
return (api: any) => {
|
|
10
|
-
//
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
// Lifecycle hook: inject memories before agent responds
|
|
11
|
+
api.registerHook(
|
|
12
|
+
'before_agent_start',
|
|
13
|
+
async (ctx: any) => {
|
|
14
|
+
try {
|
|
15
|
+
const query = ctx?.prompt ?? ctx?.message ?? ctx?.input ?? '';
|
|
16
|
+
if (!query) return;
|
|
17
|
+
|
|
18
|
+
const result = await client.searchMemories(config.characterId, query);
|
|
19
|
+
if (result.ok && result.value?.length > 0) {
|
|
20
|
+
const memories = result.value
|
|
21
|
+
.map((m: any) => m.content ?? m.text ?? m.body ?? '')
|
|
22
|
+
.filter(Boolean)
|
|
23
|
+
.join('\n---\n');
|
|
24
|
+
ctx.prependContext?.(`## HippoDid Memories\n${memories}\n`);
|
|
25
|
+
logger.info(`hippodid: recalled ${result.value.length} memories`);
|
|
26
|
+
}
|
|
27
|
+
} catch (e) {
|
|
28
|
+
logger.warn(`hippodid: recall error: ${e instanceof Error ? e.message : String(e)}`);
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
{ name: 'hippodid.before-agent-start', description: 'Inject HippoDid memories before agent responds' },
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
// Explicit tool: agents can call hippodid:recall directly
|
|
35
|
+
api.registerTool({
|
|
36
|
+
name: 'hippodid:recall',
|
|
13
37
|
description: 'Search HippoDid character memory and return relevant context. Call this at the start of a task to recall relevant memories.',
|
|
14
38
|
args: [
|
|
15
39
|
{
|
|
@@ -18,19 +42,18 @@ export function createAutoRecallHook(
|
|
|
18
42
|
required: true,
|
|
19
43
|
},
|
|
20
44
|
],
|
|
21
|
-
|
|
45
|
+
execute: async (args: Record<string, string>) => {
|
|
22
46
|
const query = args['query'] ?? '';
|
|
23
47
|
const result = await client.searchMemories(config.characterId, query);
|
|
24
|
-
if (result.ok) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
return memories.map((m) => m.content).join('\n\n');
|
|
48
|
+
if (result.ok && result.value.length > 0) {
|
|
49
|
+
logger.info(`hippodid: recalled ${result.value.length} memories for query: ${query}`);
|
|
50
|
+
return result.value.map((m) => m.content).join('\n\n');
|
|
28
51
|
} else {
|
|
29
|
-
logger.warn(`hippodid: recall failed: ${result.error.message}`);
|
|
30
52
|
return 'No memories found.';
|
|
31
53
|
}
|
|
32
54
|
},
|
|
33
55
|
});
|
|
34
|
-
|
|
56
|
+
|
|
57
|
+
logger.info('hippodid: auto-recall hook + hippodid:recall tool registered');
|
|
35
58
|
};
|
|
36
59
|
}
|
package/src/index.ts
CHANGED
|
@@ -152,9 +152,10 @@ function registerCommands(
|
|
|
152
152
|
tierManager: TierManager,
|
|
153
153
|
logger: { info(msg: string): void; warn(msg: string): void },
|
|
154
154
|
): void {
|
|
155
|
-
api.registerTool(
|
|
155
|
+
api.registerTool({
|
|
156
|
+
name: 'hippodid:status',
|
|
156
157
|
description: 'Show HippoDid tier, sync status, and watched paths',
|
|
157
|
-
|
|
158
|
+
execute: async () => {
|
|
158
159
|
const tier = tierManager.getCurrentTier();
|
|
159
160
|
const statusResult = await client.getSyncStatus(config.characterId);
|
|
160
161
|
|
|
@@ -183,9 +184,10 @@ function registerCommands(
|
|
|
183
184
|
},
|
|
184
185
|
});
|
|
185
186
|
|
|
186
|
-
api.registerTool(
|
|
187
|
+
api.registerTool({
|
|
188
|
+
name: 'hippodid:sync',
|
|
187
189
|
description: 'Trigger immediate sync of all watched files',
|
|
188
|
-
|
|
190
|
+
execute: async () => {
|
|
189
191
|
logger.info('hippodid: manual sync triggered...');
|
|
190
192
|
const { synced, changed } = await fileSync.flushNow();
|
|
191
193
|
logger.info(
|
|
@@ -194,7 +196,8 @@ function registerCommands(
|
|
|
194
196
|
},
|
|
195
197
|
});
|
|
196
198
|
|
|
197
|
-
api.registerTool(
|
|
199
|
+
api.registerTool({
|
|
200
|
+
name: 'hippodid:import',
|
|
198
201
|
description: 'Import existing workspace memory into HippoDid character',
|
|
199
202
|
args: [
|
|
200
203
|
{
|
|
@@ -203,7 +206,7 @@ function registerCommands(
|
|
|
203
206
|
required: false,
|
|
204
207
|
},
|
|
205
208
|
],
|
|
206
|
-
|
|
209
|
+
execute: async (args: Record<string, string>) => {
|
|
207
210
|
const { readdir } = await import('node:fs/promises');
|
|
208
211
|
const { join, extname } = await import('node:path');
|
|
209
212
|
const { createHash } = await import('node:crypto');
|