iranti 0.2.33 → 0.2.36

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.
@@ -3,10 +3,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.buildHookAdditionalContext = buildHookAdditionalContext;
6
7
  require("dotenv/config");
7
8
  const path_1 = __importDefault(require("path"));
8
9
  const sdk_1 = require("../src/sdk");
9
10
  const runtimeEnv_1 = require("../src/lib/runtimeEnv");
11
+ const autoRemember_1 = require("../src/lib/autoRemember");
10
12
  const MEMORY_NEED_POSITIVE_PATTERNS = [
11
13
  /\bwhat(?:'s| is| was)?\s+my\b/i,
12
14
  /\bdo you remember\b/i,
@@ -28,6 +30,7 @@ function printHelp() {
28
30
  'Usage:',
29
31
  ' ts-node scripts/claude-code-memory-hook.ts --event SessionStart',
30
32
  ' ts-node scripts/claude-code-memory-hook.ts --event UserPromptSubmit',
33
+ ' ts-node scripts/claude-code-memory-hook.ts --event Stop',
31
34
  '',
32
35
  'Optional flags:',
33
36
  ' --project-env <path> Explicit .env.iranti path',
@@ -35,6 +38,8 @@ function printHelp() {
35
38
  ' --env-file <path> Explicit base .env path',
36
39
  '',
37
40
  'Reads Claude Code hook JSON from stdin and returns hookSpecificOutput.additionalContext on stdout.',
41
+ 'This helper retrieves working memory; durable KB writes still require explicit iranti_write/ingest calls.',
42
+ 'Set IRANTI_AUTO_REMEMBER=true to auto-save only narrow explicit prompt facts into IRANTI_MEMORY_ENTITY.',
38
43
  ].join('\n'));
39
44
  }
40
45
  function parseArgs(argv) {
@@ -144,6 +149,71 @@ function getPrompt(payload) {
144
149
  }
145
150
  return '';
146
151
  }
152
+ function getLastAssistantMessage(payload) {
153
+ const candidates = [
154
+ payload.last_assistant_message,
155
+ payload.lastAssistantMessage,
156
+ payload.response,
157
+ payload.text,
158
+ ];
159
+ for (const candidate of candidates) {
160
+ if (typeof candidate === 'string' && candidate.trim()) {
161
+ return candidate.trim();
162
+ }
163
+ }
164
+ return '';
165
+ }
166
+ function getRecentMessages(payload) {
167
+ const candidates = [
168
+ payload.recentMessages,
169
+ payload.messages,
170
+ payload.history,
171
+ payload.transcript,
172
+ ];
173
+ for (const candidate of candidates) {
174
+ if (!Array.isArray(candidate))
175
+ continue;
176
+ const normalized = candidate
177
+ .flatMap((entry) => {
178
+ if (typeof entry === 'string' && entry.trim()) {
179
+ return [entry.trim()];
180
+ }
181
+ if (entry && typeof entry === 'object') {
182
+ const content = entry.content;
183
+ if (typeof content === 'string' && content.trim()) {
184
+ const role = typeof entry.role === 'string'
185
+ ? String(entry.role).trim()
186
+ : '';
187
+ return [role ? `${role}: ${content.trim()}` : content.trim()];
188
+ }
189
+ }
190
+ return [];
191
+ })
192
+ .slice(-12);
193
+ if (normalized.length > 0) {
194
+ return normalized;
195
+ }
196
+ }
197
+ return [];
198
+ }
199
+ function buildSessionTask(payload) {
200
+ const explicit = process.env.IRANTI_CLAUDE_SESSION_TASK?.trim();
201
+ if (explicit)
202
+ return explicit;
203
+ const payloadTask = typeof payload.task === 'string' && payload.task.trim().length > 0
204
+ ? payload.task.trim()
205
+ : null;
206
+ if (payloadTask)
207
+ return payloadTask;
208
+ return `Claude Code session for ${path_1.default.basename(getCwd(payload)) || 'project'}`;
209
+ }
210
+ function buildCurrentContext(payload, prompt) {
211
+ const recentMessages = getRecentMessages(payload);
212
+ if (recentMessages.length === 0) {
213
+ return prompt;
214
+ }
215
+ return [...recentMessages, `user: ${prompt}`].join('\n');
216
+ }
147
217
  function getMaxFacts() {
148
218
  const raw = Number(process.env.IRANTI_CLAUDE_MAX_FACTS ?? 6);
149
219
  if (!Number.isFinite(raw) || raw < 1)
@@ -210,15 +280,8 @@ function dedupeFacts(facts) {
210
280
  .sort((a, b) => b.confidence - a.confidence || a.entity.localeCompare(b.entity) || a.key.localeCompare(b.key))
211
281
  .slice(0, getMaxFacts());
212
282
  }
213
- async function loadAttendantStateFacts(iranti, agent) {
214
- const state = await iranti.query(`agent/${agent}`, 'attendant_state');
215
- if (!state.found || !state.value || typeof state.value !== 'object') {
216
- return [];
217
- }
218
- const workingMemory = Array.isArray(state.value.workingMemory)
219
- ? state.value.workingMemory
220
- : [];
221
- return workingMemory.flatMap((entry) => {
283
+ function workingMemoryToFacts(entries) {
284
+ return entries.flatMap((entry) => {
222
285
  const entityKey = typeof entry.entityKey === 'string' ? entry.entityKey.trim() : '';
223
286
  const summary = typeof entry.summary === 'string' ? entry.summary.trim() : '';
224
287
  if (!entityKey || !summary)
@@ -254,25 +317,62 @@ async function loadEntityFacts(iranti, entities) {
254
317
  }
255
318
  return out;
256
319
  }
257
- async function searchPromptFacts(iranti, prompt, entityHints) {
258
- if (!prompt.trim())
259
- return [];
260
- const results = await iranti.search({
261
- query: prompt,
262
- limit: getMaxFacts(),
263
- minScore: Number(process.env.IRANTI_CLAUDE_MIN_SEARCH_SCORE ?? 0.05),
264
- }).catch(() => []);
265
- const searched = results.map((result) => ({
266
- entity: result.entity,
267
- key: result.key,
268
- summary: result.summary,
269
- confidence: result.confidence,
270
- source: result.source,
271
- }));
272
- if (searched.length > 0) {
273
- return searched;
320
+ async function buildHookAdditionalContext(options) {
321
+ const { iranti, event, payload } = options;
322
+ const cwd = getCwd(payload);
323
+ const agent = await ensureHookAgent(iranti, payload);
324
+ const entityHints = getEntityHints(payload);
325
+ if (event === 'SessionStart') {
326
+ const brief = await iranti.handshake({
327
+ agent,
328
+ task: buildSessionTask(payload),
329
+ recentMessages: getRecentMessages(payload),
330
+ });
331
+ const briefFacts = workingMemoryToFacts(brief.workingMemory);
332
+ const directFacts = briefFacts.length > 0
333
+ ? briefFacts
334
+ : await loadEntityFacts(iranti, entityHints);
335
+ return formatSessionContext(dedupeFacts(directFacts), cwd);
336
+ }
337
+ if (event === 'Stop') {
338
+ const response = getLastAssistantMessage(payload);
339
+ if (response && (0, autoRemember_1.isAutoRememberEnabled)()) {
340
+ await (0, autoRemember_1.autoRememberAssistantFacts)({
341
+ iranti,
342
+ response,
343
+ agent,
344
+ source: 'ClaudeCodeHookStop',
345
+ });
346
+ }
347
+ return '';
274
348
  }
275
- return loadEntityFacts(iranti, entityHints);
349
+ const prompt = getPrompt(payload);
350
+ if (!prompt || !shouldFetchMemory(prompt)) {
351
+ return '';
352
+ }
353
+ if ((0, autoRemember_1.isAutoRememberEnabled)()) {
354
+ await (0, autoRemember_1.autoRememberPromptFacts)({
355
+ iranti,
356
+ prompt,
357
+ agent,
358
+ source: 'ClaudeCodeHook',
359
+ });
360
+ }
361
+ const attend = await iranti.attend({
362
+ agent,
363
+ latestMessage: prompt,
364
+ currentContext: buildCurrentContext(payload, prompt),
365
+ entityHints,
366
+ maxFacts: getMaxFacts(),
367
+ });
368
+ const facts = attend.facts.map((fact) => ({
369
+ entity: fact.entityKey.split('/').slice(0, 2).join('/'),
370
+ key: fact.entityKey.split('/').slice(2).join('/'),
371
+ summary: fact.summary,
372
+ confidence: fact.confidence,
373
+ source: fact.source,
374
+ })).filter((fact) => fact.entity.includes('/') && fact.key.length > 0);
375
+ return formatPromptContext(dedupeFacts(facts));
276
376
  }
277
377
  async function main() {
278
378
  if (process.argv.includes('--help') || process.argv.includes('-h')) {
@@ -281,8 +381,8 @@ async function main() {
281
381
  }
282
382
  const args = parseArgs(process.argv.slice(2));
283
383
  const event = args.event;
284
- if (event !== 'SessionStart' && event !== 'UserPromptSubmit') {
285
- throw new Error('--event must be SessionStart or UserPromptSubmit');
384
+ if (event !== 'SessionStart' && event !== 'UserPromptSubmit' && event !== 'Stop') {
385
+ throw new Error('--event must be SessionStart, UserPromptSubmit, or Stop');
286
386
  }
287
387
  const payload = parsePayload(await readStdin());
288
388
  (0, runtimeEnv_1.loadRuntimeEnv)({
@@ -291,38 +391,25 @@ async function main() {
291
391
  instanceEnvFile: args['instance-env'],
292
392
  explicitEnvFile: args['env-file'],
293
393
  });
294
- const cwd = getCwd(payload);
295
394
  const iranti = new sdk_1.Iranti({
296
395
  connectionString: requireConnectionString(),
297
396
  llmProvider: process.env.LLM_PROVIDER,
298
397
  });
299
- const agent = await ensureHookAgent(iranti, payload);
300
- const entityHints = getEntityHints(payload);
301
- if (event === 'SessionStart') {
302
- const persistedFacts = await loadAttendantStateFacts(iranti, agent);
303
- const directFacts = persistedFacts.length > 0
304
- ? persistedFacts
305
- : await loadEntityFacts(iranti, entityHints);
306
- emitHookContext(event, formatSessionContext(dedupeFacts(directFacts), cwd));
307
- process.exit(0);
308
- }
309
- const prompt = getPrompt(payload);
310
- if (!prompt) {
311
- process.exit(0);
312
- }
313
- if (!shouldFetchMemory(prompt)) {
314
- process.exit(0);
315
- }
316
- const facts = await searchPromptFacts(iranti, prompt, entityHints);
317
- const context = formatPromptContext(dedupeFacts(facts));
398
+ const context = await buildHookAdditionalContext({
399
+ iranti,
400
+ event,
401
+ payload,
402
+ });
318
403
  if (!context) {
319
404
  process.exit(0);
320
405
  }
321
406
  emitHookContext(event, context);
322
407
  process.exit(0);
323
408
  }
324
- main().catch((error) => {
325
- console.error('[claude-code-memory-hook] fatal:', error instanceof Error ? error.message : String(error));
326
- process.exit(1);
327
- });
409
+ if (require.main === module) {
410
+ main().catch((error) => {
411
+ console.error('[claude-code-memory-hook] fatal:', error instanceof Error ? error.message : String(error));
412
+ process.exit(1);
413
+ });
414
+ }
328
415
  //# sourceMappingURL=claude-code-memory-hook.js.map
@@ -1538,7 +1538,7 @@ function needsClaudeHookSettingsUpgrade(value) {
1538
1538
  if (!hooks) {
1539
1539
  return false;
1540
1540
  }
1541
- for (const event of ['SessionStart', 'UserPromptSubmit']) {
1541
+ for (const event of ['SessionStart', 'UserPromptSubmit', 'Stop']) {
1542
1542
  const entries = hooks[event];
1543
1543
  if (!Array.isArray(entries) || entries.length === 0) {
1544
1544
  continue;
@@ -1559,6 +1559,7 @@ function makeClaudeHookSettings(projectEnvPath, existing) {
1559
1559
  ...existingHooks,
1560
1560
  SessionStart: [makeClaudeHookEntry('SessionStart', projectEnvPath)],
1561
1561
  UserPromptSubmit: [makeClaudeHookEntry('UserPromptSubmit', projectEnvPath)],
1562
+ Stop: [makeClaudeHookEntry('Stop', projectEnvPath)],
1562
1563
  },
1563
1564
  };
1564
1565
  }
@@ -3363,7 +3364,7 @@ function removeIrantiClaudeHooksFromValue(value) {
3363
3364
  if (!hooks)
3364
3365
  return value;
3365
3366
  const nextHooks = { ...hooks };
3366
- for (const event of ['SessionStart', 'UserPromptSubmit']) {
3367
+ for (const event of ['SessionStart', 'UserPromptSubmit', 'Stop']) {
3367
3368
  const entries = hooks[event];
3368
3369
  if (!Array.isArray(entries))
3369
3370
  continue;
@@ -5721,7 +5722,7 @@ function hasIrantiClaudeHookSettings(value) {
5721
5722
  const hooks = isClaudeHooksObject(record.hooks) ? record.hooks : null;
5722
5723
  if (!hooks)
5723
5724
  return false;
5724
- for (const event of ['SessionStart', 'UserPromptSubmit']) {
5725
+ for (const event of ['SessionStart', 'UserPromptSubmit', 'Stop']) {
5725
5726
  const entries = hooks[event];
5726
5727
  if (!Array.isArray(entries))
5727
5728
  continue;
@@ -39,6 +39,7 @@ const z = __importStar(require("zod/v4"));
39
39
  const sdk_1 = require("../src/sdk");
40
40
  const commandErrors_1 = require("../src/lib/commandErrors");
41
41
  const runtimeEnv_1 = require("../src/lib/runtimeEnv");
42
+ const autoRemember_1 = require("../src/lib/autoRemember");
42
43
  (0, runtimeEnv_1.loadRuntimeEnv)();
43
44
  function printHelp() {
44
45
  console.log([
@@ -58,6 +59,7 @@ function printHelp() {
58
59
  ' IRANTI_MCP_AGENT_DESCRIPTION Default agent description',
59
60
  ' IRANTI_MCP_AGENT_MODEL Default agent model label',
60
61
  ' IRANTI_MCP_DEFAULT_SOURCE Default write source (default: ClaudeCode)',
62
+ ' IRANTI_AUTO_REMEMBER Opt-in explicit prompt auto-save to IRANTI_MEMORY_ENTITY before attend()',
61
63
  '',
62
64
  'This server is intended for Claude Code and other MCP clients over stdio.',
63
65
  ].join('\n'));
@@ -145,7 +147,7 @@ async function main() {
145
147
  await ensureDefaultAgent(iranti);
146
148
  const server = new mcp_js_1.McpServer({
147
149
  name: 'iranti-mcp',
148
- version: '0.2.33',
150
+ version: '0.2.36',
149
151
  });
150
152
  server.registerTool('iranti_handshake', {
151
153
  description: `Initialize or refresh an agent's working-memory brief for the current task.
@@ -181,8 +183,17 @@ full visible context when available.`,
181
183
  agent: z.string().optional().describe('Override the default agent id.'),
182
184
  },
183
185
  }, async ({ latestMessage, currentContext, entityHints, maxFacts, forceInject, agent }) => {
186
+ const resolvedAgent = withDefaultAgent(agent);
187
+ if ((0, autoRemember_1.isAutoRememberEnabled)()) {
188
+ await (0, autoRemember_1.autoRememberPromptFacts)({
189
+ iranti,
190
+ prompt: latestMessage,
191
+ agent: resolvedAgent,
192
+ source: defaultWriteSource(),
193
+ });
194
+ }
184
195
  const result = await iranti.attend({
185
- agent: withDefaultAgent(agent),
196
+ agent: resolvedAgent,
186
197
  latestMessage,
187
198
  currentContext: currentContext ?? latestMessage,
188
199
  entityHints,
@@ -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.33';
42
+ const VERSION = '0.2.36';
43
43
  const PORT_RAW = (process.env.IRANTI_PORT ?? '3001').trim();
44
44
  const PORT = Number.parseInt(PORT_RAW, 10);
45
45
  const runtimeMetadataHealth = {
@@ -0,0 +1,51 @@
1
+ type IrantiQueryClient = {
2
+ query(entity: string, key: string): Promise<{
3
+ found: boolean;
4
+ value?: unknown;
5
+ }>;
6
+ write(input: {
7
+ entity: string;
8
+ key: string;
9
+ value: unknown;
10
+ summary: string;
11
+ confidence: number;
12
+ source: string;
13
+ agent: string;
14
+ }): Promise<unknown>;
15
+ };
16
+ type ExtractedMemoryFact = {
17
+ key: string;
18
+ value: unknown;
19
+ summary: string;
20
+ };
21
+ type AutoRememberResult = {
22
+ enabled: boolean;
23
+ entity?: string;
24
+ extracted: number;
25
+ written: number;
26
+ skipped: Array<{
27
+ key: string;
28
+ reason: string;
29
+ }>;
30
+ };
31
+ export declare function isAutoRememberEnabled(): boolean;
32
+ export declare function extractExplicitPromptMemory(prompt: string): ExtractedMemoryFact[];
33
+ export declare function extractExplicitAssistantMemory(response: string): ExtractedMemoryFact[];
34
+ export declare function autoRememberPromptFacts(params: {
35
+ iranti: IrantiQueryClient;
36
+ prompt: string;
37
+ agent: string;
38
+ source: string;
39
+ entity?: string | null;
40
+ confidence?: number;
41
+ }): Promise<AutoRememberResult>;
42
+ export declare function autoRememberAssistantFacts(params: {
43
+ iranti: IrantiQueryClient;
44
+ response: string;
45
+ agent: string;
46
+ source: string;
47
+ entity?: string | null;
48
+ confidence?: number;
49
+ }): Promise<AutoRememberResult>;
50
+ export {};
51
+ //# sourceMappingURL=autoRemember.d.ts.map
@@ -0,0 +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+BF,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"}
@@ -0,0 +1,239 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isAutoRememberEnabled = isAutoRememberEnabled;
4
+ exports.extractExplicitPromptMemory = extractExplicitPromptMemory;
5
+ exports.extractExplicitAssistantMemory = extractExplicitAssistantMemory;
6
+ exports.autoRememberPromptFacts = autoRememberPromptFacts;
7
+ exports.autoRememberAssistantFacts = autoRememberAssistantFacts;
8
+ function normalizeKey(text) {
9
+ return text
10
+ .trim()
11
+ .toLowerCase()
12
+ .replace(/[^a-z0-9]+/g, '_')
13
+ .replace(/^_+|_+$/g, '');
14
+ }
15
+ function normalizePrompt(prompt) {
16
+ return prompt.trim().replace(/\s+/g, ' ');
17
+ }
18
+ function isQuestionLike(prompt) {
19
+ const trimmed = prompt.trim();
20
+ if (!trimmed)
21
+ return false;
22
+ if (trimmed.endsWith('?'))
23
+ return true;
24
+ return /^(what|when|where|who|why|how|do|did|does|can|could|should|would|is|are|am|was|were)\b/i.test(trimmed);
25
+ }
26
+ function buildTextFact(key, value) {
27
+ const cleanKey = normalizeKey(key);
28
+ const cleanValue = value.trim();
29
+ return {
30
+ key: cleanKey,
31
+ value: { text: cleanValue },
32
+ summary: `${cleanKey.replace(/_/g, ' ')} is ${cleanValue}`,
33
+ };
34
+ }
35
+ function isAutoRememberEnabled() {
36
+ const raw = process.env.IRANTI_AUTO_REMEMBER?.trim().toLowerCase();
37
+ return raw === '1' || raw === 'true' || raw === 'yes' || raw === 'on';
38
+ }
39
+ function extractExplicitPromptMemory(prompt) {
40
+ const raw = normalizePrompt(prompt);
41
+ if (!raw || raw.startsWith('/'))
42
+ return [];
43
+ if (isQuestionLike(raw))
44
+ return [];
45
+ const lower = raw.toLowerCase();
46
+ const prefixes = ['actually ', 'correction: ', 'correction ', 'for the record, '];
47
+ const stripped = prefixes.reduce((value, prefix) => value.startsWith(prefix) ? value.slice(prefix.length) : value, lower);
48
+ const facts = [];
49
+ const favoriteMatch = stripped.match(/^my favorite ([a-z0-9_\-\s]+?) is (.+)$/i);
50
+ if (favoriteMatch) {
51
+ facts.push(buildTextFact(`favorite_${favoriteMatch[1]}`, favoriteMatch[2]));
52
+ }
53
+ const myFieldMatch = stripped.match(/^my ([a-z0-9_\-\s]+?) is (.+)$/i);
54
+ if (myFieldMatch && !facts.some((fact) => fact.key === normalizeKey(myFieldMatch[1]))) {
55
+ facts.push(buildTextFact(myFieldMatch[1], myFieldMatch[2]));
56
+ }
57
+ const homeCityMatch = stripped.match(/^i live in (.+)$/i);
58
+ if (homeCityMatch) {
59
+ facts.push(buildTextFact('home_city', homeCityMatch[1]));
60
+ }
61
+ const hometownMatch = stripped.match(/^i(?:'m| am) from (.+)$/i);
62
+ if (hometownMatch) {
63
+ facts.push(buildTextFact('hometown', hometownMatch[1]));
64
+ }
65
+ const preferenceMatch = stripped.match(/^i (?:like|love|prefer) (.+)$/i);
66
+ if (preferenceMatch) {
67
+ facts.push(buildTextFact('likes', preferenceMatch[1]));
68
+ }
69
+ const decisionMatch = stripped.match(/^we decided(?: that)? (.+)$/i);
70
+ if (decisionMatch) {
71
+ facts.push({
72
+ key: 'decision',
73
+ value: { text: decisionMatch[1].trim() },
74
+ summary: `decision is ${decisionMatch[1].trim()}`,
75
+ });
76
+ }
77
+ const nextStepMatch = stripped.match(/^(?:the )?next step is (.+)$/i);
78
+ if (nextStepMatch) {
79
+ facts.push({
80
+ key: 'next_step',
81
+ value: { instruction: nextStepMatch[1].trim() },
82
+ summary: `next step is ${nextStepMatch[1].trim()}`,
83
+ });
84
+ }
85
+ const blockerMatch = stripped.match(/^(?:the )?blocker is (.+)$/i);
86
+ if (blockerMatch) {
87
+ facts.push({
88
+ key: 'blocker',
89
+ value: { text: blockerMatch[1].trim() },
90
+ summary: `blocker is ${blockerMatch[1].trim()}`,
91
+ });
92
+ }
93
+ const deduped = new Map();
94
+ for (const fact of facts) {
95
+ if (!fact.key || fact.summary.length > 220)
96
+ continue;
97
+ deduped.set(fact.key, fact);
98
+ }
99
+ return Array.from(deduped.values());
100
+ }
101
+ function extractExplicitAssistantMemory(response) {
102
+ const raw = normalizePrompt(response);
103
+ if (!raw)
104
+ return [];
105
+ const lower = raw.toLowerCase();
106
+ const facts = [];
107
+ const yourFavoriteMatch = lower.match(/^your favorite ([a-z0-9_\-\s]+?) is (.+)$/i);
108
+ if (yourFavoriteMatch) {
109
+ facts.push(buildTextFact(`favorite_${yourFavoriteMatch[1]}`, yourFavoriteMatch[2]));
110
+ }
111
+ const yourFieldMatch = lower.match(/^your ([a-z0-9_\-\s]+?) is (.+)$/i);
112
+ if (yourFieldMatch && !facts.some((fact) => fact.key === normalizeKey(yourFieldMatch[1]))) {
113
+ facts.push(buildTextFact(yourFieldMatch[1], yourFieldMatch[2]));
114
+ }
115
+ const decisionMatch = lower.match(/^we decided(?: that)? (.+)$/i);
116
+ if (decisionMatch) {
117
+ facts.push({
118
+ key: 'decision',
119
+ value: { text: decisionMatch[1].trim() },
120
+ summary: `decision is ${decisionMatch[1].trim()}`,
121
+ });
122
+ }
123
+ const nextStepMatch = lower.match(/^(?:the )?next step is (.+)$/i);
124
+ if (nextStepMatch) {
125
+ facts.push({
126
+ key: 'next_step',
127
+ value: { instruction: nextStepMatch[1].trim() },
128
+ summary: `next step is ${nextStepMatch[1].trim()}`,
129
+ });
130
+ }
131
+ const blockerMatch = lower.match(/^(?:the )?blocker is (.+)$/i);
132
+ if (blockerMatch) {
133
+ facts.push({
134
+ key: 'blocker',
135
+ value: { text: blockerMatch[1].trim() },
136
+ summary: `blocker is ${blockerMatch[1].trim()}`,
137
+ });
138
+ }
139
+ const ownerMatch = lower.match(/^(?:the )?current owner is (.+)$/i);
140
+ if (ownerMatch) {
141
+ facts.push({
142
+ key: 'current_owner',
143
+ value: { text: ownerMatch[1].trim() },
144
+ summary: `current owner is ${ownerMatch[1].trim()}`,
145
+ });
146
+ }
147
+ const deduped = new Map();
148
+ for (const fact of facts) {
149
+ if (!fact.key || fact.summary.length > 220)
150
+ continue;
151
+ deduped.set(fact.key, fact);
152
+ }
153
+ return Array.from(deduped.values());
154
+ }
155
+ function comparableValue(value) {
156
+ try {
157
+ return JSON.stringify(value);
158
+ }
159
+ catch {
160
+ return String(value);
161
+ }
162
+ }
163
+ async function autoRememberPromptFacts(params) {
164
+ const { iranti, prompt, agent, source, entity = process.env.IRANTI_MEMORY_ENTITY?.trim(), confidence = 96, } = params;
165
+ if (!isAutoRememberEnabled() || !entity) {
166
+ return {
167
+ enabled: false,
168
+ extracted: 0,
169
+ written: 0,
170
+ skipped: [],
171
+ };
172
+ }
173
+ const facts = extractExplicitPromptMemory(prompt);
174
+ const skipped = [];
175
+ let written = 0;
176
+ for (const fact of facts) {
177
+ const existing = await iranti.query(entity, fact.key).catch(() => ({ found: false }));
178
+ if (existing.found && comparableValue(existing.value) === comparableValue(fact.value)) {
179
+ skipped.push({ key: fact.key, reason: 'unchanged' });
180
+ continue;
181
+ }
182
+ await iranti.write({
183
+ entity,
184
+ key: fact.key,
185
+ value: fact.value,
186
+ summary: fact.summary,
187
+ confidence,
188
+ source,
189
+ agent,
190
+ });
191
+ written += 1;
192
+ }
193
+ return {
194
+ enabled: true,
195
+ entity,
196
+ extracted: facts.length,
197
+ written,
198
+ skipped,
199
+ };
200
+ }
201
+ async function autoRememberAssistantFacts(params) {
202
+ const { iranti, response, agent, source, entity = process.env.IRANTI_MEMORY_ENTITY?.trim(), confidence = 90, } = params;
203
+ if (!isAutoRememberEnabled() || !entity) {
204
+ return {
205
+ enabled: false,
206
+ extracted: 0,
207
+ written: 0,
208
+ skipped: [],
209
+ };
210
+ }
211
+ const facts = extractExplicitAssistantMemory(response);
212
+ const skipped = [];
213
+ let written = 0;
214
+ for (const fact of facts) {
215
+ const existing = await iranti.query(entity, fact.key).catch(() => ({ found: false }));
216
+ if (existing.found && comparableValue(existing.value) === comparableValue(fact.value)) {
217
+ skipped.push({ key: fact.key, reason: 'unchanged' });
218
+ continue;
219
+ }
220
+ await iranti.write({
221
+ entity,
222
+ key: fact.key,
223
+ value: fact.value,
224
+ summary: fact.summary,
225
+ confidence,
226
+ source,
227
+ agent,
228
+ });
229
+ written += 1;
230
+ }
231
+ return {
232
+ enabled: true,
233
+ entity,
234
+ extracted: facts.length,
235
+ written,
236
+ skipped,
237
+ };
238
+ }
239
+ //# sourceMappingURL=autoRemember.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoRemember.js","sourceRoot":"","sources":["../../../src/lib/autoRemember.ts"],"names":[],"mappings":"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"}
@@ -217,7 +217,7 @@ exports.INTEGRATIONS_HELP = [
217
217
  scenario: 'Bootstrapping several repos in `C:\\Users\\NF\\Documents\\Projects` at once.',
218
218
  },
219
219
  {
220
- command: 'iranti claude-hook --event SessionStart|UserPromptSubmit [--project-env <path>] [--instance-env <path>] [--env-file <path>]',
220
+ command: 'iranti claude-hook --event SessionStart|UserPromptSubmit|Stop [--project-env <path>] [--instance-env <path>] [--env-file <path>]',
221
221
  description: 'Run the Claude Code hook helper directly.',
222
222
  useWhen: 'you are debugging Claude hook behavior or invoking the hook outside normal Claude execution.',
223
223
  scenario: 'Testing whether the SessionStart hook can resolve the right project binding.',
@@ -1 +1 @@
1
- {"version":3,"file":"cliHelpCatalog.js","sourceRoot":"","sources":["../../../src/lib/cliHelpCatalog.ts"],"names":[],"mappings":";;;AAaa,QAAA,eAAe,GAAgB;IACxC;QACI,OAAO,EAAE,cAAc;QACvB,WAAW,EAAE,kGAAkG;QAC/G,OAAO,EAAE,sGAAsG;QAC/G,QAAQ,EAAE,8FAA8F;KAC3G;IACD;QACI,OAAO,EAAE,6BAA6B;QACtC,WAAW,EAAE,2GAA2G;QACxH,OAAO,EAAE,4EAA4E;QACrF,QAAQ,EAAE,oGAAoG;KACjH;IACD;QACI,OAAO,EAAE,eAAe;QACxB,WAAW,EAAE,2FAA2F;QACxG,OAAO,EAAE,yGAAyG;QAClH,QAAQ,EAAE,6GAA6G;KAC1H;IACD;QACI,OAAO,EAAE,aAAa;QACtB,WAAW,EAAE,kEAAkE;QAC/E,OAAO,EAAE,iFAAiF;QAC1F,QAAQ,EAAE,sFAAsF;KACnG;CACJ,CAAC;AAEW,QAAA,sBAAsB,GAAgB;IAC/C;QACI,OAAO,EAAE,sDAAsD;QAC/D,WAAW,EAAE,sEAAsE;QACnF,OAAO,EAAE,sFAAsF;QAC/F,QAAQ,EAAE,2EAA2E;KACxF;IACD;QACI,OAAO,EAAE,mSAAmS;QAC5S,WAAW,EAAE,0EAA0E;QACvF,OAAO,EAAE,6GAA6G;QACtH,QAAQ,EAAE,oFAAoF;KACjG;IACD;QACI,OAAO,EAAE,qJAAqJ;QAC9J,WAAW,EAAE,wDAAwD;QACrE,OAAO,EAAE,iGAAiG;QAC1G,QAAQ,EAAE,+DAA+D;KAC5E;IACD;QACI,OAAO,EAAE,4CAA4C;QACrD,WAAW,EAAE,0DAA0D;QACvE,OAAO,EAAE,4FAA4F;QACrG,QAAQ,EAAE,gFAAgF;KAC7F;IACD;QACI,OAAO,EAAE,mDAAmD;QAC5D,WAAW,EAAE,kEAAkE;QAC/E,OAAO,EAAE,+EAA+E;QACxF,QAAQ,EAAE,8FAA8F;KAC3G;IACD;QACI,OAAO,EAAE,qFAAqF;QAC9F,WAAW,EAAE,oDAAoD;QACjE,OAAO,EAAE,8FAA8F;QACvG,QAAQ,EAAE,oFAAoF;KACjG;IACD;QACI,OAAO,EAAE,oDAAoD;QAC7D,WAAW,EAAE,+CAA+C;QAC5D,OAAO,EAAE,qEAAqE;QAC9E,QAAQ,EAAE,uEAAuE;KACpF;CACJ,CAAC;AAEW,QAAA,kBAAkB,GAAgB;IAC3C;QACI,OAAO,EAAE,iLAAiL;QAC1L,WAAW,EAAE,wDAAwD;QACrE,OAAO,EAAE,+FAA+F;QACxG,QAAQ,EAAE,kGAAkG;KAC/G;IACD;QACI,OAAO,EAAE,uHAAuH;QAChI,WAAW,EAAE,qDAAqD;QAClE,OAAO,EAAE,0FAA0F;QACnG,QAAQ,EAAE,6FAA6F;KAC1G;IACD;QACI,OAAO,EAAE,mMAAmM;QAC5M,WAAW,EAAE,kDAAkD;QAC/D,OAAO,EAAE,+GAA+G;QACxH,QAAQ,EAAE,sFAAsF;KACnG;CACJ,CAAC;AAEW,QAAA,QAAQ,GAAgB;IACjC;QACI,OAAO,EAAE,sMAAsM;QAC/M,WAAW,EAAE,wCAAwC;QACrD,OAAO,EAAE,8EAA8E;QACvF,QAAQ,EAAE,0EAA0E;KACvF;IACD;QACI,OAAO,EAAE,kDAAkD;QAC3D,WAAW,EAAE,0CAA0C;QACvD,OAAO,EAAE,qEAAqE;QAC9E,QAAQ,EAAE,2EAA2E;KACxF;IACD;QACI,OAAO,EAAE,iEAAiE;QAC1E,WAAW,EAAE,8BAA8B;QAC3C,OAAO,EAAE,uFAAuF;QAChG,QAAQ,EAAE,6EAA6E;KAC1F;IACD;QACI,OAAO,EAAE,sEAAsE;QAC/E,WAAW,EAAE,qCAAqC;QAClD,OAAO,EAAE,kFAAkF;QAC3F,QAAQ,EAAE,4FAA4F;KACzG;IACD;QACI,OAAO,EAAE,+GAA+G;QACxH,WAAW,EAAE,0DAA0D;QACvE,OAAO,EAAE,+EAA+E;QACxF,QAAQ,EAAE,iFAAiF;KAC9F;IACD;QACI,OAAO,EAAE,kHAAkH;QAC3H,WAAW,EAAE,gCAAgC;QAC7C,OAAO,EAAE,yEAAyE;QAClF,QAAQ,EAAE,qFAAqF;KAClG;IACD;QACI,OAAO,EAAE,kFAAkF;QAC3F,WAAW,EAAE,+BAA+B;QAC5C,OAAO,EAAE,+EAA+E;QACxF,QAAQ,EAAE,qEAAqE;KAClF;CACJ,CAAC;AAEW,QAAA,gBAAgB,GAAgB;IACzC;QACI,OAAO,EAAE,gBAAgB;QACzB,WAAW,EAAE,qHAAqH;QAClI,OAAO,EAAE,uKAAuK;QAChL,QAAQ,EAAE,wEAAwE;KACrF;IACD;QACI,OAAO,EAAE,2FAA2F;QACpG,WAAW,EAAE,0CAA0C;QACvD,OAAO,EAAE,2EAA2E;QACpF,QAAQ,EAAE,+FAA+F;KAC5G;IACD;QACI,OAAO,EAAE,8CAA8C;QACvD,WAAW,EAAE,oDAAoD;QACjE,OAAO,EAAE,mGAAmG;QAC5G,QAAQ,EAAE,gGAAgG;KAC7G;IACD;QACI,OAAO,EAAE,mHAAmH;QAC5H,WAAW,EAAE,4CAA4C;QACzD,OAAO,EAAE,gFAAgF;QACzF,QAAQ,EAAE,sEAAsE;KACnF;IACD;QACI,OAAO,EAAE,0HAA0H;QACnI,WAAW,EAAE,kFAAkF;QAC/F,OAAO,EAAE,gGAAgG;QACzG,QAAQ,EAAE,2GAA2G;KACxH;IACD;QACI,OAAO,EAAE,oJAAoJ;QAC7J,WAAW,EAAE,8CAA8C;QAC3D,OAAO,EAAE,2FAA2F;QACpG,QAAQ,EAAE,0FAA0F;KACvG;IACD;QACI,OAAO,EAAE,4LAA4L;QACrM,WAAW,EAAE,yDAAyD;QACtE,OAAO,EAAE,mFAAmF;QAC5F,QAAQ,EAAE,iGAAiG;KAC9G;IACD;QACI,OAAO,EAAE,iSAAiS;QAC1S,WAAW,EAAE,4EAA4E;QACzF,OAAO,EAAE,wFAAwF;QACjG,QAAQ,EAAE,8FAA8F;KAC3G;IACD;QACI,OAAO,EAAE,4EAA4E;QACrF,WAAW,EAAE,wCAAwC;QACrD,OAAO,EAAE,gEAAgE;QACzE,QAAQ,EAAE,yEAAyE;KACtF;IACD;QACI,OAAO,EAAE,yCAAyC;QAClD,WAAW,EAAE,wCAAwC;QACrD,OAAO,EAAE,6EAA6E;QACtF,QAAQ,EAAE,yGAAyG;KACtH;CACJ,CAAC;AAEW,QAAA,iBAAiB,GAAgB;IAC1C;QACI,OAAO,EAAE,qBAAqB;QAC9B,WAAW,EAAE,6BAA6B;QAC1C,OAAO,EAAE,+FAA+F;QACxG,QAAQ,EAAE,+DAA+D;KAC5E;IACD;QACI,OAAO,EAAE,6DAA6D;QACtE,WAAW,EAAE,6CAA6C;QAC1D,OAAO,EAAE,wFAAwF;QACjG,QAAQ,EAAE,oFAAoF;KACjG;IACD;QACI,OAAO,EAAE,0DAA0D;QACnE,WAAW,EAAE,0DAA0D;QACvE,OAAO,EAAE,yGAAyG;QAClH,QAAQ,EAAE,8EAA8E;KAC3F;IACD;QACI,OAAO,EAAE,6HAA6H;QACtI,WAAW,EAAE,2CAA2C;QACxD,OAAO,EAAE,8FAA8F;QACvG,QAAQ,EAAE,8EAA8E;KAC3F;IACD;QACI,OAAO,EAAE,4JAA4J;QACrK,WAAW,EAAE,oHAAoH;QACjI,OAAO,EAAE,4IAA4I;QACrJ,QAAQ,EAAE,oEAAoE;KACjF;IACD;QACI,OAAO,EAAE,iEAAiE;QAC1E,WAAW,EAAE,yBAAyB;QACtC,OAAO,EAAE,+EAA+E;QACxF,QAAQ,EAAE,iEAAiE;KAC9E;IACD;QACI,OAAO,EAAE,8DAA8D;QACvE,WAAW,EAAE,+BAA+B;QAC5C,OAAO,EAAE,kFAAkF;QAC3F,QAAQ,EAAE,uEAAuE;KACpF;IACD;QACI,OAAO,EAAE,gKAAgK;QACzK,WAAW,EAAE,wBAAwB;QACrC,OAAO,EAAE,0EAA0E;QACnF,QAAQ,EAAE,yFAAyF;KACtG;CACJ,CAAC;AAEW,QAAA,kBAAkB,GAAgB;IAC3C;QACI,OAAO,EAAE,mSAAmS;QAC5S,WAAW,EAAE,sJAAsJ;QACnK,OAAO,EAAE,qHAAqH;QAC9H,QAAQ,EAAE,8HAA8H;KAC3I;CACJ,CAAC;AAEW,QAAA,kBAAkB,GAAuB;IAClD,EAAE,MAAM,EAAE,qBAAqB,EAAE,OAAO,EAAE,+FAA+F,EAAE,OAAO,EAAE,0FAA0F,EAAE;IAChP,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,mFAAmF,EAAE,OAAO,EAAE,uFAAuF,EAAE;IAC3N,EAAE,MAAM,EAAE,wBAAwB,EAAE,OAAO,EAAE,0HAA0H,EAAE,OAAO,EAAE,qJAAqJ,EAAE;IACzU,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,6CAA6C,EAAE,OAAO,EAAE,iFAAiF,EAAE;IACnL,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,qCAAqC,EAAE,OAAO,EAAE,qEAAqE,EAAE;IACxJ,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,mEAAmE,EAAE,OAAO,EAAE,0EAA0E,EAAE;IAChM,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,0EAA0E,EAAE,OAAO,EAAE,yFAAyF,EAAE;IACjN,EAAE,MAAM,EAAE,gCAAgC,EAAE,OAAO,EAAE,2DAA2D,EAAE,OAAO,EAAE,2JAA2J,EAAE;IACxR,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,qDAAqD,EAAE,OAAO,EAAE,4EAA4E,EAAE;IACnL,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,iDAAiD,EAAE,OAAO,EAAE,4GAA4G,EAAE;IAClN,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,4FAA4F,EAAE,OAAO,EAAE,gFAAgF,EAAE;IACjO,EAAE,MAAM,EAAE,0BAA0B,EAAE,OAAO,EAAE,+DAA+D,EAAE,OAAO,EAAE,gFAAgF,EAAE;IAC3M,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,+FAA+F,EAAE,OAAO,EAAE,+EAA+E,EAAE;IAC/N,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,0FAA0F,EAAE,OAAO,EAAE,oIAAoI,EAAE;CACnR,CAAC;AAEW,QAAA,cAAc,GAAgB;IACvC;QACI,OAAO,EAAE,gKAAgK;QACzK,WAAW,EAAE,kGAAkG;QAC/G,OAAO,EAAE,sHAAsH;QAC/H,QAAQ,EAAE,0GAA0G;KACvH;CACJ,CAAC;AAEW,QAAA,sBAAsB,GAAuB;IACtD,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,wDAAwD,EAAE,OAAO,EAAE,6DAA6D,EAAE;IAClK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,yEAAyE,EAAE,OAAO,EAAE,+EAA+E,EAAE;IACjM,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,uDAAuD,EAAE,OAAO,EAAE,oFAAoF,EAAE;IAC1L,EAAE,MAAM,EAAE,yBAAyB,EAAE,OAAO,EAAE,+DAA+D,EAAE,OAAO,EAAE,4EAA4E,EAAE;IACtM,EAAE,MAAM,EAAE,0BAA0B,EAAE,OAAO,EAAE,+EAA+E,EAAE,OAAO,EAAE,uFAAuF,EAAE;CACrO,CAAC;AAEW,QAAA,aAAa,GAAgB;IACtC;QACI,OAAO,EAAE,qKAAqK;QAC9K,WAAW,EAAE,0DAA0D;QACvE,OAAO,EAAE,8DAA8D;QACvE,QAAQ,EAAE,kEAAkE;KAC/E;IACD;QACI,OAAO,EAAE,4DAA4D;QACrE,WAAW,EAAE,0DAA0D;QACvE,OAAO,EAAE,iEAAiE;QAC1E,QAAQ,EAAE,+EAA+E;KAC5F;IACD;QACI,OAAO,EAAE,mEAAmE;QAC5E,WAAW,EAAE,oDAAoD;QACjE,OAAO,EAAE,2FAA2F;QACpG,QAAQ,EAAE,yEAAyE;KACtF;IACD;QACI,OAAO,EAAE,qGAAqG;QAC9G,WAAW,EAAE,sDAAsD;QACnE,OAAO,EAAE,kFAAkF;QAC3F,QAAQ,EAAE,2EAA2E;KACxF;CACJ,CAAC;AAEW,QAAA,cAAc,GAAgB;IACvC;QACI,OAAO,EAAE,uNAAuN;QAChO,WAAW,EAAE,wCAAwC;QACrD,OAAO,EAAE,mFAAmF;QAC5F,QAAQ,EAAE,yEAAyE;KACtF;IACD;QACI,OAAO,EAAE,yOAAyO;QAClP,WAAW,EAAE,sCAAsC;QACnD,OAAO,EAAE,8EAA8E;QACvF,QAAQ,EAAE,iFAAiF;KAC9F;CACJ,CAAC;AAEW,QAAA,SAAS,GAAgB;IAClC;QACI,OAAO,EAAE,qNAAqN;QAC9N,WAAW,EAAE,wCAAwC;QACrD,OAAO,EAAE,2FAA2F;QACpG,QAAQ,EAAE,2EAA2E;KACxF;IACD;QACI,OAAO,EAAE,wFAAwF;QACjG,WAAW,EAAE,0CAA0C;QACvD,OAAO,EAAE,qFAAqF;QAC9F,QAAQ,EAAE,6EAA6E;KAC1F;IACD;QACI,OAAO,EAAE,uGAAuG;QAChH,WAAW,EAAE,8BAA8B;QAC3C,OAAO,EAAE,6EAA6E;QACtF,QAAQ,EAAE,sEAAsE;KACnF;CACJ,CAAC;AAEW,QAAA,cAAc,GAAgB;IACvC;QACI,OAAO,EAAE,iEAAiE;QAC1E,WAAW,EAAE,4CAA4C;QACzD,OAAO,EAAE,qFAAqF;QAC9F,QAAQ,EAAE,2EAA2E;KACxF;IACD;QACI,OAAO,EAAE,8DAA8D;QACvE,WAAW,EAAE,oCAAoC;QACjD,OAAO,EAAE,2FAA2F;QACpG,QAAQ,EAAE,qEAAqE;KAClF;IACD;QACI,OAAO,EAAE,gKAAgK;QACzK,WAAW,EAAE,4BAA4B;QACzC,OAAO,EAAE,6EAA6E;QACtF,QAAQ,EAAE,sDAAsD;KACnE;CACJ,CAAC;AAEW,QAAA,iBAAiB,GAAgB;IAC1C;QACI,OAAO,EAAE,sEAAsE;QAC/E,WAAW,EAAE,qCAAqC;QAClD,OAAO,EAAE,gEAAgE;QACzE,QAAQ,EAAE,mFAAmF;KAChG;IACD;QACI,OAAO,EAAE,+GAA+G;QACxH,WAAW,EAAE,kCAAkC;QAC/C,OAAO,EAAE,0FAA0F;QACnG,QAAQ,EAAE,gFAAgF;KAC7F;IACD;QACI,OAAO,EAAE,kHAAkH;QAC3H,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,sDAAsD;QAC/D,QAAQ,EAAE,yFAAyF;KACtG;IACD;QACI,OAAO,EAAE,kFAAkF;QAC3F,WAAW,EAAE,+BAA+B;QAC5C,OAAO,EAAE,4EAA4E;QACrF,QAAQ,EAAE,uEAAuE;KACpF;CACJ,CAAC;AAEW,QAAA,YAAY,GAAG;IACxB,YAAY,EAAE;QACV,cAAc;QACd,6BAA6B;QAC7B,gCAAgC;KACnC;IACD,WAAW,EAAE;QACT,wCAAwC;QACxC,uBAAuB;KAC1B;IACD,YAAY,EAAE;QACV,mIAAmI;QACnI,0DAA0D;KAC7D;CACJ,CAAC"}
1
+ {"version":3,"file":"cliHelpCatalog.js","sourceRoot":"","sources":["../../../src/lib/cliHelpCatalog.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"commandErrors.d.ts","sourceRoot":"","sources":["../../../src/lib/commandErrors.ts"],"names":[],"mappings":"AAOA,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,CAgB/E"}
1
+ {"version":3,"file":"commandErrors.d.ts","sourceRoot":"","sources":["../../../src/lib/commandErrors.ts"],"names":[],"mappings":"AAOA,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,CAiC/E"}
@@ -9,6 +9,9 @@ function normalizeErrorMessage(error) {
9
9
  }
10
10
  function rewriteCommandError(commandLabel, error) {
11
11
  const message = normalizeErrorMessage(error);
12
+ const code = error && typeof error === 'object' && 'code' in error
13
+ ? String(error.code ?? '')
14
+ : '';
12
15
  if (/does not exist in the current database/i.test(message)
13
16
  || /relation .* does not exist/i.test(message)
14
17
  || /column .* does not exist/i.test(message)
@@ -17,6 +20,15 @@ function rewriteCommandError(commandLabel, error) {
17
20
  + `${message} Apply migrations with \`npx prisma migrate deploy --schema prisma/schema.prisma\` `
18
21
  + 'and regenerate the Prisma client with `npm run prisma:generate`.');
19
22
  }
23
+ if (code === 'ECONNREFUSED'
24
+ || code === 'ETIMEDOUT'
25
+ || /can't reach database server/i.test(message)
26
+ || /database .* unreachable/i.test(message)
27
+ || /connect ECONNREFUSED/i.test(message)) {
28
+ return new Error(`${commandLabel} cannot reach the configured PostgreSQL database. `
29
+ + 'Verify that the database server is running, confirm `DATABASE_URL`, '
30
+ + 'and rerun the command or use `iranti doctor --debug` for a deeper check.');
31
+ }
20
32
  return error instanceof Error ? error : new Error(message);
21
33
  }
22
34
  //# sourceMappingURL=commandErrors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"commandErrors.js","sourceRoot":"","sources":["../../../src/lib/commandErrors.ts"],"names":[],"mappings":";;AAOA,kDAgBC;AAvBD,SAAS,qBAAqB,CAAC,KAAc;IACzC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,OAAO,CAAC;IACzB,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED,SAAgB,mBAAmB,CAAC,YAAoB,EAAE,KAAc;IACpE,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC7C,IACI,yCAAyC,CAAC,IAAI,CAAC,OAAO,CAAC;WACpD,6BAA6B,CAAC,IAAI,CAAC,OAAO,CAAC;WAC3C,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC;WACzC,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,EAC7C,CAAC;QACC,OAAO,IAAI,KAAK,CACZ,GAAG,YAAY,6EAA6E;cAC1F,GAAG,OAAO,qFAAqF;cAC/F,kEAAkE,CACvE,CAAC;IACN,CAAC;IAED,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC/D,CAAC"}
1
+ {"version":3,"file":"commandErrors.js","sourceRoot":"","sources":["../../../src/lib/commandErrors.ts"],"names":[],"mappings":";;AAOA,kDAiCC;AAxCD,SAAS,qBAAqB,CAAC,KAAc;IACzC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,OAAO,CAAC;IACzB,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED,SAAgB,mBAAmB,CAAC,YAAoB,EAAE,KAAc;IACpE,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK;QAC9D,CAAC,CAAC,MAAM,CAAE,KAA4B,CAAC,IAAI,IAAI,EAAE,CAAC;QAClD,CAAC,CAAC,EAAE,CAAC;IACT,IACI,yCAAyC,CAAC,IAAI,CAAC,OAAO,CAAC;WACpD,6BAA6B,CAAC,IAAI,CAAC,OAAO,CAAC;WAC3C,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC;WACzC,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,EAC7C,CAAC;QACC,OAAO,IAAI,KAAK,CACZ,GAAG,YAAY,6EAA6E;cAC1F,GAAG,OAAO,qFAAqF;cAC/F,kEAAkE,CACvE,CAAC;IACN,CAAC;IAED,IACI,IAAI,KAAK,cAAc;WACpB,IAAI,KAAK,WAAW;WACpB,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC;WAC5C,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC;WACxC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,EAC1C,CAAC;QACC,OAAO,IAAI,KAAK,CACZ,GAAG,YAAY,oDAAoD;cACjE,sEAAsE;cACtE,0EAA0E,CAC/E,CAAC;IACN,CAAC;IAED,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC/D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeEnv.d.ts","sourceRoot":"","sources":["../../../src/lib/runtimeEnv.ts"],"names":[],"mappings":"AAIA,KAAK,iBAAiB,GAAG;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,KAAK,oBAAoB,GAAG;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,kBAAkB,GAAG,wBAAwB,GAAG,cAAc,CAAC;CACjF,CAAC;AAqFF,wBAAgB,cAAc,CAAC,OAAO,GAAE,iBAAsB,GAAG,oBAAoB,CAgDpF"}
1
+ {"version":3,"file":"runtimeEnv.d.ts","sourceRoot":"","sources":["../../../src/lib/runtimeEnv.ts"],"names":[],"mappings":"AAIA,KAAK,iBAAiB,GAAG;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,KAAK,oBAAoB,GAAG;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,kBAAkB,GAAG,wBAAwB,GAAG,cAAc,CAAC;CACjF,CAAC;AAsFF,wBAAgB,cAAc,CAAC,OAAO,GAAE,iBAAsB,GAAG,oBAAoB,CAgDpF"}
@@ -12,6 +12,7 @@ const PROJECT_BINDING_KEYS = new Set([
12
12
  'IRANTI_API_KEY',
13
13
  'IRANTI_AGENT_ID',
14
14
  'IRANTI_MEMORY_ENTITY',
15
+ 'IRANTI_AUTO_REMEMBER',
15
16
  'IRANTI_PROJECT_MODE',
16
17
  'IRANTI_INSTANCE',
17
18
  'IRANTI_INSTANCE_ENV',
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeEnv.js","sourceRoot":"","sources":["../../../src/lib/runtimeEnv.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtimeEnv.js","sourceRoot":"","sources":["../../../src/lib/runtimeEnv.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iranti",
3
- "version": "0.2.33",
3
+ "version": "0.2.36",
4
4
  "description": "Memory infrastructure for multi-agent AI systems",
5
5
  "main": "dist/src/sdk/index.js",
6
6
  "files": [
@@ -64,6 +64,7 @@
64
64
  "test:router": "ts-node scripts/test_router_enforcement.ts",
65
65
  "test:verify-authoritative": "ts-node scripts/verify_authoritative_resolution_parsing.ts",
66
66
  "test:mcp-smoke": "ts-node tests/mcp/smoke_test.ts",
67
+ "test:claude-hook": "ts-node tests/claude-hook/run_claude_hook_tests.ts",
67
68
  "test:conflict-benchmark": "ts-node tests/conflict/run_conflict_benchmark.ts",
68
69
  "test:decay": "ts-node tests/decay/run_decay_tests.ts",
69
70
  "test:ingest": "ts-node tests/ingest/run_ingest_tests.ts",
@@ -79,7 +80,7 @@
79
80
  "test:consistency": "ts-node tests/consistency/run_consistency_tests.ts",
80
81
  "test:cross-tool-handoff": "ts-node tests/cross-tool/run_cross_tool_handoff_tests.ts",
81
82
  "test:archive-vector-contracts": "node -r ts-node/register/transpile-only tests/consistency/run_archive_vector_contract_tests.ts",
82
- "test:hardening-fast": "npm run test:contracts && npm run test:cli-surface && npm run test:runtime-lifecycle && npm run test:cli-process-safety && npm run test:setup-upgrade-lifecycle && npm run test:uninstall-lifecycle && npm run test:session-recovery",
83
+ "test:hardening-fast": "npm run test:contracts && npm run test:claude-hook && npm run test:cli-surface && npm run test:runtime-lifecycle && npm run test:cli-process-safety && npm run test:setup-upgrade-lifecycle && npm run test:uninstall-lifecycle && npm run test:session-recovery",
83
84
  "test:hardening-db": "npm run test:access-control && npm run test:consistency && npm run test:archive-vector-contracts && npm run test:vector-backends && npm run test:cross-tool-handoff",
84
85
  "release:check": "ts-node scripts/check-release-version.ts",
85
86
  "release:bump": "ts-node scripts/bump-version.ts",