Skip to main content

Crate harn_glob

Crate harn_glob 

Source
Expand description

The single glob-matching implementation for the Harn workspace.

Before this crate existed, seven near-identical glob_match functions lived in harn-ir, harn-vm (metadata scan, llm config, capabilities, merge-captain audit, runtime hooks, llm mock), and harn-cli (skills) — each with subtly different wildcard semantics. A pattern that matched in one subsystem silently behaved differently in another (hook routing honored ?/[...], model-override matching did not; the metadata scanner matched the * in **/*.rs literally). This crate is the one place those semantics are defined.

Three contracts, chosen per call site:

  • match_path — slash-aware file-path globs: */? never cross /, ** crosses directories. Use for path-shaped inputs (invariant globs, skill manifests, workspace paths).
  • match_name — full glob syntax (*, ?, [...], {a,b}) over flat identifiers where / has no special meaning (* crosses it). Use for tool names, model ids, hook patterns, event names.
  • match_prose*-only ordered-segment matching where every other character is literal. Use when patterns target free text that routinely contains ?, [, or { as ordinary prose (e.g. llm-mock prompt matchers).

Functions§

match_name
Full glob matching for flat names (tool names, model ids, hook patterns).
match_path
Slash-aware glob matching for file paths.
match_prose
*-only ordered-segment matching over free text.