Co-authored-by: Clément Drouin <clement.drouin@mistral.ai>
Co-authored-by: Corentin André <corentin.andre@mistral.ai>
Co-authored-by: Guillaume LE GOFF <guillaume.lgf@gmail.com>
Co-authored-by: Kim-Adeline Miguel <51720070+kimadeline@users.noreply.github.com>
Co-authored-by: Maxime Dolores <maxime.dolores@ext.mistral.ai>
Co-authored-by: Nelson PROIA <144663685+Nelson-PROIA@users.noreply.github.com>
Co-authored-by: Peter Evers <pevers90@gmail.com>
Co-authored-by: Pierre Rossinès <pierre.rossines@mistral.ai>
Co-authored-by: Quentin <quentin.torroba@mistral.ai>
Co-authored-by: Vincent G <10739306+VinceOPS@users.noreply.github.com>
Co-authored-by: MichisGitIsKing <MichisGitIsKing@users.noreply.github.com>
Co-authored-by: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
Mathias Gesbert 2026-05-19 11:56:25 +02:00 committed by GitHub
parent 626f905186
commit 228f3c65a9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
158 changed files with 7235 additions and 916 deletions

View file

@ -195,8 +195,17 @@ def _dispatch_at_mention_inserted(
)
def _dispatch_user_rating_feedback(
client: TelemetryClient, properties: dict[str, Any]
) -> None:
client.send_user_rating_feedback(
rating=properties.get("rating", 0), model=properties.get("model", "")
)
_EVENT_DISPATCHERS: dict[str, Callable[[TelemetryClient, dict[str, Any]], None]] = {
"vibe.at_mention_inserted": _dispatch_at_mention_inserted
"vibe.at_mention_inserted": _dispatch_at_mention_inserted,
"vibe.user_rating_feedback": _dispatch_user_rating_feedback,
}
@ -396,7 +405,7 @@ class VibeAcpAgentLoop(AcpAgent):
except Exception as e:
raise ConfigurationError(str(e)) from e
agent_loop.emit_new_session_telemetry()
agent_loop.start_initialize_experiments()
modes_state, _, models_state, _ = self._build_session_state(session)
@ -660,6 +669,7 @@ class VibeAcpAgentLoop(AcpAgent):
agent_loop.session_logger.resume_existing_session(
loaded_session_id, session_dir
)
await agent_loop.hydrate_experiments_from_session()
non_system_messages = [
msg for msg in loaded_messages if msg.role != Role.system
@ -862,8 +872,17 @@ class VibeAcpAgentLoop(AcpAgent):
)
def _build_text_prompt(self, acp_prompt: list[ContentBlock]) -> str:
def _is_automatic_resource(block: ContentBlock) -> bool:
return block.type == "resource" and bool(
block.field_meta and block.field_meta.get("automatic")
)
ordered = [b for b in acp_prompt if not _is_automatic_resource(b)] + [
b for b in acp_prompt if _is_automatic_resource(b)
]
text_prompt = ""
for block in acp_prompt:
for block in ordered:
separator = "\n\n" if text_prompt else ""
match block.type:
# NOTE: ACP supports annotations, but we don't use them here yet.
@ -1206,7 +1225,11 @@ class VibeAcpAgentLoop(AcpAgent):
)
return
dispatcher(session.agent_loop.telemetry_client, notification.properties)
properties = {
"model": session.agent_loop.config.active_model,
**notification.properties,
}
dispatcher(session.agent_loop.telemetry_client, properties)
@override
def on_connect(self, conn: Client) -> None: