by-framework 0.2.2.dev12__py3-none-any.whl → 0.2.2.dev13__py3-none-any.whl

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.
@@ -999,7 +999,7 @@ class WaitIndexSweeper:
999
999
  ),
1000
1000
  extra_payload={},
1001
1001
  error_code=error_code,
1002
- metadata={},
1002
+ metadata=dict(child.get("metadata") or {}),
1003
1003
  )
1004
1004
  return outcome if emitted else OUTCOME_UNROUTABLE
1005
1005
 
@@ -875,6 +875,11 @@ class AgentContext:
875
875
  # the reply belongs to — the resume message itself
876
876
  # describes the hop that woke it, not this dispatch.
877
877
  "task_group_id": task_group_id,
878
+ # A's original dispatch metadata, so a resumed reply
879
+ # can restore it as the base layer instead of
880
+ # inheriting whatever message last woke this
881
+ # execution up (see _resolve_reply_command).
882
+ "metadata": dict(command.header.metadata),
878
883
  "stream_name": delivery_stream,
879
884
  "status": "QUEUED",
880
885
  "route_policy": route_policy,
@@ -343,6 +343,14 @@ class GatewayWorker(ABC):
343
343
  Treating "is a resume" as "has no caller" is what used to make an
344
344
  A -> B -> C chain silently drop B's result on the floor.
345
345
 
346
+ ``header.metadata`` is restored the same way, as a full replacement
347
+ rather than a merge with the waking message's own metadata: the
348
+ waking message (an ``ask_user`` answer, or a sub-call's reply) is
349
+ transient plumbing for that hop, not something A ever sent or asked
350
+ for. If A's original metadata is missing from the snapshot (an
351
+ execution recorded before this field existed), this degrades to an
352
+ empty dict rather than leaking the waking message's metadata to A.
353
+
346
354
  A root execution's record names ``CLIENT_SOURCE_AGENT_TYPE`` as its
347
355
  source, which is a marker rather than an agent type — it has to be
348
356
  excluded explicitly, or every client-dispatched execution that ever
@@ -365,6 +373,7 @@ class GatewayWorker(ABC):
365
373
  source_agent_type=caller_agent_type,
366
374
  parent_message_id=str(snapshot.get("parent_message_id", "") or ""),
367
375
  task_group_id=str(snapshot.get("task_group_id", "") or ""),
376
+ metadata=dict(snapshot.get("metadata") or {}),
368
377
  ),
369
378
  )
370
379
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: by-framework
3
- Version: 0.2.2.dev12
3
+ Version: 0.2.2.dev13
4
4
  Summary: 分布式 Agent 调度框架
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.12
@@ -21,7 +21,7 @@ by_framework/core/registry.py,sha256=gE99tz0z8xTA6mEm4ZMT-3-iylYcVEm9Dat0suIVfq0
21
21
  by_framework/core/wait_gate.py,sha256=uiVObxVY9yaXha_YCiuG4Pj0JbbcOoCLToZoICLL3H8,8656
22
22
  by_framework/core/wait_index.py,sha256=YR_7X_OgGdiitVl2gsXDZOPFN0XwZdtu0o8fz46C27w,6001
23
23
  by_framework/core/wait_reply.py,sha256=b_KgcrdsEcNQ4OdyVzfe5IauAYgPRTLh2-f2GCKr0Ag,6668
24
- by_framework/core/wait_sweeper.py,sha256=tRGMTY_ILHoAAUATu8GzAT8e4c2IhWfAbPZPXkjaBmA,50680
24
+ by_framework/core/wait_sweeper.py,sha256=cWj5s0jfndVpM7_Fr1qqJr25HAmx2oDf6llDJJRI59s,50711
25
25
  by_framework/core/wakeup_controller.py,sha256=0v3Fr69XzIKO0fesYUPvQvsGLYt0f648Xq7XEM_jk6c,5545
26
26
  by_framework/core/workspace.py,sha256=R9mxghDh_INtPOIXHilBamAIue8jZMrlQoQRI02KSxw,3980
27
27
  by_framework/core/extensions/__init__.py,sha256=MvPh029FXvkR1Lk4bZxiq9SfzUQ57paUfoD17-whvn4,1032
@@ -89,16 +89,16 @@ by_framework/worker/_message_processing.py,sha256=rgKzJTgPVDFp_HUfMcqJBwNdTCEfsp
89
89
  by_framework/worker/app.py,sha256=UHaQZzalqfPmHvfq-XL7vlPOJ8mTm5ULIU4JpeXA85g,16319
90
90
  by_framework/worker/byai_context.py,sha256=DvKw-X8ePZr5c5osdapvzTvH4G23u0J80U-fgMLtge4,2388
91
91
  by_framework/worker/byai_worker.py,sha256=0NoRqzuTG_MPMxVbZ1ueeOrqI0H8-Adxh7dM3vckjJo,1757
92
- by_framework/worker/context.py,sha256=BnZN5dvvW67LWSuF2U-yhX_qQy2Ioucgkin_WGqpLj0,59481
92
+ by_framework/worker/context.py,sha256=5As3GcnVrwIE1nCJDDYLt_Ke8-8nzh44CzQBvyncQsU,59833
93
93
  by_framework/worker/health_server.py,sha256=4Jw3ltAD7Ow4dPHhwTUU_4JjKz-iDCNG7RJzD2VzPlM,6090
94
94
  by_framework/worker/heartbeat.py,sha256=trHDS8FUALsA6jyzDPa087hpr8_2vY8ZUFn0ld1kI2o,15465
95
95
  by_framework/worker/processor.py,sha256=3UjK6bqAWhmLXwQTroO5vxZlV6_j4iGQNzg_nAkDd2w,13173
96
96
  by_framework/worker/runner.py,sha256=y7qr6n-DdJyqX6RMzEknuiKsTA6wa2zjhXnLn8VuCk4,50016
97
- by_framework/worker/worker.py,sha256=ZkQEi4EmrskgV3G_ZvzoG3kvq8RsOuPEla9pI30G6VA,46942
97
+ by_framework/worker/worker.py,sha256=tJfnPkRH_c-C1NGyP3tS_kpl3tfDubu0KWGH-cbQk0s,47525
98
98
  by_framework/worker/sandbox/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
99
99
  by_framework/worker/sandbox/hook_sandbox.py,sha256=XXSdH5YGX814LvV03vkq-zn5DVIBPYYt2NhRv1lT1Bk,2329
100
- by_framework-0.2.2.dev12.dist-info/METADATA,sha256=iV49jn0tZcHM7oWbjRzRe2EvHgyYuFE7q1y8cXEsgF4,28018
101
- by_framework-0.2.2.dev12.dist-info/WHEEL,sha256=zOwg4jB6zX2kU910N-cMawjivD6tO8NEWvE12je1bVk,87
102
- by_framework-0.2.2.dev12.dist-info/entry_points.txt,sha256=5t6kgMjkR0UgJTpOsbuQDo0fOf7zeXjQW9DhkxfAGFc,56
103
- by_framework-0.2.2.dev12.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
104
- by_framework-0.2.2.dev12.dist-info/RECORD,,
100
+ by_framework-0.2.2.dev13.dist-info/METADATA,sha256=C1KKoZ2p5Kq4scXP0AoQ2UpLvnWFLcw6_s4Xr8PFCjY,28018
101
+ by_framework-0.2.2.dev13.dist-info/WHEEL,sha256=zOwg4jB6zX2kU910N-cMawjivD6tO8NEWvE12je1bVk,87
102
+ by_framework-0.2.2.dev13.dist-info/entry_points.txt,sha256=5t6kgMjkR0UgJTpOsbuQDo0fOf7zeXjQW9DhkxfAGFc,56
103
+ by_framework-0.2.2.dev13.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
104
+ by_framework-0.2.2.dev13.dist-info/RECORD,,