couchloop-eq-mcp 2.0.4 → 2.0.5

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.
@@ -10,6 +10,11 @@ export declare function initDatabase(): Promise<{
10
10
  supabase: SupabaseClient<any, "public", "public", any, any>;
11
11
  }>;
12
12
  export declare function getSupabase(): SupabaseClient | null;
13
+ /**
14
+ * Lazy reconnect — if the client is null (failed init or cold start),
15
+ * attempt to reinitialize once. Concurrent callers share the same promise.
16
+ */
17
+ export declare function getSupabaseOrReconnect(): Promise<SupabaseClient>;
13
18
  export declare function closeDatabase(): Promise<void>;
14
19
  export { supabase };
15
20
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAgB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGrE,QAAA,IAAI,QAAQ,EAAE,cAAc,GAAG,IAAW,CAAC;AAE3C,wBAAsB,YAAY;;GAmCjC;AAED,wBAAgB,WAAW,IAAI,cAAc,GAAG,IAAI,CAEnD;AAED,wBAAsB,aAAa,kBAGlC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAgB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGrE,QAAA,IAAI,QAAQ,EAAE,cAAc,GAAG,IAAW,CAAC;AAG3C,wBAAsB,YAAY;;GAmCjC;AAED,wBAAgB,WAAW,IAAI,cAAc,GAAG,IAAI,CAEnD;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,cAAc,CAAC,CAiBtE;AAED,wBAAsB,aAAa,kBAGlC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
package/dist/db/client.js CHANGED
@@ -7,6 +7,7 @@
7
7
  import { createClient } from '@supabase/supabase-js';
8
8
  import { logger } from '../utils/logger.js';
9
9
  let supabase = null;
10
+ let reconnectPromise = null;
10
11
  export async function initDatabase() {
11
12
  try {
12
13
  const supabaseUrl = process.env.SUPABASE_URL;
@@ -43,6 +44,27 @@ export async function initDatabase() {
43
44
  export function getSupabase() {
44
45
  return supabase;
45
46
  }
47
+ /**
48
+ * Lazy reconnect — if the client is null (failed init or cold start),
49
+ * attempt to reinitialize once. Concurrent callers share the same promise.
50
+ */
51
+ export async function getSupabaseOrReconnect() {
52
+ if (supabase)
53
+ return supabase;
54
+ // Deduplicate concurrent reconnect attempts
55
+ if (reconnectPromise)
56
+ return reconnectPromise;
57
+ reconnectPromise = initDatabase()
58
+ .then(({ supabase: client }) => {
59
+ reconnectPromise = null;
60
+ return client;
61
+ })
62
+ .catch((err) => {
63
+ reconnectPromise = null;
64
+ throw err;
65
+ });
66
+ return reconnectPromise;
67
+ }
46
68
  export async function closeDatabase() {
47
69
  supabase = null;
48
70
  logger.info('Database connection closed');
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAkB,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,IAAI,QAAQ,GAA0B,IAAI,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAE3F,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,EAAE,CAAC;YACnB,IAAI,CAAC,WAAW;gBAAE,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC/C,IAAI,CAAC,WAAW;gBAAE,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;YACjF,OAAO,CAAC,KAAK,CAAC,qCAAqC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzE,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,uCAAuC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,CAAC;QAE3H,QAAQ,GAAG,YAAY,CAAC,WAAW,EAAE,WAAW,EAAE;YAChD,IAAI,EAAE;gBACJ,gBAAgB,EAAE,KAAK;gBACvB,cAAc,EAAE,KAAK;aACtB;SACF,CAAC,CAAC;QAEH,sBAAsB;QACtB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrE,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,oCAAoC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QAEnE,OAAO,EAAE,QAAQ,EAAE,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;QACtD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,QAAQ,GAAG,IAAI,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;AAC5C,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/server/sse.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAkX5C;;;GAGG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,iBAkD1D;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,iBA6FjE;AA8BD;;GAEG;AACH,wBAAsB,eAAe,kBAapC"}
1
+ {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/server/sse.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AA8Y5C;;;GAGG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,iBAoD1D;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,iBA6FjE;AA8BD;;GAEG;AACH,wBAAsB,eAAe,kBAapC"}
@@ -11,11 +11,36 @@ import { setupTools } from "../tools/index.js";
11
11
  import { logger } from "../utils/logger.js";
12
12
  const activeSessions = new Map();
13
13
  const SESSION_TTL_MS = parseInt(process.env.SESSION_TTL_MS || "1800000"); // 30 minutes
14
+ // ── Shared tool/resource/prompt definitions (computed once, reused across sessions) ──
15
+ let sharedTools = null;
16
+ let sharedResources = null;
17
+ let sharedInitPromise = null;
18
+ async function ensureSharedInit() {
19
+ if (sharedTools && sharedResources)
20
+ return;
21
+ if (sharedInitPromise)
22
+ return sharedInitPromise;
23
+ sharedInitPromise = (async () => {
24
+ const [tools, resources] = await Promise.all([setupTools(), setupResources()]);
25
+ sharedTools = tools;
26
+ sharedResources = resources;
27
+ logger.info(`Shared MCP init complete: ${tools.length} tools, ${resources.length} resources`);
28
+ })().catch((err) => {
29
+ sharedInitPromise = null;
30
+ throw err;
31
+ });
32
+ return sharedInitPromise;
33
+ }
14
34
  /**
15
- * Create and configure an MCP server instance
35
+ * Create and configure an MCP server instance.
36
+ * Tools, resources, and prompts are initialized once and shared across all sessions.
16
37
  */
17
38
  async function createMCPServer() {
18
- // Create MCP server instance
39
+ // Ensure shared definitions are ready (no-op after first call)
40
+ await ensureSharedInit();
41
+ const tools = sharedTools;
42
+ const resources = sharedResources;
43
+ // Create MCP server instance (lightweight — just wires handlers to shared data)
19
44
  const server = new Server({
20
45
  name: "couchloop-mcp",
21
46
  version: "2.0.3",
@@ -27,9 +52,6 @@ async function createMCPServer() {
27
52
  experimental: {}, // Support experimental features for ChatGPT
28
53
  },
29
54
  });
30
- // Set up tools and resources
31
- const tools = await setupTools();
32
- const resources = await setupResources();
33
55
  // Set up tool handlers
34
56
  server.setRequestHandler(ListToolsRequestSchema, async () => ({
35
57
  tools: tools.map((t) => t.definition),
@@ -316,6 +338,8 @@ async function createMCPServer() {
316
338
  });
317
339
  return server;
318
340
  }
341
+ // Timeout for session creation — prevents hangs when DB or tool init is slow
342
+ const SESSION_INIT_TIMEOUT_MS = parseInt(process.env.SESSION_INIT_TIMEOUT_MS || "5000");
319
343
  /**
320
344
  * Handle SSE/HTTP requests for ChatGPT MCP connection
321
345
  * This endpoint handles both GET (SSE) and POST (HTTP) requests
@@ -327,18 +351,21 @@ export async function handleSSE(req, res) {
327
351
  // Check if this is an existing session
328
352
  let session = sessionId ? activeSessions.get(sessionId) : undefined;
329
353
  if (!session) {
330
- // Create new session
354
+ // Create new session with timeout guard
331
355
  const newSessionId = `session_${crypto.randomBytes(16).toString("hex")}`;
332
- // Create transport with stateful mode (session management)
333
- const transport = new StreamableHTTPServerTransport({
334
- sessionIdGenerator: () => newSessionId,
356
+ const initSession = async () => {
357
+ const transport = new StreamableHTTPServerTransport({
358
+ sessionIdGenerator: () => newSessionId,
359
+ });
360
+ const server = await createMCPServer();
361
+ await server.connect(transport);
362
+ return { transport, server, lastActivity: Date.now() };
363
+ };
364
+ // Race session creation against a timeout to prevent indefinite hangs
365
+ const timeoutPromise = new Promise((_, reject) => {
366
+ setTimeout(() => reject(new Error(`Session init timed out after ${SESSION_INIT_TIMEOUT_MS}ms`)), SESSION_INIT_TIMEOUT_MS);
335
367
  });
336
- // Create and configure server
337
- const server = await createMCPServer();
338
- // Connect transport to server
339
- await server.connect(transport);
340
- // Store session
341
- session = { transport, server, lastActivity: Date.now() };
368
+ session = await Promise.race([initSession(), timeoutPromise]);
342
369
  activeSessions.set(newSessionId, session);
343
370
  logger.info(`New MCP session created: ${newSessionId}`);
344
371
  }
@@ -390,20 +417,21 @@ export async function handleMCPLenient(req, res) {
390
417
  // Check if this is an existing session
391
418
  let session = sessionId ? activeSessions.get(sessionId) : undefined;
392
419
  if (!session) {
393
- // Create new session
420
+ // Create new session with timeout guard
394
421
  const newSessionId = `session_${crypto.randomBytes(16).toString("hex")}`;
395
- // Create transport with lenient options
396
- const transport = new StreamableHTTPServerTransport({
397
- sessionIdGenerator: () => newSessionId,
398
- // Enable JSON-only responses for better compatibility
399
- enableJsonResponse: true,
422
+ const initSession = async () => {
423
+ const transport = new StreamableHTTPServerTransport({
424
+ sessionIdGenerator: () => newSessionId,
425
+ enableJsonResponse: true,
426
+ });
427
+ const server = await createMCPServer();
428
+ await server.connect(transport);
429
+ return { transport, server, lastActivity: Date.now() };
430
+ };
431
+ const timeoutPromise = new Promise((_, reject) => {
432
+ setTimeout(() => reject(new Error(`Lenient session init timed out after ${SESSION_INIT_TIMEOUT_MS}ms`)), SESSION_INIT_TIMEOUT_MS);
400
433
  });
401
- // Create and configure server
402
- const server = await createMCPServer();
403
- // Connect transport to server
404
- await server.connect(transport);
405
- // Store session
406
- session = { transport, server, lastActivity: Date.now() };
434
+ session = await Promise.race([initSession(), timeoutPromise]);
407
435
  activeSessions.set(newSessionId, session);
408
436
  logger.info(`New lenient MCP session created: ${newSessionId}`);
409
437
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/server/sse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/server/sse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Correction Flow — Stateful error correction for AI mistakes.
3
+ *
4
+ * State machine:
5
+ * PENDING_ACKNOWLEDGMENT → user confirms issue → PENDING_FIX_APPROVAL → user approves fix → APPLIED
6
+ * → user says "no" → DISMISSED (ask user to explain)
7
+ *
8
+ * Memory auto-save happens at PENDING_FIX_APPROVAL (after user confirms the issue is correct),
9
+ * not at detection time — because until the user confirms, we don't know if we caught the right problem.
10
+ *
11
+ * SECURITY: Corrections are scoped by session_id. All lookups and mutations
12
+ * require a session_id to prevent cross-user state leakage in shared processes.
13
+ */
14
+ export declare enum CorrectionState {
15
+ PENDING_ACKNOWLEDGMENT = "pending_acknowledgment",
16
+ PENDING_FIX_APPROVAL = "pending_fix_approval",
17
+ APPLIED = "applied",
18
+ DISMISSED = "dismissed"
19
+ }
20
+ export interface CorrectionEntry {
21
+ id: string;
22
+ session_id: string;
23
+ state: CorrectionState;
24
+ created_at: string;
25
+ created_at_ms: number;
26
+ issues_detected: string[];
27
+ proposed_fixes: string[];
28
+ verified_content: string;
29
+ fixed_code?: string;
30
+ user_confirmed_issue: boolean;
31
+ user_approved_fix: boolean;
32
+ saved_to_memory: boolean;
33
+ memory_save_error?: string;
34
+ auth?: Record<string, unknown>;
35
+ }
36
+ /**
37
+ * Create a new correction from verify results.
38
+ * Returns the correction in PENDING_ACKNOWLEDGMENT state.
39
+ */
40
+ export declare function createCorrection(issues: string[], fixes: string[], content: string, sessionId: string, fixedCode?: string, auth?: Record<string, unknown>): CorrectionEntry;
41
+ /**
42
+ * User confirms the detected issue is correct.
43
+ * Transitions to PENDING_FIX_APPROVAL and auto-saves to memory.
44
+ * Requires session_id to prevent cross-user confirmation.
45
+ */
46
+ export declare function confirmIssue(correctionId: string, sessionId: string): Promise<CorrectionEntry>;
47
+ /**
48
+ * User approves the proposed fix.
49
+ * Transitions to APPLIED and cleans up.
50
+ * Requires session_id to prevent cross-user approval.
51
+ */
52
+ export declare function approveFix(correctionId: string, sessionId: string): CorrectionEntry;
53
+ /**
54
+ * User says "no, that's not the issue".
55
+ * Can only dismiss from PENDING_ACKNOWLEDGMENT or PENDING_FIX_APPROVAL — not terminal states.
56
+ * Requires session_id to prevent cross-user dismissal.
57
+ */
58
+ export declare function dismissCorrection(correctionId: string, sessionId: string): CorrectionEntry;
59
+ /**
60
+ * Get a pending correction by ID.
61
+ */
62
+ export declare function getCorrection(correctionId: string): CorrectionEntry | undefined;
63
+ /**
64
+ * Get the most recent pending correction for a specific session.
65
+ * Only returns corrections belonging to the given session_id.
66
+ * Optionally filter by expected state to avoid returning entries
67
+ * that the caller's operation would immediately reject.
68
+ */
69
+ export declare function getMostRecentPendingCorrection(sessionId: string, expectedState?: CorrectionState): CorrectionEntry | undefined;
70
+ /**
71
+ * Clear all corrections. Used in tests to isolate state between test cases.
72
+ */
73
+ export declare function clearAllCorrections(): void;
74
+ //# sourceMappingURL=correction-flow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"correction-flow.d.ts","sourceRoot":"","sources":["../../src/tools/correction-flow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAoBH,oBAAY,eAAe;IACzB,sBAAsB,2BAA2B;IACjD,oBAAoB,yBAAyB;IAC7C,OAAO,YAAY;IACnB,SAAS,cAAc;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,eAAe,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAeD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,eAAe,CAsBjB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAgCpG;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe,CAqBnF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe,CAoB1F;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAE/E;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,eAAe,GAC9B,eAAe,GAAG,SAAS,CAgB7B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
@@ -0,0 +1,205 @@
1
+ /**
2
+ * Correction Flow — Stateful error correction for AI mistakes.
3
+ *
4
+ * State machine:
5
+ * PENDING_ACKNOWLEDGMENT → user confirms issue → PENDING_FIX_APPROVAL → user approves fix → APPLIED
6
+ * → user says "no" → DISMISSED (ask user to explain)
7
+ *
8
+ * Memory auto-save happens at PENDING_FIX_APPROVAL (after user confirms the issue is correct),
9
+ * not at detection time — because until the user confirms, we don't know if we caught the right problem.
10
+ *
11
+ * SECURITY: Corrections are scoped by session_id. All lookups and mutations
12
+ * require a session_id to prevent cross-user state leakage in shared processes.
13
+ */
14
+ import { handleSmartContext } from './smart-context.js';
15
+ import { sanitizeText } from '../utils/inputSanitize.js';
16
+ import { logger } from '../utils/logger.js';
17
+ /**
18
+ * Redact common secret patterns from content before persisting.
19
+ * Catches API keys, tokens, passwords, and connection strings.
20
+ */
21
+ function redactSecrets(content) {
22
+ return content
23
+ .replace(/(?:key|token|secret|password|apikey|api_key|auth)[\s]*[=:]\s*['"]?[^\s'"]{8,}/gi, '[REDACTED_SECRET]')
24
+ .replace(/(?:sk|pk)[-_](?:live|test)[-_][a-zA-Z0-9]{20,}/g, '[REDACTED_KEY]')
25
+ .replace(/eyJ[a-zA-Z0-9_-]{10,}\.[a-zA-Z0-9_-]{10,}/g, '[REDACTED_JWT]')
26
+ .replace(/(?:postgres|mysql|mongodb|redis):\/\/[^\s]{10,}/gi, '[REDACTED_CONNECTION_STRING]');
27
+ }
28
+ // ── Types ──────────────────────────────────────────────────────────────────────
29
+ export var CorrectionState;
30
+ (function (CorrectionState) {
31
+ CorrectionState["PENDING_ACKNOWLEDGMENT"] = "pending_acknowledgment";
32
+ CorrectionState["PENDING_FIX_APPROVAL"] = "pending_fix_approval";
33
+ CorrectionState["APPLIED"] = "applied";
34
+ CorrectionState["DISMISSED"] = "dismissed";
35
+ })(CorrectionState || (CorrectionState = {}));
36
+ // ── In-memory store keyed by correction ID, scoped by session_id ───────────────
37
+ const pendingCorrections = new Map();
38
+ let correctionCounter = 0;
39
+ function generateCorrectionId() {
40
+ correctionCounter++;
41
+ return `correction_${Date.now()}_${correctionCounter}`;
42
+ }
43
+ // ── Public API ─────────────────────────────────────────────────────────────────
44
+ /**
45
+ * Create a new correction from verify results.
46
+ * Returns the correction in PENDING_ACKNOWLEDGMENT state.
47
+ */
48
+ export function createCorrection(issues, fixes, content, sessionId, fixedCode, auth) {
49
+ const id = generateCorrectionId();
50
+ const now = Date.now();
51
+ const entry = {
52
+ id,
53
+ session_id: sessionId,
54
+ state: CorrectionState.PENDING_ACKNOWLEDGMENT,
55
+ created_at: new Date(now).toISOString(),
56
+ created_at_ms: now,
57
+ issues_detected: issues,
58
+ proposed_fixes: fixes,
59
+ verified_content: redactSecrets(sanitizeText(content.substring(0, 500))),
60
+ fixed_code: fixedCode,
61
+ user_confirmed_issue: false,
62
+ user_approved_fix: false,
63
+ saved_to_memory: false,
64
+ auth,
65
+ };
66
+ pendingCorrections.set(id, entry);
67
+ logger.info(`[Correction] Created ${id} for session ${sessionId} in PENDING_ACKNOWLEDGMENT state`);
68
+ return entry;
69
+ }
70
+ /**
71
+ * User confirms the detected issue is correct.
72
+ * Transitions to PENDING_FIX_APPROVAL and auto-saves to memory.
73
+ * Requires session_id to prevent cross-user confirmation.
74
+ */
75
+ export async function confirmIssue(correctionId, sessionId) {
76
+ const entry = pendingCorrections.get(correctionId);
77
+ if (!entry) {
78
+ throw new Error(`Correction ${correctionId} not found. It may have expired.`);
79
+ }
80
+ if (entry.session_id !== sessionId) {
81
+ throw new Error(`Correction ${correctionId} does not belong to this session.`);
82
+ }
83
+ if (entry.state !== CorrectionState.PENDING_ACKNOWLEDGMENT) {
84
+ throw new Error(`Correction ${correctionId} is in state ${entry.state}, expected ${CorrectionState.PENDING_ACKNOWLEDGMENT}.`);
85
+ }
86
+ entry.state = CorrectionState.PENDING_FIX_APPROVAL;
87
+ entry.user_confirmed_issue = true;
88
+ // Now that the user confirmed the issue is real, save to memory with auth context
89
+ try {
90
+ await handleSmartContext({
91
+ content: `AI mistake confirmed by user: ${entry.issues_detected.join('; ')}. Original content: ${entry.verified_content}`,
92
+ type: 'constraint',
93
+ tags: ['ai-mistake', 'do-not-repeat'],
94
+ session_id: entry.session_id,
95
+ auth: entry.auth,
96
+ });
97
+ entry.saved_to_memory = true;
98
+ logger.info(`[Correction] ${correctionId} → PENDING_FIX_APPROVAL, saved to memory`);
99
+ }
100
+ catch (err) {
101
+ logger.warn(`[Correction] Failed to save mistake to memory:`, err);
102
+ entry.memory_save_error = err instanceof Error ? err.message : 'Unknown error';
103
+ }
104
+ return entry;
105
+ }
106
+ /**
107
+ * User approves the proposed fix.
108
+ * Transitions to APPLIED and cleans up.
109
+ * Requires session_id to prevent cross-user approval.
110
+ */
111
+ export function approveFix(correctionId, sessionId) {
112
+ const entry = pendingCorrections.get(correctionId);
113
+ if (!entry) {
114
+ throw new Error(`Correction ${correctionId} not found. It may have expired.`);
115
+ }
116
+ if (entry.session_id !== sessionId) {
117
+ throw new Error(`Correction ${correctionId} does not belong to this session.`);
118
+ }
119
+ if (entry.state !== CorrectionState.PENDING_FIX_APPROVAL) {
120
+ throw new Error(`Correction ${correctionId} is in state ${entry.state}, expected ${CorrectionState.PENDING_FIX_APPROVAL}. Did you call confirm first?`);
121
+ }
122
+ entry.state = CorrectionState.APPLIED;
123
+ entry.user_approved_fix = true;
124
+ logger.info(`[Correction] ${correctionId} → APPLIED`);
125
+ // Clean up after a short delay (let the response be read first)
126
+ setTimeout(() => pendingCorrections.delete(correctionId), 60000);
127
+ return entry;
128
+ }
129
+ /**
130
+ * User says "no, that's not the issue".
131
+ * Can only dismiss from PENDING_ACKNOWLEDGMENT or PENDING_FIX_APPROVAL — not terminal states.
132
+ * Requires session_id to prevent cross-user dismissal.
133
+ */
134
+ export function dismissCorrection(correctionId, sessionId) {
135
+ const entry = pendingCorrections.get(correctionId);
136
+ if (!entry) {
137
+ throw new Error(`Correction ${correctionId} not found. It may have expired.`);
138
+ }
139
+ if (entry.session_id !== sessionId) {
140
+ throw new Error(`Correction ${correctionId} does not belong to this session.`);
141
+ }
142
+ if (entry.state === CorrectionState.APPLIED || entry.state === CorrectionState.DISMISSED) {
143
+ throw new Error(`Correction ${correctionId} is already in terminal state ${entry.state} and cannot be dismissed.`);
144
+ }
145
+ entry.state = CorrectionState.DISMISSED;
146
+ logger.info(`[Correction] ${correctionId} → DISMISSED`);
147
+ // Clean up after a delay
148
+ setTimeout(() => pendingCorrections.delete(correctionId), 60000);
149
+ return entry;
150
+ }
151
+ /**
152
+ * Get a pending correction by ID.
153
+ */
154
+ export function getCorrection(correctionId) {
155
+ return pendingCorrections.get(correctionId);
156
+ }
157
+ /**
158
+ * Get the most recent pending correction for a specific session.
159
+ * Only returns corrections belonging to the given session_id.
160
+ * Optionally filter by expected state to avoid returning entries
161
+ * that the caller's operation would immediately reject.
162
+ */
163
+ export function getMostRecentPendingCorrection(sessionId, expectedState) {
164
+ let latest;
165
+ for (const entry of pendingCorrections.values()) {
166
+ if (entry.session_id !== sessionId)
167
+ continue;
168
+ if (expectedState) {
169
+ if (entry.state !== expectedState)
170
+ continue;
171
+ }
172
+ else {
173
+ // Default: return any non-terminal correction
174
+ if (entry.state !== CorrectionState.PENDING_ACKNOWLEDGMENT &&
175
+ entry.state !== CorrectionState.PENDING_FIX_APPROVAL)
176
+ continue;
177
+ }
178
+ if (!latest || entry.created_at_ms > latest.created_at_ms) {
179
+ latest = entry;
180
+ }
181
+ }
182
+ return latest;
183
+ }
184
+ /**
185
+ * Clear all corrections. Used in tests to isolate state between test cases.
186
+ */
187
+ export function clearAllCorrections() {
188
+ pendingCorrections.clear();
189
+ }
190
+ // ── Cleanup expired corrections (older than 30 minutes) ────────────────────────
191
+ const cleanupInterval = setInterval(() => {
192
+ const cutoff = Date.now() - 30 * 60 * 1000;
193
+ let cleaned = 0;
194
+ for (const [id, entry] of pendingCorrections.entries()) {
195
+ if (entry.created_at_ms < cutoff) {
196
+ pendingCorrections.delete(id);
197
+ cleaned++;
198
+ }
199
+ }
200
+ if (cleaned > 0) {
201
+ logger.info(`[Correction] Cleaned up ${cleaned} expired corrections`);
202
+ }
203
+ }, 5 * 60 * 1000);
204
+ cleanupInterval.unref();
205
+ //# sourceMappingURL=correction-flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"correction-flow.js","sourceRoot":"","sources":["../../src/tools/correction-flow.ts"],"names":[],"mappings":"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"}
@@ -158,6 +158,10 @@ export declare function setupTools(): Promise<({
158
158
  type: string;
159
159
  description: string;
160
160
  };
161
+ correction_id: {
162
+ type: string;
163
+ description: string;
164
+ };
161
165
  packages: {
162
166
  type: string;
163
167
  items: {
@@ -178,6 +182,14 @@ export declare function setupTools(): Promise<({
178
182
  type: string;
179
183
  description: string;
180
184
  };
185
+ session_id: {
186
+ type: string;
187
+ description: string;
188
+ };
189
+ auth: {
190
+ type: string;
191
+ description: string;
192
+ };
181
193
  };
182
194
  required: string[];
183
195
  };
@@ -1 +1 @@
1
- {"version":3,"file":"primary-tools.d.ts","sourceRoot":"","sources":["../../src/tools/primary-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AASH,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,+BAA+B,EAAE,MAAM,kCAAkC,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAMxD,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAyT3E,wBAAsB,UAAU;oBAZV,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,aAAa,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAAhE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,aAAa,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAAhE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,aAAa,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAAhE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,aAAa,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAqDrF;AAGD,OAAO,EACL,6BAA6B,EAC7B,+BAA+B,EAC/B,kBAAkB,GACnB,CAAC"}
1
+ {"version":3,"file":"primary-tools.d.ts","sourceRoot":"","sources":["../../src/tools/primary-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AASH,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,+BAA+B,EAAE,MAAM,kCAAkC,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAcxD,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAkc3E,wBAAsB,UAAU;oBAZV,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,aAAa,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAAhE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,aAAa,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAAhE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,aAAa,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAAhE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,aAAa,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAqDrF;AAGD,OAAO,EACL,6BAA6B,EAC7B,+BAA+B,EAC/B,kBAAkB,GACnB,CAAC"}
@@ -32,6 +32,7 @@ import { getCheckpoints } from './checkpoint.js';
32
32
  import { getInsights, getUserContext } from './insight.js';
33
33
  import { handleVerify } from './verify.js';
34
34
  import { statusTool } from './status.js';
35
+ import { createCorrection, confirmIssue, approveFix, dismissCorrection, getMostRecentPendingCorrection, CorrectionState, } from './correction-flow.js';
35
36
  import { runToolWithPolicy } from '../policy/index.js';
36
37
  import { logger } from '../utils/logger.js';
37
38
  // ============================================================
@@ -57,7 +58,7 @@ const ConversationInputSchema = z.object({
57
58
  const memoryTool = {
58
59
  definition: {
59
60
  name: 'memory',
60
- description: 'Save and retrieve context, insights, checkpoints, and decisions across conversations. Prevents AI amnesia. Use action "save" to store, "recall" to retrieve, "list" to browse.',
61
+ description: 'Save and retrieve context, insights, checkpoints, and decisions across conversations. Prevents AI amnesia. Use action "save" to store, "recall" to retrieve, "list" to browse. Use type "checkpoint" for sprint progress ("save where I am", "bookmark this"), type "decision" for architectural choices and milestones ("lock this in", "we decided on X"), type "constraint" for rules the AI must follow ("never do X again", "always ask before Y"). Constraints tagged "ai-mistake" are auto-saved by the review tool when it catches errors — recall these at the start of new conversations to avoid repeating past mistakes. Triggers: "remember this", "stash this context", "where did we leave off", "what did we decide", "what was the approach we picked", "load my previous context", "don\'t lose this", "never do that again". With no arguments, returns a summary of everything saved.',
61
62
  annotations: {
62
63
  readOnlyHint: false,
63
64
  destructiveHint: false,
@@ -79,7 +80,7 @@ const memoryTool = {
79
80
  type: {
80
81
  type: 'string',
81
82
  enum: ['checkpoint', 'insight', 'decision', 'requirement', 'constraint', 'pattern'],
82
- description: 'Type of context (for save action affects categorization)',
83
+ description: 'checkpoint: short-term sprint progress, quick save points, "save where I am". insight: learnings and realizations. decision: long-term architectural or milestone decisions that should persist across projects. requirement/constraint: project rules. pattern: reusable code patterns.',
83
84
  },
84
85
  tags: {
85
86
  type: 'array',
@@ -128,7 +129,7 @@ const memoryTool = {
128
129
  const conversationTool = {
129
130
  definition: {
130
131
  name: 'conversation',
131
- description: 'Emotional support, guided self-reflection journeys, and wellness conversations with crisis detection. Routes to therapeutic AI backend.',
132
+ description: 'Guided self-reflection, burnout check-ins, and wellness conversations with crisis detection. Routes to therapeutic AI backend. Triggers: "I\'m burned out", "need a break", "feeling stuck", "let\'s do a retro on my week", "check in with me", "I keep going in circles", "rubber duck my frustration", "decompress", "vent session", "daily standup with myself". Use when the user sounds frustrated, stuck, or wants a non-code conversation about how work is going. NOTE: if the user is angry at AI output specifically (cursing at the AI, "you broke it"), prefer the review tool with verify mode first to address the problem — only use conversation if frustration persists without a code context or the user explicitly wants to talk it out.',
132
133
  annotations: {
133
134
  readOnlyHint: false,
134
135
  destructiveHint: false,
@@ -198,11 +199,11 @@ const conversationTool = {
198
199
  const reviewTool = {
199
200
  definition: {
200
201
  name: 'review',
201
- description: 'Unified code review, package audit, and pre-delivery verification. Use mode to select: "code" for security/quality/AI-error analysis, "packages" for dependency audit and validation, "verify" for hallucination and fact checking, "full" for all checks.',
202
+ description: 'Unified code review, package audit, pre-delivery verification, and error correction. Modes: "code" for security/quality analysis, "packages" for dependency audit, "verify" for hallucination/fact check (starts correction flow), "confirm" for user confirming detected issue, "apply-fix" for user approving the fix, "dismiss" for user saying "that\'s not the issue", "full" for all checks. Triggers: "review this", "sanity check this", "is this safe to ship", "check before I push", "audit my deps", "sniff test this", "vet these dependencies". ALSO use verify mode when the user expresses distrust or frustration: "are you sure", "that doesn\'t look right", "prove it", "did you make that up", "that broke everything", "why did you do that", "I didn\'t ask for this". Profanity or anger directed at the AI is a strong signal to immediately run verify. CORRECTION FLOW: verify detects issue → present it plainly and ask "is this what you mean?" → user confirms (call with mode "confirm") → explain fix and ask permission → user approves (call with mode "apply-fix") → apply. If user says no (mode "dismiss"), ask them to explain. Memory auto-saves the mistake ONLY after user confirms. Use proactively when the user pastes code, shares a diff, or adds new packages.',
202
203
  annotations: {
203
- readOnlyHint: true,
204
+ readOnlyHint: false,
204
205
  destructiveHint: false,
205
- idempotentHint: true,
206
+ idempotentHint: false,
206
207
  openWorldHint: true,
207
208
  },
208
209
  inputSchema: {
@@ -210,13 +211,17 @@ const reviewTool = {
210
211
  properties: {
211
212
  mode: {
212
213
  type: 'string',
213
- enum: ['code', 'packages', 'verify', 'full'],
214
- description: 'code: security vulnerabilities, code smells, AI-generated errors. packages: validate existence, audit versions, find vulnerabilities. verify: pre-delivery hallucination/fact check. full: all checks.',
214
+ enum: ['code', 'packages', 'verify', 'confirm', 'apply-fix', 'dismiss', 'full'],
215
+ description: 'code: security/quality analysis. packages: dependency audit. verify: hallucination/fact check starts a correction flow. confirm: user confirms the detected issue is correct (requires correction_id). apply-fix: user approves the proposed fix (requires correction_id). dismiss: user says "that\'s not the issue" (requires correction_id). full: all checks.',
215
216
  },
216
217
  content: {
217
218
  type: 'string',
218
219
  description: 'Code to review, content to verify, or general input for analysis',
219
220
  },
221
+ correction_id: {
222
+ type: 'string',
223
+ description: 'ID of a pending correction (for confirm, apply-fix, dismiss modes). If omitted, uses the most recent pending correction.',
224
+ },
220
225
  packages: {
221
226
  type: 'array',
222
227
  items: { type: 'string' },
@@ -235,12 +240,22 @@ const reviewTool = {
235
240
  type: 'boolean',
236
241
  description: 'Attempt to auto-fix issues (default: false, code mode only)',
237
242
  },
243
+ session_id: {
244
+ type: 'string',
245
+ description: 'Session ID for scoping correction flow state. Required for confirm, apply-fix, dismiss modes.',
246
+ },
247
+ auth: {
248
+ type: 'object',
249
+ description: 'Authentication context for user identification. Passed through to memory when saving mistakes.',
250
+ },
238
251
  },
239
252
  required: ['mode'],
240
253
  },
241
254
  },
242
255
  handler: async (args) => {
243
256
  const mode = args.mode;
257
+ const sessionId = args.session_id || 'anonymous';
258
+ const auth = args.auth;
244
259
  switch (mode) {
245
260
  case 'code':
246
261
  if (!args.content) {
@@ -259,16 +274,104 @@ const reviewTool = {
259
274
  packages: args.packages,
260
275
  registry: args.registry,
261
276
  });
262
- case 'verify':
277
+ case 'verify': {
263
278
  if (!args.content) {
264
279
  return { success: false, error: 'content is required for verify mode' };
265
280
  }
266
- return handleVerify({
281
+ const verifyResult = await handleVerify({
267
282
  type: 'all',
268
283
  content: args.content,
269
284
  language: args.language,
270
285
  registry: args.registry,
271
286
  });
287
+ const issues = verifyResult.issues;
288
+ const fixes = verifyResult.fixes;
289
+ // If issues found, create a correction and enter PENDING_ACKNOWLEDGMENT
290
+ // Do NOT save to memory yet — wait for user to confirm the issue is correct
291
+ if (verifyResult.success && !verifyResult.verified && issues && issues.length > 0) {
292
+ const fixedCode = verifyResult.code_verification?.fixed_code;
293
+ const correction = createCorrection(issues, fixes && fixes.length > 0 ? fixes : ['No automatic fix available — manual correction needed.'], args.content, sessionId, fixedCode, auth);
294
+ return {
295
+ ...verifyResult,
296
+ correction: {
297
+ correction_id: correction.id,
298
+ state: correction.state,
299
+ what_i_found: issues,
300
+ instruction: 'I found potential issues. Present them plainly to the user and ask: "Is this what you are referring to?" Do NOT propose fixes yet. Do NOT save to memory yet. Wait for the user to confirm with review mode "confirm".',
301
+ },
302
+ };
303
+ }
304
+ return verifyResult;
305
+ }
306
+ // ── User confirms the detected issue is correct ──
307
+ case 'confirm': {
308
+ const correctionId = args.correction_id;
309
+ const correction = correctionId
310
+ ? await confirmIssue(correctionId, sessionId)
311
+ : await (async () => {
312
+ const pending = getMostRecentPendingCorrection(sessionId, CorrectionState.PENDING_ACKNOWLEDGMENT);
313
+ if (!pending)
314
+ throw new Error('No pending correction to confirm. Run verify first.');
315
+ return confirmIssue(pending.id, sessionId);
316
+ })();
317
+ return {
318
+ success: true,
319
+ correction: {
320
+ correction_id: correction.id,
321
+ state: correction.state,
322
+ proposed_fixes: correction.proposed_fixes,
323
+ fixed_code: correction.fixed_code || null,
324
+ saved_to_memory: correction.saved_to_memory,
325
+ memory_save_error: correction.memory_save_error || null,
326
+ instruction: 'The user confirmed the issue. Now explain the fix clearly and ask: "Want me to go ahead with this fix?" Wait for approval before applying. Use review mode "apply-fix" when the user approves.',
327
+ },
328
+ };
329
+ }
330
+ // ── User approves the fix ──
331
+ case 'apply-fix': {
332
+ const applyId = args.correction_id;
333
+ const applied = applyId
334
+ ? approveFix(applyId, sessionId)
335
+ : (() => {
336
+ const pending = getMostRecentPendingCorrection(sessionId, CorrectionState.PENDING_FIX_APPROVAL);
337
+ if (!pending)
338
+ throw new Error('No pending correction to apply. Run verify and confirm first.');
339
+ return approveFix(pending.id, sessionId);
340
+ })();
341
+ return {
342
+ success: true,
343
+ correction: {
344
+ correction_id: applied.id,
345
+ state: applied.state,
346
+ proposed_fixes: applied.proposed_fixes,
347
+ fixed_code: applied.fixed_code || null,
348
+ instruction: 'The user approved the fix. Apply it now.',
349
+ },
350
+ };
351
+ }
352
+ // ── User says "no, that's not the issue" ──
353
+ case 'dismiss': {
354
+ // Dismiss accepts any non-terminal state (both PENDING_ACKNOWLEDGMENT and
355
+ // PENDING_FIX_APPROVAL), so no expectedState filter — intentionally broader
356
+ // than confirm/apply-fix which target specific states.
357
+ const dismissId = args.correction_id;
358
+ const dismissed = dismissId
359
+ ? dismissCorrection(dismissId, sessionId)
360
+ : (() => {
361
+ const pending = getMostRecentPendingCorrection(sessionId);
362
+ if (!pending)
363
+ throw new Error('No pending correction to dismiss.');
364
+ return dismissCorrection(pending.id, sessionId);
365
+ })();
366
+ return {
367
+ success: true,
368
+ correction: {
369
+ correction_id: dismissed.id,
370
+ state: dismissed.state,
371
+ instruction: 'The detected issue was not what the user meant. Ask the user to explain what went wrong so you can help correctly. Do NOT guess.',
372
+ },
373
+ };
374
+ }
272
375
  case 'full': {
273
376
  const results = {};
274
377
  if (args.content) {
@@ -277,11 +380,24 @@ const reviewTool = {
277
380
  language: args.language,
278
381
  auto_fix: args.auto_fix,
279
382
  });
280
- results.verification = await handleVerify({
383
+ const fullVerifyResult = await handleVerify({
281
384
  type: 'all',
282
385
  content: args.content,
283
386
  language: args.language,
284
387
  });
388
+ results.verification = fullVerifyResult;
389
+ const fullIssues = fullVerifyResult.issues;
390
+ const fullFixes = fullVerifyResult.fixes;
391
+ if (fullVerifyResult.success && !fullVerifyResult.verified && fullIssues && fullIssues.length > 0) {
392
+ const fixedCode = fullVerifyResult.code_verification?.fixed_code;
393
+ const correction = createCorrection(fullIssues, fullFixes && fullFixes.length > 0 ? fullFixes : ['No automatic fix available — manual correction needed.'], args.content, sessionId, fixedCode, auth);
394
+ results.correction = {
395
+ correction_id: correction.id,
396
+ state: correction.state,
397
+ what_i_found: fullIssues,
398
+ instruction: 'I found potential issues. Present them plainly to the user and ask: "Is this what you are referring to?" Do NOT propose fixes yet. Wait for confirmation.',
399
+ };
400
+ }
285
401
  }
286
402
  if (args.packages) {
287
403
  results.package_audit = await handleComprehensivePackageAudit({
@@ -295,7 +411,7 @@ const reviewTool = {
295
411
  return { success: true, mode: 'full', results };
296
412
  }
297
413
  default:
298
- return { success: false, error: `Unknown mode: ${mode}. Use: code, packages, verify, or full` };
414
+ return { success: false, error: `Unknown mode: ${mode}. Use: code, packages, verify, confirm, apply-fix, dismiss, or full` };
299
415
  }
300
416
  },
301
417
  };
@@ -1 +1 @@
1
- {"version":3,"file":"primary-tools.js","sourceRoot":"","sources":["../../src/tools/primary-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5D,uBAAuB;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,+BAA+B,EAAE,MAAM,kCAAkC,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAsB,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,+DAA+D;AAC/D,4CAA4C;AAC5C,+DAA+D;AAE/D,+EAA+E;AAE/E,kEAAkE;AAClE,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;IACrD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAC;AAEH,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;IACvE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG;IACjB,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,gLAAgL;QAC7L,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,KAAK;SACrB;QACD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,2CAA2C;iBACzD;gBACD,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC;oBAChC,WAAW,EAAE,2HAA2H;iBACzI;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,CAAC;oBACnF,WAAW,EAAE,4DAA4D;iBAC1E;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,WAAW,EAAE,2CAA2C;iBACzD;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,2BAA2B;iBACzC;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,gDAAgD;iBAC9D;aACF;YACD,QAAQ,EAAE,EAAE;SACb;KACF;IACD,OAAO,EAAE,KAAK,EAAE,IAA6B,EAAE,EAAE;QAC/C,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC;QACvC,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAEzB,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC7E,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;gBAClF,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,EAAE,uBAAuB,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBACjH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;YAC3F,CAAC;YACD,KAAK,MAAM;gBACT,OAAO,WAAW,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACjE,KAAK,MAAM,CAAC;YACZ;gBACE,OAAO,kBAAkB,CAAC;oBACxB,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,SAAS;oBAC9B,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,IAAI;iBACL,CAAC,CAAC;QACP,CAAC;IACH,CAAC;CACF,CAAC;AAEF,gFAAgF;AAEhF,MAAM,gBAAgB,GAAG;IACvB,UAAU,EAAE;QACV,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,yIAAyI;QACtJ,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,IAAI;SACpB;QACD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,+CAA+C;iBAC7D;gBACD,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC;oBAClD,WAAW,EAAE,gFAAgF;iBAC9F;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,uDAAuD;iBACrE;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,2CAA2C;iBACzD;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,gDAAgD;iBAC9D;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IACD,OAAO,EAAE,KAAK,EAAE,IAA6B,EAAE,EAAE;QAC/C,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC;QACvC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAEzB,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,OAAO;gBACV,OAAO,aAAa,CAAC;oBACnB,YAAY,EAAE,MAAM,CAAC,OAAO;oBAC5B,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,IAAI;iBACL,CAAC,CAAC;YACL,KAAK,KAAK;gBACR,OAAO,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAC7C,KAAK,QAAQ;gBACX,OAAO,aAAa,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAoB,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1E,KAAK,QAAQ;gBACX,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;oBACtB,OAAO,gBAAgB,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;gBACnE,CAAC;gBACD,OAAO,YAAY,CAAC,EAAE,CAAC,CAAC;YAC1B,KAAK,MAAM,CAAC;YACZ;gBACE,OAAO,WAAW,CAAC;oBACjB,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,eAAe,EAAE,IAAI;oBACrB,cAAc,EAAE,IAAI;iBACrB,CAAC,CAAC;QACP,CAAC;IACH,CAAC;CACF,CAAC;AAEF,+EAA+E;AAE/E,MAAM,UAAU,GAAG;IACjB,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,4PAA4P;QACzQ,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;SACpB;QACD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC;oBAC5C,WAAW,EAAE,wMAAwM;iBACtN;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,kEAAkE;iBAChF;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,WAAW,EAAE,4CAA4C;iBAC1D;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,uDAAuD;iBACrE;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;oBAC7D,WAAW,EAAE,iCAAiC;iBAC/C;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,6DAA6D;iBAC3E;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;KACF;IACD,OAAO,EAAE,KAAK,EAAE,IAA6B,EAAE,EAAE;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAc,CAAC;QAEjC,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,MAAM;gBACT,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,0CAA0C,EAAE,CAAC;gBAC/E,CAAC;gBACD,OAAO,6BAA6B,CAAC;oBACnC,IAAI,EAAE,IAAI,CAAC,OAAO;oBAClB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBACxB,CAAC,CAAC;YAEL,KAAK,UAAU;gBACb,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACnB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,8CAA8C,EAAE,CAAC;gBACnF,CAAC;gBACD,OAAO,+BAA+B,CAAC;oBACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBACxB,CAAC,CAAC;YAEL,KAAK,QAAQ;gBACX,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,qCAAqC,EAAE,CAAC;gBAC1E,CAAC;gBACD,OAAO,YAAY,CAAC;oBAClB,IAAI,EAAE,KAAK;oBACX,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBACxB,CAAC,CAAC;YAEL,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,OAAO,GAA4B,EAAE,CAAC;gBAC5C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBACjB,OAAO,CAAC,WAAW,GAAG,MAAM,6BAA6B,CAAC;wBACxD,IAAI,EAAE,IAAI,CAAC,OAAO;wBAClB,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;qBACxB,CAAC,CAAC;oBACH,OAAO,CAAC,YAAY,GAAG,MAAM,YAAY,CAAC;wBACxC,IAAI,EAAE,KAAK;wBACX,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;qBACxB,CAAC,CAAC;gBACL,CAAC;gBACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,OAAO,CAAC,aAAa,GAAG,MAAM,+BAA+B,CAAC;wBAC5D,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;qBACxB,CAAC,CAAC;gBACL,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACpC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,4CAA4C,EAAE,CAAC;gBACjF,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;YAClD,CAAC;YAED;gBACE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,IAAI,wCAAwC,EAAE,CAAC;QACpG,CAAC;IACH,CAAC;CACF,CAAC;AAEF,+DAA+D;AAC/D,sCAAsC;AACtC,+DAA+D;AAE/D,gFAAgF;AAChF,yBAAyB;AACzB,gFAAgF;AAEhF;;;GAGG;AACH,SAAS,UAAU,CACjB,QAA6D,EAC7D,OAA4D,EAC5D,YAAwC,QAAQ;IAEhD,OAAO,KAAK,EAAE,IAA6B,EAAE,UAAuC,EAAE,EAAE;QACtF,MAAM,GAAG,GAAG,UAAU,IAAI,SAAS,CAAC;QACpC,MAAM,GAAG,GAAkB;YACzB,QAAQ;YACR,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YAC5E,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QACF,OAAO,iBAAiB,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;IAE5C,kFAAkF;IAClF,MAAM,cAAc,GAAG;QACrB,UAAU;QACV,gBAAgB;QAChB,UAAU;QACV,UAAU;KACX,CAAC;IAEF,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC9C,MAAM,cAAc,GAAG,UAAU,CAC/B,IAAI,CAAC,UAAU,CAAC,IAA2D,EAC3E,IAAI,CAAC,OAA8D,CACpE,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QACtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,QAAQ,EAAE,QAAQ,IAAI;YACrC,QAAQ;YACR,OAAO,EAAE,OAAO;YAChB,YAAY,EAAE,EAAE;YAChB,cAAc,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE;YAC3C,WAAW,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE;YAC7E,UAAU,EAAE,GAAG;SAChB,CAAC;QACF,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAE5C,OAAO;YACL,GAAG,IAAI;YACP,OAAO,EAAE,cAAc;SACxB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,+DAA+D;IAC/D,MAAM,KAAK,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC;IAE/B,MAAM,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,MAAM,sBAAsB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE5G,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+BAA+B;AAC/B,OAAO,EACL,6BAA6B,EAC7B,+BAA+B,EAC/B,kBAAkB,GACnB,CAAC"}
1
+ {"version":3,"file":"primary-tools.js","sourceRoot":"","sources":["../../src/tools/primary-tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "couchloop-eq-mcp",
3
- "version": "2.0.4",
3
+ "version": "2.0.5",
4
4
  "description": "Behavioral governance layer for LLMs - monitors for hallucination, inconsistency, tone drift, and unsafe reasoning while managing stateful AI sessions",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",