openclaw-engram 1.3.0 → 1.3.1
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/config.d.ts
CHANGED
|
@@ -32,6 +32,15 @@ export declare const PluginConfigSchema: z.ZodObject<{
|
|
|
32
32
|
* Defaults to ~/.openclaw/workspace/ (default agent workspace).
|
|
33
33
|
*/
|
|
34
34
|
workspaceDir: z.ZodOptional<z.ZodString>;
|
|
35
|
+
/** Heartbeat / keep-alive event settings. */
|
|
36
|
+
heartbeat: z.ZodDefault<z.ZodObject<{
|
|
37
|
+
/** Send heartbeat events to engram for ingestion. */
|
|
38
|
+
ingest: z.ZodDefault<z.ZodBoolean>;
|
|
39
|
+
}, "strip", z.ZodTypeAny, {
|
|
40
|
+
ingest: boolean;
|
|
41
|
+
}, {
|
|
42
|
+
ingest?: boolean | undefined;
|
|
43
|
+
}>>;
|
|
35
44
|
/** Log verbosity level. */
|
|
36
45
|
logLevel: z.ZodDefault<z.ZodEnum<["debug", "info", "warn", "error"]>>;
|
|
37
46
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -42,6 +51,9 @@ export declare const PluginConfigSchema: z.ZodObject<{
|
|
|
42
51
|
tokenBudget: number;
|
|
43
52
|
timeoutMs: number;
|
|
44
53
|
autoExtract: boolean;
|
|
54
|
+
heartbeat: {
|
|
55
|
+
ingest: boolean;
|
|
56
|
+
};
|
|
45
57
|
logLevel: "debug" | "info" | "warn" | "error";
|
|
46
58
|
project?: string | undefined;
|
|
47
59
|
workspaceDir?: string | undefined;
|
|
@@ -55,6 +67,9 @@ export declare const PluginConfigSchema: z.ZodObject<{
|
|
|
55
67
|
timeoutMs?: number | undefined;
|
|
56
68
|
autoExtract?: boolean | undefined;
|
|
57
69
|
workspaceDir?: string | undefined;
|
|
70
|
+
heartbeat?: {
|
|
71
|
+
ingest?: boolean | undefined;
|
|
72
|
+
} | undefined;
|
|
58
73
|
logLevel?: "debug" | "info" | "warn" | "error" | undefined;
|
|
59
74
|
}>;
|
|
60
75
|
export type PluginConfig = z.infer<typeof PluginConfigSchema>;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,kBAAkB;IAC7B,6DAA6D;;IAU7D,gFAAgF;;IAGhF;;;OAGG;;IAGH,sDAAsD;;IAGtD,uDAAuD;;IAGvD;;;OAGG;;IAGH,gDAAgD;;IAGhD;;;OAGG;;IAGH;;;;;OAKG;;IAGH,2BAA2B
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,kBAAkB;IAC7B,6DAA6D;;IAU7D,gFAAgF;;IAGhF;;;OAGG;;IAGH,sDAAsD;;IAGtD,uDAAuD;;IAGvD;;;OAGG;;IAGH,gDAAgD;;IAGhD;;;OAGG;;IAGH;;;;;OAKG;;IAGH,6CAA6C;;QAE3C,qDAAqD;;;;;;;IAIvD,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE3B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAuBvD"}
|
package/dist/config.js
CHANGED
|
@@ -44,6 +44,11 @@ exports.PluginConfigSchema = zod_1.z.object({
|
|
|
44
44
|
* Defaults to ~/.openclaw/workspace/ (default agent workspace).
|
|
45
45
|
*/
|
|
46
46
|
workspaceDir: zod_1.z.string().optional(),
|
|
47
|
+
/** Heartbeat / keep-alive event settings. */
|
|
48
|
+
heartbeat: zod_1.z.object({
|
|
49
|
+
/** Send heartbeat events to engram for ingestion. */
|
|
50
|
+
ingest: zod_1.z.boolean().default(false),
|
|
51
|
+
}).default({ ingest: false }),
|
|
47
52
|
/** Log verbosity level. */
|
|
48
53
|
logLevel: zod_1.z.enum(['debug', 'info', 'warn', 'error']).default('warn'),
|
|
49
54
|
});
|
|
@@ -73,6 +78,12 @@ function getJsonSchema() {
|
|
|
73
78
|
timeoutMs: { type: 'number', description: 'Per-request timeout (ms)', default: 5000 },
|
|
74
79
|
autoExtract: { type: 'boolean', description: 'Auto-extract on compaction/session-end', default: true },
|
|
75
80
|
workspaceDir: { type: 'string', description: 'Workspace dir for /migrate (default: ~/.openclaw/workspace/)' },
|
|
81
|
+
heartbeat: {
|
|
82
|
+
type: 'object',
|
|
83
|
+
properties: {
|
|
84
|
+
ingest: { type: 'boolean', description: 'Send heartbeat events to engram for ingestion', default: false },
|
|
85
|
+
},
|
|
86
|
+
},
|
|
76
87
|
logLevel: { type: 'string', enum: ['debug', 'info', 'warn', 'error'], default: 'warn' },
|
|
77
88
|
},
|
|
78
89
|
required: ['url', 'token'],
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"after-tool-call.d.ts","sourceRoot":"","sources":["../../src/hooks/after-tool-call.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"after-tool-call.d.ts","sourceRoot":"","sources":["../../src/hooks/after-tool-call.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAuBhG;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,kBAAkB,EACzB,GAAG,EAAE,iBAAiB,EACtB,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,YAAY,EACpB,MAAM,CAAC,EAAE,YAAY,GACpB,IAAI,CAuCN"}
|
|
@@ -11,6 +11,23 @@ exports.handleAfterToolCall = handleAfterToolCall;
|
|
|
11
11
|
const identity_js_1 = require("../identity.js");
|
|
12
12
|
const TOOL_INPUT_MAX_CHARS = 500;
|
|
13
13
|
const TOOL_RESULT_MAX_CHARS = 500;
|
|
14
|
+
/**
|
|
15
|
+
* Tool names that are considered heartbeat / keep-alive events.
|
|
16
|
+
* These are low-value, high-frequency events that create noise in the
|
|
17
|
+
* observation store. Ingestion is skipped unless config.heartbeat.ingest is true.
|
|
18
|
+
*/
|
|
19
|
+
const HEARTBEAT_TOOLS = new Set([
|
|
20
|
+
'heartbeat',
|
|
21
|
+
'keepalive',
|
|
22
|
+
'keep_alive',
|
|
23
|
+
'keep-alive',
|
|
24
|
+
'ping',
|
|
25
|
+
'health_check',
|
|
26
|
+
'health-check',
|
|
27
|
+
'status',
|
|
28
|
+
'noop',
|
|
29
|
+
'no-op',
|
|
30
|
+
]);
|
|
14
31
|
/**
|
|
15
32
|
* Handle the after_tool_call hook.
|
|
16
33
|
*
|
|
@@ -24,6 +41,11 @@ function handleAfterToolCall(event, ctx, client, config, logger) {
|
|
|
24
41
|
return;
|
|
25
42
|
if (!config.autoExtract)
|
|
26
43
|
return;
|
|
44
|
+
// Skip heartbeat / keep-alive tool events unless explicitly opted in
|
|
45
|
+
const toolNameLower = (event.toolName ?? '').toLowerCase();
|
|
46
|
+
if (HEARTBEAT_TOOLS.has(toolNameLower) && !config.heartbeat?.ingest) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
27
49
|
const agentId = ctx.agentId ?? '';
|
|
28
50
|
const sessionId = ctx.sessionId ?? ctx.sessionKey ?? agentId;
|
|
29
51
|
if (!sessionId?.trim())
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"after-tool-call.js","sourceRoot":"","sources":["../../src/hooks/after-tool-call.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;
|
|
1
|
+
{"version":3,"file":"after-tool-call.js","sourceRoot":"","sources":["../../src/hooks/after-tool-call.ts"],"names":[],"mappings":"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"}
|