claude-memory-layer 2.4.4 → 2.4.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.
@@ -254,7 +254,7 @@ function emptyLatencyAggregate() {
254
254
  return { count: 0, failedCount: 0, totalMs: 0, maxMs: 0 };
255
255
  }
256
256
  function runtimeVersion() {
257
- const value = "2.4.4"?.trim();
257
+ const value = "2.4.5"?.trim();
258
258
  return sanitizeRuntimeVersion(value || "development");
259
259
  }
260
260
  function sanitizeRuntimeVersion(value) {
@@ -260,7 +260,7 @@ function emptyLatencyAggregate() {
260
260
  return { count: 0, failedCount: 0, totalMs: 0, maxMs: 0 };
261
261
  }
262
262
  function runtimeVersion() {
263
- const value = "2.4.4"?.trim();
263
+ const value = "2.4.5"?.trim();
264
264
  return sanitizeRuntimeVersion(value || "development");
265
265
  }
266
266
  function sanitizeRuntimeVersion(value) {
@@ -20172,10 +20172,12 @@ function isExplicitlyProhibitedLessonQuery(query) {
20172
20172
  }
20173
20173
  function lessonScoringQuery(query) {
20174
20174
  const korean = /^(?:도구\s*호출|파일\s*(?:수정|변경))(?:(?:\s*[/·,]\s*|\s*(?:및|와|과)\s*)(?:도구\s*호출|파일\s*(?:수정|변경)))*(?:은|는|을|를)?\s*(?:하지\s*마(?:세요|십시오|라)|금지)$/u;
20175
+ const readOnly = /^(?:읽기\s*전용으로\s*확인하고\s*)?(?:파일(?:\s*(?:수정|변경))?|설치|교훈\s*저장)(?:(?:\s*[/·,]\s*|\s*(?:및|와|과)\s*)(?:파일(?:\s*(?:수정|변경))?|설치|교훈\s*저장))*(?:은|는|을|를)?\s*하지\s*마(?:세요|십시오|라)$/u;
20176
+ const privateOutput = /^(?:인증정보|(?:대화\s*)?로그\s*전체)(?:(?:\s*[/·,]\s*|\s*(?:나|이나|및|와|과)\s*)(?:인증정보|(?:대화\s*)?로그\s*전체))*(?:은|는|을|를)?\s*출력하지\s*마(?:세요|십시오|라)$/u;
20175
20177
  const english = /^(?:please\s+)?(?:do[ -]+not|don't|never)\s+(?:(?:call|use|invoke)\s+tools|(?:edit|modify|change)\s+files)(?:\s+(?:or|and)\s+(?:(?:call|use|invoke)\s+tools|(?:edit|modify|change)\s+files))*$/iu;
20176
20178
  return query.split(/(?<=[.!?;])(?=\s)|[\r\n]+/u).filter((clause) => {
20177
20179
  const statement = clause.trim().replace(/[.!?;]$/, "").trim();
20178
- return !korean.test(statement) && !english.test(statement);
20180
+ return !korean.test(statement) && !english.test(statement) && !readOnly.test(statement) && !privateOutput.test(statement);
20179
20181
  }).join(" ");
20180
20182
  }
20181
20183
  var lessonSymbolTokens = (value) => value.match(/\b[A-Za-z][A-Za-z0-9_$]*(?:[./:-][A-Za-z0-9_$]+)*/g) ?? [];
@@ -20194,8 +20196,9 @@ function scoreLessonEvidence(query, lesson) {
20194
20196
  if (queriedSymbols.some((symbol) => !contentSymbols.has(symbol))) return null;
20195
20197
  const exactSubject = hasExactLessonSubject(query, lesson);
20196
20198
  if (!exactSubject && !hasQueryMemoryAlignment(query, content, 2)) return null;
20197
- const queryTerms2 = meaningfulTerms(query);
20198
- const contentTerms = new Set(meaningfulTerms(content));
20199
+ const lessonTerms = (value) => [...new Set(meaningfulTerms(value).map((term) => term === "\uBC84\uC804" || term === "versions" ? "version" : term))];
20200
+ const queryTerms2 = lessonTerms(query);
20201
+ const contentTerms = new Set(lessonTerms(content));
20199
20202
  const overlap = queryTerms2.filter((term) => contentTerms.has(term)).length;
20200
20203
  if (!exactSubject && overlap < Math.min(3, queryTerms2.length)) return null;
20201
20204
  const coverage = exactSubject ? 1 : overlap / Math.max(1, Math.min(queryTerms2.length, 8));
@@ -20926,7 +20929,7 @@ async function main(options = {}) {
20926
20929
  triggerType: "user_prompt",
20927
20930
  deliveryClient,
20928
20931
  requestId: retrievalRequestId,
20929
- runtimeVersion: "2.4.4",
20932
+ runtimeVersion: "2.4.5",
20930
20933
  outcomeDiagnostics
20931
20934
  });
20932
20935
  } catch {