plexus.cli.procedure.lua_dsl.primitives.session module
Session Primitive - Conversation history management.
Provides: - Session.append(role, content) - Add message to conversation - Session.inject_system(text) - Inject system message - Session.clear() - Clear conversation history - Session.history() - Get all messages as Lua table - Session.save() - Persist current session to database
- class plexus.cli.procedure.lua_dsl.primitives.session.SessionPrimitive(chat_recorder, execution_context, lua_sandbox=None)
Bases:
objectManages agent conversation history for procedures.
Enables workflows to: - Manipulate conversation context - Inject system messages - Clear history for fresh contexts - Retrieve conversation for inspection
Initialize Session primitive.
- Args:
chat_recorder: ProcedureChatRecorder for database operations execution_context: ExecutionContext for agent state access lua_sandbox: LuaSandbox for creating Lua tables (optional)
- __init__(chat_recorder, execution_context, lua_sandbox=None)
Initialize Session primitive.
- Args:
chat_recorder: ProcedureChatRecorder for database operations execution_context: ExecutionContext for agent state access lua_sandbox: LuaSandbox for creating Lua tables (optional)
- append(role: str, content: str, metadata: Dict[str, Any] | None = None) None
Add message to conversation history (in-memory only until save()).
- Args:
role: Message role (USER, ASSISTANT, SYSTEM) content: Message content metadata: Optional metadata dict
- Example (Lua):
Session.append(“USER”, “What is the weather?”) Session.append(“ASSISTANT”, “I need more information about location.”)
- clear() None
Clear conversation history (in-memory only until save()).
- Example (Lua):
Session.clear() Session.inject_system(“Fresh context”)
- count() int
Get count of messages in session.
- Returns:
Number of messages
- Example (Lua):
local msg_count = Session.count() Log.info(“Messages in session”, {count = msg_count})
- history()
Get all messages in conversation history.
- Returns:
Lua table with messages (1-indexed for Lua)
- Example (Lua):
local messages = Session.history() for i, msg in ipairs(messages) do
- Log.info(“Message”, {
role = msg.role, content = msg.content
})
end
- inject_system(text: str) None
Inject system message into conversation.
This is a convenience method for Session.append(“SYSTEM”, text)
- Args:
text: System message content
- Example (Lua):
Session.inject_system(“Focus on security implications”)
- async save() None
Persist current in-memory messages to database.
This records all queued messages via the chat recorder. Called automatically by runtime after workflow execution.
- Example (Lua):
– Not typically called from Lua - runtime handles this