basemind 0.17.0

Full AI context layer over MCP — tree-sitter code-map, document RAG (PDF/Office/HTML/email + OCR + reranker), shared agent memory, on-demand web crawl, git history + blame + per-symbol diff. 300+ languages, 10+ coding-agent harnesses, content-addressed Fjall + LanceDB.
# Generated by scripts/migrate_to_poly.py from .pre-commit-config.yaml + tool configs. Review before committing.

[defaults]
line_length = 120
line_ending = "lf"
final_newline = true
trim_trailing_whitespace = true

[discovery]
exclude = [
    "**/*.lock",
    "**/*.svg",
    "**/Cargo.lock",
    "**/go.sum",
    "**/package-lock.json",
    "**/pnpm-lock.yaml",
    "**/uv.lock",
    ".basemind/**",
    "dist/**",
    "node_modules/**",
    "target/**",
    "vendor/**",
    # Generated by schemars from src/config; tests/config_schema.rs asserts it byte-equal to the
    # generator output, so it must NOT be reformatted by poly. Regenerate via the ignored
    # `regenerate_schema` test.
    "schema/basemind-config-v1.schema.json",
]

[lint.markdown.rumdl]
disable = ["MD013", "MD024", "MD033", "MD036", "MD041"]

[fmt.markdown.rumdl]
disable = ["MD013", "MD024", "MD033", "MD036", "MD041"]

[lint.typos]
# `ser` is the conventional serde `Serializer` binding; `certifi` is the Python TLS-cert package.
extend_words = { patern = "patern", pattrn = "pattrn", ser = "ser", certifi = "certifi" }
extend_identifiers = { rela_path = "rela_path" }
extend_exclude = ["tests/fixtures/**"]

# Python packaging helper never linted under the old prek setup (no ruff hook).
# Exempt the pre-existing findings so poly stays green; fix separately if desired.
[per-file-ignores]
"pip-package/**" = ["B007", "B904", "I001"]

[hooks]
stages = ["pre-commit"]

[hooks.builtin]
polylint = { exclude = [
    "**/*.lock",
    "**/Cargo.lock",
    "**/go.sum",
    "**/package-lock.json",
    "**/pnpm-lock.yaml",
    "**/uv.lock",
    ".basemind/**",
    "dist/**",
    "node_modules/**",
    "target/**",
    "vendor/**",
] }
polyfmt = { exclude = [
    "**/*.lock",
    "**/Cargo.lock",
    "**/go.sum",
    "**/package-lock.json",
    "**/pnpm-lock.yaml",
    "**/uv.lock",
    ".basemind/**",
    "dist/**",
    "node_modules/**",
    "target/**",
    "vendor/**",
    # Generated by schemars from src/config; asserted byte-equal by tests/config_schema.rs, so it
    # must match the generator's output, not poly's JSON formatter. Regenerate via the ignored
    # `regenerate_schema` test, never `poly fmt`.
    "schema/basemind-config-v1.schema.json",
] }
commit = { stages = ["commit-msg"] }
file_safety = { exclude = [
    "**/*.lock",
    "**/Cargo.lock",
    "**/go.sum",
    "**/package-lock.json",
    "**/pnpm-lock.yaml",
    "**/uv.lock",
    ".basemind/**",
    "dist/**",
    "node_modules/**",
    "target/**",
    "vendor/**",
] }
cargo = true

# --- catalog tools (standalone binaries, PATH-probed) ---
[tools.shfmt]
enabled = true

[tools.shellcheck]
enabled = true

# --- repo-local script hooks ---
[hooks.pre-commit.scripts.statusline_smoke]
# Smoke test for .claude-plugin/statusline.sh against a synthetic fixture.
# No `files`/`glob`: runs once standalone (original hook was pass_filenames: false).
run = "bash tests/statusline_smoke.sh"

[hooks.pre-commit.scripts.sync_plugin_skills]
# Mirror canonical skills + slash commands into every non-Claude plugin tree.
# No `files`/`glob`: runs once standalone (original hook was pass_filenames: false).
run = "bash scripts/sync-plugin-skills.sh"

# --- dropped hooks (for the record) ---
# rustdoc-lint, rust-max-lines: shared xberg-io/pre-commit-hooks hooks with no
# vendored script in this repo — dropped from commit hooks (run them in CI).