gm-skill 2.0.1555 → 2.0.1556

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm-plugkit",
3
- "version": "2.0.1555",
3
+ "version": "2.0.1556",
4
4
  "description": "Bootstrap and daemon-spawn tool for gm plugkit binary. Downloads the correct platform binary, verifies SHA256, and starts the spool watcher daemon. Includes plugkit-wasm-wrapper for WASM-based spool watching.",
5
5
  "main": "index.js",
6
6
  "bin": {
package/gm.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm",
3
- "version": "2.0.1555",
3
+ "version": "2.0.1556",
4
4
  "description": "Spool-dispatch orchestration engine with unified state machine, skills, and automated git enforcement",
5
5
  "author": "AnEntrypoint",
6
6
  "license": "MIT",
@@ -230,6 +230,23 @@ function isSpoolPollCommand(command) {
230
230
  return null;
231
231
  }
232
232
 
233
+ const NATIVE_SEARCH_PATTERNS = [
234
+ /\bgrep\s+-(?!-)[A-Za-z]*[rR][A-Za-z]*(?:[=\s]|$)/,
235
+ /\bgrep\s+--recursive\b/,
236
+ /(?:^|[\n;&|]|&&)\s*rg\s+(?!-{1,2}(?:version|help)\b)/,
237
+ ];
238
+
239
+ const NATIVE_SEARCH_REASON = 'native code/file/symbol search (grep -r / rg over the tree) is forbidden -- route the lookup through the codesearch verb so it hits the committed code-search index and stays in the spool ledger. Write .gm/exec-spool/in/codesearch/<N>.txt with {"query":"..."} and Read the response; use the recall verb for prior knowledge. A pipe-filter on command output (cmd | grep X) and grep on a single named file are fine; what this gate denies is searching the tree natively (grep -r/-R/-rl/-rn, ripgrep), which bypasses the index and is non-portable across harnesses.';
240
+
241
+ function isNativeSearchCommand(command) {
242
+ if (!command) return null;
243
+ const stripped = stripHeredocsAndStringLiterals(command);
244
+ for (const re of NATIVE_SEARCH_PATTERNS) {
245
+ if (re.test(stripped)) return re.source;
246
+ }
247
+ return null;
248
+ }
249
+
233
250
  const DEFER_MARKERS = [
234
251
  'next pass', 'next session', 'next turn',
235
252
  'defer to later', 'deferred to later', 'deferred for later',
@@ -377,6 +394,11 @@ function checkDispatchGates(sessionId, operation, extra) {
377
394
  logDeviation('deviation.spool-poll', { operation, pattern, command_excerpt: String(extra.command).slice(0, 200) });
378
395
  return { allowed: false, reason: SPOOL_POLL_REASON };
379
396
  }
397
+ const searchPattern = isNativeSearchCommand(extra.command);
398
+ if (searchPattern) {
399
+ logDeviation('deviation.native-search-bash', { operation, pattern: searchPattern, command_excerpt: String(extra.command).slice(0, 200) });
400
+ return { allowed: false, reason: NATIVE_SEARCH_REASON };
401
+ }
380
402
  }
381
403
 
382
404
  if (operation === 'mutable-resolve' && extra && (!extra.witness_evidence || String(extra.witness_evidence).trim() === '')) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm-skill",
3
- "version": "2.0.1555",
3
+ "version": "2.0.1556",
4
4
  "description": "Canonical universal harness — AI-native software engineering via skill-driven orchestration; bootstraps plugkit for task execution and session isolation. Install in any AI coding agent host.",
5
5
  "author": "AnEntrypoint",
6
6
  "license": "MIT",