mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-06-12 16:56:02 +00:00
refactor(agent-runner): remove host context windowing
This commit is contained in:
@@ -114,6 +114,9 @@ class ConfigMigration:
|
||||
if old_runner_name:
|
||||
old_config = ai_config.get(old_runner_name, {})
|
||||
if old_config:
|
||||
old_config = dict(old_config)
|
||||
if runner_id == OLD_RUNNER_TO_PLUGIN_RUNNER_ID['local-agent']:
|
||||
old_config.pop('max-round', None)
|
||||
return ConfigMigration.normalize_runner_config_for_migration(runner_id, old_config)
|
||||
|
||||
return {}
|
||||
|
||||
@@ -296,8 +296,6 @@ class AgentRunContextBuilder:
|
||||
adapter_context = {
|
||||
'query_id': None,
|
||||
'pipeline_uuid': binding.pipeline_uuid,
|
||||
'max_round': binding.max_round, # For reference only
|
||||
'adapter_messages': [],
|
||||
'extra': {},
|
||||
}
|
||||
|
||||
@@ -316,7 +314,7 @@ class AgentRunContextBuilder:
|
||||
'state': state,
|
||||
'runtime': runtime,
|
||||
'config': binding.runner_config,
|
||||
'bootstrap': None, # Optional - no messages inlined by default
|
||||
'bootstrap': None,
|
||||
'adapter': adapter_context,
|
||||
'metadata': {}, # Additional metadata
|
||||
}
|
||||
|
||||
@@ -11,7 +11,6 @@ from sqlalchemy.ext.asyncio import AsyncEngine, AsyncSession
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
|
||||
from ...entity.persistence.event_log import EventLog
|
||||
from ...entity.persistence.transcript import Transcript
|
||||
|
||||
|
||||
class EventLogStore:
|
||||
|
||||
@@ -8,8 +8,6 @@ import typing
|
||||
import pydantic
|
||||
|
||||
from langbot_plugin.api.entities.builtin.agent_runner.event import (
|
||||
AgentEventContext,
|
||||
ConversationContext,
|
||||
ActorContext,
|
||||
SubjectContext,
|
||||
RawEventRef,
|
||||
@@ -172,6 +170,3 @@ class AgentBinding(pydantic.BaseModel):
|
||||
# Fields for Pipeline adapter
|
||||
pipeline_uuid: str | None = None
|
||||
"""Pipeline UUID (for Pipeline adapter)."""
|
||||
|
||||
max_round: int | None = None
|
||||
"""max-round (for Pipeline adapter bootstrap, not Protocol v1)."""
|
||||
|
||||
@@ -133,16 +133,6 @@ class AgentRunOrchestrator:
|
||||
# Merge prompt into adapter.extra for Pipeline adapter consumers.
|
||||
if 'prompt' in adapter_context:
|
||||
context['adapter']['extra']['prompt'] = adapter_context['prompt']
|
||||
# Merge bootstrap if provided
|
||||
if adapter_context.get('bootstrap'):
|
||||
context['bootstrap'] = adapter_context['bootstrap']
|
||||
# Also expose the bootstrap window through adapter metadata.
|
||||
bootstrap_messages = adapter_context['bootstrap'].get('messages')
|
||||
if bootstrap_messages:
|
||||
context['adapter']['adapter_messages'] = bootstrap_messages
|
||||
# Merge runtime metadata if provided
|
||||
if adapter_context.get('runtime_metadata'):
|
||||
context['runtime']['metadata'].update(adapter_context['runtime_metadata'])
|
||||
# Set query_id if provided
|
||||
if adapter_context.get('query_id'):
|
||||
context['runtime']['query_id'] = adapter_context['query_id']
|
||||
|
||||
@@ -29,7 +29,6 @@ from .host_models import (
|
||||
DeliveryPolicy,
|
||||
)
|
||||
from . import events as runner_events
|
||||
from ...pipeline.msgtrun.round_policy import select_max_round_messages
|
||||
|
||||
|
||||
class PipelineAdapter:
|
||||
@@ -38,7 +37,6 @@ class PipelineAdapter:
|
||||
This adapter is responsible for:
|
||||
- Converting Query to AgentEventEnvelope
|
||||
- Converting Pipeline config to temporary AgentBinding
|
||||
- Handling max-round as bootstrap policy
|
||||
- Putting Query-only fields into adapter context
|
||||
"""
|
||||
|
||||
@@ -118,10 +116,6 @@ class PipelineAdapter:
|
||||
runner_config = ai_config.get('runner_config', {}).get(runner_id, {})
|
||||
pipeline_uuid = getattr(query, 'pipeline_uuid', None)
|
||||
|
||||
# Extract max_round for adapter (used in bootstrap, not Protocol v1)
|
||||
# Note: config uses 'max-round' with hyphen, not 'max_round' with underscore
|
||||
max_round = runner_config.get('max-round') or ai_config.get('max-round')
|
||||
|
||||
# Build scope
|
||||
scope = BindingScope(
|
||||
scope_type="pipeline",
|
||||
@@ -158,45 +152,8 @@ class PipelineAdapter:
|
||||
delivery_policy=delivery_policy,
|
||||
enabled=True,
|
||||
pipeline_uuid=pipeline_uuid,
|
||||
max_round=max_round,
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def build_bootstrap_context(
|
||||
cls,
|
||||
query: pipeline_query.Query,
|
||||
binding: AgentBinding,
|
||||
) -> tuple[dict[str, typing.Any] | None, dict[str, typing.Any]]:
|
||||
"""Build bootstrap messages and runtime metadata for Pipeline max-round."""
|
||||
max_round = binding.max_round
|
||||
source_messages = query.messages or []
|
||||
if not max_round or max_round <= 0 or not source_messages:
|
||||
return None, {}
|
||||
|
||||
packaged_messages = select_max_round_messages(source_messages, max_round)
|
||||
bootstrap_messages = [cls._dump_message(msg) for msg in packaged_messages]
|
||||
bootstrap = {
|
||||
"messages": bootstrap_messages,
|
||||
"summary": None,
|
||||
"artifacts": [],
|
||||
"metadata": {},
|
||||
}
|
||||
runtime_metadata = {
|
||||
'context_packaging': {
|
||||
'policy': {
|
||||
'mode': 'max_round',
|
||||
'max_round': max_round,
|
||||
},
|
||||
'history': {
|
||||
'source': 'query.messages',
|
||||
'source_total_count': len(source_messages),
|
||||
'delivered_count': len(packaged_messages),
|
||||
'messages_complete': len(packaged_messages) == len(source_messages),
|
||||
},
|
||||
},
|
||||
}
|
||||
return bootstrap, runtime_metadata
|
||||
|
||||
@classmethod
|
||||
def build_adapter_context(
|
||||
cls,
|
||||
@@ -204,13 +161,10 @@ class PipelineAdapter:
|
||||
binding: AgentBinding,
|
||||
) -> dict[str, typing.Any]:
|
||||
"""Build Query-derived fields for the Pipeline adapter entry."""
|
||||
bootstrap, runtime_metadata = cls.build_bootstrap_context(query, binding)
|
||||
return {
|
||||
'params': cls.build_params(query),
|
||||
'prompt': cls.build_prompt(query),
|
||||
'bootstrap': bootstrap,
|
||||
'query_id': getattr(query, 'query_id', None),
|
||||
'runtime_metadata': runtime_metadata,
|
||||
}
|
||||
|
||||
@classmethod
|
||||
|
||||
Reference in New Issue
Block a user