@mnemonik/claude-code-hooks 0.1.0 → 0.1.2
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/dist/lib/shellTokens.d.ts +16 -6
- package/dist/lib/shellTokens.js +95 -25
- package/dist/lib/shellTokens.js.map +1 -1
- package/package.json +1 -1
|
@@ -26,12 +26,22 @@ export declare function tokenize(input: string): TokenizeResult;
|
|
|
26
26
|
/**
|
|
27
27
|
* Match a token sequence against a project policy pattern.
|
|
28
28
|
*
|
|
29
|
-
*
|
|
30
|
-
* - Plain
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
29
|
+
* Pattern kinds (auto-detected — authors don't have to wrap in /…/):
|
|
30
|
+
* - Plain phrase like "git push origin main" — split into pattern tokens by
|
|
31
|
+
* whitespace; matches when a contiguous sub-sequence of `commandTokens`
|
|
32
|
+
* equals the pattern tokens. Critically, this does NOT substring-match
|
|
33
|
+
* against `tokens.join(' ')` — that would defeat the tokenizer (e.g.
|
|
34
|
+
* `echo '{"x":"git push origin main"}'` would falsely match because the
|
|
35
|
+
* literal phrase appears inside a single-quoted JSON token).
|
|
36
|
+
* - Glob like "git push *" or "delete-*" — pattern tokens with "*" matching
|
|
37
|
+
* any single command token (one-for-one). "*" within a token (e.g.
|
|
38
|
+
* "delete-*") is anchored to one whole command token.
|
|
39
|
+
* - Regex — anything that looks like a regex (contains "|", "\\", "^", "$",
|
|
40
|
+
* "(", ")", ".", "+", "?", "{", "}", "[", "]") OR is wrapped in /…/ or
|
|
41
|
+
* /…/i. Compiled and tested against `tokens.join(' ')`. The auto-detect
|
|
42
|
+
* covers the realistic case where a project's mustConfirm pattern is
|
|
43
|
+
* pipe-alternation (e.g. "make staging|make prod|git push|git commit")
|
|
44
|
+
* without explicit /…/ wrapping.
|
|
35
45
|
*
|
|
36
46
|
* Returning the matched pattern (verbatim) lets the dispatcher key bypass
|
|
37
47
|
* telemetry / dedup against `recentPolicyChecks` exactly.
|
package/dist/lib/shellTokens.js
CHANGED
|
@@ -102,12 +102,22 @@ export function tokenize(input) {
|
|
|
102
102
|
/**
|
|
103
103
|
* Match a token sequence against a project policy pattern.
|
|
104
104
|
*
|
|
105
|
-
*
|
|
106
|
-
* - Plain
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
105
|
+
* Pattern kinds (auto-detected — authors don't have to wrap in /…/):
|
|
106
|
+
* - Plain phrase like "git push origin main" — split into pattern tokens by
|
|
107
|
+
* whitespace; matches when a contiguous sub-sequence of `commandTokens`
|
|
108
|
+
* equals the pattern tokens. Critically, this does NOT substring-match
|
|
109
|
+
* against `tokens.join(' ')` — that would defeat the tokenizer (e.g.
|
|
110
|
+
* `echo '{"x":"git push origin main"}'` would falsely match because the
|
|
111
|
+
* literal phrase appears inside a single-quoted JSON token).
|
|
112
|
+
* - Glob like "git push *" or "delete-*" — pattern tokens with "*" matching
|
|
113
|
+
* any single command token (one-for-one). "*" within a token (e.g.
|
|
114
|
+
* "delete-*") is anchored to one whole command token.
|
|
115
|
+
* - Regex — anything that looks like a regex (contains "|", "\\", "^", "$",
|
|
116
|
+
* "(", ")", ".", "+", "?", "{", "}", "[", "]") OR is wrapped in /…/ or
|
|
117
|
+
* /…/i. Compiled and tested against `tokens.join(' ')`. The auto-detect
|
|
118
|
+
* covers the realistic case where a project's mustConfirm pattern is
|
|
119
|
+
* pipe-alternation (e.g. "make staging|make prod|git push|git commit")
|
|
120
|
+
* without explicit /…/ wrapping.
|
|
111
121
|
*
|
|
112
122
|
* Returning the matched pattern (verbatim) lets the dispatcher key bypass
|
|
113
123
|
* telemetry / dedup against `recentPolicyChecks` exactly.
|
|
@@ -120,38 +130,98 @@ export function matchCommand(commandTokens, patterns) {
|
|
|
120
130
|
const pattern = raw.trim();
|
|
121
131
|
if (!pattern)
|
|
122
132
|
continue;
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
const tail = pattern.endsWith('/i') ? '/i' : pattern.endsWith('/') ? '/' : null;
|
|
126
|
-
if (!tail)
|
|
127
|
-
continue;
|
|
128
|
-
const body = pattern.slice(1, pattern.length - tail.length);
|
|
133
|
+
const explicitRegex = parseExplicitRegex(pattern);
|
|
134
|
+
if (explicitRegex !== null) {
|
|
129
135
|
try {
|
|
130
|
-
|
|
131
|
-
if (re.test(joined))
|
|
136
|
+
if (new RegExp(explicitRegex.body, explicitRegex.flags).test(joined))
|
|
132
137
|
return pattern;
|
|
133
138
|
}
|
|
134
139
|
catch {
|
|
135
|
-
|
|
140
|
+
/* invalid regex — skip */
|
|
136
141
|
}
|
|
137
142
|
continue;
|
|
138
143
|
}
|
|
139
|
-
if (pattern
|
|
140
|
-
|
|
141
|
-
.
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
144
|
+
if (looksLikeRegex(pattern)) {
|
|
145
|
+
try {
|
|
146
|
+
if (new RegExp(pattern).test(joined))
|
|
147
|
+
return pattern;
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
/* invalid regex — skip */
|
|
151
|
+
}
|
|
146
152
|
continue;
|
|
147
153
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
154
|
+
const patternTokens = pattern.split(/\s+/).filter(Boolean);
|
|
155
|
+
if (patternTokens.length === 0)
|
|
156
|
+
continue;
|
|
157
|
+
if (matchTokenSubsequence(commandTokens, patternTokens))
|
|
151
158
|
return pattern;
|
|
152
159
|
}
|
|
153
160
|
return null;
|
|
154
161
|
}
|
|
162
|
+
/**
|
|
163
|
+
* /regex/ or /regex/i — explicit opt-in to joined-form regex matching.
|
|
164
|
+
* Returns null when the pattern isn't wrapped this way.
|
|
165
|
+
*/
|
|
166
|
+
function parseExplicitRegex(pattern) {
|
|
167
|
+
if (!pattern.startsWith('/'))
|
|
168
|
+
return null;
|
|
169
|
+
const tail = pattern.endsWith('/i') ? '/i' : pattern.endsWith('/') ? '/' : null;
|
|
170
|
+
if (!tail)
|
|
171
|
+
return null;
|
|
172
|
+
return { body: pattern.slice(1, pattern.length - tail.length), flags: tail === '/i' ? 'i' : '' };
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Heuristic: does `pattern` contain regex metacharacters that aren't part of
|
|
176
|
+
* the plain-phrase / glob vocabulary? `*` alone is glob, not regex. The pipe
|
|
177
|
+
* is the most common case in real-world policies.
|
|
178
|
+
*/
|
|
179
|
+
function looksLikeRegex(pattern) {
|
|
180
|
+
return /[|\\.^$()+?{}[\]]/.test(pattern);
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* True iff `patternTokens` appears as a contiguous sub-sequence of
|
|
184
|
+
* `commandTokens`. A "*" pattern token matches any single command token.
|
|
185
|
+
*
|
|
186
|
+
* Whole-token matches only — `git push` does NOT match a command token
|
|
187
|
+
* `'git push origin main'` (a single-quoted string), which is the property
|
|
188
|
+
* that protects us from the false-positive Bash regex trap. A pattern token
|
|
189
|
+
* is allowed to be a partial-string glob (`git*`) — those still only match
|
|
190
|
+
* a single whole command token, never crossing token boundaries.
|
|
191
|
+
*/
|
|
192
|
+
function matchTokenSubsequence(commandTokens, patternTokens) {
|
|
193
|
+
const need = patternTokens.length;
|
|
194
|
+
if (need === 0)
|
|
195
|
+
return true;
|
|
196
|
+
for (let start = 0; start <= commandTokens.length - need; start++) {
|
|
197
|
+
let ok = true;
|
|
198
|
+
for (let i = 0; i < need; i++) {
|
|
199
|
+
const cmd = commandTokens[start + i] ?? '';
|
|
200
|
+
const pat = patternTokens[i] ?? '';
|
|
201
|
+
if (pat === '*')
|
|
202
|
+
continue;
|
|
203
|
+
if (pat.includes('*')) {
|
|
204
|
+
// Within-token glob, e.g. "delete-*" — anchored to the whole token.
|
|
205
|
+
const escaped = pat
|
|
206
|
+
.split('*')
|
|
207
|
+
.map((seg) => seg.replace(/[.+?^${}()|[\]\\]/g, '\\$&'))
|
|
208
|
+
.join('.*');
|
|
209
|
+
if (!new RegExp(`^${escaped}$`).test(cmd)) {
|
|
210
|
+
ok = false;
|
|
211
|
+
break;
|
|
212
|
+
}
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
if (cmd !== pat) {
|
|
216
|
+
ok = false;
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
if (ok)
|
|
221
|
+
return true;
|
|
222
|
+
}
|
|
223
|
+
return false;
|
|
224
|
+
}
|
|
155
225
|
/**
|
|
156
226
|
* Built-in destructive patterns. Project-level policies extend this set;
|
|
157
227
|
* they're never shrunk, so a project can only ADD restrictions to what's
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shellTokens.js","sourceRoot":"","sources":["../../src/lib/shellTokens.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"shellTokens.js","sourceRoot":"","sources":["../../src/lib/shellTokens.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mnemonik/claude-code-hooks",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Claude Code PreToolUse / PostToolUse hooks for Mnemonik forcing-functions (advisory grounding gate). filesToWrite delivery of skill/rules/.mnemonik.json continues to flow for ALL clients including Claude Code — this package adds host-side hook gating only. Versioned independently from the @mnemonik/server release cadence (mirrors @mnemonik/scanner).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|