/**
 * The built-in capability assembly.
 *
 * The kernel ships a generic {@link ToolRegistry} and a generic
 * {@link makeNodeContext}; this module marries the two into the concrete,
 * batteries-included surface a host actually wires up. It registers every
 * built-in tool, names the standard collections the agent selects between, and
 * exposes a one-call {@link toolBox} helper that produces a runnable
 * {@link ToolBox} backed by the real Node filesystem and shell.
 *
 * Three collections are defined:
 *   - `read-only` — tools that only observe the workspace and the web: read,
 *     ls, grep, find, websearch, webfetch. Safe to expose when no mutation
 *     should be possible.
 *   - `coding`    — everything in `read-only` plus the mutating and stateful
 *     tools: write, edit, bash, the todo pair, and process control.
 *   - `all`       — the union of every registered tool, with nothing withheld.
 *
 * Nothing here reaches for `node:fs` or `node:child_process` directly — the
 * Node binding lives entirely in `backends/`, which this module merely consumes.
 */
import { ToolRegistry } from "./kernel";
import type { ToolBox } from "../runtime/contract";
/** The names of the collections this module defines. */
export type ToolCollection = "read-only" | "coding" | "all";
/**
 * Build a fresh {@link ToolRegistry} populated with every built-in tool and the
 * three standard collections.
 *
 * A new registry is minted on each call so callers never share mutable state;
 * the tool objects themselves are stateless singletons and are safe to share.
 */
export declare function builtinRegistry(): ToolRegistry;
/**
 * Produce a runnable {@link ToolBox} for the named collection, backed by the
 * real Node filesystem and shell.
 *
 * The returned box advertises exactly the descriptors of the chosen collection
 * and dispatches each call to the matching tool, minting a fresh
 * {@link ToolContext} (rooted at `cwd`) per dispatch and threading the runtime's
 * cancellation signal in. `cwd` defaults to the current process working
 * directory when omitted.
 */
export declare function toolBox(collection: ToolCollection, cwd?: string): ToolBox;
