@keyoku/openclaw 1.2.12 → 1.2.14

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.
Files changed (43) hide show
  1. package/dist/capture.d.ts +0 -10
  2. package/dist/capture.d.ts.map +1 -1
  3. package/dist/capture.js +0 -69
  4. package/dist/capture.js.map +1 -1
  5. package/dist/cli.d.ts.map +1 -1
  6. package/dist/cli.js +1 -1
  7. package/dist/cli.js.map +1 -1
  8. package/dist/context.d.ts +2 -2
  9. package/dist/context.d.ts.map +1 -1
  10. package/dist/context.js +134 -87
  11. package/dist/context.js.map +1 -1
  12. package/dist/heartbeat-migration.d.ts +47 -0
  13. package/dist/heartbeat-migration.d.ts.map +1 -0
  14. package/dist/heartbeat-migration.js +178 -0
  15. package/dist/heartbeat-migration.js.map +1 -0
  16. package/dist/heartbeat-setup.d.ts.map +1 -1
  17. package/dist/heartbeat-setup.js +22 -16
  18. package/dist/heartbeat-setup.js.map +1 -1
  19. package/dist/hooks.d.ts.map +1 -1
  20. package/dist/hooks.js +88 -6
  21. package/dist/hooks.js.map +1 -1
  22. package/dist/incremental-capture.d.ts.map +1 -1
  23. package/dist/incremental-capture.js +2 -1
  24. package/dist/incremental-capture.js.map +1 -1
  25. package/dist/init.d.ts.map +1 -1
  26. package/dist/init.js +374 -110
  27. package/dist/init.js.map +1 -1
  28. package/dist/migrate-vector-store.d.ts.map +1 -1
  29. package/dist/migrate-vector-store.js +1 -4
  30. package/dist/migrate-vector-store.js.map +1 -1
  31. package/dist/migration.d.ts +12 -0
  32. package/dist/migration.d.ts.map +1 -1
  33. package/dist/migration.js +1 -1
  34. package/dist/migration.js.map +1 -1
  35. package/dist/service.d.ts +13 -0
  36. package/dist/service.d.ts.map +1 -1
  37. package/dist/service.js +4 -4
  38. package/dist/service.js.map +1 -1
  39. package/dist/tools.d.ts.map +1 -1
  40. package/dist/tools.js +37 -12
  41. package/dist/tools.js.map +1 -1
  42. package/dist/types.d.ts.map +1 -1
  43. package/package.json +3 -3
@@ -0,0 +1,178 @@
1
+ /**
2
+ * Heartbeat content migration.
3
+ *
4
+ * Extracts user rules from an existing HEARTBEAT.md and ingests them
5
+ * into Keyoku as memories (preferences/rules) and scheduled tasks.
6
+ *
7
+ * The parsing functions are pure (no side effects) for testability.
8
+ */
9
+ const KEYOKU_SECTION_START = '<!-- keyoku-heartbeat-start -->';
10
+ const KEYOKU_SECTION_END = '<!-- keyoku-heartbeat-end -->';
11
+ // Time patterns → cron tag mappings
12
+ const TIME_PATTERNS = [
13
+ // "at 9am", "at 2pm", "at 9:30am"
14
+ {
15
+ pattern: /\bat\s+(\d{1,2})(?::(\d{2}))?\s*(am|pm)\b/i,
16
+ toCron: (m) => {
17
+ let hour = parseInt(m[1], 10);
18
+ const min = m[2] ? parseInt(m[2], 10) : 0;
19
+ if (m[3].toLowerCase() === 'pm' && hour !== 12)
20
+ hour += 12;
21
+ if (m[3].toLowerCase() === 'am' && hour === 12)
22
+ hour = 0;
23
+ return `cron:daily:${String(hour).padStart(2, '0')}:${String(min).padStart(2, '0')}`;
24
+ },
25
+ },
26
+ // "at 09:00", "at 14:30"
27
+ {
28
+ pattern: /\bat\s+(\d{1,2}):(\d{2})\b/,
29
+ toCron: (m) => `cron:daily:${String(parseInt(m[1], 10)).padStart(2, '0')}:${m[2]}`,
30
+ },
31
+ // "every N hours"
32
+ {
33
+ pattern: /\bevery\s+(\d+)\s*hours?\b/i,
34
+ toCron: (m) => `cron:every:${m[1]}h`,
35
+ },
36
+ // "every N minutes"
37
+ {
38
+ pattern: /\bevery\s+(\d+)\s*min(?:ute)?s?\b/i,
39
+ toCron: (m) => `cron:every:${m[1]}m`,
40
+ },
41
+ // "every hour" / "hourly"
42
+ {
43
+ pattern: /\b(?:every\s+hour|hourly)\b/i,
44
+ toCron: () => 'cron:hourly',
45
+ },
46
+ // "every morning"
47
+ {
48
+ pattern: /\bevery\s+morning\b/i,
49
+ toCron: () => 'cron:daily:08:00',
50
+ },
51
+ // "every evening"
52
+ {
53
+ pattern: /\bevery\s+evening\b/i,
54
+ toCron: () => 'cron:daily:18:00',
55
+ },
56
+ // "every night"
57
+ {
58
+ pattern: /\bevery\s+night\b/i,
59
+ toCron: () => 'cron:daily:21:00',
60
+ },
61
+ // "daily" / "every day"
62
+ {
63
+ pattern: /\b(?:daily|every\s+day)\b/i,
64
+ toCron: () => 'cron:daily',
65
+ },
66
+ // "weekly" / "every week"
67
+ {
68
+ pattern: /\b(?:weekly|every\s+week)\b/i,
69
+ toCron: () => 'cron:weekly',
70
+ },
71
+ // "monthly" / "every month"
72
+ {
73
+ pattern: /\b(?:monthly|every\s+month)\b/i,
74
+ toCron: () => 'cron:monthly',
75
+ },
76
+ ];
77
+ // Constraint/rule patterns
78
+ const RULE_PATTERNS = [
79
+ /\bnever\b/i,
80
+ /\balways\b/i,
81
+ /\bdon'?t\b/i,
82
+ /\bdo\s+not\b/i,
83
+ /\bmust\s+not\b/i,
84
+ /\bshould\s+not\b/i,
85
+ /\bavoid\b/i,
86
+ /\bonly\s+(?:if|when)\b/i,
87
+ ];
88
+ /**
89
+ * Parse a natural-language time expression into a keyoku cron tag.
90
+ * Returns null if no recognizable time pattern is found.
91
+ */
92
+ export function parseTimeToCron(text) {
93
+ for (const { pattern, toCron } of TIME_PATTERNS) {
94
+ const match = text.match(pattern);
95
+ if (match)
96
+ return toCron(match);
97
+ }
98
+ return null;
99
+ }
100
+ /**
101
+ * Extract user rules from HEARTBEAT.md content.
102
+ * Strips the keyoku section (instructions, not user rules) and
103
+ * extracts list items (- ...) from the remaining content.
104
+ */
105
+ export function extractHeartbeatRules(content) {
106
+ if (!content || !content.trim())
107
+ return [];
108
+ // Strip keyoku section
109
+ let cleaned = content;
110
+ const startIdx = cleaned.indexOf(KEYOKU_SECTION_START);
111
+ const endIdx = cleaned.indexOf(KEYOKU_SECTION_END);
112
+ if (startIdx !== -1 && endIdx !== -1) {
113
+ cleaned = cleaned.slice(0, startIdx) + cleaned.slice(endIdx + KEYOKU_SECTION_END.length);
114
+ }
115
+ // Extract list items (lines starting with - or *)
116
+ const lines = cleaned.split('\n');
117
+ const rules = [];
118
+ for (const line of lines) {
119
+ const trimmed = line.trim();
120
+ // Match list items: "- something" or "* something"
121
+ const match = trimmed.match(/^[-*]\s+(.+)/);
122
+ if (!match)
123
+ continue;
124
+ const text = match[1].trim();
125
+ if (text.length < 5)
126
+ continue;
127
+ const cronTag = parseTimeToCron(text);
128
+ if (cronTag) {
129
+ rules.push({ raw: trimmed, type: 'schedule', content: text, cronTag });
130
+ }
131
+ else if (RULE_PATTERNS.some((p) => p.test(text))) {
132
+ rules.push({ raw: trimmed, type: 'rule', content: text });
133
+ }
134
+ else {
135
+ rules.push({ raw: trimmed, type: 'preference', content: text });
136
+ }
137
+ }
138
+ return rules;
139
+ }
140
+ /**
141
+ * Migrate extracted heartbeat rules into Keyoku.
142
+ * Preferences/rules → client.remember(), schedules → client.createSchedule().
143
+ */
144
+ export async function migrateHeartbeatRules(params) {
145
+ const { client, entityId, agentId, rules, logger = console } = params;
146
+ const result = { rules: 0, preferences: 0, schedules: 0, errors: 0 };
147
+ for (const rule of rules) {
148
+ try {
149
+ if (rule.type === 'schedule' && rule.cronTag) {
150
+ await client.createSchedule(entityId, agentId, rule.content, rule.cronTag);
151
+ result.schedules++;
152
+ logger.info(`Migrated schedule: ${rule.content.slice(0, 60)}`);
153
+ }
154
+ else {
155
+ const prefix = rule.type === 'rule' ? '[User heartbeat rule]' : '[User heartbeat preference]';
156
+ await client.remember(entityId, `${prefix} ${rule.content}`, {
157
+ agent_id: agentId,
158
+ source: 'migration:heartbeat',
159
+ });
160
+ if (rule.type === 'rule') {
161
+ result.rules++;
162
+ }
163
+ else {
164
+ result.preferences++;
165
+ }
166
+ logger.info(`Migrated ${rule.type}: ${rule.content.slice(0, 60)}`);
167
+ }
168
+ }
169
+ catch (err) {
170
+ logger.warn(`Failed to migrate heartbeat rule: ${String(err)}`);
171
+ result.errors++;
172
+ }
173
+ // Rate limit
174
+ await new Promise((r) => setTimeout(r, 100));
175
+ }
176
+ return result;
177
+ }
178
+ //# sourceMappingURL=heartbeat-migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heartbeat-migration.js","sourceRoot":"","sources":["../src/heartbeat-migration.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"heartbeat-setup.d.ts","sourceRoot":"","sources":["../src/heartbeat-setup.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAmD5C;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAuCtD"}
1
+ {"version":3,"file":"heartbeat-setup.d.ts","sourceRoot":"","sources":["../src/heartbeat-setup.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AA6D5C;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CA2CtD"}
@@ -10,21 +10,27 @@ import { join } from 'node:path';
10
10
  const HEARTBEAT_FILENAME = 'HEARTBEAT.md';
11
11
  const KEYOKU_SECTION_MARKER = '<!-- keyoku-heartbeat-start -->';
12
12
  const KEYOKU_SECTION_END = '<!-- keyoku-heartbeat-end -->';
13
- const KEYOKU_HEARTBEAT_INSTRUCTIONS = `## Keyoku Memory Heartbeat
13
+ const KEYOKU_HEARTBEAT_INSTRUCTIONS = `## Heartbeat Check-In
14
14
 
15
- You have been checked in on. Your memory system has reviewed your recent activity and surfaced anything that needs your attention. The signals are injected into your context automatically — look for the <heartbeat-signals> block.
15
+ Your memory system surfaced things that may need attention. They appear in a <heartbeat-signals> block.
16
16
 
17
17
  ### How to respond
18
+ - If something warrants a message, write ONE brief message. Lead with the most important thing.
19
+ - If nothing is worth saying, reply exactly: HEARTBEAT_OK
20
+ - Never fabricate things to say. If signals are empty or stale, be quiet.
21
+ - Never explain that you have a memory system. Speak from what you know, naturally.
22
+ - Never repeat something you said in a recent heartbeat (check "recent messages" if present).
23
+ - Use your persona and voice as configured — the signals tell you WHAT to say, your character determines HOW.
18
24
 
19
- IMPORTANT: If the signals contain \`should_act: true\` or a "Tell the User" section with ANY content, you MUST write a message to the user. Do NOT reply HEARTBEAT_OK in that case. Say something — even one sentence is fine.
25
+ ### Escalation
26
+ If signals indicate you've mentioned something before:
27
+ - 1st time: casual mention
28
+ - 2nd time: more direct
29
+ - 3rd time: offer specific help
30
+ - 4th+: drop it unless they bring it up
20
31
 
21
- 1. Read the signals carefully. Check urgency, mode, and should_act.
22
- 2. If \`should_act\` is true you MUST send a message. Use the "Tell the User" or "Action Brief" section as guidance for what to say. Keep it natural and brief.
23
- 3. If mode is \`act\` — take action immediately. Do what the signal says.
24
- 4. If mode is \`suggest\` and urgency is not \`none\` — surface the suggestion naturally.
25
- 5. ONLY reply HEARTBEAT_OK if \`should_act\` is false AND there is truly nothing in the signals worth mentioning.
26
-
27
- Do not repeat old tasks from prior conversations. Only act on what the signals say right now.`;
32
+ ### Time awareness
33
+ Adjust tone to time of day (provided in signals). Morning = energetic, evening = brief, late night = only if urgent.`;
28
34
  const HEARTBEAT_TEMPLATE = `# Heartbeat Check
29
35
 
30
36
  ${KEYOKU_SECTION_MARKER}
@@ -39,9 +45,7 @@ function hasUserContent(content) {
39
45
  const withoutKeyoku = content
40
46
  .replace(new RegExp(`${escapeRegex(KEYOKU_SECTION_MARKER)}[\\s\\S]*?${escapeRegex(KEYOKU_SECTION_END)}`, 'g'), '')
41
47
  .trim();
42
- return withoutKeyoku
43
- .split('\n')
44
- .some((line) => {
48
+ return withoutKeyoku.split('\n').some((line) => {
45
49
  const trimmed = line.trim();
46
50
  return trimmed.length > 0 && !trimmed.startsWith('#') && trimmed !== '---';
47
51
  });
@@ -81,9 +85,11 @@ export function ensureHeartbeatMd(api) {
81
85
  api.logger.info(`keyoku: appended keyoku section to existing ${HEARTBEAT_FILENAME}`);
82
86
  return;
83
87
  }
84
- // No meaningful content — write full template
85
- writeFileSync(heartbeatPath, HEARTBEAT_TEMPLATE, 'utf-8');
86
- api.logger.info(`keyoku: created ${HEARTBEAT_FILENAME} for heartbeat support`);
88
+ // No meaningful user content — append keyoku section rather than overwriting
89
+ // (init.ts is the primary writer; this is a fallback that preserves any file content)
90
+ const addendum = `\n\n${KEYOKU_SECTION_MARKER}\n${KEYOKU_HEARTBEAT_INSTRUCTIONS}\n${KEYOKU_SECTION_END}\n`;
91
+ writeFileSync(heartbeatPath, content.trimEnd() + addendum, 'utf-8');
92
+ api.logger.info(`keyoku: appended keyoku section to ${HEARTBEAT_FILENAME}`);
87
93
  }
88
94
  catch (err) {
89
95
  api.logger.warn(`keyoku: could not create ${HEARTBEAT_FILENAME}: ${String(err)}`);
@@ -1 +1 @@
1
- {"version":3,"file":"heartbeat-setup.js","sourceRoot":"","sources":["../src/heartbeat-setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"heartbeat-setup.js","sourceRoot":"","sources":["../src/heartbeat-setup.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAkG5C,wBAAgB,aAAa,CAC3B,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAC7B,IAAI,CA8FN"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAkG5C,wBAAgB,aAAa,CAC3B,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAC7B,IAAI,CAgMN"}
package/dist/hooks.js CHANGED
@@ -102,13 +102,49 @@ export function registerHooks(api, client, entityId, agentId, config) {
102
102
  // Heartbeat path: engine handles all intelligence (cooldown, novelty, active hours, nudges)
103
103
  if (isHeartbeat && config.heartbeat) {
104
104
  const activitySummary = summarizeRecentActivity(ev.messages ?? []);
105
- // Detect active conversation: messages array has recent user content
106
- const hasUserMessages = Array.isArray(ev.messages) && ev.messages.some((m) => {
105
+ // Detect active conversation: check if the most recent user message
106
+ // was within the last 15 minutes. Messages may have a `timestamp` field
107
+ // (ISO string or epoch ms). If no timestamps available, fall back to
108
+ // checking only the last few messages in the array.
109
+ const msgs = (ev.messages ?? []);
110
+ const CONVERSATION_WINDOW_MS = 15 * 60 * 1000; // 15 minutes
111
+ const now = Date.now();
112
+ let hasUserMessages = false;
113
+ // Count real (non-heartbeat) user messages to detect session-establishing messages
114
+ let userMsgCount = 0;
115
+ for (const m of msgs) {
107
116
  const msg = m;
108
- return msg.role === 'user' && msg.content && !msg.content.includes('HEARTBEAT');
109
- });
110
- const heartbeatQuery = activitySummary
111
- || 'important things about this user, recent plans, preferences, and what they care about';
117
+ if (msg.role === 'user' && msg.content && !msg.content.includes('HEARTBEAT')) {
118
+ userMsgCount++;
119
+ }
120
+ }
121
+ // If there's only 1 user message, it's the initial session-establishing message — skip it
122
+ if (userMsgCount > 1) {
123
+ // Walk backwards to find the most recent non-heartbeat user message
124
+ for (let i = msgs.length - 1; i >= 0; i--) {
125
+ const msg = msgs[i];
126
+ if (!msg.content || msg.content.includes('HEARTBEAT'))
127
+ continue;
128
+ if (msg.role !== 'user')
129
+ continue;
130
+ // If message has a timestamp, use it
131
+ if (msg.timestamp) {
132
+ const ts = typeof msg.timestamp === 'number'
133
+ ? msg.timestamp
134
+ : new Date(msg.timestamp).getTime();
135
+ if (!isNaN(ts) && now - ts < CONVERSATION_WINDOW_MS) {
136
+ hasUserMessages = true;
137
+ }
138
+ }
139
+ else {
140
+ // No timestamp — only consider it active if it's in the last 4 messages
141
+ hasUserMessages = i >= msgs.length - 4;
142
+ }
143
+ break; // only check the most recent user message
144
+ }
145
+ }
146
+ const heartbeatQuery = activitySummary ||
147
+ 'important things about this user, recent plans, preferences, and what they care about';
112
148
  try {
113
149
  const ctx = await client.heartbeatContext(entityId, {
114
150
  query: heartbeatQuery,
@@ -170,6 +206,52 @@ export function registerHooks(api, client, entityId, agentId, config) {
170
206
  }
171
207
  });
172
208
  }
209
+ // Record heartbeat messages for dedup — captures what the AI actually said
210
+ if (config.heartbeat) {
211
+ api.on('agent_end', async (event) => {
212
+ const ev = event;
213
+ // Check if this was a heartbeat response
214
+ const messages = ev.messages ?? [];
215
+ const wasHeartbeat = messages.some((m) => {
216
+ const text = typeof m.content === 'string' ? m.content : '';
217
+ return m.role === 'user' && text.includes('HEARTBEAT');
218
+ });
219
+ if (!wasHeartbeat)
220
+ return;
221
+ // Extract assistant response
222
+ let response = ev.output ?? '';
223
+ if (!response) {
224
+ for (let i = messages.length - 1; i >= 0; i--) {
225
+ const msg = messages[i];
226
+ if (msg.role !== 'assistant')
227
+ continue;
228
+ if (typeof msg.content === 'string') {
229
+ response = msg.content;
230
+ }
231
+ else if (Array.isArray(msg.content)) {
232
+ response = msg.content
233
+ .filter((b) => b.type === 'text' && b.text)
234
+ .map((b) => b.text)
235
+ .join(' ');
236
+ }
237
+ if (response)
238
+ break;
239
+ }
240
+ }
241
+ // Don't record non-messages
242
+ if (!response ||
243
+ response === 'HEARTBEAT_OK' ||
244
+ response === 'NO_REPLY' ||
245
+ response.length < 10)
246
+ return;
247
+ try {
248
+ await client.recordHeartbeatMessage(entityId, response, { agent_id: agentId });
249
+ }
250
+ catch (err) {
251
+ api.logger.warn(`keyoku: failed to record heartbeat message: ${String(err)}`);
252
+ }
253
+ });
254
+ }
173
255
  // NOTE: agent_end capture removed — incremental capture (incremental-capture.ts)
174
256
  // now handles both user and assistant messages in real-time, making the
175
257
  // session-end batch capture redundant. This also eliminates the only source
package/dist/hooks.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"incremental-capture.d.ts","sourceRoot":"","sources":["../src/incremental-capture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAC7B,IAAI,CAoFN"}
1
+ {"version":3,"file":"incremental-capture.d.ts","sourceRoot":"","sources":["../src/incremental-capture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAC7B,IAAI,CAgGN"}
@@ -70,7 +70,8 @@ export function registerIncrementalCapture(api, client, entityId, agentId, confi
70
70
  // Skip heartbeat/memory noise
71
71
  if (assistantContent === 'HEARTBEAT_OK' || assistantContent === 'NO_REPLY')
72
72
  return;
73
- if (assistantContent.includes('<heartbeat-signals>') || assistantContent.includes('<your-memories>'))
73
+ if (assistantContent.includes('<heartbeat-signals>') ||
74
+ assistantContent.includes('<your-memories>'))
74
75
  return;
75
76
  if (looksLikePromptInjection(assistantContent))
76
77
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"incremental-capture.js","sourceRoot":"","sources":["../src/incremental-capture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"incremental-capture.js","sourceRoot":"","sources":["../src/incremental-capture.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAwtBH;;GAEG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAmM1C"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AA4gCH;;GAEG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA6O1C"}