Documentation

Agents

11 behaviors · std/behaviors

On this page

atoms

std-agent-completion

takes a prompt, returns generated text.

lolo
1 uses AgentCompletion from "std/behaviors/std-agent-completion"

Entity: Completion (runtime)

Traits

Traiteventsemits
CompletionGenerationGENERATE, GENERATION_FAILED, RESETCOMPLETED, GENERATED
CompletionReadyCOMPLETED, RESETnone

std-agent-context

keeps what an in-app assistant sends the model bounded. COMPACT { messages } passes a conversation of at most keepMessages turns straight through as COMPACTED; a longer one has its older turns summarized with call-service llm summarize into one leading note and keeps the last keepMessages turns verbatim. If summarizing fails, the older turns are dropped and the recent ones still go through, with a visible warning — a summarizer outage never blocks the assistant. Headless. Nothing is persisted: the conversation itself lives in std-agent-session.

lolo
1 uses AgentContext from "std/behaviors/std-agent-context"

Entity: AgentContextWindow (runtime)

Traits

Traiteventsemits
AgentContextCompactorCOMPACTCOMPACTED, ContextSummarized, ContextSummarizeFailed

Config knobs

TraitKnobTypeLabel
AgentContextCompactorkeepMessagesnumberTurns kept verbatim

std-agent-fix-loop

validate an orbital, generate a repair prompt if errors, apply fix.

lolo
1 uses AgentFixLoop from "std/behaviors/std-agent-fix-loop"

Entity: FixLoop (runtime)

Traits

Traiteventsemits
FixLoopExecutionVALIDATE_ORBITAL, PROMPT_GENERATION_FAILED, RESETFIX_APPLIED, PROMPT_GENERATED
FixLoopListenerFIX_APPLIED, RESETnone

std-agent-memory

what an in-app assistant remembers across conversations. Owns AgentMemory rows (content + its embedding, ownerId = the real @user). RECALL { messages } embeds the last turn with call-service llm embed, ranks the stored memories whose embedding is comparable (same length as the query's) by cosine similarity and emits RECALLED { messages, context } with the closest recallLimit memories joined into one context string (empty when nothing is stored); if embedding fails it emits RECALLED with an empty context, so a memory outage never blocks the assistant. REMEMBER { reply } stores the exchange it just recalled for (asked + answered) with its embedding. AgentMemoryRecall is headless (failures show as toasts); AgentMemoryBrowse is the list view. Rows are meant to be private to their owner: the binding organism declares the @read scoping.

lolo
1 uses AgentMemory from "std/behaviors/std-agent-memory"

Entity: AgentMemory (persistent)

Traits

Traiteventsemits
AgentMemoryRecallLIST, RECALL, REMEMBERRECALLED, ASSISTANT_MEMORIES_LOADED, MemoriesForList, MemoryListFailed, MEMORY_STORED, AgentMemoriesLoadFailed, MemoriesForRecall, MemoryEmbedded, MemoryEmbedFailed
AgentMemoryBrowseMEMORY_STOREDAgentMemoriesLoaded, AgentMemoriesLoadFailed

Config knobs

TraitKnobTypeLabel
AgentMemoryRecallrecallLimitnumberMemories recalled per request

std-agent-planner

recall memories, then generate a plan from the prompt + recalled context.

lolo
1 uses AgentPlanner from "std/behaviors/std-agent-planner"

Entity: PlannerPlan (runtime)

Traits

Traiteventsemits
PlannerExecutionPLAN, RECALL_FAILED, PLAN_GENERATION_FAILED, RESETPLANNED, MEMORIES_RECALLED, PLAN_GENERATED
PlannerListenerPLANNED, RESETnone

std-agent-session

the conversation with an in-app assistant. AgentThread owns the persisted AgentMessage rows (role, content, ownerId stamped with the real @user, createdAt): SEND stores the user's message, reloads the thread and emits CONVERSE with the whole conversation, oldest first, for std-agent-tool-loop to answer; REPLIED stores the reply. AgentConversation is what the user sees, in the browser: the thread as chat bubbles with every step the assistant takes interleaved live (STEP: each model call, each tool it used and what the app answered), a thinking row while it works, and a chat bar. The two talk over the assistant contract, from any orbital: AgentConversation emits ASSISTANT_SEND and hears AgentMessagesLoaded, ASSISTANT_THREAD_FAILED, ASSISTANT_STEP, ASSISTANT_REPLIED and ASSISTANT_REPLY_FAILED; AgentThread hears ASSISTANT_SEND. So a conversation placed on any section's page reaches the app's one assistant (std-agent-assistant) with no wiring. Rows are meant to be private to their owner: owner-scoped access needs an [identity] roster, so the binding organism declares the @read/@create scoping on AgentMessage — this generic atom cannot.

lolo
1 uses AgentSession from "std/behaviors/std-agent-session"

Entity: AgentMessage (persistent)

Traits

Traiteventsemits
AgentThreadOPEN_CHAT, SEND_IN_CHAT, REPLY_IN_CHATASSISTANT_THREAD_FAILED, CONVERSE, AgentMessagesLoaded, AgentMessagesLoadFailed, AgentConversationLoaded, AgentMessageSaved, AgentMessageSaveFailed
AgentConversationTHREAD_LOADED, STEP, REPLIED, CHATS_LISTED, MEMORIES_LISTED, BACK_TO_CHAT, REPLY_FAILEDASSISTANT_HISTORY_REQUESTED, ASSISTANT_NEW_CHAT, NEW_CHAT_CLICKED, ASSISTANT_SEND, ASSISTANT_CHATS_REQUESTED, ASSISTANT_CHAT_SELECTED, ASSISTANT_MEMORIES_REQUESTED, OPEN_CHATS_CLICKED, OPEN_MEMORY_CLICKED, CHAT_PICKED, ASK

Config knobs

TraitKnobTypeLabel
AgentConversationbackLabelstringBack to the conversation
AgentConversationchatsEmptyTitlestringEmpty conversation list
AgentConversationchatsLabelstringPast conversations button
AgentConversationemptyTitlestringEmpty conversation title
AgentConversationlinks[AgentLink]Links above the conversation
AgentConversationmemoryEmptyTitlestringEmpty memory list
AgentConversationmemoryLabelstringMemory button
AgentConversationnewChatLabelstringNew conversation button
AgentConversationplaceholderstringMessage placeholder
AgentConversationuntitledLabelstringTitle of a conversation with no messages yet

std-agent-tool-call

takes messages + tools, returns tool-call result.

lolo
1 uses AgentToolCall from "std/behaviors/std-agent-tool-call"

Entity: ToolCall (runtime)

Traits

Traiteventsemits
ToolCallExecutionCALL_TOOLS, TOOLS_FAILED, RESETTOOLS_CALLED
ToolCallReadyTOOLS_CALLED, RESETnone

std-agent-tool-loop

answers a conversation by operating the running app as the caller, through call-service llm call-tools. Its tools are { scope: declared } (every declared external input plus a read over every persisted entity), or named declared inputs (addressed like a listens source: Trait.EVENT, Orbital.Trait.EVENT) and entities to read; each input fires as the signed-in user through the ordinary dispatch (guards and entity policies apply) and each read returns only the rows the caller may read. Headless: the conversation UI (std-agent-session) shows the reply; a failure shows as a toast. CONVERSE carries the conversation (and optionally what std-agent-memory recalled); ASSISTANT_STEP carries each step live while it works (a model call, a tool it used, what the app answered) to the asking tab; ASSISTANT_REPLIED carries the reply, every step and the token usage; ASSISTANT_REPLY_FAILED carries the error. These names are the assistant contract std-agent-session's conversation hears from any orbital. Compose with std-agent-session (the conversation) and std-agent-trace (the step record).

lolo
1 uses AgentToolLoop from "std/behaviors/std-agent-tool-loop"

Entity: AgentTurn (runtime)

Traits

Traiteventsemits
AgentToolLoopCONVERSEASSISTANT_STEP, ASSISTANT_REPLIED, ASSISTANT_REPLY_FAILED, ANSWERED, ASK_FAILED

Config knobs

TraitKnobTypeLabel
AgentToolLoopinstructionsstringHow should the assistant behave?
AgentToolLoopmaxStepsnumberModel round-trips per request
AgentToolLooptools[AgentTool]What may the assistant do?

std-agent-trace

the persisted record of what an in-app assistant did. Each REPLIED (from std-agent-tool-loop) stores one AgentRun row: the reply, every step (each model call, each tool used with its arguments, whether it took effect and why not), the tokens and the model calls; each REPLY_FAILED stores a failed run with its error. The record verification grades and later optimisation reads, in one format for tests and production. AgentTraceRecorder is headless; AgentRunBrowse is the run list. Rows carry ownerId (the real @user); the binding organism scopes @read.

lolo
1 uses AgentTrace from "std/behaviors/std-agent-trace"

Entity: AgentRun (persistent)

Traits

Traiteventsemits
AgentTraceRecorderREPLIED, REPLY_FAILEDRUN_RECORDED
AgentRunBrowseRUN_RECORDEDAgentRunsLoaded, AgentRunsLoadFailed

organisms

std-agent-assistant

an in-app assistant that operates the running app for the signed-in user. Each section's floating button opens it in a side panel docked beside the page (std-panel-launcher; a side sheet on small screens), where the conversation shows every step the assistant takes live as it works; /assistant is the same conversation as a full page, in the app's own shell (pass appName and navItems); past conversations and what the assistant remembers open in place from its toolbar (Back returns to the chat), on either surface. One request flows down a chain of std agent atoms on the bus: the conversation (std-agent-session) SENDs → CONVERSE → std-agent-context bounds it → std-agent-memory adds what it recalls → std-agent-tool-loop answers it through call-service llm call-tools, firing only the inputs and reading only the entities its tools allow, as the signed-in user → ASSISTANT_REPLIED goes back to the conversation, to memory (remembered) and to std-agent-trace (the run record). By default the tools are the program's own declarations: every -> external input (its @description is the tool text) and a read over every persisted entity, so composing building blocks composes the assistant's abilities. Any section's page gets the assistant with two traits, XAssistant = AgentSession.traits.AgentConversation and a std-panel-launcher dock: the conversation speaks the ASSISTANT_* contract from any orbital, so the assistant needs no per-section wiring. Import the orbital once per app: orbital Assistant = Agent.orbitals.AgentAssistantOrbital { config { instructions: "…" } }. The conversation, memory and run records live in AgentRecordsOrbital; retarget them onto your own owner-scoped entities (ownerId a relation to your [identity] roster, with @read/@create) with entities { AgentMessage: …, AgentMemory: …, AgentRun: …, AgentChat: … }. The conversation is kept across pages and reloads (each person's most recently used conversation is the current one);

lolo
1 uses AgentAssistant from "std/behaviors/std-agent-assistant"

Entity: AgentAssistant (runtime)

Traits

Traiteventsemits
AssistantThreadnonenone
AssistantChatKeepernonenone
AssistantConversationnonenone
AssistantLayoutnonenone
AssistantContextnonenone
AssistantMemorynonenone
AssistantLoopnonenone
AssistantTracenonenone

Config knobs

TraitKnobTypeLabel
AssistantConversationbackLabelstringBack to the conversation
AssistantConversationchatsEmptyTitlestringEmpty conversation list
AssistantConversationchatsLabelstringPast conversations button
AssistantConversationemptyTitlestringEmpty conversation title
AssistantConversationlinks[AgentLink]Links above the conversation
AssistantConversationmemoryEmptyTitlestringEmpty memory list
AssistantConversationmemoryLabelstringMemory button
AssistantConversationnewChatLabelstringNew conversation button
AssistantConversationplaceholderstringMessage placeholder
AssistantConversationuntitledLabelstringTitle of a conversation with no messages yet
AssistantLayoutaccessDeniedDescriptionstringAccess-denied message
AssistantLayoutaccessDeniedTitlestringAccess-denied title
AssistantLayoutallowedRoles[string]Who may open this page?
AssistantLayoutappNamestringWhat should this app be called?
AssistantLayoutcontentClassNamestringContent wrapper class
AssistantLayoutcontentTraittraitContent trait
AssistantLayoutcurrentPathstringCurrent path
AssistantLayoutlayoutModestringWhere should navigation be placed?
AssistantLayoutlayoutPatternpatternLayout pattern
AssistantLayoutnavItems[NavItem]Which sections appear in the sidebar?
AssistantLayoutnotificationClickEventeventNotification click event
AssistantLayoutnotifications[NotificationSpec]What notifications should appear?
AssistantLayoutsearchEventeventSearch event
AssistantLayoutsidebarTraittraitSidebar trait
AssistantLayoutthemestringTheme
AssistantLayouttopBarActions[ItemAction]What shortcuts go in the top bar?
AssistantLayoutviewerAvatarstringSigned-in avatar
AssistantLayoutviewerEmailstringSigned-in email
AssistantLayoutviewerNamestringWho is signed in
AssistantLayoutviewerRolestringViewer's role
AssistantContextkeepMessagesnumberTurns kept verbatim
AssistantMemoryrecallLimitnumberMemories recalled per request
AssistantLoopinstructionsstringHow should the assistant behave?
AssistantLoopmaxStepsnumberModel round-trips per request
AssistantLooptools[AgentTool]What may the assistant do?

std-agent-builder

plan, build, validate, fix a single orbital end-to-end.

lolo
1 uses AgentBuilder from "std/behaviors/std-agent-builder"

Entity: BuilderProcess (runtime)

Traits

Traiteventsemits
BuilderPipelineSTART, PLAN_FAILED, RESET, RETRYBUILD_COMPLETE, PLANNED
BuilderListenerBUILD_COMPLETE, RESETnone
Orb

The language where the rule is the program.

© 2026 Almadar. Ljubljana, Slovenia.