paqad-ai 1.41.0 → 1.41.1

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/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # paqad-ai
2
2
 
3
+ ## 1.41.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 2137219: Rule-script whole-tree scan now respects `.gitignore`. Previously the scanner
8
+ enumerated the working tree with a fixed ignore list (`node_modules`, `dist`,
9
+ `.paqad`, `build`) and never consulted the project's `.gitignore`, so gitignored
10
+ build output, vendored dependencies, and generated code were still scanned —
11
+ producing `deterministic` findings on files the developer cannot hand-fix and
12
+ blocking the strict `rule_compliance` gate. The scan now drops git-ignored paths
13
+ via a batched `git check-ignore` (falling back to the static list when git is
14
+ unavailable), and adds `vendor/` to that fallback list.
15
+
3
16
  ## 1.41.0
4
17
 
5
18
  ### Minor Changes
package/dist/cli/index.js CHANGED
@@ -26076,7 +26076,7 @@ init_cancelled_error();
26076
26076
  init_events();
26077
26077
 
26078
26078
  // src/index.ts
26079
- var VERSION = "1.41.0";
26079
+ var VERSION = "1.41.1";
26080
26080
 
26081
26081
  // src/cli/commands/audit.ts
26082
26082
  init_esm_shims();
package/dist/index.js CHANGED
@@ -22735,7 +22735,7 @@ var memoizedReport;
22735
22735
  function getEngineVersionReport() {
22736
22736
  if (memoizedReport === void 0) {
22737
22737
  memoizedReport = Object.freeze({
22738
- engineVersion: normalizeEngineVersion("1.41.0"),
22738
+ engineVersion: normalizeEngineVersion("1.41.1"),
22739
22739
  minConsumerVersion: MIN_CONSUMER_VERSION,
22740
22740
  deprecatedAsOf: DEPRECATED_AS_OF
22741
22741
  });
@@ -39119,7 +39119,7 @@ function formatVerdictSummary(input2) {
39119
39119
 
39120
39120
  // src/verification/repository/run-repository-verification.ts
39121
39121
  function verifierVersion() {
39122
- return true ? "1.41.0" : "0.0.0-dev";
39122
+ return true ? "1.41.1" : "0.0.0-dev";
39123
39123
  }
39124
39124
  function backstopGates() {
39125
39125
  return [
@@ -41853,7 +41853,7 @@ var WorkflowEngine = class {
41853
41853
  };
41854
41854
 
41855
41855
  // src/index.ts
41856
- var VERSION = "1.41.0";
41856
+ var VERSION = "1.41.1";
41857
41857
  function getFrameworkName() {
41858
41858
  return "paqad-ai";
41859
41859
  }
@@ -5845,6 +5845,7 @@ function serializeRuleScriptMap(map) {
5845
5845
  }
5846
5846
 
5847
5847
  // src/rule-scripts/runner.ts
5848
+ import { execFileSync } from "child_process";
5848
5849
  import { createHash as createHash3 } from "crypto";
5849
5850
  import { existsSync as existsSync10, mkdirSync as mkdirSync9, readFileSync as readFileSync14, writeFileSync as writeFileSync9 } from "fs";
5850
5851
  import { dirname as dirname8, join as join14 } from "path";
@@ -6094,7 +6095,7 @@ function recordRuleFindings(projectRoot, evidence) {
6094
6095
 
6095
6096
  // src/rule-scripts/runner.ts
6096
6097
  var DEFAULT_GLOBS = ["**/*.{ts,tsx,js,jsx,mjs,cjs,vue,svelte}"];
6097
- var IGNORE = ["**/node_modules/**", "**/dist/**", "**/.paqad/**", "**/build/**"];
6098
+ var IGNORE = ["**/node_modules/**", "**/dist/**", "**/.paqad/**", "**/build/**", "**/vendor/**"];
6098
6099
  function sha256(input) {
6099
6100
  return createHash3("sha256").update(input).digest("hex");
6100
6101
  }
@@ -6111,8 +6112,22 @@ function scriptFilesHash(projectRoot, map) {
6111
6112
  const paths = map.rules.flatMap((r) => r.scripts.map((s) => s.path)).sort();
6112
6113
  return hashFiles(projectRoot, paths);
6113
6114
  }
6115
+ function dropGitIgnored(projectRoot, files) {
6116
+ try {
6117
+ const out = execFileSync("git", ["check-ignore", "-z", "--stdin"], {
6118
+ cwd: projectRoot,
6119
+ input: files.join("\0"),
6120
+ stdio: ["pipe", "pipe", "ignore"]
6121
+ });
6122
+ const ignored = new Set(out.toString("utf8").split("\0").filter(Boolean));
6123
+ return files.filter((f) => !ignored.has(f));
6124
+ } catch {
6125
+ return files;
6126
+ }
6127
+ }
6114
6128
  function wholeTree(projectRoot, globs) {
6115
- return fg.sync(globs, { cwd: projectRoot, ignore: IGNORE, onlyFiles: true }).sort();
6129
+ const listed = fg.sync(globs, { cwd: projectRoot, ignore: IGNORE, onlyFiles: true });
6130
+ return dropGitIgnored(projectRoot, listed).sort();
6116
6131
  }
6117
6132
  function targetsFor(script, opts, wholeTreeFiles) {
6118
6133
  if (script.scope === "changed-files" && opts.changedFiles) {