picoclaw/pkg/agent
maxiaoyang 7129c97dd2 feat(agent): plumb sender ID through user message persistence
Connects the inbound SenderID, which was already carried end-to-end via
InboundContext to PromptBuildRequest, into the per-turn user message so
historical messages remember who said what.

- userPromptMessage gains a senderID parameter. Real human IDs are
  sanitized via SanitizeMessageName; synthetic triggers (cron,
  heartbeat, async:*) are filtered out via IsSystemSenderID so they
  do not surface as distinct users.

- pipeline_setup.go now passes ts.opts.Dispatch.SenderID() and uses
  AddFullMessage unconditionally. The previous AddMessage(role,
  content) shortcut for media-less turns silently dropped the new
  Name field, breaking history disambiguation.

- context.go (BuildMessagesFromPrompt) propagates req.SenderID onto
  the current-turn user message that goes to the LLM.

After this commit, sessions persist sender attribution and provider
adapters receive it on each user message. Adapters that consume Name
(OpenAI native field, Anthropic-style content prefix) land in
follow-up commits.

The existing "## Current Sender" block in buildDynamicContext is
unchanged; it continues to describe the latest speaker in the system
prompt while Name covers the per-message channel for history.

Refs #2702.
2026-04-29 21:02:59 +08:00
..
adapters refactor(agent): Agent Looper refactor phase2, restructure pipeline and rename loop files to agent (#2585) 2026-04-21 10:55:50 +08:00
interfaces refactor(agent): Agent Looper refactor phase2, restructure pipeline and rename loop files to agent (#2585) 2026-04-21 10:55:50 +08:00
agent.go feat(pico): add support for tool_calls in chat messages 2026-04-25 23:43:10 +08:00
agent_command.go feat(commands): add MCP slash commands and tool details 2026-04-21 11:01:04 +02:00
agent_event.go refactor(agent): Agent Looper refactor phase2, restructure pipeline and rename loop files to agent (#2585) 2026-04-21 10:55:50 +08:00
agent_init.go feat(config): wire serial tool into runtime and dashboard 2026-04-28 12:56:27 +08:00
agent_inject.go refactor(agent): Agent Looper refactor phase2, restructure pipeline and rename loop files to agent (#2585) 2026-04-21 10:55:50 +08:00
agent_mcp.go feat(agent): migrate tool prompts to capability slots 2026-04-24 19:36:46 +08:00
agent_mcp_test.go fix(mcp): surface MCP init failures to command handlers 2026-04-21 11:01:04 +02:00
agent_media.go feat(web): download files on frontend (#2563) 2026-04-22 11:28:04 +08:00
agent_message.go refactor(agent): Agent Looper refactor phase2, restructure pipeline and rename loop files to agent (#2585) 2026-04-21 10:55:50 +08:00
agent_outbound.go fix(tool-feedback): dedupe duplicate content and keep full explanations 2026-04-26 00:40:55 +08:00
agent_steering.go refactor(agent): Agent Looper refactor phase2, restructure pipeline and rename loop files to agent (#2585) 2026-04-21 10:55:50 +08:00
agent_test.go feat(agent): plumb sender ID through user message persistence 2026-04-29 21:02:59 +08:00
agent_transcribe.go refactor(agent): Agent Looper refactor phase2, restructure pipeline and rename loop files to agent (#2585) 2026-04-21 10:55:50 +08:00
agent_utils.go fix(tool-feedback): dedupe duplicate content and keep full explanations 2026-04-26 00:40:55 +08:00
context.go feat(agent): plumb sender ID through user message persistence 2026-04-29 21:02:59 +08:00
context_budget.go feat(seahorse): implement short-term memory engine (LCM) (#2285) 2026-04-05 09:05:16 +08:00
context_budget_test.go feat(seahorse): implement short-term memory engine (LCM) (#2285) 2026-04-05 09:05:16 +08:00
context_cache_test.go feat(web): support image messages in pico chat (#2299) 2026-04-03 14:15:20 +08:00
context_legacy.go merge: integrate main seahorse context changes 2026-04-13 23:02:38 +08:00
context_manager.go feat(agent): /clear now clears seahorse DB in addition to JSONL 2026-04-13 11:04:45 +08:00
context_manager_test.go feat(agent): /clear now clears seahorse DB in addition to JSONL 2026-04-13 11:04:45 +08:00
context_seahorse.go feat(agent): /clear now clears seahorse DB in addition to JSONL 2026-04-13 11:04:45 +08:00
context_seahorse_test.go feat(seahorse): implement short-term memory engine (LCM) (#2285) 2026-04-05 09:05:16 +08:00
context_seahorse_unsupported.go fix(agent): disable seahorse context manager on freebsd/arm (#2417) 2026-04-08 10:57:22 +08:00
context_test.go fix(agent): preserve reused tool call IDs across turns (#2528) 2026-04-15 20:18:09 +08:00
context_usage.go feat(agent): add context usage ring indicator and /context command (#2537) 2026-04-21 16:30:02 +08:00
definition.go merge: resolve conflicts between refactor/agent and main 2026-03-22 19:21:58 +08:00
definition_test.go merge: resolve conflicts between refactor/agent and main 2026-03-22 19:21:58 +08:00
dispatch_request.go fix(session): address review regressions 2026-04-13 22:51:44 +08:00
dispatch_request_test.go fix(session): address review regressions 2026-04-13 22:51:44 +08:00
eventbus.go merge: resolve conflicts between refactor/agent and main 2026-03-22 19:21:58 +08:00
eventbus_test.go Merge branch 'main' into refactor-inbound-context-routing-session 2026-04-07 21:41:02 +08:00
events.go Merge branch 'main' into refactor-inbound-context-routing-session 2026-04-07 21:41:02 +08:00
hook_mount.go merge: resolve conflicts between refactor/agent and main 2026-03-22 19:21:58 +08:00
hook_mount_test.go Merge branch 'main' into version 2026-03-23 10:54:08 +08:00
hook_process.go Feat/support isolation (#2423) 2026-04-08 18:15:42 +08:00
hook_process_test.go Feat/support isolation (#2423) 2026-04-08 18:15:42 +08:00
hooks.go Merge pull request #2666 from afjcjsbx/fix/mcp-nil-arguments 2026-04-25 11:38:48 +08:00
hooks_test.go Merge pull request #2666 from afjcjsbx/fix/mcp-nil-arguments 2026-04-25 11:38:48 +08:00
instance.go refactor: support explicit provider field in model list entries (#2609) 2026-04-22 11:28:47 +08:00
instance_test.go refactor: support explicit provider field in model list entries (#2609) 2026-04-22 11:28:47 +08:00
llm_media.go refactor: make agent loop support parallel and update docs 2026-04-16 14:43:15 +08:00
memory.go refactor(modernize): apply safe modernize fixes 2026-02-27 16:35:07 +08:00
mock_provider_test.go feat(fmt): Fix formatting 2026-02-19 22:05:15 +02:00
model_resolution.go refactor: support explicit provider field in model list entries (#2609) 2026-04-22 11:28:47 +08:00
pipeline.go refactor(agent): Agent Looper refactor phase2, restructure pipeline and rename loop files to agent (#2585) 2026-04-21 10:55:50 +08:00
pipeline_execute.go fix(tool-feedback): dedupe duplicate content and keep full explanations 2026-04-26 00:40:55 +08:00
pipeline_finalize.go fix(reasoning): persist canonical history for DeepSeek and web chat 2026-04-24 21:45:41 +08:00
pipeline_llm.go fix(tool-feedback): dedupe duplicate content and keep full explanations 2026-04-26 00:40:55 +08:00
pipeline_setup.go feat(agent): plumb sender ID through user message persistence 2026-04-29 21:02:59 +08:00
prompt.go feat(agent): migrate tool prompts to capability slots 2026-04-24 19:36:46 +08:00
prompt_contributors.go feat(agent): migrate tool prompts to capability slots 2026-04-24 19:36:46 +08:00
prompt_test.go fix(agent): preserve prompt hook and cache semantics 2026-04-25 01:25:17 +08:00
prompt_turn.go feat(agent): plumb sender ID through user message persistence 2026-04-29 21:02:59 +08:00
prompt_turn_test.go feat(agent): plumb sender ID through user message persistence 2026-04-29 21:02:59 +08:00
registry.go refactor(runtime): drop non-session legacy context compatibility 2026-04-01 20:56:48 +08:00
registry_test.go refactor Config to add Version and migratable 2026-03-12 13:52:55 +08:00
steering.go feat(agent): add structured prompt layering 2026-04-24 18:14:28 +08:00
steering_test.go refactor: make agent loop support parallel and update docs 2026-04-16 14:43:15 +08:00
subturn.go fix(reasoning): persist canonical history for DeepSeek and web chat 2026-04-24 21:45:41 +08:00
subturn_test.go Feat(channels): unify animated tool feedback across chat channels and Pico (#2622) 2026-04-23 10:35:50 +08:00
thinking.go feat: add extended thinking support for Anthropic models (#1076) 2026-03-05 09:51:18 +08:00
thinking_test.go feat: add extended thinking support for Anthropic models (#1076) 2026-03-05 09:51:18 +08:00
turn_context.go refactor(session): replace dm scope with dimensions policy 2026-04-01 17:19:50 +08:00
turn_coord.go feat(agent): add structured prompt layering 2026-04-24 18:14:28 +08:00
turn_coord_test.go fix(tools): improve web search provider fallback (#2629) 2026-04-23 15:39:16 +08:00
turn_state.go feat(agent): add structured prompt layering 2026-04-24 18:14:28 +08:00