@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.
- package/.claude-plugin/marketplace.json +4 -9
- package/dist/bin/lcm.js +214 -0
- package/dist/bin/lcm.js.map +1 -1
- package/dist/installer/setup.sh +213 -0
- package/dist/src/cli-help.js +53 -2
- package/dist/src/cli-help.js.map +1 -1
- package/dist/src/daemon/lifecycle.js +5 -1
- package/dist/src/daemon/lifecycle.js.map +1 -1
- package/dist/src/daemon/routes/compact.js +6 -6
- package/dist/src/daemon/routes/compact.js.map +1 -1
- package/dist/src/daemon/routes/ingest.js +6 -6
- package/dist/src/daemon/routes/ingest.js.map +1 -1
- package/dist/src/daemon/routes/pool-stats.d.ts +2 -0
- package/dist/src/daemon/routes/pool-stats.js +14 -0
- package/dist/src/daemon/routes/pool-stats.js.map +1 -0
- package/dist/src/daemon/routes/stats.d.ts +2 -0
- package/dist/src/daemon/routes/stats.js +14 -0
- package/dist/src/daemon/routes/stats.js.map +1 -0
- package/dist/src/daemon/routes/status.js +3 -2
- package/dist/src/daemon/routes/status.js.map +1 -1
- package/dist/src/daemon/server.js +4 -0
- package/dist/src/daemon/server.js.map +1 -1
- package/dist/src/db/connection.d.ts +17 -0
- package/dist/src/db/connection.js +27 -0
- package/dist/src/db/connection.js.map +1 -1
- package/dist/src/db/migration.js +21 -9
- package/dist/src/db/migration.js.map +1 -1
- package/dist/src/db/promoted.d.ts +5 -0
- package/dist/src/db/promoted.js +21 -0
- package/dist/src/db/promoted.js.map +1 -1
- package/dist/src/db/redaction-stats.d.ts +1 -0
- package/dist/src/db/redaction-stats.js +3 -1
- package/dist/src/db/redaction-stats.js.map +1 -1
- package/dist/src/doctor/doctor.js +45 -19
- package/dist/src/doctor/doctor.js.map +1 -1
- package/dist/src/generated-patterns.d.ts +7 -0
- package/dist/src/generated-patterns.js +227 -0
- package/dist/src/generated-patterns.js.map +1 -0
- package/dist/src/hooks/events-db.d.ts +9 -1
- package/dist/src/hooks/events-db.js +44 -7
- package/dist/src/hooks/events-db.js.map +1 -1
- package/dist/src/hooks/extractors.d.ts +5 -0
- package/dist/src/hooks/extractors.js +29 -12
- package/dist/src/hooks/extractors.js.map +1 -1
- package/dist/src/hooks/restore.js +34 -2
- package/dist/src/hooks/restore.js.map +1 -1
- package/dist/src/mcp/tools/lcm-store.js +1 -1
- package/dist/src/mcp/tools/lcm-store.js.map +1 -1
- package/dist/src/portable-knowledge.d.ts +66 -0
- package/dist/src/portable-knowledge.js +175 -0
- package/dist/src/portable-knowledge.js.map +1 -0
- package/dist/src/scrub.d.ts +35 -11
- package/dist/src/scrub.js +88 -23
- package/dist/src/scrub.js.map +1 -1
- package/dist/src/sensitive.js +43 -10
- package/dist/src/sensitive.js.map +1 -1
- package/dist/src/store/regex-safety.js +1 -1
- package/dist/src/store/regex-safety.js.map +1 -1
- package/docs/tag-schema.md +107 -0
- 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 {
|
|
3
|
-
|
|
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
|
-
/**
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
* -
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
*
|
|
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
|
|
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
|
|
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 <
|
|
224
|
+
if (idx < gitleaksCount)
|
|
225
|
+
gitleaks++;
|
|
226
|
+
else if (idx < gitleaksCount + nativeCount)
|
|
160
227
|
builtIn++;
|
|
161
|
-
else if (idx <
|
|
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
|
-
* -
|
|
181
|
-
*
|
|
182
|
-
*
|
|
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;
|
package/dist/src/scrub.js.map
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"scrub.js","sourceRoot":"","sources":["../../src/scrub.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAEzD;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAClC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QACtC,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAChE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAa;IACvC,qFAAqF;IACrF,qBAAqB;IACrB,iBAAiB;IACjB,4BAA4B;IAC5B,yDAAyD;IACzD,qBAAqB;IACrB,iCAAiC;IACjC,kBAAkB;IAClB,kBAAkB;IAClB,wBAAwB;IACxB,6CAA6C;IAC7C,+BAA+B;IAC/B,uBAAuB;IACvB,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;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAa,eAAe,CAAC;AAE3D;;;;;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;AAUD,oFAAoF;AACpF,MAAM,UAAU,mBAAmB;IACjC,uEAAuE;IACvE,6EAA6E;IAC7E,4GAA4G;IAC5G,gGAAgG;IAChG,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,OAAO,WAAW;IACL,gBAAgB,GAA6C,EAAE,CAAC;IAChE,aAAa,GAA6C,EAAE,CAAC;IAC9E;;;OAGG;IACc,gBAAgB,GAAa,EAAE,CAAC;IACjD,6CAA6C;IAC5B,aAAa,GAAa,EAAE,CAAC;IAC9C,sEAAsE;IACrD,cAAc,CAAS;IACxC,2DAA2D;IAC1C,YAAY,CAAS;IACtC,2DAA2D;IAC1C,mBAAmB,CAAS;IACpC,eAAe,GAAa,EAAE,CAAC;IAExC,YAAY,cAAwB,EAAE,eAAyB;QAC7D,IAAI,CAAC,cAAc,GAAG,iBAAiB,CAAC,MAAM,CAAC;QAC/C,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC;QAC3C,IAAI,CAAC,mBAAmB,GAAG,cAAc,CAAC,MAAM,CAAC;QAEjD,oDAAoD;QACpD,MAAM,GAAG,GAAkE;YACzE,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YACxF,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YAC5E,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YAC3E,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;SAC7E,CAAC;QAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC;gBAC9C,yEAAyE;gBACzE,IAAI,UAAU,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC5C,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;;;;;;;;;;;OAWG;IACH,eAAe,CAAC,IAAY;QAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAK7C,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,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QAE/F,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,oFAAoF;QACpF,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,QAAQ,GAAG,CAAC,CAAC;QACjB,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,aAAa;gBAAE,QAAQ,EAAE,CAAC;iBAC/B,IAAI,GAAG,GAAG,aAAa,GAAG,WAAW;gBAAE,OAAO,EAAE,CAAC;iBACjD,IAAI,GAAG,GAAG,aAAa,GAAG,WAAW,GAAG,WAAW;gBAAE,MAAM,EAAE,CAAC;;gBAC9D,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,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC9D,CAAC;IAED;;;;;;;OAOG;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"}
|
package/dist/src/sensitive.js
CHANGED
|
@@ -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 {
|
|
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
|
-
|
|
52
|
-
lines.push(
|
|
60
|
+
if (globalUserPatterns.length === 0) {
|
|
61
|
+
lines.push(" (none)");
|
|
53
62
|
}
|
|
54
|
-
|
|
55
|
-
|
|
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
|
|
199
|
-
|
|
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
|
|
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}]
|
|
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;
|
|
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.
|
|
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",
|