harn-stdlib 0.10.93

Embedded Harn standard library source catalog
Documentation
import {
  ToolPermissionDecider,
  ToolPermissionGrantExpiry,
  ToolPermissionGrantScope,
  ToolPermissionOutcome,
  ToolPermissionPolicyLayer,
  ToolPermissionPolicyOutcome,
} from "std/activity/vocabulary"

/** Value-free semantic scope derived only from registered tool annotations. */
pub type ToolPermissionScope = {tool_kind: string, side_effect: string, capabilities: list<string>}

pub type ToolPermissionPolicyEvidence = {
  layer: ToolPermissionPolicyLayer,
  outcome: ToolPermissionPolicyOutcome,
  rule_id?: string,
  risk_labels: list<string>,
}

/** Evidence about a grant, never the reusable grant itself. */
pub type ToolPermissionGrantEvidence = {
  scope: ToolPermissionGrantScope,
  expires: ToolPermissionGrantExpiry,
  reusable: bool,
}

/** Value-free decision metadata returned by a native approval host. */
pub type ToolPermissionDecisionMetadata = {
  schema: "harn.tool_permission_decision.v1",
  outcome: ToolPermissionOutcome,
  decider: ToolPermissionDecider,
  policy_evaluations: list<ToolPermissionPolicyEvidence>,
  grant_scope?: ToolPermissionGrantScope,
}

pub type ToolPermissionRequester = {
  session_id: string,
  agent_id?: string,
  model_provider?: string,
  model_id?: string,
}

/**
 * Portable generic-tool decision record.
 *
 * Raw arguments, stdin, environment, commands, credentials, protected values,
 * provider payloads, arbitrary context, and reusable grants have no fields in
 * this contract.
 */
pub type ToolPermissionActivityRecord = {
  schema: "harn.tool_permission_activity.v1",
  kind: "tool_permission",
  id: string,
  request_id: string,
  tool_name: string,
  scope: ToolPermissionScope,
  outcome: ToolPermissionOutcome,
  decider: ToolPermissionDecider,
  policy_evaluations: list<ToolPermissionPolicyEvidence>,
  grant?: ToolPermissionGrantEvidence,
  requester: ToolPermissionRequester,
  occurred_at_ms: int,
}