Packages
@loop-engine/actors
@loop-engine/actors models all five actor categories and provides transition authorization + evidence utilities.
Install
1npm install @loop-engine/actorsActor types
1interface HumanActor extends ActorRef {2 type: "human"3 sessionId: string4}5 6interface AutomationActor extends ActorRef {7 type: "automation"8 serviceId: string9}10 11interface AIAgentActor extends ActorRef {12 type: "ai-agent"13 agentId: string14 gatewaySessionId: string15 recommendedBy?: string16}17 18interface WebhookActor extends ActorRef {19 type: "webhook"20 source: string21}22 23interface SystemActor extends ActorRef {24 type: "system"25}Authorization
1canActorExecuteTransition(2 actor: Actor,3 transition: TransitionSpec,4 constraints?: AIActorConstraints5): { authorized: boolean; requiresApproval: boolean; reason?: string }canActorExecuteTransition() validates transition.allowedActors and optional AI safety constraints (requiresHumanApprovalFor, maxConsecutiveAITransitions, and canExecuteTransitions).
1import { canActorExecuteTransition } from "@loop-engine/actors"2 3const auth = canActorExecuteTransition(agentActor, transition)4if (!auth.authorized) {5 console.log(auth.reason)6}Evidence building
1buildActorEvidence(actor: Actor, baseEvidence: Evidence): EvidenceThe helper always adds:
actor_typeactor_id
For ai-agent it also adds ai_agent_id and preserves ai_confidence and ai_reasoning when present.
1import { buildActorEvidence } from "@loop-engine/actors"2 3const evidence = buildActorEvidence(aiActor, {4 ai_confidence: 0.82,5 ai_reasoning: "Demand spike at DC-East",6 recommended_qty: 5007})