feat(agent): add persistent runtime context providers
This commit is contained in:
@@ -1,3 +1,8 @@
|
||||
from nanobot.runtime_context import (
|
||||
RUNTIME_CONTEXT_HISTORY_META,
|
||||
RuntimeContextBlock,
|
||||
append_runtime_context,
|
||||
)
|
||||
from nanobot.session.manager import Session, SessionManager
|
||||
|
||||
|
||||
@@ -425,6 +430,41 @@ def test_get_history_synthesizes_cli_app_attachment_breadcrumb():
|
||||
}]
|
||||
|
||||
|
||||
def test_get_history_does_not_duplicate_persisted_capability_runtime_context():
|
||||
content, marker = append_runtime_context(
|
||||
"please use @drawio",
|
||||
[RuntimeContextBlock(
|
||||
source="cli_apps",
|
||||
content="[Runtime Context]\nCLI App Attachment: @drawio",
|
||||
), RuntimeContextBlock(
|
||||
source="mcp",
|
||||
content="[Runtime Context]\nMCP Preset Attachment: @linear",
|
||||
)],
|
||||
)
|
||||
session = Session(key="test:cli-app-persisted")
|
||||
session.messages.append({
|
||||
"role": "user",
|
||||
"content": content,
|
||||
"cli_apps": [{
|
||||
"name": "drawio",
|
||||
"entry_point": "cli-anything-drawio",
|
||||
}],
|
||||
"mcp_presets": [{"name": "linear", "transport": "stdio"}],
|
||||
RUNTIME_CONTEXT_HISTORY_META: marker,
|
||||
})
|
||||
|
||||
model_history = session.get_history(max_messages=500)
|
||||
public_history = session.get_history(
|
||||
max_messages=500,
|
||||
include_runtime_context=False,
|
||||
)
|
||||
|
||||
assert model_history == [{"role": "user", "content": content}]
|
||||
assert model_history[0]["content"].count("CLI App Attachment: @drawio") == 1
|
||||
assert model_history[0]["content"].count("MCP Preset Attachment: @linear") == 1
|
||||
assert public_history == [{"role": "user", "content": "please use @drawio"}]
|
||||
|
||||
|
||||
def test_fork_session_before_user_index_copies_only_prefix(tmp_path):
|
||||
manager = SessionManager(tmp_path)
|
||||
source = manager.get_or_create("websocket:source")
|
||||
|
||||
Reference in New Issue
Block a user