claude-recall 0.20.2 → 0.20.3
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.
|
@@ -8,7 +8,7 @@ source: claude-recall
|
|
|
8
8
|
|
|
9
9
|
# Corrections
|
|
10
10
|
|
|
11
|
-
Auto-generated from
|
|
11
|
+
Auto-generated from 10 memories. Last updated: 2026-04-02.
|
|
12
12
|
|
|
13
13
|
## Rules
|
|
14
14
|
|
|
@@ -19,6 +19,7 @@ Auto-generated from 9 memories. Last updated: 2026-04-02.
|
|
|
19
19
|
- CORRECTION: Memory with complex metadata
|
|
20
20
|
- CORRECTION: Memory with complex metadata
|
|
21
21
|
- CORRECTION: Memory with complex metadata
|
|
22
|
+
- CORRECTION: Memory with complex metadata
|
|
22
23
|
- CORRECTION: License copyright should include user's name instead of 'Claude Recall Contributors'
|
|
23
24
|
- CORRECTION: License copyright should list your name instead of 'Claude Recall Contributors'
|
|
24
25
|
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"topicId": "corrections",
|
|
3
|
-
"sourceHash": "
|
|
4
|
-
"memoryCount":
|
|
5
|
-
"generatedAt": "2026-04-02T22:
|
|
3
|
+
"sourceHash": "07b8f6a7f77482f9cf1dc02ae46a52bf39ce1920188d0142c2391dca2790f7c9",
|
|
4
|
+
"memoryCount": 10,
|
|
5
|
+
"generatedAt": "2026-04-02T22:40:39.113Z",
|
|
6
6
|
"memoryKeys": [
|
|
7
|
+
"memory_1775169639101_rmxkftqtk",
|
|
7
8
|
"memory_1775169273281_4fod7ku6f",
|
|
8
9
|
"memory_1775169256118_y7kc07y6y",
|
|
9
10
|
"memory_1775169244673_d6d0uc33a",
|
|
@@ -8,10 +8,15 @@ source: claude-recall
|
|
|
8
8
|
|
|
9
9
|
# Preferences
|
|
10
10
|
|
|
11
|
-
Auto-generated from
|
|
11
|
+
Auto-generated from 44 memories. Last updated: 2026-04-02.
|
|
12
12
|
|
|
13
13
|
## Rules
|
|
14
14
|
|
|
15
|
+
- Session test preference 1775169639212
|
|
16
|
+
- Test preference 1775169639121-2
|
|
17
|
+
- Test preference 1775169639121-1
|
|
18
|
+
- Test preference 1775169639121-0
|
|
19
|
+
- Test memory content
|
|
15
20
|
- Session test preference 1775169273366
|
|
16
21
|
- Test preference 1775169273296-2
|
|
17
22
|
- Test preference 1775169273296-1
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"topicId": "preferences",
|
|
3
|
-
"sourceHash": "
|
|
4
|
-
"memoryCount":
|
|
5
|
-
"generatedAt": "2026-04-02T22:
|
|
3
|
+
"sourceHash": "635f364634c1a9d7b4f550114bcc69d1b222abef09952268bb356f4499d336e7",
|
|
4
|
+
"memoryCount": 44,
|
|
5
|
+
"generatedAt": "2026-04-02T22:40:39.234Z",
|
|
6
6
|
"memoryKeys": [
|
|
7
|
+
"memory_1775169639213_w3i85h357",
|
|
8
|
+
"memory_1775169639170_iewh2evi0",
|
|
9
|
+
"memory_1775169639145_x9s0519l7",
|
|
10
|
+
"memory_1775169639123_fa53agp0a",
|
|
11
|
+
"memory_1775169639037_f290kffwd",
|
|
7
12
|
"memory_1775169273368_c1e5jdl9r",
|
|
8
13
|
"memory_1775169273337_wozxe12k3",
|
|
9
14
|
"memory_1775169273319_3o1ww90na",
|
package/dist/pi/extension.js
CHANGED
|
@@ -19,6 +19,22 @@ const LOAD_RULES_DIRECTIVE = 'Before your FIRST action, briefly state which rule
|
|
|
19
19
|
'(applied from memory: <short rule name>)\n' +
|
|
20
20
|
'Place citations next to the action they influenced — not at the end of unrelated text.\n' +
|
|
21
21
|
'If a rule conflicts with your plan, follow the rule — it reflects a user decision.';
|
|
22
|
+
function truncateStr(s, max) {
|
|
23
|
+
return s.length <= max ? s : s.substring(0, max - 3) + '...';
|
|
24
|
+
}
|
|
25
|
+
/** Check if tool output indicates a failure (mirrors event-processors logic). */
|
|
26
|
+
function isFailureOutput(toolName, output) {
|
|
27
|
+
if (toolName === 'bash' || toolName === 'Bash') {
|
|
28
|
+
return /Exit code (\d+)/.test(output) && !/Exit code 0/.test(output);
|
|
29
|
+
}
|
|
30
|
+
if (['edit', 'write', 'Edit', 'Write'].includes(toolName)) {
|
|
31
|
+
return /permission denied|EACCES|ENOENT|file not found|old_string.*not found|not unique in the file/i.test(output);
|
|
32
|
+
}
|
|
33
|
+
if (output.length < 500) {
|
|
34
|
+
return /error|failed|exception|timeout/i.test(output);
|
|
35
|
+
}
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
22
38
|
/** Format a memory value for display. */
|
|
23
39
|
function extractVal(value) {
|
|
24
40
|
if (typeof value === 'string')
|
|
@@ -90,12 +106,23 @@ function default_1(pi) {
|
|
|
90
106
|
}
|
|
91
107
|
});
|
|
92
108
|
// --- Event: capture tool outcomes ---
|
|
93
|
-
pi.on('tool_result', (event,
|
|
109
|
+
pi.on('tool_result', (event, ctx) => {
|
|
94
110
|
const output = event.content
|
|
95
111
|
.filter((c) => c.type === 'text')
|
|
96
112
|
.map(c => c.text)
|
|
97
113
|
.join('\n');
|
|
114
|
+
// Notify user when a failure is captured
|
|
115
|
+
const wasFailing = event.isError || isFailureOutput(event.toolName, output);
|
|
98
116
|
(0, event_processors_1.processToolOutcome)(event.toolName, event.input, output, event.isError, sessionId);
|
|
117
|
+
if (wasFailing && ctx.hasUI) {
|
|
118
|
+
const label = event.input?.command
|
|
119
|
+
? truncateStr(event.input.command, 40)
|
|
120
|
+
: event.toolName;
|
|
121
|
+
try {
|
|
122
|
+
ctx.ui.notify(`Recall: failure stored — ${label}`, 'info');
|
|
123
|
+
}
|
|
124
|
+
catch { /* non-critical */ }
|
|
125
|
+
}
|
|
99
126
|
});
|
|
100
127
|
// --- Event: detect corrections from user input ---
|
|
101
128
|
pi.on('input', (event, _ctx) => {
|
package/package.json
CHANGED