iranti 0.2.36 → 0.2.38
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/scripts/claude-code-memory-hook.js +29 -4
- package/dist/scripts/iranti-mcp.js +1 -1
- package/dist/src/api/server.js +1 -1
- package/dist/src/lib/autoRemember.d.ts +1 -0
- package/dist/src/lib/autoRemember.d.ts.map +1 -1
- package/dist/src/lib/autoRemember.js +11 -5
- package/dist/src/lib/autoRemember.js.map +1 -1
- package/package.json +1 -1
|
@@ -234,10 +234,32 @@ function formatSessionContext(facts, cwd) {
|
|
|
234
234
|
}
|
|
235
235
|
return lines.join('\n');
|
|
236
236
|
}
|
|
237
|
-
function
|
|
237
|
+
function extractSelfMemoryQueryKey(prompt) {
|
|
238
|
+
const normalized = prompt.trim();
|
|
239
|
+
if (!normalized)
|
|
240
|
+
return null;
|
|
241
|
+
const favoriteMatch = normalized.match(/\bwhat(?:'s| is| was)?\s+my\s+favou?rite\s+([a-z0-9_\-\s]+?)\??$/i);
|
|
242
|
+
if (favoriteMatch) {
|
|
243
|
+
return (0, autoRemember_1.canonicalizeMemoryKey)(`favorite_${favoriteMatch[1]}`);
|
|
244
|
+
}
|
|
245
|
+
const fieldMatch = normalized.match(/\bwhat(?:'s| is| was)?\s+my\s+([a-z0-9_\-\s]+?)\??$/i);
|
|
246
|
+
if (fieldMatch) {
|
|
247
|
+
return (0, autoRemember_1.canonicalizeMemoryKey)(fieldMatch[1]);
|
|
248
|
+
}
|
|
249
|
+
return null;
|
|
250
|
+
}
|
|
251
|
+
function formatPromptContext(facts, prompt) {
|
|
238
252
|
if (facts.length === 0)
|
|
239
253
|
return '';
|
|
240
254
|
const lines = ['[Iranti Retrieved Memory]'];
|
|
255
|
+
const targetKey = prompt ? extractSelfMemoryQueryKey(prompt) : null;
|
|
256
|
+
if (targetKey) {
|
|
257
|
+
const answerCandidate = facts.find((fact) => (0, autoRemember_1.canonicalizeMemoryKey)(fact.key) === targetKey);
|
|
258
|
+
if (answerCandidate) {
|
|
259
|
+
lines.push(`Direct answer: ${answerCandidate.summary}.`);
|
|
260
|
+
lines.push('Use the direct answer above when it fully answers the user question.');
|
|
261
|
+
}
|
|
262
|
+
}
|
|
241
263
|
for (const fact of facts) {
|
|
242
264
|
lines.push(`- ${fact.entity}/${fact.key}: ${fact.summary}`);
|
|
243
265
|
}
|
|
@@ -270,7 +292,7 @@ function shouldFetchMemory(prompt) {
|
|
|
270
292
|
function dedupeFacts(facts) {
|
|
271
293
|
const byKey = new Map();
|
|
272
294
|
for (const fact of facts) {
|
|
273
|
-
const identity = `${fact.entity}/${fact.key}`;
|
|
295
|
+
const identity = `${fact.entity}/${(0, autoRemember_1.canonicalizeMemoryKey)(fact.key)}`;
|
|
274
296
|
const existing = byKey.get(identity);
|
|
275
297
|
if (!existing || fact.confidence > existing.confidence) {
|
|
276
298
|
byKey.set(identity, fact);
|
|
@@ -347,7 +369,7 @@ async function buildHookAdditionalContext(options) {
|
|
|
347
369
|
return '';
|
|
348
370
|
}
|
|
349
371
|
const prompt = getPrompt(payload);
|
|
350
|
-
if (!prompt
|
|
372
|
+
if (!prompt) {
|
|
351
373
|
return '';
|
|
352
374
|
}
|
|
353
375
|
if ((0, autoRemember_1.isAutoRememberEnabled)()) {
|
|
@@ -358,6 +380,9 @@ async function buildHookAdditionalContext(options) {
|
|
|
358
380
|
source: 'ClaudeCodeHook',
|
|
359
381
|
});
|
|
360
382
|
}
|
|
383
|
+
if (!shouldFetchMemory(prompt)) {
|
|
384
|
+
return '';
|
|
385
|
+
}
|
|
361
386
|
const attend = await iranti.attend({
|
|
362
387
|
agent,
|
|
363
388
|
latestMessage: prompt,
|
|
@@ -372,7 +397,7 @@ async function buildHookAdditionalContext(options) {
|
|
|
372
397
|
confidence: fact.confidence,
|
|
373
398
|
source: fact.source,
|
|
374
399
|
})).filter((fact) => fact.entity.includes('/') && fact.key.length > 0);
|
|
375
|
-
return formatPromptContext(dedupeFacts(facts));
|
|
400
|
+
return formatPromptContext(dedupeFacts(facts), prompt);
|
|
376
401
|
}
|
|
377
402
|
async function main() {
|
|
378
403
|
if (process.argv.includes('--help') || process.argv.includes('-h')) {
|
|
@@ -147,7 +147,7 @@ async function main() {
|
|
|
147
147
|
await ensureDefaultAgent(iranti);
|
|
148
148
|
const server = new mcp_js_1.McpServer({
|
|
149
149
|
name: 'iranti-mcp',
|
|
150
|
-
version: '0.2.
|
|
150
|
+
version: '0.2.38',
|
|
151
151
|
});
|
|
152
152
|
server.registerTool('iranti_handshake', {
|
|
153
153
|
description: `Initialize or refresh an agent's working-memory brief for the current task.
|
package/dist/src/api/server.js
CHANGED
|
@@ -39,7 +39,7 @@ const RUNTIME_AUTHORITY = (0, runtimeLifecycle_1.resolveRuntimeAuthorityFromEnv)
|
|
|
39
39
|
const INSTANCE_DIR = RUNTIME_AUTHORITY.instanceDir;
|
|
40
40
|
const INSTANCE_RUNTIME_FILE = RUNTIME_AUTHORITY.runtimeFile;
|
|
41
41
|
const INSTANCE_NAME = process.env.IRANTI_INSTANCE_NAME?.trim() || (INSTANCE_DIR ? path_1.default.basename(INSTANCE_DIR) : 'adhoc');
|
|
42
|
-
const VERSION = '0.2.
|
|
42
|
+
const VERSION = '0.2.38';
|
|
43
43
|
const PORT_RAW = (process.env.IRANTI_PORT ?? '3001').trim();
|
|
44
44
|
const PORT = Number.parseInt(PORT_RAW, 10);
|
|
45
45
|
const runtimeMetadataHealth = {
|
|
@@ -28,6 +28,7 @@ type AutoRememberResult = {
|
|
|
28
28
|
reason: string;
|
|
29
29
|
}>;
|
|
30
30
|
};
|
|
31
|
+
export declare function canonicalizeMemoryKey(text: string): string;
|
|
31
32
|
export declare function isAutoRememberEnabled(): boolean;
|
|
32
33
|
export declare function extractExplicitPromptMemory(prompt: string): ExtractedMemoryFact[];
|
|
33
34
|
export declare function extractExplicitAssistantMemory(response: string): ExtractedMemoryFact[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoRemember.d.ts","sourceRoot":"","sources":["../../../src/lib/autoRemember.ts"],"names":[],"mappings":"AAAA,KAAK,iBAAiB,GAAG;IACrB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACjF,KAAK,CAAC,KAAK,EAAE;QACT,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,OAAO,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACxB,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD,CAAC;AA+
|
|
1
|
+
{"version":3,"file":"autoRemember.d.ts","sourceRoot":"","sources":["../../../src/lib/autoRemember.ts"],"names":[],"mappings":"AAAA,KAAK,iBAAiB,GAAG;IACrB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACjF,KAAK,CAAC,KAAK,EAAE;QACT,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,OAAO,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACxB,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI1D;AA+BD,wBAAgB,qBAAqB,IAAI,OAAO,CAG/C;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAsEjF;AAED,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,EAAE,CA4DtF;AAUD,wBAAsB,uBAAuB,CAAC,MAAM,EAAE;IAClD,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAiD9B;AAED,wBAAsB,0BAA0B,CAAC,MAAM,EAAE;IACrD,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAiD9B"}
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.canonicalizeMemoryKey = canonicalizeMemoryKey;
|
|
3
4
|
exports.isAutoRememberEnabled = isAutoRememberEnabled;
|
|
4
5
|
exports.extractExplicitPromptMemory = extractExplicitPromptMemory;
|
|
5
6
|
exports.extractExplicitAssistantMemory = extractExplicitAssistantMemory;
|
|
6
7
|
exports.autoRememberPromptFacts = autoRememberPromptFacts;
|
|
7
8
|
exports.autoRememberAssistantFacts = autoRememberAssistantFacts;
|
|
9
|
+
function canonicalizeMemoryKey(text) {
|
|
10
|
+
return normalizeKey(text)
|
|
11
|
+
.replace(/favourite/g, 'favorite')
|
|
12
|
+
.replace(/colour/g, 'color');
|
|
13
|
+
}
|
|
8
14
|
function normalizeKey(text) {
|
|
9
15
|
return text
|
|
10
16
|
.trim()
|
|
@@ -24,7 +30,7 @@ function isQuestionLike(prompt) {
|
|
|
24
30
|
return /^(what|when|where|who|why|how|do|did|does|can|could|should|would|is|are|am|was|were)\b/i.test(trimmed);
|
|
25
31
|
}
|
|
26
32
|
function buildTextFact(key, value) {
|
|
27
|
-
const cleanKey =
|
|
33
|
+
const cleanKey = canonicalizeMemoryKey(key);
|
|
28
34
|
const cleanValue = value.trim();
|
|
29
35
|
return {
|
|
30
36
|
key: cleanKey,
|
|
@@ -46,12 +52,12 @@ function extractExplicitPromptMemory(prompt) {
|
|
|
46
52
|
const prefixes = ['actually ', 'correction: ', 'correction ', 'for the record, '];
|
|
47
53
|
const stripped = prefixes.reduce((value, prefix) => value.startsWith(prefix) ? value.slice(prefix.length) : value, lower);
|
|
48
54
|
const facts = [];
|
|
49
|
-
const favoriteMatch = stripped.match(/^my
|
|
55
|
+
const favoriteMatch = stripped.match(/^my favou?rite ([a-z0-9_\-\s]+?) is (.+)$/i);
|
|
50
56
|
if (favoriteMatch) {
|
|
51
57
|
facts.push(buildTextFact(`favorite_${favoriteMatch[1]}`, favoriteMatch[2]));
|
|
52
58
|
}
|
|
53
59
|
const myFieldMatch = stripped.match(/^my ([a-z0-9_\-\s]+?) is (.+)$/i);
|
|
54
|
-
if (myFieldMatch && !facts.some((fact) => fact.key ===
|
|
60
|
+
if (myFieldMatch && !facts.some((fact) => fact.key === canonicalizeMemoryKey(myFieldMatch[1]))) {
|
|
55
61
|
facts.push(buildTextFact(myFieldMatch[1], myFieldMatch[2]));
|
|
56
62
|
}
|
|
57
63
|
const homeCityMatch = stripped.match(/^i live in (.+)$/i);
|
|
@@ -104,12 +110,12 @@ function extractExplicitAssistantMemory(response) {
|
|
|
104
110
|
return [];
|
|
105
111
|
const lower = raw.toLowerCase();
|
|
106
112
|
const facts = [];
|
|
107
|
-
const yourFavoriteMatch = lower.match(/^your
|
|
113
|
+
const yourFavoriteMatch = lower.match(/^your favou?rite ([a-z0-9_\-\s]+?) is (.+)$/i);
|
|
108
114
|
if (yourFavoriteMatch) {
|
|
109
115
|
facts.push(buildTextFact(`favorite_${yourFavoriteMatch[1]}`, yourFavoriteMatch[2]));
|
|
110
116
|
}
|
|
111
117
|
const yourFieldMatch = lower.match(/^your ([a-z0-9_\-\s]+?) is (.+)$/i);
|
|
112
|
-
if (yourFieldMatch && !facts.some((fact) => fact.key ===
|
|
118
|
+
if (yourFieldMatch && !facts.some((fact) => fact.key === canonicalizeMemoryKey(yourFieldMatch[1]))) {
|
|
113
119
|
facts.push(buildTextFact(yourFieldMatch[1], yourFieldMatch[2]));
|
|
114
120
|
}
|
|
115
121
|
const decisionMatch = lower.match(/^we decided(?: that)? (.+)$/i);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoRemember.js","sourceRoot":"","sources":["../../../src/lib/autoRemember.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"autoRemember.js","sourceRoot":"","sources":["../../../src/lib/autoRemember.ts"],"names":[],"mappings":"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"}
|