SDK Reference

TypeScript SDK for the KeylessAI AI Action Governance Kernel.

Installation

npm install @keylessai/sdk

Constructor

import { KeylessAI } from '@keylessai/sdk';

const keyless = new KeylessAI(config: KeylessConfig);

KeylessConfig

FieldTypeRequiredDescription
apiKeystringYesAPI key (ka_live_xxx or ka_test_xxx)
orgIdstringYesOrganization UUID
agentIdstringYesAgent UUID for this SDK instance
baseUrlstringNoDefault: https://app.keyless-ai.com/api/v3
autoPolicybooleanNoDefault: true. Auto-requires approval for $1,000+
timeoutnumberNoRequest timeout in ms. Default: 30000
maxRetriesnumberNoRetry count on transient failures. Default: 2

Methods

execute(input: ExecuteInput): Promise<ExecuteResult>

Execute a governed action through the full Kernel pipeline: Intent → Policy → Approval → Execute → Ledger.

ExecuteInput

FieldTypeRequiredDescription
actionstringYesAction name (e.g., "ads.budget_increase")
amountnumberNoAction amount for budget tracking
targetRecord<string, unknown>NoStructured target metadata
idempotencyKeystringNoPrevents duplicate execution
requireApprovalbooleanNoForce approval regardless of policy

ExecuteResult

FieldTypeDescription
intentIdstringIntent UUID
executionIdstring | nullExecution UUID (null if awaiting approval)
status'completed' | 'awaiting_approval' | 'denied' | 'failed'Final status
resultRecord<string, unknown>Execution result payload
errorstringError message (if failed/denied)
costnumberActual cost deducted from budget
riskScorenumberComputed risk score (0.0 - 1.0)
stepsPipelineStep[]Detailed pipeline step log

simulate(input: SimulateInput): Promise<SimulateResult>

Dry-run an action through the policy engine without executing. Returns the policy decision, risk score, and budget impact.

SimulateResult

FieldTypeDescription
riskScorenumberComputed risk (0.0 - 1.0)
policyDecision'allow' | 'require_approval' | 'deny'Policy verdict
budgetImpact{ cost, remaining }Projected budget effect
requiresApprovalbooleanWhether approval is needed
warningsstring[]Policy warnings

ledger(query: LedgerQuery): Promise<LedgerResult>

Query the audit ledger for intents, executions, and approvals.

LedgerQuery

FieldTypeDescription
intentIdstringFilter by specific intent
agentIdstringFilter by agent
statusstringFilter by status
fromstringStart date (ISO-8601)
tostringEnd date (ISO-8601)
limitnumberMax results (default 50, max 100)

waitForApproval(intentId: string, options?: WaitOptions): Promise<ApprovalResult>

Long-poll until the intent is approved or rejected. Default timeout: 5 minutes.

FieldTypeDefaultDescription
timeoutnumber300000Max wait time in ms
pollIntervalnumber3000Poll interval in ms

resume(intentId: string): Promise<ExecuteResult>

Resume execution of an approved intent. Runs the remaining pipeline steps (budget check, execute, audit).

Error Handling

import { KeylessAI, KeylessError } from '@keylessai/sdk';

try {
  const result = await keyless.execute({
    action: 'ads.budget_increase',
    amount: 50000,
  });
} catch (err) {
  if (err instanceof KeylessError) {
    console.error(err.statusCode); // 403, 409, 422, etc.
    console.error(err.code);       // 'BUDGET_EXCEEDED', 'POLICY_DENIED', etc.
    console.error(err.message);    // Human-readable error
  }
}

Error Codes

CodeHTTPDescription
POLICY_DENIED403Action denied by policy engine
BUDGET_EXCEEDED422Insufficient budget remaining
DUPLICATE_EXECUTION409Idempotency key already used
INTENT_LOCKED409Intent already being executed
APPROVAL_EXPIRED410Approval window has expired
AGENT_INACTIVE403Agent is disabled or not found
RATE_LIMITED429Too many requests