@lossless-claude/lcm 0.7.0 → 0.8.0

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.
Files changed (60) hide show
  1. package/.claude-plugin/marketplace.json +4 -9
  2. package/dist/bin/lcm.js +214 -0
  3. package/dist/bin/lcm.js.map +1 -1
  4. package/dist/installer/setup.sh +213 -0
  5. package/dist/src/cli-help.js +53 -2
  6. package/dist/src/cli-help.js.map +1 -1
  7. package/dist/src/daemon/lifecycle.js +5 -1
  8. package/dist/src/daemon/lifecycle.js.map +1 -1
  9. package/dist/src/daemon/routes/compact.js +6 -6
  10. package/dist/src/daemon/routes/compact.js.map +1 -1
  11. package/dist/src/daemon/routes/ingest.js +6 -6
  12. package/dist/src/daemon/routes/ingest.js.map +1 -1
  13. package/dist/src/daemon/routes/pool-stats.d.ts +2 -0
  14. package/dist/src/daemon/routes/pool-stats.js +14 -0
  15. package/dist/src/daemon/routes/pool-stats.js.map +1 -0
  16. package/dist/src/daemon/routes/stats.d.ts +2 -0
  17. package/dist/src/daemon/routes/stats.js +14 -0
  18. package/dist/src/daemon/routes/stats.js.map +1 -0
  19. package/dist/src/daemon/routes/status.js +3 -2
  20. package/dist/src/daemon/routes/status.js.map +1 -1
  21. package/dist/src/daemon/server.js +4 -0
  22. package/dist/src/daemon/server.js.map +1 -1
  23. package/dist/src/db/connection.d.ts +17 -0
  24. package/dist/src/db/connection.js +27 -0
  25. package/dist/src/db/connection.js.map +1 -1
  26. package/dist/src/db/migration.js +21 -9
  27. package/dist/src/db/migration.js.map +1 -1
  28. package/dist/src/db/promoted.d.ts +5 -0
  29. package/dist/src/db/promoted.js +21 -0
  30. package/dist/src/db/promoted.js.map +1 -1
  31. package/dist/src/db/redaction-stats.d.ts +1 -0
  32. package/dist/src/db/redaction-stats.js +3 -1
  33. package/dist/src/db/redaction-stats.js.map +1 -1
  34. package/dist/src/doctor/doctor.js +45 -19
  35. package/dist/src/doctor/doctor.js.map +1 -1
  36. package/dist/src/generated-patterns.d.ts +7 -0
  37. package/dist/src/generated-patterns.js +227 -0
  38. package/dist/src/generated-patterns.js.map +1 -0
  39. package/dist/src/hooks/events-db.d.ts +9 -1
  40. package/dist/src/hooks/events-db.js +44 -7
  41. package/dist/src/hooks/events-db.js.map +1 -1
  42. package/dist/src/hooks/extractors.d.ts +5 -0
  43. package/dist/src/hooks/extractors.js +29 -12
  44. package/dist/src/hooks/extractors.js.map +1 -1
  45. package/dist/src/hooks/restore.js +34 -2
  46. package/dist/src/hooks/restore.js.map +1 -1
  47. package/dist/src/mcp/tools/lcm-store.js +1 -1
  48. package/dist/src/mcp/tools/lcm-store.js.map +1 -1
  49. package/dist/src/portable-knowledge.d.ts +66 -0
  50. package/dist/src/portable-knowledge.js +175 -0
  51. package/dist/src/portable-knowledge.js.map +1 -0
  52. package/dist/src/scrub.d.ts +35 -11
  53. package/dist/src/scrub.js +88 -23
  54. package/dist/src/scrub.js.map +1 -1
  55. package/dist/src/sensitive.js +43 -10
  56. package/dist/src/sensitive.js.map +1 -1
  57. package/dist/src/store/regex-safety.js +1 -1
  58. package/dist/src/store/regex-safety.js.map +1 -1
  59. package/docs/tag-schema.md +107 -0
  60. package/package.json +2 -2
package/dist/src/scrub.js CHANGED
@@ -1,12 +1,46 @@
1
1
  import { readFile } from "node:fs/promises";
2
- import { join } from "node:path";
3
- export const BUILT_IN_PATTERNS = [
2
+ import { readFileSync, existsSync } from "node:fs";
3
+ import { join, dirname } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ import { GITLEAKS_PATTERNS } from "./generated-patterns.js";
6
+ const _thisDir = dirname(fileURLToPath(import.meta.url));
7
+ /**
8
+ * Reads the sync date from the generated-patterns.js header comment.
9
+ * Returns a formatted date string like "2026-03-27" or null if unavailable.
10
+ */
11
+ export function readGitleaksSyncDate() {
12
+ try {
13
+ const genFile = join(_thisDir, "generated-patterns.js");
14
+ if (!existsSync(genFile))
15
+ return null;
16
+ const header = readFileSync(genFile, "utf-8").slice(0, 500);
17
+ const match = header.match(/\/\/ Updated: (\d{4}-\d{2}-\d{2})/);
18
+ return match ? match[1] : null;
19
+ }
20
+ catch {
21
+ return null;
22
+ }
23
+ }
24
+ /**
25
+ * Native (hand-curated) patterns that gap-fill what gitleaks doesn't cover.
26
+ * These are applied in addition to GITLEAKS_PATTERNS.
27
+ *
28
+ * Merge order: GITLEAKS_PATTERNS → NATIVE_PATTERNS → globalUserPatterns → projectPatterns
29
+ */
30
+ export const NATIVE_PATTERNS = [
31
+ // OpenAI / generic sk- keys (gitleaks covers these but with context — add bare form)
4
32
  "sk-[A-Za-z0-9]{20,}",
33
+ // Anthropic keys
5
34
  "sk-ant-[A-Za-z0-9\\-]{40,}",
35
+ // GitHub PATs (bare form — gitleaks covers with context)
6
36
  "ghp_[A-Za-z0-9]{36}",
37
+ // AWS access key IDs (bare form)
7
38
  "AKIA[0-9A-Z]{16}",
39
+ // PEM key headers
8
40
  "-----BEGIN .* KEY-----",
41
+ // Bearer tokens (authorization header value)
9
42
  "Bearer [A-Za-z0-9\\-._~+/]+=*",
43
+ // Password assignments
10
44
  "[Pp]assword\\s*[:=]\\s*\\S+",
11
45
  // npm tokens (classic npm_ prefix — revoked Dec 2025 but may exist in old configs)
12
46
  "npm_[A-Za-z0-9]{30,}",
@@ -35,6 +69,10 @@ export const BUILT_IN_PATTERNS = [
35
69
  // JSON Web Tokens (three base64url segments separated by dots)
36
70
  "eyJ[A-Za-z0-9_-]+\\.eyJ[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+",
37
71
  ];
72
+ /**
73
+ * @deprecated Use NATIVE_PATTERNS instead. Kept for backward compatibility.
74
+ */
75
+ export const BUILT_IN_PATTERNS = NATIVE_PATTERNS;
38
76
  /**
39
77
  * Returns true if a regex pattern source can match across whitespace boundaries.
40
78
  * Patterns containing a literal space, \s, or a dot (which matches space) are
@@ -58,24 +96,48 @@ function isSpanningPattern(source) {
58
96
  }
59
97
  return false;
60
98
  }
99
+ /** Gitleaks sync date extracted from generated file header (ISO string or null). */
100
+ export function getGitleaksSyncDate() {
101
+ // Import the generated file's header comment to extract the sync date.
102
+ // We parse it from the module-level comment using a regex on the import URL.
103
+ // Since we can't read import comments at runtime, we embed it via the GITLEAKS_PATTERNS array length check.
104
+ // The date is exposed via the module's comment; callers can read it via readGitleaksSyncDate().
105
+ return null;
106
+ }
61
107
  export class ScrubEngine {
62
108
  spanningPatterns = [];
63
109
  tokenPatterns = [];
64
- /** Original index (into the combined [builtIn, global, project] array) for each spanning pattern. */
110
+ /**
111
+ * Original index (into the combined [gitleaks, native, global, project] array) for each spanning pattern.
112
+ * Gitleaks patterns are always "spanning" (applied to full text regardless of isSpanningPattern).
113
+ */
65
114
  _spanningOrigIdx = [];
66
115
  /** Original index for each token pattern. */
67
116
  _tokenOrigIdx = [];
117
+ /** Number of gitleaks patterns at the start of the combined array. */
118
+ _gitleaksCount;
119
+ /** Number of native (built-in) patterns after gitleaks. */
120
+ _nativeCount;
68
121
  /** Number of global patterns (for category accounting). */
69
122
  _globalPatternCount;
70
123
  invalidPatterns = [];
71
124
  constructor(globalPatterns, projectPatterns) {
125
+ this._gitleaksCount = GITLEAKS_PATTERNS.length;
126
+ this._nativeCount = NATIVE_PATTERNS.length;
72
127
  this._globalPatternCount = globalPatterns.length;
73
- const all = [...BUILT_IN_PATTERNS, ...globalPatterns, ...projectPatterns];
128
+ // Merge order: gitleaks native → global → project
129
+ const all = [
130
+ ...GITLEAKS_PATTERNS.map((p) => ({ source: p.regex, isGitleaks: true, flags: p.flags })),
131
+ ...NATIVE_PATTERNS.map((p) => ({ source: p, isGitleaks: false, flags: "" })),
132
+ ...globalPatterns.map((p) => ({ source: p, isGitleaks: false, flags: "" })),
133
+ ...projectPatterns.map((p) => ({ source: p, isGitleaks: false, flags: "" })),
134
+ ];
74
135
  for (let i = 0; i < all.length; i++) {
75
- const source = all[i];
136
+ const { source, isGitleaks, flags } = all[i];
76
137
  try {
77
- const regex = new RegExp(source, "g");
78
- if (isSpanningPattern(source)) {
138
+ const regex = new RegExp(source, "g" + flags);
139
+ // Gitleaks patterns always run against full text (bypass spanning check)
140
+ if (isGitleaks || isSpanningPattern(source)) {
79
141
  this.spanningPatterns.push({ source, regex });
80
142
  this._spanningOrigIdx.push(i);
81
143
  }
@@ -94,14 +156,16 @@ export class ScrubEngine {
94
156
  * with per-category counts of how many redactions were made.
95
157
  *
96
158
  * Strategy:
97
- * - "Spanning" patterns (those that can match across whitespace) are applied
98
- * to the full text via a multi-range merge to avoid one pattern consuming
99
- * another's matches.
100
- * - "Token" patterns (no whitespace/dot in source) are applied token-by-token
101
- * so that greedy `.*`-style patterns in one token don't eat adjacent tokens.
159
+ * - Gitleaks patterns are always applied to the full text (they're pre-vetted
160
+ * for full-text scanning and many contain `.` for key-value matching).
161
+ * - "Spanning" native/user patterns (those that can match across whitespace)
162
+ * are applied to the full text via a multi-range merge.
163
+ * - "Token" native/user patterns (no whitespace/dot in source) are applied
164
+ * token-by-token so that greedy `.*`-style patterns don't eat adjacent tokens.
102
165
  */
103
166
  scrubWithCounts(text) {
104
- const builtInCount = BUILT_IN_PATTERNS.length;
167
+ const gitleaksCount = this._gitleaksCount;
168
+ const nativeCount = this._nativeCount;
105
169
  const globalCount = this._globalPatternCount;
106
170
  const taggedRanges = [];
107
171
  for (let pi = 0; pi < this.spanningPatterns.length; pi++) {
@@ -133,11 +197,11 @@ export class ScrubEngine {
133
197
  offset += seg.length;
134
198
  }
135
199
  if (taggedRanges.length === 0)
136
- return { text, builtIn: 0, global: 0, project: 0 };
200
+ return { text, gitleaks: 0, builtIn: 0, global: 0, project: 0 };
137
201
  // Sort by start position
138
202
  taggedRanges.sort((a, b) => a.range[0] - b.range[0]);
139
203
  // Merge overlapping ranges; when overlaps occur, the lowest original pattern
140
- // index wins so that built-in > global > project and earlier patterns win.
204
+ // index wins so that gitleaks > native > global > project and earlier patterns win.
141
205
  const merged = [];
142
206
  let cur = taggedRanges[0];
143
207
  for (let i = 1; i < taggedRanges.length; i++) {
@@ -152,13 +216,16 @@ export class ScrubEngine {
152
216
  }
153
217
  merged.push(cur);
154
218
  // Count redactions by category
219
+ let gitleaks = 0;
155
220
  let builtIn = 0;
156
221
  let global = 0;
157
222
  let project = 0;
158
223
  for (const { idx } of merged) {
159
- if (idx < builtInCount)
224
+ if (idx < gitleaksCount)
225
+ gitleaks++;
226
+ else if (idx < gitleaksCount + nativeCount)
160
227
  builtIn++;
161
- else if (idx < builtInCount + globalCount)
228
+ else if (idx < gitleaksCount + nativeCount + globalCount)
162
229
  global++;
163
230
  else
164
231
  project++;
@@ -171,17 +238,15 @@ export class ScrubEngine {
171
238
  pos = e;
172
239
  }
173
240
  result += text.slice(pos);
174
- return { text: result, builtIn, global, project };
241
+ return { text: result, gitleaks, builtIn, global, project };
175
242
  }
176
243
  /**
177
244
  * Redact all matching patterns in text, replacing matches with [REDACTED].
178
245
  *
179
246
  * Strategy:
180
- * - "Spanning" patterns (those that can match across whitespace) are applied
181
- * to the full text via a multi-range merge to avoid one pattern consuming
182
- * another's matches.
183
- * - "Token" patterns (no whitespace/dot in source) are applied token-by-token
184
- * so that greedy `.*`-style patterns in one token don't eat adjacent tokens.
247
+ * - Gitleaks patterns always applied to full text.
248
+ * - "Spanning" native/user patterns applied to full text.
249
+ * - "Token" patterns applied token-by-token.
185
250
  */
186
251
  scrub(text) {
187
252
  return this.scrubWithCounts(text).text;
@@ -1 +1 @@
1
- {"version":3,"file":"scrub.js","sourceRoot":"","sources":["../../src/scrub.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,CAAC,MAAM,iBAAiB,GAAa;IACzC,qBAAqB;IACrB,4BAA4B;IAC5B,qBAAqB;IACrB,kBAAkB;IAClB,wBAAwB;IACxB,+BAA+B;IAC/B,6BAA6B;IAC7B,mFAAmF;IACnF,sBAAsB;IACtB,yEAAyE;IACzE,kDAAkD;IAClD,8BAA8B;IAC9B,6DAA6D;IAC7D,sBAAsB;IACtB,sBAAsB;IACtB,qDAAqD;IACrD,8BAA8B;IAC9B,kDAAkD;IAClD,gBAAgB;IAChB,iDAAiD;IACjD,4BAA4B;IAC5B,6CAA6C;IAC7C,mBAAmB;IACnB,kEAAkE;IAClE,oCAAoC;IACpC,+CAA+C;IAC/C,sBAAsB;IACtB,qCAAqC;IACrC,wBAAwB;IACxB,wDAAwD;IACxD,wDAAwD;IACxD,+DAA+D;IAC/D,wDAAwD;CACzD,CAAC;AAEF;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,MAAc;IACvC,mFAAmF;IACnF,+FAA+F;IAC/F,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAChE,iDAAiD;IACjD,uDAAuD;IACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACvB,CAAC,EAAE,CAAC,CAAC,oBAAoB;YACzB,SAAS;QACX,CAAC;QACD,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;IACrC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AASD,MAAM,OAAO,WAAW;IACL,gBAAgB,GAA6C,EAAE,CAAC;IAChE,aAAa,GAA6C,EAAE,CAAC;IAC9E,qGAAqG;IACpF,gBAAgB,GAAa,EAAE,CAAC;IACjD,6CAA6C;IAC5B,aAAa,GAAa,EAAE,CAAC;IAC9C,2DAA2D;IAC1C,mBAAmB,CAAS;IACpC,eAAe,GAAa,EAAE,CAAC;IAExC,YAAY,cAAwB,EAAE,eAAyB;QAC7D,IAAI,CAAC,mBAAmB,GAAG,cAAc,CAAC,MAAM,CAAC;QACjD,MAAM,GAAG,GAAG,CAAC,GAAG,iBAAiB,EAAE,GAAG,cAAc,EAAE,GAAG,eAAe,CAAC,CAAC;QAC1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBACtC,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC9B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;oBAC9C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChC,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;oBAC3C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACH,eAAe,CAAC,IAAY;QAC1B,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,CAAC;QAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAI7C,MAAM,YAAY,GAAkB,EAAE,CAAC;QACvC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;YACzD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YAC5C,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;YACpB,IAAI,CAAyB,CAAC;YAC9B,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACvC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC/F,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC;oBAAE,KAAK,CAAC,SAAS,EAAE,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,gEAAgE;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxD,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;oBACtD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;oBACzC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;oBACpB,IAAI,CAAyB,CAAC;oBAC9B,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;wBACtC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;wBAC9G,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC;4BAAE,KAAK,CAAC,SAAS,EAAE,CAAC;oBAC3C,CAAC;gBACH,CAAC;YACH,CAAC;YACD,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC;QACvB,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QAElF,yBAAyB;QACzB,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAErD,6EAA6E;QAC7E,2EAA2E;QAC3E,MAAM,MAAM,GAAoD,EAAE,CAAC;QACnE,IAAI,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClC,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3G,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjB,GAAG,GAAG,IAAI,CAAC;YACb,CAAC;QACH,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEjB,+BAA+B;QAC/B,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,MAAM,EAAE,CAAC;YAC7B,IAAI,GAAG,GAAG,YAAY;gBAAE,OAAO,EAAE,CAAC;iBAC7B,IAAI,GAAG,GAAG,YAAY,GAAG,WAAW;gBAAE,MAAM,EAAE,CAAC;;gBAC/C,OAAO,EAAE,CAAC;QACjB,CAAC;QAED,sBAAsB;QACtB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,MAAM,EAAE,CAAC;YACvC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC;YAC5C,GAAG,GAAG,CAAC,CAAC;QACV,CAAC;QACD,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IACpD,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,IAAY;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;IACzC,CAAC;IAED,kFAAkF;IAClF,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,QAAgB;QAC/C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAClD,OAAO,OAAO;iBACX,KAAK,CAAC,IAAI,CAAC;iBACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;iBAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,EAAE,CAAC;YAChE,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,yDAAyD;IACzD,MAAM,CAAC,KAAK,CAAC,UAAU,CACrB,cAAwB,EACxB,UAAkB;QAElB,MAAM,eAAe,GAAG,MAAM,WAAW,CAAC,mBAAmB,CAC3D,IAAI,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAC3C,CAAC;QACF,OAAO,IAAI,WAAW,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;IAC1D,CAAC;CACF"}
1
+ {"version":3,"file":"scrub.js","sourceRoot":"","sources":["../../src/scrub.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,8 @@ import { readFile, writeFile, mkdir } from "node:fs/promises";
2
2
  import { rmSync, existsSync } from "node:fs";
3
3
  import { join, dirname } from "node:path";
4
4
  import { homedir } from "node:os";
5
- import { BUILT_IN_PATTERNS, ScrubEngine } from "./scrub.js";
5
+ import { NATIVE_PATTERNS, ScrubEngine, readGitleaksSyncDate } from "./scrub.js";
6
+ import { GITLEAKS_PATTERNS } from "./generated-patterns.js";
6
7
  import { projectDir } from "./daemon/project.js";
7
8
  import { loadDaemonConfig } from "./daemon/config.js";
8
9
  function defaultConfigPath() {
@@ -47,12 +48,22 @@ async function sensitiveList(cwd, configPath) {
47
48
  const patternsFile = join(projectDir(cwd), "sensitive-patterns.txt");
48
49
  const projectPatterns = await ScrubEngine.loadProjectPatterns(patternsFile);
49
50
  const lines = [];
51
+ const syncDate = readGitleaksSyncDate();
52
+ const syncNote = syncDate ? ` (synced ${syncDate})` : "";
53
+ lines.push("Built-in patterns:");
54
+ lines.push(` [gitleaks] ${GITLEAKS_PATTERNS.length} patterns${syncNote}`);
55
+ for (const p of NATIVE_PATTERNS) {
56
+ lines.push(` [native] ${p}`);
57
+ }
58
+ lines.push("");
50
59
  lines.push("Global patterns (config.json):");
51
- for (const p of BUILT_IN_PATTERNS) {
52
- lines.push(` [built-in] ${p}`);
60
+ if (globalUserPatterns.length === 0) {
61
+ lines.push(" (none)");
53
62
  }
54
- for (const p of globalUserPatterns) {
55
- lines.push(` [user] ${p}`);
63
+ else {
64
+ for (const p of globalUserPatterns) {
65
+ lines.push(` [user] ${p}`);
66
+ }
56
67
  }
57
68
  lines.push("");
58
69
  lines.push(`Project patterns (${patternsFile}):`);
@@ -195,16 +206,38 @@ async function sensitiveTest(args, cwd, configPath) {
195
206
  const lines = [];
196
207
  // Find which patterns matched
197
208
  const projectPatterns = await ScrubEngine.loadProjectPatterns(patternsFile);
198
- const allPatterns = [
199
- ...BUILT_IN_PATTERNS.map((p) => ({ source: p, kind: "built-in" })),
209
+ const matched = [];
210
+ // Check gitleaks patterns first
211
+ for (const p of GITLEAKS_PATTERNS) {
212
+ try {
213
+ if (new RegExp(p.regex, p.flags).test(input)) {
214
+ matched.push(` [gitleaks:${p.id}] ${p.regex}`);
215
+ }
216
+ }
217
+ catch {
218
+ // invalid pattern — skip
219
+ }
220
+ }
221
+ // Check native patterns
222
+ for (const source of NATIVE_PATTERNS) {
223
+ try {
224
+ if (new RegExp(source).test(input)) {
225
+ matched.push(` [native] ${source}`);
226
+ }
227
+ }
228
+ catch {
229
+ // invalid pattern — skip
230
+ }
231
+ }
232
+ // Check global/project patterns
233
+ const userPatterns = [
200
234
  ...globalUserPatterns.map((p) => ({ source: p, kind: "global" })),
201
235
  ...projectPatterns.map((p) => ({ source: p, kind: "project" })),
202
236
  ];
203
- const matched = [];
204
- for (const { source, kind } of allPatterns) {
237
+ for (const { source, kind } of userPatterns) {
205
238
  try {
206
239
  if (new RegExp(source).test(input)) {
207
- matched.push(` [${kind}] ${source}`);
240
+ matched.push(` [${kind}] ${source}`);
208
241
  }
209
242
  }
210
243
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"sensitive.js","sourceRoot":"","sources":["../../src/sensitive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sensitive.js","sourceRoot":"","sources":["../../src/sensitive.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import safeRegex from "safe-regex";
2
2
  export function validateRegex(pattern) {
3
3
  let re;
4
4
  try {
5
- re = new RegExp(pattern);
5
+ re = new RegExp(pattern); // codeql[js/redos] - intentional: pattern is validated by safeRegex() immediately after; unsafe patterns are rejected before use
6
6
  }
7
7
  catch (err) {
8
8
  throw new Error(`Invalid regex pattern: ${err instanceof Error ? err.message : "syntax error"}`);
@@ -1 +1 @@
1
- {"version":3,"file":"regex-safety.js","sourceRoot":"","sources":["../../../src/store/regex-safety.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,IAAI,EAAU,CAAC;IACf,IAAI,CAAC;QACH,EAAE,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;IACnG,CAAC;IACD,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACH,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,GAAG,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,wEAAwE,OAAO,EAAE,CAAC,CAAC;IACrG,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"regex-safety.js","sourceRoot":"","sources":["../../../src/store/regex-safety.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,IAAI,EAAU,CAAC;IACf,IAAI,CAAC;QACH,EAAE,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,iIAAiI;IAC7J,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;IACnG,CAAC;IACD,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACH,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,GAAG,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,wEAAwE,OAAO,EAAE,CAAC,CAAC;IACrG,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -0,0 +1,107 @@
1
+ # LCM Canonical Tag Schema
2
+
3
+ > **Status:** Canonical — all agents and tools must follow this schema.
4
+ > **Source of truth:** This file. The `lcm_store` MCP tool description references it.
5
+
6
+ ## Why a schema?
7
+
8
+ Without a canonical schema, the same decision gets stored as `decision:X`, `category:decision`, or just `decision` — making `lcm_search` with tag filters unreliable. The canonical schema enforces consistent `<prefix>:<value>` pairs so any agent can construct a precise search filter.
9
+
10
+ ## Schema
11
+
12
+ All tags follow the `<prefix>:<value>` format. Free-text tags (no colon) are allowed but are not searchable by category — prefer canonical tags for anything you intend to filter on later.
13
+
14
+ ### `type:` — what kind of insight is this?
15
+
16
+ | Value | When to use |
17
+ |-------|-------------|
18
+ | `type:decision` | An architectural or process decision with trade-offs evaluated |
19
+ | `type:preference` | A user or team preference ("always do X", "never do Y") |
20
+ | `type:root-cause` | The identified cause of a bug, failure, or incident |
21
+ | `type:pattern` | A recurring pattern worth reusing (code structure, workflow, etc.) |
22
+ | `type:gotcha` | A non-obvious pitfall, footgun, or surprising behavior |
23
+ | `type:solution` | A specific fix or answer to a concrete problem |
24
+ | `type:workflow` | A step-by-step process or runbook |
25
+ | `type:feat` | A feature addition or enhancement |
26
+ | `type:fix` | A bug fix |
27
+ | `type:chore` | Maintenance, refactoring, or tooling work |
28
+
29
+ ### `scope:` — what domain does this belong to?
30
+
31
+ | Value | When to use |
32
+ |-------|-------------|
33
+ | `scope:token-budget` | Token window management, quota, efficiency |
34
+ | `scope:model-selection` | Haiku vs Sonnet vs Opus routing decisions |
35
+ | `scope:architecture` | System design, component structure, data flow |
36
+ | `scope:process` | Team workflow, governance, sprint cadence |
37
+ | `scope:xgh` | Anything in or about the xgh repo |
38
+ | `scope:autoimprove` | Anything in or about the autoimprove repo |
39
+ | `scope:lcm` | Anything in or about lossless-claude itself |
40
+ | `scope:security` | Secret scanning, auth, access control |
41
+ | `scope:testing` | Test strategy, test infrastructure, test failures |
42
+ | `scope:ci` | CI/CD pipelines, GitHub Actions, release automation |
43
+
44
+ ### `priority:` — how urgent or important?
45
+
46
+ | Value | When to use |
47
+ |-------|-------------|
48
+ | `priority:P0` | Critical — system broken, data loss, security issue |
49
+ | `priority:P1` | High — blocks a sprint or a release |
50
+ | `priority:P2` | Normal — should be addressed in current or next sprint |
51
+ | `priority:P3` | Low — nice-to-have, no deadline |
52
+
53
+ ### `owner:` — who is responsible for acting on this?
54
+
55
+ | Value | When to use |
56
+ |-------|-------------|
57
+ | `owner:CTO` | Technical architecture, code quality, test coverage |
58
+ | `owner:COO` | Process, coordination, sprint management |
59
+ | `owner:team-lead-xgh` | xgh repo work |
60
+ | `owner:team-lead-autoimprove` | autoimprove repo work |
61
+ | `owner:team-lead-lcm` | lcm repo work |
62
+ | `owner:co-ceo` | Governance, strategic decisions, both Co-CEOs needed |
63
+
64
+ ### `project:` — which project/repo?
65
+
66
+ Freeform identifier matching the repo or project name. Examples:
67
+ - `project:lcm`
68
+ - `project:xgh`
69
+ - `project:autoimprove`
70
+ - `project:claudinho`
71
+
72
+ ### `sprint:` — which sprint?
73
+
74
+ Format: `sprint:spN` (e.g. `sprint:sp3`). Use the sprint declared in the current triage file header. Fallback: `sprint:YYYY-MM-DD`.
75
+
76
+ ### `source:` — where did this insight come from?
77
+
78
+ | Value | When to use |
79
+ |-------|-------------|
80
+ | `source:adversarial-review` | From an Enthusiast/Adversary/Judge review cycle |
81
+ | `source:session` | From a Co-CEO working session |
82
+ | `source:ci` | From automated CI output |
83
+ | `source:agent` | From a teammate or subagent |
84
+ | `source:retrospective` | From a sprint retrospective |
85
+
86
+ ## Combining tags
87
+
88
+ A single `lcm_store` entry should use 2–4 canonical tags, covering at minimum `type:` and one of `project:` or `scope:`. Sprint and source tags are recommended for traceability.
89
+
90
+ **Example — good:**
91
+ ```
92
+ ["type:solution", "scope:lcm", "project:lcm", "sprint:sp3", "source:session"]
93
+ ```
94
+
95
+ **Example — bad (avoid):**
96
+ ```
97
+ ["solution", "lcm", "sp3"]
98
+ ```
99
+ The bad form still works for full-text search but cannot be filtered by tag category.
100
+
101
+ ## Migration note
102
+
103
+ Existing entries tagged with legacy formats (e.g. `category:decision`, `decision`, `category:gotcha`) are not retroactively migrated — the schema applies to new stores only. The `promote-events` AUTO_TAGS mapping uses `category:*` as an internal convention; those are separate from the canonical user-facing schema defined here.
104
+
105
+ ## Validation
106
+
107
+ There is no runtime enforcement today — the schema is normative by convention. A future `lcm doctor` check may warn on tag-less entries or non-canonical formats.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lossless-claude/lcm",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "Never lose context again. lossless-claude compresses Claude Code sessions into searchable memory — every message preserved, every insight remembered.",
5
5
  "type": "module",
6
6
  "main": "dist/src/memory/index.js",
@@ -32,7 +32,7 @@
32
32
  ],
33
33
  "scripts": {
34
34
  "build": "tsc",
35
- "postbuild": "mkdir -p dist/src/prompts && cp -r src/prompts/*.yaml dist/src/prompts/ && mkdir -p dist/src/connectors/templates && cp -r src/connectors/templates/. dist/src/connectors/templates/",
35
+ "postbuild": "mkdir -p dist/src/prompts && cp -r src/prompts/*.yaml dist/src/prompts/ && mkdir -p dist/src/connectors/templates && cp -r src/connectors/templates/. dist/src/connectors/templates/ && cp installer/setup.sh dist/installer/setup.sh",
36
36
  "prepublishOnly": "npm run build",
37
37
  "changeset": "changeset",
38
38
  "release:verify": "npm test && npm pack --dry-run",