Thin re-export shim — project-guidance discovery moved to
com.blockether.vis.internal.agents. AGENTS.md / CLAUDE.md
handling is core functionality (drives system prompt + ctx
digest), so it now lives outside the foundation extension.
This shim keeps the legacy main-agent-instructions tool +
any downstream (:project ctx) :guidance consumers compiling
while they migrate to the internal namespace.
Thin re-export shim — project-guidance discovery moved to `com.blockether.vis.internal.agents`. AGENTS.md / CLAUDE.md handling is core functionality (drives system prompt + ctx digest), so it now lives outside the foundation extension. This shim keeps the legacy `main-agent-instructions` tool + any downstream `(:project ctx) :guidance` consumers compiling while they migrate to the internal namespace.
vis-foundation — the agent's environment-awareness layer.
Owns the environment facts: cwd, user, platform, shell, plus:
Model-facing VCS/workspace truth lives in :session/workspace CTX.
Remaining helpers cover coarse project shape (languages,
monorepo, repositories) and cache invalidation (refresh!).
Runtime facts are computed lazily on first access and cached per
working-directory. The cache is invalidated automatically when
cwd changes between calls and explicitly by (refresh!).
vis-foundation — the agent's environment-awareness layer.
Owns the environment facts: cwd, user, platform, shell, plus:
* git repository facts via the git binary (root, branch, dirty status,
submodules, worktree),
* a bounded language scan over the working tree (top languages
by total bytes, primary language),
* monorepo / multi-package shape detection (polylith, workspace,
submodules) by counting per-ecosystem manifests.
Model-facing VCS/workspace truth lives in `:session/workspace` CTX.
Remaining helpers cover coarse project shape (`languages`,
`monorepo`, `repositories`) and cache invalidation (`refresh!`).
Runtime facts are computed lazily on first access and cached per
working-directory. The cache is invalidated automatically when
`cwd` changes between calls and explicitly by `(refresh!)`.Git introspection for the environment block, backed by the native git
binary (via internal.git).
Returns a snapshot map for the repository that contains start
(typically the JVM working directory). nil when start is not inside any
git repository. Never throws — every git call is guarded; on any failure we
degrade gracefully to nil or a reduced-shape map.
The expensive call is git status (working-tree walk). When it fails or is
suppressed, the snapshot drops the dirty-status fields instead of stalling
the system-prompt build.
Git introspection for the environment block, backed by the native `git` binary (via `internal.git`). Returns a snapshot map for the repository that contains `start` (typically the JVM working directory). nil when `start` is not inside any git repository. Never throws — every git call is guarded; on any failure we degrade gracefully to nil or a reduced-shape map. The expensive call is `git status` (working-tree walk). When it fails or is suppressed, the snapshot drops the dirty-status fields instead of stalling the system-prompt build.
Host-side facts read from JDK system properties and process environment variables.
No I/O, no shell-out, no third-party deps. Cheap to compute, safe to call from any thread, never throws.
Host-side facts read from JDK system properties and process environment variables. No I/O, no shell-out, no third-party deps. Cheap to compute, safe to call from any thread, never throws.
Bounded language scan over a directory tree.
Walks the tree with Files/walkFileTree, skipping common
non-source subdirectories (.git, node_modules, target, ...)
via FileVisitResult/SKIP_SUBTREE. Counts files and bytes per
language using a small extension-to-language map.
The walk has TWO hard guards: a max-file count and a wall-time
deadline. Either one stops the walk via TERMINATE. Callers get
a possibly-partial result; on a small repo the result is exact.
No third-party deps. Reflection-clean.
Bounded language scan over a directory tree. Walks the tree with `Files/walkFileTree`, skipping common non-source subdirectories (`.git`, `node_modules`, `target`, ...) via `FileVisitResult/SKIP_SUBTREE`. Counts files and bytes per language using a small extension-to-language map. The walk has TWO hard guards: a max-file count and a wall-time deadline. Either one stops the walk via `TERMINATE`. Callers get a possibly-partial result; on a small repo the result is exact. No third-party deps. Reflection-clean.
Monorepo / multi-package detection.
Walks the tree once (bounded), counting per-language manifest files at any depth below the root. >=2 manifests of the same kind in distinct subdirectories signals a multi-package workspace; we report the kind, the count, and a best-guess shape label (e.g. "polylith", "workspace", "submodules").
Reflection-clean. Honors the same skip-directory list as the language scanner.
Monorepo / multi-package detection. Walks the tree once (bounded), counting per-language manifest files at any depth below the root. >=2 manifests of the same kind in distinct subdirectories signals a multi-package workspace; we report the kind, the count, and a best-guess shape label (e.g. "polylith", "workspace", "submodules"). Reflection-clean. Honors the same skip-directory list as the language scanner.
Build compact foundation environment data for ctx. No prompt labels.
Build compact foundation environment data for `ctx`. No prompt labels.
Bounded discovery of multiple Git repositories below the current
project root. This catches multirepo workspaces where the user's cwd
is a parent directory or a primary repo that vendors sibling/nested
repos outside .gitmodules.
Returns compact per-repo Git summaries for the system prompt. Full
status walks are bounded per repo by git/snapshot; the repository
scan itself is bounded by max files, max repos, and a wall-clock
deadline. Never throws.
Bounded discovery of multiple Git repositories below the current project root. This catches multirepo workspaces where the user's cwd is a parent directory or a primary repo that vendors sibling/nested repos outside `.gitmodules`. Returns compact per-repo Git summaries for the system prompt. Full status walks are bounded per repo by `git/snapshot`; the repository scan itself is bounded by max files, max repos, and a wall-clock deadline. Never throws.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |