@aerovato/operator-helper 1.1.2 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,6 +3,7 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import asyncio
6
+ import importlib.metadata
6
7
  import os
7
8
  import subprocess
8
9
  import threading
@@ -27,6 +28,7 @@ from pydantic_ai.settings import ModelSettings
27
28
 
28
29
  _MARKER_KEY = "operator_memory"
29
30
  _MARKER_VALUE = "synthetic-preamble-v1"
31
+ _MODEL_MESSAGE_TRANSFORM_VERSION = (0, 0, 753)
30
32
 
31
33
  try:
32
34
  from code_puppy.callbacks import CustomCommandResult
@@ -120,6 +122,12 @@ async def _inject_preamble(
120
122
  return transformed
121
123
 
122
124
 
125
+ async def _transform_model_messages(
126
+ _agent_name: str | None, messages: list[ModelMessage]
127
+ ) -> None:
128
+ messages[:] = await _inject_preamble(messages, _conversation_key())
129
+
130
+
123
131
  def _is_operator_request(message: ModelMessage) -> bool:
124
132
  return (
125
133
  isinstance(message, ModelRequest)
@@ -200,6 +208,31 @@ def _conversation_key() -> str:
200
208
  return get_conversation_root_id() or get_current_session_name()
201
209
 
202
210
 
211
+ def _installed_code_puppy_version() -> str | None:
212
+ try:
213
+ return importlib.metadata.version("code-puppy")
214
+ except Exception:
215
+ return None
216
+
217
+
218
+ def _supports_model_message_transform(version: str | None) -> bool:
219
+ if version is None:
220
+ return False
221
+ release = version.partition("+")[0].partition("-")[0]
222
+ try:
223
+ parts = tuple(int(part) for part in release.split("."))
224
+ except ValueError:
225
+ return False
226
+ return parts >= _MODEL_MESSAGE_TRANSFORM_VERSION
227
+
228
+
229
+ def _register_preamble_injection(version: str | None) -> None:
230
+ if _supports_model_message_transform(version):
231
+ register_callback("transform_model_messages", _transform_model_messages)
232
+ else:
233
+ register_callback("agent_run_context", _agent_run_context)
234
+
235
+
203
236
  @asynccontextmanager
204
237
  async def _agent_run_context(
205
238
  _agent: Any, pydantic_agent: Any, _group_id: str, _mcp_servers: Any
@@ -400,7 +433,7 @@ async def _agent_run_end(*_args: Any) -> None:
400
433
  _paint_status_indicator("")
401
434
 
402
435
 
403
- register_callback("agent_run_context", _agent_run_context)
436
+ _register_preamble_injection(_installed_code_puppy_version())
404
437
  register_callback("session_end", _session_end)
405
438
  if CustomCommandResult is not None:
406
439
  register_callback("custom_command", _custom_command)
package/dist/index.js CHANGED
@@ -34845,7 +34845,7 @@ function resolveAnnotationsKey(schema) {
34845
34845
  // package.json
34846
34846
  var package_default = {
34847
34847
  name: "@aerovato/operator-helper",
34848
- version: "1.1.2",
34848
+ version: "1.1.3",
34849
34849
  description: "Installation and setup CLI for Operator Memory",
34850
34850
  license: "BSD-3-Clause",
34851
34851
  author: "Aerovato Research",
@@ -37222,4 +37222,4 @@ var main = exports_Effect.gen(function* () {
37222
37222
  }).pipe(exports_Effect.provide(LiveLayers));
37223
37223
  exports_NodeRuntime.runMain(main);
37224
37224
 
37225
- //# debugId=147551837CB2B98A64756E2164756E21
37225
+ //# debugId=F6ABA7C1681E462E64756E2164756E21