/**
 * Atomic-tool primitive contracts — the canonical I/O shapes for the CORE SDK
 * tool layer (E3 · T11403 · SG-PACKAGE-ARCH).
 *
 * A **tool primitive** is the smallest stateless unit of side-effecting work an
 * agent can perform — read a file, write a file, run a shell command, search,
 * fetch a URL, edit a notebook cell. Each primitive is a PURE function of its
 * typed input (no session/loop/global coupling); composing primitives into
 * multi-step capabilities is the job of the SKILLS layer (`packages/skills`),
 * not the tool layer. The implementations live in `packages/core/src/tools/*`
 * (T11405-T11407) behind a single deny-first guardrail chokepoint; this module
 * is their shared contract so `core`, `mcp-adapter`, `caamp`, and `cleo-os`
 * agree on one shape and never redefine it.
 *
 * This is a NEW submodule (`@cleocode/contracts/tools/atomic`) kept separate
 * from the squatted `contracts/src/tools/index.ts` (query/derivation helpers —
 * see the E3 inventory note `e3-tools-inventory`). Types-only — no runtime
 * logic (Gate 10 `contracts-purity`).
 *
 * @epic T11390
 * @task T11403
 * @saga T11387
 */
// ---------------------------------------------------------------------------
// Taxonomy
// ---------------------------------------------------------------------------
/**
 * The atomic tool classes. Each class groups primitives that share a side-effect
 * surface and therefore a guardrail policy (fs → path allowlist, shell → command
 * denylist, net → egress policy, …).
 */
export const TOOL_CLASSES = ['fs', 'shell', 'search', 'net', 'notebook'];
// ---------------------------------------------------------------------------
// Canonical primitive registry (the SoT for "what atomic tools exist")
// ---------------------------------------------------------------------------
/**
 * The canonical atomic-tool primitives. Implementations in
 * `packages/core/src/tools/*` register against these names; the MCP adapter
 * (T11411) may derive its catalog from this list rather than hand-listing.
 */
export const ATOMIC_TOOL_PRIMITIVES = [
    { name: 'readFileText', class: 'fs', responsibility: 'Read a file as text', stateless: true },
    { name: 'readJson', class: 'fs', responsibility: 'Read + parse a JSON file', stateless: true },
    {
        name: 'writeFileAtomic',
        class: 'fs',
        responsibility: 'Atomically write a file (tmp-then-rename)',
        stateless: true,
    },
    {
        name: 'pathExists',
        class: 'fs',
        responsibility: 'Test path existence + kind',
        stateless: true,
    },
    {
        name: 'executeShell',
        class: 'shell',
        responsibility: 'Run a command with explicit cwd/env/timeout',
        stateless: true,
    },
    { name: 'runGit', class: 'shell', responsibility: 'Run a git subcommand', stateless: true },
    {
        name: 'search',
        class: 'search',
        responsibility: 'Search content/paths under a root',
        stateless: true,
    },
    {
        name: 'fetch',
        class: 'net',
        responsibility: 'Perform an outbound HTTP request',
        stateless: true,
    },
    {
        name: 'notebookEdit',
        class: 'notebook',
        responsibility: 'Replace a notebook cell source',
        stateless: true,
    },
];
//# sourceMappingURL=atomic.js.map