AbsoluteJS

@absolutejs/agent-control

@absolutejs/agent-controlv0.5.8betaAI

Authenticated AI agent operator API, console, and bound plan-then-execute playground.

#Installation

BASH
bun add @absolutejs/agent-control

#Capabilities

Overview

Authenticated web-standard operator API over @absolutejs/agency's control plane. It inventories every registered source, activates the durable kill switch before cleanup, reports partial source failures, restores deliberately, and uses leased idempotency records so operator retries cannot change the requested input.

Agency is a required host peer (>=0.7.1 <0.8.0), not a bundled dependency. The operator surface must inspect and decide against the host's one durable Agency ledger. This package tests against exactly 0.7.1; a new Agency minor requires an explicit compatibility release.

Scopes are agents:read, agents:revoke, and agents:restore. Mutations require an operationId, bounded reason, same-origin Origin header, and X-Agent-Control-Intent: mutate; PostgreSQL operations can be safely reclaimed after a crashed operator process's lease expires.

Show 4 more

createAgentControlConsoleHandler() adds a dependency-free authenticated operator console to the same package. Its snapshot shows agent status, pending approvals, durable runs and budgets, delegation scope and expiry, memory metadata, and scope-specific reputation without exposing memory contents or raw action inputs. Approval decisions require agents:approve, same-origin requests, an explicit mutation-intent header, a reason, and an idempotency key.

The HTML console uses a per-response Content Security Policy nonce, constructs all remote data with DOM textContent, cannot be framed, stores no cache, and has no third-party assets. The data adapter keeps it provider-neutral and lets applications compose @absolutejs/agency, agent-runtime, agent-memory, and agent-reputation without creating hard dependencies.

The PostgreSQL operation store accepts readonly query results, so the same small Bun SQL adapter can be shared with Agency without copying result rows.

createAgentPlaygroundHandler() adds a provider-neutral plan-then-execute UI and API. Planning is a separate, explicitly effect-free adapter operation. The server stores the full input and only returns its digest, expires plans quickly, binds them to the operator, refuses denied or approval-pending plans, and uses the same leased idempotency store for execution. The browser cannot mutate a plan between review and execution.

Outcomes

What you can build

Build on the supported package contract

Use @absolutejs/agent-control through its supported public entry points.

Hardening checklist

Production guidance

Make every external boundary explicitPin the deployed @absolutejs/agent-control version, replace example or memory-backed dependencies with durable implementations, bound external calls, protect credentials, and emit enough evidence to retry or recover safely.

Follow in order

Troubleshooting path

1
Trace from the first failed boundary
Reproduce the smallest canonical @absolutejs/agent-control example, confirm the supported entry point and version in the API explorer, then inspect the first boundary that did not produce its documented result.

#@absolutejs/agent-control quick start

Partial snippet

# @absolutejs/agent-control

TS
const console = createAgentControlConsoleHandler({
  authorize: verifyOperator,
  operations: createPostgresOperationStore({ client }),
  data: {
    snapshot: (operator) => loadSafeOperatorSnapshot(operator),
    decideApproval: (decision) => applyAgencyDecision(decision),
  },
});

#Public entry points

Supported entry points declared by this package manifest.

Package entry point declared in package.json.

@absolutejs/agent-control@absolutejs/agent-control/manifest@absolutejs/agent-control/manifest.json

#Package commands

Scripts declared by this package manifest.

bun run buildrm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --target=bun --external @absolutejs/agency --external '@absolutejs/agency/*' --external @sinclair/typebox --external drizzle-orm --external 'drizzle-orm/*' && tsc -p tsconfig.build.json && absolute-manifest emit
bun run check:packagebun run format && bun run typecheck && bun run test && bun run build
bun run formatprettier --write "./**/*.{ts,json,md}"
bun run testbun test
bun run typechecktsc --noEmit

#API reference

Search the declarations exported by the current package type files. Expand a symbol to inspect its source-backed signature.

21 symbols
AgentControlSnapshottypePermalinkSource
TS
type AgentControlSnapshot = {
    agents: Array<{
        description?: string;
        id: string;
        status: string;
    }>;
    approvals: Array<{
        action: string;
        agentId: string;
        id: string;
        requestedAt: string;
        risk?: string;
        summary: string;
    }>;
    delegations: Array<{
        expiresAt?: string;
        from: string;
        id: string;
        scopes: string[];
        to: string;
    }>;
    memories: Array<{
        agentId: string;
        id: string;
        scope: string;
        updatedAt: string;
    }>;
    reputations: Array<{
        confidence: number;
        scope: string;
        score: number;
        subject: string;
    }>;
    runs: Array<{
        agentId: string;
        budget?: {
            limit: number;
            spent: number;
            unit: string;
        };
        id: string;
        startedAt: string;
        status: string;
    }>;
};
Exported from @absolutejs/agent-control