iranti 0.2.37 → 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 +25 -3
- 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 +9 -3
- 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);
|
|
@@ -375,7 +397,7 @@ async function buildHookAdditionalContext(options) {
|
|
|
375
397
|
confidence: fact.confidence,
|
|
376
398
|
source: fact.source,
|
|
377
399
|
})).filter((fact) => fact.entity.includes('/') && fact.key.length > 0);
|
|
378
|
-
return formatPromptContext(dedupeFacts(facts));
|
|
400
|
+
return formatPromptContext(dedupeFacts(facts), prompt);
|
|
379
401
|
}
|
|
380
402
|
async function main() {
|
|
381
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,
|
|
@@ -51,7 +57,7 @@ function extractExplicitPromptMemory(prompt) {
|
|
|
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);
|
|
@@ -109,7 +115,7 @@ function extractExplicitAssistantMemory(response) {
|
|
|
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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"}
|