@roackb2/heddle 1.6.0 → 1.8.0
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 +5 -0
- package/dist/examples/repo-investigator.js +2 -2
- package/dist/examples/repo-investigator.js.map +1 -1
- package/dist/src/cli/ask.d.ts.map +1 -1
- package/dist/src/cli/ask.js +4 -4
- package/dist/src/cli/ask.js.map +1 -1
- package/dist/src/cli/chat/commands/debug-snapshot-command.js +2 -2
- package/dist/src/cli/chat/commands/debug-snapshot-command.js.map +1 -1
- package/dist/src/cli/chat/state/local-commands.js +6 -6
- package/dist/src/cli/chat/state/local-commands.js.map +1 -1
- package/dist/src/cli/chat/utils/runtime.d.ts.map +1 -1
- package/dist/src/cli/chat/utils/runtime.js +3 -3
- package/dist/src/cli/chat/utils/runtime.js.map +1 -1
- package/dist/src/cli/main.js +22 -20
- package/dist/src/cli/main.js.map +1 -1
- package/dist/src/cli/remote/control-plane-client.d.ts +1 -1
- package/dist/src/core/agent/budget/index.d.ts +2 -0
- package/dist/src/core/agent/budget/index.d.ts.map +1 -0
- package/dist/src/core/agent/budget/index.js +2 -0
- package/dist/src/core/agent/budget/index.js.map +1 -0
- package/dist/src/core/agent/budget/step-budget.d.ts +12 -0
- package/dist/src/core/agent/budget/step-budget.d.ts.map +1 -0
- package/dist/src/core/agent/budget/step-budget.js +21 -0
- package/dist/src/core/agent/budget/step-budget.js.map +1 -0
- package/dist/src/core/agent/context/run-context-builder.js +6 -6
- package/dist/src/core/agent/context/run-context-builder.js.map +1 -1
- package/dist/src/core/agent/tools/tool-dispatcher.d.ts +3 -4
- package/dist/src/core/agent/tools/tool-dispatcher.d.ts.map +1 -1
- package/dist/src/core/agent/tools/tool-dispatcher.js +2 -2
- package/dist/src/core/agent/tools/tool-dispatcher.js.map +1 -1
- package/dist/src/core/agent/types.d.ts +5 -5
- package/dist/src/core/agent/types.d.ts.map +1 -1
- package/dist/src/core/chat/engine/turns/memory/turn-memory-maintenance.d.ts.map +1 -1
- package/dist/src/core/chat/engine/turns/memory/turn-memory-maintenance.js +9 -5
- package/dist/src/core/chat/engine/turns/memory/turn-memory-maintenance.js.map +1 -1
- package/dist/src/core/chat/engine/turns/runtime/runtime-resolver.d.ts.map +1 -1
- package/dist/src/core/chat/engine/turns/runtime/runtime-resolver.js +2 -3
- package/dist/src/core/chat/engine/turns/runtime/runtime-resolver.js.map +1 -1
- package/dist/src/core/commands/slash/autocomplete.d.ts +9 -4
- package/dist/src/core/commands/slash/autocomplete.d.ts.map +1 -1
- package/dist/src/core/commands/slash/autocomplete.js +53 -48
- package/dist/src/core/commands/slash/autocomplete.js.map +1 -1
- package/dist/src/core/commands/slash/modules/auth/auth-commands.js +4 -4
- package/dist/src/core/commands/slash/modules/auth/auth-commands.js.map +1 -1
- package/dist/src/core/commands/slash/modules/compaction/compaction-commands.js +2 -2
- package/dist/src/core/commands/slash/modules/compaction/compaction-commands.js.map +1 -1
- package/dist/src/core/commands/slash/modules/drift/drift-commands.js +4 -4
- package/dist/src/core/commands/slash/modules/drift/drift-commands.js.map +1 -1
- package/dist/src/core/commands/slash/modules/heartbeat/heartbeat-commands.js +3 -3
- package/dist/src/core/commands/slash/modules/heartbeat/heartbeat-commands.js.map +1 -1
- package/dist/src/core/commands/slash/modules/model/model-commands.js +8 -8
- package/dist/src/core/commands/slash/modules/model/model-commands.js.map +1 -1
- package/dist/src/core/commands/slash/modules/session/session-commands.js +6 -6
- package/dist/src/core/commands/slash/modules/session/session-commands.js.map +1 -1
- package/dist/src/core/commands/slash/parser.d.ts +10 -5
- package/dist/src/core/commands/slash/parser.d.ts.map +1 -1
- package/dist/src/core/commands/slash/parser.js +42 -37
- package/dist/src/core/commands/slash/parser.js.map +1 -1
- package/dist/src/core/commands/slash/registry.d.ts +12 -3
- package/dist/src/core/commands/slash/registry.d.ts.map +1 -1
- package/dist/src/core/commands/slash/registry.js +50 -45
- package/dist/src/core/commands/slash/registry.js.map +1 -1
- package/dist/src/core/heartbeat/wake/service.d.ts.map +1 -1
- package/dist/src/core/heartbeat/wake/service.js +2 -3
- package/dist/src/core/heartbeat/wake/service.js.map +1 -1
- package/dist/src/core/memory/catalog.d.ts +22 -40
- package/dist/src/core/memory/catalog.d.ts.map +1 -1
- package/dist/src/core/memory/catalog.js +166 -155
- package/dist/src/core/memory/catalog.js.map +1 -1
- package/dist/src/core/memory/index.d.ts +14 -0
- package/dist/src/core/memory/index.d.ts.map +1 -0
- package/dist/src/core/memory/index.js +13 -0
- package/dist/src/core/memory/index.js.map +1 -0
- package/dist/src/core/memory/maintainer-prompt.d.ts +14 -0
- package/dist/src/core/memory/maintainer-prompt.d.ts.map +1 -0
- package/dist/src/core/memory/maintainer-prompt.js +58 -0
- package/dist/src/core/memory/maintainer-prompt.js.map +1 -0
- package/dist/src/core/memory/maintainer.d.ts +20 -44
- package/dist/src/core/memory/maintainer.d.ts.map +1 -1
- package/dist/src/core/memory/maintainer.js +124 -184
- package/dist/src/core/memory/maintainer.js.map +1 -1
- package/dist/src/core/memory/maintenance-integration.d.ts +22 -19
- package/dist/src/core/memory/maintenance-integration.d.ts.map +1 -1
- package/dist/src/core/memory/maintenance-integration.js +158 -163
- package/dist/src/core/memory/maintenance-integration.js.map +1 -1
- package/dist/src/core/memory/maintenance-repository.d.ts +27 -0
- package/dist/src/core/memory/maintenance-repository.d.ts.map +1 -0
- package/dist/src/core/memory/maintenance-repository.js +134 -0
- package/dist/src/core/memory/maintenance-repository.js.map +1 -0
- package/dist/src/core/memory/note-service.d.ts +23 -0
- package/dist/src/core/memory/note-service.d.ts.map +1 -0
- package/dist/src/core/memory/note-service.js +165 -0
- package/dist/src/core/memory/note-service.js.map +1 -0
- package/dist/src/core/memory/path-utils.d.ts +15 -0
- package/dist/src/core/memory/path-utils.d.ts.map +1 -0
- package/dist/src/core/memory/path-utils.js +31 -0
- package/dist/src/core/memory/path-utils.js.map +1 -0
- package/dist/src/core/memory/schemas.d.ts +116 -0
- package/dist/src/core/memory/schemas.d.ts.map +1 -0
- package/dist/src/core/memory/schemas.js +53 -0
- package/dist/src/core/memory/schemas.js.map +1 -0
- package/dist/src/core/memory/types.d.ts +149 -0
- package/dist/src/core/memory/types.d.ts.map +1 -0
- package/dist/src/core/memory/types.js +2 -0
- package/dist/src/core/memory/types.js.map +1 -0
- package/dist/src/core/memory/validation.d.ts +20 -38
- package/dist/src/core/memory/validation.d.ts.map +1 -1
- package/dist/src/core/memory/validation.js +98 -83
- package/dist/src/core/memory/validation.js.map +1 -1
- package/dist/src/core/memory/visibility.d.ts +19 -41
- package/dist/src/core/memory/visibility.d.ts.map +1 -1
- package/dist/src/core/memory/visibility.js +53 -153
- package/dist/src/core/memory/visibility.js.map +1 -1
- package/dist/src/core/review/index.d.ts +3 -0
- package/dist/src/core/review/index.d.ts.map +1 -0
- package/dist/src/core/review/index.js +2 -0
- package/dist/src/core/review/index.js.map +1 -0
- package/dist/src/core/review/service.d.ts +22 -0
- package/dist/src/core/review/service.d.ts.map +1 -0
- package/dist/src/core/review/service.js +143 -0
- package/dist/src/core/review/service.js.map +1 -0
- package/dist/src/core/review/{diff-domain.d.ts → types.d.ts} +1 -3
- package/dist/src/core/review/types.d.ts.map +1 -0
- package/dist/src/core/review/types.js +2 -0
- package/dist/src/core/review/types.js.map +1 -0
- package/dist/src/core/runtime/tools/service.js +2 -2
- package/dist/src/core/runtime/tools/service.js.map +1 -1
- package/dist/src/core/tools/execute-tool.d.ts +5 -4
- package/dist/src/core/tools/execute-tool.d.ts.map +1 -1
- package/dist/src/core/tools/execute-tool.js +23 -25
- package/dist/src/core/tools/execute-tool.js.map +1 -1
- package/dist/src/core/tools/index.d.ts +5 -0
- package/dist/src/core/tools/index.d.ts.map +1 -0
- package/dist/src/core/tools/index.js +4 -0
- package/dist/src/core/tools/index.js.map +1 -0
- package/dist/src/core/tools/registry.d.ts +8 -7
- package/dist/src/core/tools/registry.d.ts.map +1 -1
- package/dist/src/core/tools/registry.js +18 -21
- package/dist/src/core/tools/registry.js.map +1 -1
- package/dist/src/core/tools/toolkit.d.ts +9 -4
- package/dist/src/core/tools/toolkit.d.ts.map +1 -1
- package/dist/src/core/tools/toolkit.js +21 -16
- package/dist/src/core/tools/toolkit.js.map +1 -1
- package/dist/src/core/tools/toolkits/knowledge/memory-notes.d.ts +1 -1
- package/dist/src/core/tools/toolkits/knowledge/memory-notes.d.ts.map +1 -1
- package/dist/src/core/tools/toolkits/knowledge/memory-notes.js +48 -238
- package/dist/src/core/tools/toolkits/knowledge/memory-notes.js.map +1 -1
- package/dist/src/core/tools/toolkits/knowledge/record-knowledge.d.ts.map +1 -1
- package/dist/src/core/tools/toolkits/knowledge/record-knowledge.js +75 -105
- package/dist/src/core/tools/toolkits/knowledge/record-knowledge.js.map +1 -1
- package/dist/src/core/trace/format.d.ts +9 -3
- package/dist/src/core/trace/format.d.ts.map +1 -1
- package/dist/src/core/trace/format.js +106 -107
- package/dist/src/core/trace/format.js.map +1 -1
- package/dist/src/core/trace/index.d.ts +4 -0
- package/dist/src/core/trace/index.d.ts.map +1 -0
- package/dist/src/core/trace/index.js +3 -0
- package/dist/src/core/trace/index.js.map +1 -0
- package/dist/src/core/trace/recorder.d.ts +10 -7
- package/dist/src/core/trace/recorder.d.ts.map +1 -1
- package/dist/src/core/trace/recorder.js +15 -17
- package/dist/src/core/trace/recorder.js.map +1 -1
- package/dist/src/core/trace/types.d.ts +7 -0
- package/dist/src/core/trace/types.d.ts.map +1 -0
- package/dist/src/core/trace/types.js +2 -0
- package/dist/src/core/trace/types.js.map +1 -0
- package/dist/src/index.d.ts +15 -14
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +11 -8
- package/dist/src/index.js.map +1 -1
- package/dist/src/server/features/control-plane/controllers/ask.d.ts.map +1 -1
- package/dist/src/server/features/control-plane/controllers/ask.js +6 -7
- package/dist/src/server/features/control-plane/controllers/ask.js.map +1 -1
- package/dist/src/server/features/control-plane/controllers/chat-turn-review-presenter.js +3 -3
- package/dist/src/server/features/control-plane/controllers/chat-turn-review-presenter.js.map +1 -1
- package/dist/src/server/features/control-plane/controllers/memory.d.ts +2 -1
- package/dist/src/server/features/control-plane/controllers/memory.d.ts.map +1 -1
- package/dist/src/server/features/control-plane/controllers/memory.js +8 -7
- package/dist/src/server/features/control-plane/controllers/memory.js.map +1 -1
- package/dist/src/server/features/control-plane/controllers/workspace-diff.js +2 -2
- package/dist/src/server/features/control-plane/controllers/workspace-diff.js.map +1 -1
- package/dist/src/server/features/control-plane/router.d.ts +1 -1
- package/dist/src/server/features/control-plane/types.d.ts +2 -2
- package/dist/src/server/features/control-plane/types.d.ts.map +1 -1
- package/dist/src/server/router.d.ts +1 -1
- package/package.json +11 -4
- package/dist/src/core/review/diff-domain.d.ts.map +0 -1
- package/dist/src/core/review/diff-domain.js +0 -134
- package/dist/src/core/review/diff-domain.js.map +0 -1
- package/dist/src/core/utils/budget.d.ts +0 -13
- package/dist/src/core/utils/budget.d.ts.map +0 -1
- package/dist/src/core/utils/budget.js +0 -22
- package/dist/src/core/utils/budget.js.map +0 -1
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { spawn } from 'node:child_process';
|
|
4
|
-
import { executeScopedEdit } from '../coding-files/file-edit-core.js';
|
|
1
|
+
import { resolve } from 'node:path';
|
|
2
|
+
import { MemoryNoteService } from '../../../../core/memory/note-service.js';
|
|
5
3
|
const DEFAULT_MEMORY_ROOT = resolve(process.cwd(), '.heddle', 'memory');
|
|
6
|
-
const DEFAULT_MAX_SEARCH_RESULTS = 100;
|
|
7
4
|
export function createListMemoryNotesTool(options = {}) {
|
|
8
5
|
return {
|
|
9
6
|
name: 'list_memory_notes',
|
|
@@ -19,37 +16,17 @@ export function createListMemoryNotesTool(options = {}) {
|
|
|
19
16
|
},
|
|
20
17
|
},
|
|
21
18
|
async execute(raw) {
|
|
22
|
-
if (!
|
|
19
|
+
if (!MemoryNotesToolInput.isList(raw)) {
|
|
23
20
|
return { ok: false, error: 'Invalid input for list_memory_notes. Optional field: path.' };
|
|
24
21
|
}
|
|
25
|
-
const memoryRoot = resolveMemoryRoot(options);
|
|
26
|
-
const targetPath = resolveMemoryPath(memoryRoot, raw.path ?? '.');
|
|
27
|
-
if (!targetPath.ok) {
|
|
28
|
-
return { ok: false, error: targetPath.error };
|
|
29
|
-
}
|
|
30
|
-
const exists = await pathExists(targetPath.path);
|
|
31
|
-
if (!exists) {
|
|
32
|
-
return { ok: true, output: '' };
|
|
33
|
-
}
|
|
34
22
|
try {
|
|
35
|
-
const info = await stat(targetPath.path);
|
|
36
|
-
if (info.isFile()) {
|
|
37
|
-
return {
|
|
38
|
-
ok: true,
|
|
39
|
-
output: toMemoryRelativePath(memoryRoot, targetPath.path),
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
const entries = await listMarkdownNotes(targetPath.path);
|
|
43
23
|
return {
|
|
44
24
|
ok: true,
|
|
45
|
-
output:
|
|
25
|
+
output: (await memoryNotes(options).list(raw)).join('\n'),
|
|
46
26
|
};
|
|
47
27
|
}
|
|
48
28
|
catch (error) {
|
|
49
|
-
return {
|
|
50
|
-
ok: false,
|
|
51
|
-
error: `Failed to list memory notes in ${targetPath.path}: ${error instanceof Error ? error.message : String(error)}`,
|
|
52
|
-
};
|
|
29
|
+
return { ok: false, error: error instanceof Error ? error.message : String(error) };
|
|
53
30
|
}
|
|
54
31
|
},
|
|
55
32
|
};
|
|
@@ -78,32 +55,17 @@ export function createReadMemoryNoteTool(options = {}) {
|
|
|
78
55
|
required: ['path'],
|
|
79
56
|
},
|
|
80
57
|
async execute(raw) {
|
|
81
|
-
if (!
|
|
58
|
+
if (!MemoryNotesToolInput.isRead(raw)) {
|
|
82
59
|
return { ok: false, error: 'Invalid input for read_memory_note. Required field: path. Optional fields: maxLines, offset.' };
|
|
83
60
|
}
|
|
84
|
-
const memoryRoot = resolveMemoryRoot(options);
|
|
85
|
-
const targetPath = resolveMemoryPath(memoryRoot, raw.path);
|
|
86
|
-
if (!targetPath.ok) {
|
|
87
|
-
return { ok: false, error: targetPath.error };
|
|
88
|
-
}
|
|
89
61
|
try {
|
|
90
|
-
const content = await readFile(targetPath.path, 'utf8');
|
|
91
62
|
return {
|
|
92
63
|
ok: true,
|
|
93
|
-
output:
|
|
64
|
+
output: await memoryNotes(options).read(raw),
|
|
94
65
|
};
|
|
95
66
|
}
|
|
96
67
|
catch (error) {
|
|
97
|
-
|
|
98
|
-
return {
|
|
99
|
-
ok: false,
|
|
100
|
-
error: `Failed to read ${targetPath.path}: path is a directory, not a file. Use list_memory_notes to inspect memory directories.`,
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
return {
|
|
104
|
-
ok: false,
|
|
105
|
-
error: `Failed to read ${targetPath.path}: ${error instanceof Error ? error.message : String(error)}`,
|
|
106
|
-
};
|
|
68
|
+
return { ok: false, error: error instanceof Error ? error.message : String(error) };
|
|
107
69
|
}
|
|
108
70
|
},
|
|
109
71
|
};
|
|
@@ -132,20 +94,18 @@ export function createSearchMemoryNotesTool(options = {}) {
|
|
|
132
94
|
required: ['query'],
|
|
133
95
|
},
|
|
134
96
|
async execute(raw) {
|
|
135
|
-
if (!
|
|
97
|
+
if (!MemoryNotesToolInput.isSearch(raw)) {
|
|
136
98
|
return { ok: false, error: 'Invalid input for search_memory_notes. Required field: query. Optional fields: path, maxResults.' };
|
|
137
99
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
100
|
+
try {
|
|
101
|
+
return {
|
|
102
|
+
ok: true,
|
|
103
|
+
output: await memoryNotes(options).search(raw),
|
|
104
|
+
};
|
|
142
105
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
return { ok: true, output: 'No matches found.' };
|
|
106
|
+
catch (error) {
|
|
107
|
+
return { ok: false, error: error instanceof Error ? error.message : String(error) };
|
|
146
108
|
}
|
|
147
|
-
const searchResult = await searchWithCli(memoryRoot, targetPath.path, raw.query, sanitizeMaxResults(raw.maxResults));
|
|
148
|
-
return searchResult;
|
|
149
109
|
},
|
|
150
110
|
};
|
|
151
111
|
}
|
|
@@ -185,14 +145,7 @@ export function createEditMemoryNoteTool(options = {}) {
|
|
|
185
145
|
required: ['path'],
|
|
186
146
|
},
|
|
187
147
|
async execute(raw) {
|
|
188
|
-
return
|
|
189
|
-
toolName: 'edit_memory_note',
|
|
190
|
-
rootPath: resolveMemoryRoot(options),
|
|
191
|
-
rootLabel: 'memory root',
|
|
192
|
-
subjectLabel: 'memory note',
|
|
193
|
-
creationHint: 'Set createIfMissing to true if you want edit_memory_note to create it.',
|
|
194
|
-
enforceRoot: true,
|
|
195
|
-
});
|
|
148
|
+
return await memoryNotes(options).edit(raw);
|
|
196
149
|
},
|
|
197
150
|
};
|
|
198
151
|
}
|
|
@@ -200,184 +153,41 @@ export const listMemoryNotesTool = createListMemoryNotesTool();
|
|
|
200
153
|
export const readMemoryNoteTool = createReadMemoryNoteTool();
|
|
201
154
|
export const searchMemoryNotesTool = createSearchMemoryNotesTool();
|
|
202
155
|
export const editMemoryNoteTool = createEditMemoryNoteTool();
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
if (!requestedPath.trim()) {
|
|
208
|
-
return { ok: false, error: `Memory note paths must be non-empty and stay inside ${memoryRoot}.` };
|
|
209
|
-
}
|
|
210
|
-
const targetPath = resolve(memoryRoot, requestedPath);
|
|
211
|
-
const rel = relative(memoryRoot, targetPath);
|
|
212
|
-
if (rel.startsWith('..') || isAbsolute(rel)) {
|
|
213
|
-
return { ok: false, error: `Memory note paths must stay inside ${memoryRoot}. Refusing to access ${targetPath}.` };
|
|
214
|
-
}
|
|
215
|
-
return { ok: true, path: targetPath };
|
|
216
|
-
}
|
|
217
|
-
async function listMarkdownNotes(root) {
|
|
218
|
-
const results = [];
|
|
219
|
-
const entries = await readdir(root, { withFileTypes: true });
|
|
220
|
-
for (const entry of entries) {
|
|
221
|
-
const nextPath = resolve(root, entry.name);
|
|
222
|
-
if (entry.isDirectory()) {
|
|
223
|
-
results.push(...await listMarkdownNotes(nextPath));
|
|
224
|
-
continue;
|
|
156
|
+
class MemoryNotesToolInput {
|
|
157
|
+
static isList(raw) {
|
|
158
|
+
if (raw === undefined) {
|
|
159
|
+
return true;
|
|
225
160
|
}
|
|
226
|
-
if (
|
|
227
|
-
|
|
161
|
+
if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
|
|
162
|
+
return false;
|
|
228
163
|
}
|
|
164
|
+
const input = raw;
|
|
165
|
+
return Object.keys(input).every((key) => key === 'path')
|
|
166
|
+
&& (input.path === undefined || typeof input.path === 'string');
|
|
229
167
|
}
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
}
|
|
251
|
-
function isMarkdownPath(path) {
|
|
252
|
-
return /\.md$/i.test(path);
|
|
253
|
-
}
|
|
254
|
-
async function pathExists(path) {
|
|
255
|
-
try {
|
|
256
|
-
await access(path);
|
|
257
|
-
return true;
|
|
258
|
-
}
|
|
259
|
-
catch {
|
|
260
|
-
return false;
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
function isListMemoryNotesInput(raw) {
|
|
264
|
-
if (raw === undefined) {
|
|
265
|
-
return true;
|
|
266
|
-
}
|
|
267
|
-
if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
|
|
268
|
-
return false;
|
|
269
|
-
}
|
|
270
|
-
const input = raw;
|
|
271
|
-
const keys = Object.keys(input);
|
|
272
|
-
if (keys.some((key) => key !== 'path')) {
|
|
273
|
-
return false;
|
|
274
|
-
}
|
|
275
|
-
return input.path === undefined || typeof input.path === 'string';
|
|
276
|
-
}
|
|
277
|
-
function isReadMemoryNoteInput(raw) {
|
|
278
|
-
if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
|
|
279
|
-
return false;
|
|
280
|
-
}
|
|
281
|
-
const input = raw;
|
|
282
|
-
const keys = Object.keys(input);
|
|
283
|
-
if (keys.some((key) => key !== 'path' && key !== 'maxLines' && key !== 'offset')) {
|
|
284
|
-
return false;
|
|
285
|
-
}
|
|
286
|
-
return (typeof input.path === 'string' &&
|
|
287
|
-
(input.maxLines === undefined || typeof input.maxLines === 'number') &&
|
|
288
|
-
(input.offset === undefined || typeof input.offset === 'number'));
|
|
289
|
-
}
|
|
290
|
-
function isSearchMemoryNotesInput(raw) {
|
|
291
|
-
if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
|
|
292
|
-
return false;
|
|
293
|
-
}
|
|
294
|
-
const input = raw;
|
|
295
|
-
const keys = Object.keys(input);
|
|
296
|
-
if (keys.some((key) => key !== 'query' && key !== 'path' && key !== 'maxResults')) {
|
|
297
|
-
return false;
|
|
298
|
-
}
|
|
299
|
-
return (typeof input.query === 'string' &&
|
|
300
|
-
input.query.trim().length > 0 &&
|
|
301
|
-
(input.path === undefined || typeof input.path === 'string') &&
|
|
302
|
-
(input.maxResults === undefined || typeof input.maxResults === 'number'));
|
|
303
|
-
}
|
|
304
|
-
function isErrorWithCode(error, code) {
|
|
305
|
-
return error instanceof Error && 'code' in error && error.code === code;
|
|
306
|
-
}
|
|
307
|
-
async function searchWithCli(memoryRoot, targetPath, query, maxResults) {
|
|
308
|
-
const relativeTarget = toMemoryRelativePath(memoryRoot, targetPath);
|
|
309
|
-
const normalizedTarget = relativeTarget === '.' ? '.' : relativeTarget;
|
|
310
|
-
const rgResult = await runSearchCommand('rg', ['-n', '--no-heading', '--glob', '*.md', query, normalizedTarget], memoryRoot);
|
|
311
|
-
if (rgResult.kind === 'ok') {
|
|
312
|
-
return {
|
|
313
|
-
ok: true,
|
|
314
|
-
output: trimSearchOutput(rgResult.stdout, maxResults),
|
|
315
|
-
};
|
|
316
|
-
}
|
|
317
|
-
if (rgResult.kind === 'nonzero_no_match') {
|
|
318
|
-
return { ok: true, output: 'No matches found.' };
|
|
319
|
-
}
|
|
320
|
-
if (rgResult.kind !== 'missing_binary') {
|
|
321
|
-
return {
|
|
322
|
-
ok: false,
|
|
323
|
-
error: `Failed to search memory notes in ${targetPath}: ${rgResult.error}`,
|
|
324
|
-
};
|
|
325
|
-
}
|
|
326
|
-
const grepResult = await runSearchCommand('grep', ['-R', '-n', '--include=*.md', query, normalizedTarget], memoryRoot);
|
|
327
|
-
if (grepResult.kind === 'ok') {
|
|
328
|
-
return {
|
|
329
|
-
ok: true,
|
|
330
|
-
output: trimSearchOutput(grepResult.stdout, maxResults),
|
|
331
|
-
};
|
|
332
|
-
}
|
|
333
|
-
if (grepResult.kind === 'nonzero_no_match') {
|
|
334
|
-
return { ok: true, output: 'No matches found.' };
|
|
168
|
+
static isRead(raw) {
|
|
169
|
+
if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
const input = raw;
|
|
173
|
+
return Object.keys(input).every((key) => key === 'path' || key === 'maxLines' || key === 'offset')
|
|
174
|
+
&& typeof input.path === 'string'
|
|
175
|
+
&& (input.maxLines === undefined || typeof input.maxLines === 'number')
|
|
176
|
+
&& (input.offset === undefined || typeof input.offset === 'number');
|
|
177
|
+
}
|
|
178
|
+
static isSearch(raw) {
|
|
179
|
+
if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
const input = raw;
|
|
183
|
+
return Object.keys(input).every((key) => key === 'query' || key === 'path' || key === 'maxResults')
|
|
184
|
+
&& typeof input.query === 'string'
|
|
185
|
+
&& input.query.trim().length > 0
|
|
186
|
+
&& (input.path === undefined || typeof input.path === 'string')
|
|
187
|
+
&& (input.maxResults === undefined || typeof input.maxResults === 'number');
|
|
335
188
|
}
|
|
336
|
-
return {
|
|
337
|
-
ok: false,
|
|
338
|
-
error: `Failed to search memory notes in ${targetPath}: ${grepResult.error}`,
|
|
339
|
-
};
|
|
340
|
-
}
|
|
341
|
-
function trimSearchOutput(stdout, maxResults) {
|
|
342
|
-
const lines = stdout
|
|
343
|
-
.split('\n')
|
|
344
|
-
.map((line) => line.trimEnd().replace(/^\.\//, ''))
|
|
345
|
-
.filter((line) => line.length > 0)
|
|
346
|
-
.slice(0, maxResults);
|
|
347
|
-
return lines.length > 0 ? lines.join('\n') : 'No matches found.';
|
|
348
189
|
}
|
|
349
|
-
|
|
350
|
-
return new
|
|
351
|
-
const child = spawn(binary, args, {
|
|
352
|
-
cwd,
|
|
353
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
354
|
-
});
|
|
355
|
-
let stdout = '';
|
|
356
|
-
let stderr = '';
|
|
357
|
-
child.stdout.on('data', (chunk) => {
|
|
358
|
-
stdout += chunk.toString();
|
|
359
|
-
});
|
|
360
|
-
child.stderr.on('data', (chunk) => {
|
|
361
|
-
stderr += chunk.toString();
|
|
362
|
-
});
|
|
363
|
-
child.on('error', (error) => {
|
|
364
|
-
if ('code' in error && error.code === 'ENOENT') {
|
|
365
|
-
resolvePromise({ kind: 'missing_binary', error: `${binary} is not available in the environment.` });
|
|
366
|
-
return;
|
|
367
|
-
}
|
|
368
|
-
resolvePromise({ kind: 'error', error: error.message });
|
|
369
|
-
});
|
|
370
|
-
child.on('close', (code) => {
|
|
371
|
-
if (code === 0) {
|
|
372
|
-
resolvePromise({ kind: 'ok', stdout });
|
|
373
|
-
return;
|
|
374
|
-
}
|
|
375
|
-
if (code === 1) {
|
|
376
|
-
resolvePromise({ kind: 'nonzero_no_match', error: stderr.trim() || `${binary} returned exit code 1` });
|
|
377
|
-
return;
|
|
378
|
-
}
|
|
379
|
-
resolvePromise({ kind: 'error', error: stderr.trim() || `${binary} returned exit code ${code ?? 'unknown'}` });
|
|
380
|
-
});
|
|
381
|
-
});
|
|
190
|
+
function memoryNotes(options) {
|
|
191
|
+
return new MemoryNoteService(resolve(options.memoryRoot ?? DEFAULT_MEMORY_ROOT));
|
|
382
192
|
}
|
|
383
193
|
//# sourceMappingURL=memory-notes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-notes.js","sourceRoot":"","sources":["../../../../../../src/core/tools/toolkits/knowledge/memory-notes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"memory-notes.js","sourceRoot":"","sources":["../../../../../../src/core/tools/toolkits/knowledge/memory-notes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAQlE,MAAM,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAExE,MAAM,UAAU,yBAAyB,CAAC,UAAkC,EAAE;IAC5E,OAAO;QACL,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,mcAAmc;QACrc,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,oBAAoB,EAAE,KAAK;YAC3B,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,oDAAoD;iBAClE;aACF;SACF;QACD,KAAK,CAAC,OAAO,CAAC,GAAY;YACxB,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,4DAA4D,EAAE,CAAC;YAC5F,CAAC;YAED,IAAI,CAAC;gBACH,OAAO;oBACL,EAAE,EAAE,IAAI;oBACR,MAAM,EAAE,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;iBAC1D,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACtF,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,UAAkC,EAAE;IAC3E,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,+jBAA+jB;QACjkB,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,oBAAoB,EAAE,KAAK;YAC3B,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,kCAAkC;iBAChD;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,mCAAmC;iBACjD;gBACD,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,mCAAmC;iBACjD;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;QACD,KAAK,CAAC,OAAO,CAAC,GAAY;YACxB,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,8FAA8F,EAAE,CAAC;YAC9H,CAAC;YAED,IAAI,CAAC;gBACH,OAAO;oBACL,EAAE,EAAE,IAAI;oBACR,MAAM,EAAE,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;iBAC7C,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACtF,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,UAAkC,EAAE;IAC9E,OAAO;QACL,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EACT,ugBAAugB;QACzgB,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,oBAAoB,EAAE,KAAK;YAC3B,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,oCAAoC;iBAClD;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,qEAAqE;iBACnF;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,4CAA4C;iBAC1D;aACF;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB;QACD,KAAK,CAAC,OAAO,CAAC,GAAY;YACxB,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,kGAAkG,EAAE,CAAC;YAClI,CAAC;YAED,IAAI,CAAC;gBACH,OAAO;oBACL,EAAE,EAAE,IAAI;oBACR,MAAM,EAAE,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;iBAC/C,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACtF,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,UAAkC,EAAE;IAC3E,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,gkBAAgkB;QAClkB,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,oBAAoB,EAAE,KAAK;YAC3B,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,oCAAoC;iBAClD;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,kCAAkC;iBAChD;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,8BAA8B;iBAC5C;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,6EAA6E;iBAC3F;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,4BAA4B;iBAC1C;gBACD,eAAe,EAAE;oBACf,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,yEAAyE;iBACvF;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;QACD,KAAK,CAAC,OAAO,CAAC,GAAY;YACxB,OAAO,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9C,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,yBAAyB,EAAE,CAAC;AAC/D,MAAM,CAAC,MAAM,kBAAkB,GAAG,wBAAwB,EAAE,CAAC;AAC7D,MAAM,CAAC,MAAM,qBAAqB,GAAG,2BAA2B,EAAE,CAAC;AACnE,MAAM,CAAC,MAAM,kBAAkB,GAAG,wBAAwB,EAAE,CAAC;AAE7D,MAAM,oBAAoB;IACxB,MAAM,CAAC,MAAM,CAAC,GAAY;QACxB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,KAAK,GAAG,GAA8B,CAAC;QAC7C,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,MAAM,CAAC;eACnD,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,GAAY;QACxB,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,KAAK,GAAG,GAA8B,CAAC;QAC7C,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,QAAQ,CAAC;eAC7F,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;eAC9B,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC;eACpE,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,GAAY;QAC1B,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,KAAK,GAAG,GAA8B,CAAC;QAC7C,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,YAAY,CAAC;eAC9F,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;eAC/B,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;eAC7B,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;eAC5D,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC;IAChF,CAAC;CACF;AAED,SAAS,WAAW,CAAC,OAA+B;IAClD,OAAO,IAAI,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,IAAI,mBAAmB,CAAC,CAAC,CAAC;AACnF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-knowledge.d.ts","sourceRoot":"","sources":["../../../../../../src/core/tools/toolkits/knowledge/record-knowledge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"record-knowledge.d.ts","sourceRoot":"","sources":["../../../../../../src/core/tools/toolkits/knowledge/record-knowledge.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,mBAAmB,CAAC;AAEpE,MAAM,MAAM,0BAA0B,GAAG;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;CACvB,CAAC;AAmBF,wBAAgB,yBAAyB,CAAC,OAAO,GAAE,0BAA+B,GAAG,cAAc,CAoElG;AAED,eAAO,MAAM,mBAAmB,gBAA8B,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { resolve } from 'node:path';
|
|
2
|
+
import { MemoryMaintenanceRepository } from '../../../../core/memory/maintenance-repository.js';
|
|
3
|
+
import { MemoryMaintenanceService } from '../../../../core/memory/maintainer.js';
|
|
3
4
|
const DEFAULT_MEMORY_ROOT = resolve(process.cwd(), '.heddle', 'memory');
|
|
4
5
|
const MAX_SUMMARY_LENGTH = 2000;
|
|
5
6
|
const MAX_EVIDENCE_ITEMS = 8;
|
|
@@ -45,12 +46,11 @@ export function createRecordKnowledgeTool(options = {}) {
|
|
|
45
46
|
required: ['summary'],
|
|
46
47
|
},
|
|
47
48
|
async execute(raw) {
|
|
48
|
-
const
|
|
49
|
+
const memoryRoot = resolveMemoryRoot(options);
|
|
50
|
+
const parsed = RecordKnowledgeToolInput.validate(raw, memoryRoot);
|
|
49
51
|
if (!parsed.ok) {
|
|
50
52
|
return { ok: false, error: parsed.error };
|
|
51
53
|
}
|
|
52
|
-
const memoryRoot = resolveMemoryRoot(options);
|
|
53
|
-
const candidatePath = resolve(memoryRoot, '_maintenance', 'candidates.jsonl');
|
|
54
54
|
const now = options.now?.() ?? new Date();
|
|
55
55
|
const record = {
|
|
56
56
|
id: options.nextId?.() ?? `candidate-${now.getTime()}`,
|
|
@@ -58,8 +58,7 @@ export function createRecordKnowledgeTool(options = {}) {
|
|
|
58
58
|
status: 'pending',
|
|
59
59
|
...parsed.input,
|
|
60
60
|
};
|
|
61
|
-
await
|
|
62
|
-
await appendFile(candidatePath, `${JSON.stringify(record)}\n`, 'utf8');
|
|
61
|
+
await new MemoryMaintenanceRepository(memoryRoot).appendCandidate(record);
|
|
63
62
|
return {
|
|
64
63
|
ok: true,
|
|
65
64
|
output: {
|
|
@@ -73,109 +72,80 @@ export function createRecordKnowledgeTool(options = {}) {
|
|
|
73
72
|
};
|
|
74
73
|
}
|
|
75
74
|
export const recordKnowledgeTool = createRecordKnowledgeTool();
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
}
|
|
135
|
-
function validateOptionalStringArray(raw, field, maxItems) {
|
|
136
|
-
if (raw === undefined) {
|
|
137
|
-
return { ok: true, values: [] };
|
|
138
|
-
}
|
|
139
|
-
if (!Array.isArray(raw) || raw.length > maxItems || raw.some((value) => typeof value !== 'string' || !value.trim() || value.length > MAX_TEXT_FIELD_LENGTH)) {
|
|
140
|
-
return { ok: false, error: `Invalid input for record_knowledge. Optional field ${field} must be an array of up to ${maxItems} non-empty strings, each up to ${MAX_TEXT_FIELD_LENGTH} characters.` };
|
|
141
|
-
}
|
|
142
|
-
return { ok: true, values: raw.map((value) => value.trim()) };
|
|
143
|
-
}
|
|
144
|
-
function containsSecretLikeText(value) {
|
|
145
|
-
const normalized = value.toLowerCase();
|
|
146
|
-
return /\b(api[_ -]?key|password|passwd|private[_ -]?key|access[_ -]?token|refresh[_ -]?token|bearer\s+[a-z0-9._~+/=-]{12,})\b/i.test(value)
|
|
147
|
-
|| /\bsecret\s*[:=]\s*\S{8,}/i.test(value)
|
|
148
|
-
|| /\bsk-[a-z0-9_-]{12,}\b/i.test(value)
|
|
149
|
-
|| normalized.includes('-----begin private key-----')
|
|
150
|
-
|| normalized.includes('-----begin rsa private key-----')
|
|
151
|
-
|| normalized.includes('-----begin openSSH private key-----'.toLowerCase());
|
|
152
|
-
}
|
|
153
|
-
function isSafeSourceRef(value, memoryRoot) {
|
|
154
|
-
if (value.includes('\0')) {
|
|
155
|
-
return false;
|
|
156
|
-
}
|
|
157
|
-
if (value.startsWith('trace-') || value.startsWith('session-') || value.startsWith('command:')) {
|
|
158
|
-
return true;
|
|
159
|
-
}
|
|
160
|
-
if (/^[a-z][a-z0-9+.-]*:/i.test(value)) {
|
|
161
|
-
return false;
|
|
75
|
+
class RecordKnowledgeToolInput {
|
|
76
|
+
static validate(raw, memoryRoot) {
|
|
77
|
+
if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
|
|
78
|
+
return { ok: false, error: RecordKnowledgeToolInput.invalidInputMessage() };
|
|
79
|
+
}
|
|
80
|
+
const input = raw;
|
|
81
|
+
const allowedKeys = new Set(['summary', 'evidence', 'categoryHint', 'importance', 'confidence', 'sourceRefs']);
|
|
82
|
+
if (Object.keys(input).some((key) => !allowedKeys.has(key))) {
|
|
83
|
+
return { ok: false, error: RecordKnowledgeToolInput.invalidInputMessage() };
|
|
84
|
+
}
|
|
85
|
+
if (typeof input.summary !== 'string' || !input.summary.trim() || input.summary.length > MAX_SUMMARY_LENGTH) {
|
|
86
|
+
return { ok: false, error: `Invalid input for record_knowledge. Required field summary must be a non-empty string up to ${MAX_SUMMARY_LENGTH} characters.` };
|
|
87
|
+
}
|
|
88
|
+
const summary = input.summary.trim();
|
|
89
|
+
if (!MemoryMaintenanceService.isRecordableCandidateText(summary)) {
|
|
90
|
+
return { ok: false, error: 'record_knowledge refused secret-like content in summary. Do not store credentials, tokens, private keys, or passwords in memory.' };
|
|
91
|
+
}
|
|
92
|
+
const evidence = RecordKnowledgeToolInput.validateOptionalStringArray(input.evidence, 'evidence', MAX_EVIDENCE_ITEMS);
|
|
93
|
+
if (!evidence.ok) {
|
|
94
|
+
return { ok: false, error: evidence.error };
|
|
95
|
+
}
|
|
96
|
+
if (evidence.values.some((value) => !MemoryMaintenanceService.isRecordableCandidateText(value))) {
|
|
97
|
+
return { ok: false, error: 'record_knowledge refused secret-like content in evidence. Do not store credentials, tokens, private keys, or passwords in memory.' };
|
|
98
|
+
}
|
|
99
|
+
const sourceRefs = RecordKnowledgeToolInput.validateOptionalStringArray(input.sourceRefs, 'sourceRefs', MAX_SOURCE_REFS);
|
|
100
|
+
if (!sourceRefs.ok) {
|
|
101
|
+
return { ok: false, error: sourceRefs.error };
|
|
102
|
+
}
|
|
103
|
+
const invalidSourceRef = sourceRefs.values.find((sourceRef) => !MemoryMaintenanceService.isSafeSourceRef(sourceRef, memoryRoot));
|
|
104
|
+
if (invalidSourceRef) {
|
|
105
|
+
return { ok: false, error: `record_knowledge sourceRefs must be workspace-relative paths or non-path references. Refusing unsafe sourceRef: ${invalidSourceRef}` };
|
|
106
|
+
}
|
|
107
|
+
if (sourceRefs.values.some((value) => !MemoryMaintenanceService.isRecordableCandidateText(value))) {
|
|
108
|
+
return { ok: false, error: 'record_knowledge refused secret-like content in sourceRefs. Do not store credentials, tokens, private keys, or passwords in memory.' };
|
|
109
|
+
}
|
|
110
|
+
if (input.categoryHint !== undefined && (typeof input.categoryHint !== 'string' || !input.categoryHint.trim() || input.categoryHint.length > 80)) {
|
|
111
|
+
return { ok: false, error: 'Invalid input for record_knowledge. Optional field categoryHint must be a non-empty string up to 80 characters.' };
|
|
112
|
+
}
|
|
113
|
+
if (input.importance !== undefined && input.importance !== 'low' && input.importance !== 'medium' && input.importance !== 'high') {
|
|
114
|
+
return { ok: false, error: 'Invalid input for record_knowledge. Optional field importance must be one of: low, medium, high.' };
|
|
115
|
+
}
|
|
116
|
+
if (input.confidence !== undefined
|
|
117
|
+
&& input.confidence !== 'user-stated'
|
|
118
|
+
&& input.confidence !== 'tool-verified'
|
|
119
|
+
&& input.confidence !== 'inferred'
|
|
120
|
+
&& input.confidence !== 'historical') {
|
|
121
|
+
return { ok: false, error: 'Invalid input for record_knowledge. Optional field confidence must be one of: user-stated, tool-verified, inferred, historical.' };
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
ok: true,
|
|
125
|
+
input: {
|
|
126
|
+
summary,
|
|
127
|
+
evidence: evidence.values.length > 0 ? evidence.values : undefined,
|
|
128
|
+
categoryHint: typeof input.categoryHint === 'string' ? input.categoryHint.trim() : undefined,
|
|
129
|
+
importance: input.importance,
|
|
130
|
+
confidence: input.confidence,
|
|
131
|
+
sourceRefs: sourceRefs.values.length > 0 ? sourceRefs.values : undefined,
|
|
132
|
+
},
|
|
133
|
+
};
|
|
162
134
|
}
|
|
163
|
-
|
|
164
|
-
|
|
135
|
+
static validateOptionalStringArray(raw, field, maxItems) {
|
|
136
|
+
if (raw === undefined) {
|
|
137
|
+
return { ok: true, values: [] };
|
|
138
|
+
}
|
|
139
|
+
if (!Array.isArray(raw) || raw.length > maxItems || raw.some((value) => typeof value !== 'string' || !value.trim() || value.length > MAX_TEXT_FIELD_LENGTH)) {
|
|
140
|
+
return { ok: false, error: `Invalid input for record_knowledge. Optional field ${field} must be an array of up to ${maxItems} non-empty strings, each up to ${MAX_TEXT_FIELD_LENGTH} characters.` };
|
|
141
|
+
}
|
|
142
|
+
return { ok: true, values: raw.map((value) => value.trim()) };
|
|
165
143
|
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
return false;
|
|
144
|
+
static invalidInputMessage() {
|
|
145
|
+
return 'Invalid input for record_knowledge. Required field: summary. Optional fields: evidence, categoryHint, importance, confidence, sourceRefs.';
|
|
169
146
|
}
|
|
170
|
-
const workspaceRoot = resolve(memoryRoot, '..', '..');
|
|
171
|
-
const resolved = resolve(workspaceRoot, value);
|
|
172
|
-
const rel = relative(workspaceRoot, resolved);
|
|
173
|
-
return rel !== '' && !rel.startsWith('..') && !isAbsolute(rel);
|
|
174
147
|
}
|
|
175
148
|
function resolveMemoryRoot(options) {
|
|
176
149
|
return resolve(options.memoryRoot ?? DEFAULT_MEMORY_ROOT);
|
|
177
150
|
}
|
|
178
|
-
function invalidInputMessage() {
|
|
179
|
-
return 'Invalid input for record_knowledge. Required field: summary. Optional fields: evidence, categoryHint, importance, confidence, sourceRefs.';
|
|
180
|
-
}
|
|
181
151
|
//# sourceMappingURL=record-knowledge.js.map
|