@polycode-projects/seonix 0.10.4 → 0.10.5

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 (2) hide show
  1. package/package.json +1 -1
  2. package/src/walk.mjs +11 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polycode-projects/seonix",
3
- "version": "0.10.4",
3
+ "version": "0.10.5",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "SEONIX — a deterministic, offline, $0 code-graph tool that makes a cheap coding agent edit like an expensive one. Indexes a repo with Python ast + git (zero model calls) and renders a bounded edit-digest.",
package/src/walk.mjs CHANGED
@@ -11,9 +11,18 @@ import { join, relative, sep } from "node:path";
11
11
  export const SKIP_DIRS = new Set([
12
12
  ".git", ".seonix", ".hg", ".svn", "node_modules", ".venv", "venv",
13
13
  "__pycache__", ".tox", ".mypy_cache", ".pytest_cache", "build", "dist",
14
- "bin", "obj", "out", "coverage", ".next", ".nuxt", ".angular", "wwwroot",
14
+ "coverage", ".next", ".nuxt", ".angular", "wwwroot",
15
15
  ]);
16
16
 
17
+ // .NET build-artifact directory names — compiled binaries, never source, and
18
+ // respect_gitignore already excludes them for real .NET repos. Skipped only when
19
+ // NESTED (a project's own <proj>/bin/Debug/... never sits at the repo root): a
20
+ // repo-ROOT bin/ (or obj/, out/) is a common legitimate source convention — a
21
+ // Node CLI's bin/ entrypoint directory is the concrete case this was silently
22
+ // swallowing (seonix's own bin/cli.mjs, unindexed, found via the chat playtest
23
+ // sprint's "who imports src/server.mjs" dead-end).
24
+ const NESTED_ONLY_SKIP_DIRS = new Set(["bin", "obj", "out"]);
25
+
17
26
  export const IGNORE_FILE = ".seonixignore";
18
27
 
19
28
  /** Parse `.seonixignore` text into compiled patterns (see header for semantics). */
@@ -117,6 +126,7 @@ export async function walk(root, exts, ignore = null) {
117
126
  const abs = join(dir, e.name);
118
127
  if (e.isDirectory()) {
119
128
  if (SKIP_DIRS.has(e.name) || e.name.startsWith(".")) continue;
129
+ if (dir !== root && NESTED_ONLY_SKIP_DIRS.has(e.name)) continue;
120
130
  if (ignore && ignore(relPath(root, abs))) continue;
121
131
  await rec(abs);
122
132
  } else if (e.isFile()) {