bazaar-compute-node 0.1.18__tar.gz → 0.1.19__tar.gz

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.
Files changed (105) hide show
  1. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/PKG-INFO +1 -1
  2. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/pyproject.toml +1 -1
  3. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/pyproject.toml.orig +1 -1
  4. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/app/wrapper.py +15 -2
  5. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/lark/channel.py +20 -1
  6. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/lark/transport.py +34 -9
  7. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/LICENSE +0 -0
  8. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/README.md +0 -0
  9. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/__init__.py +0 -0
  10. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/app/__init__.py +0 -0
  11. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/app/agent.py +0 -0
  12. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/app/agent_management.py +0 -0
  13. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/app/application.py +0 -0
  14. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/app/attachments.py +0 -0
  15. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/app/command.py +0 -0
  16. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/app/config.py +0 -0
  17. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/app/registry.py +0 -0
  18. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/app/reminder_dispatch.py +0 -0
  19. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/app/system_service.py +0 -0
  20. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/app/transport.py +0 -0
  21. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/app/windows_pipe.py +0 -0
  22. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/bcc.py +0 -0
  23. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/cli.py +0 -0
  24. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/__init__.py +0 -0
  25. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/codex/__init__.py +0 -0
  26. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/codex/approval.py +0 -0
  27. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/codex/client.py +0 -0
  28. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/codex/events.py +0 -0
  29. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/codex/plugin.py +0 -0
  30. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/codex/process.py +0 -0
  31. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/codex/protocol.py +0 -0
  32. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/codex/runtime.py +0 -0
  33. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/lark/__init__.py +0 -0
  34. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/lark/api.py +0 -0
  35. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/lark/approval.py +0 -0
  36. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/lark/attachments.py +0 -0
  37. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/lark/frame.py +0 -0
  38. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/lark/identity.py +0 -0
  39. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/lark/outbound.py +0 -0
  40. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/lark/plugin.py +0 -0
  41. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/logging/__init__.py +0 -0
  42. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/logging/audit.py +0 -0
  43. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/logging/plugin.py +0 -0
  44. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/sqlite/__init__.py +0 -0
  45. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/sqlite/agent_migration.py +0 -0
  46. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/sqlite/codec.py +0 -0
  47. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/sqlite/database.py +0 -0
  48. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/sqlite/migrations.py +0 -0
  49. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/sqlite/plugin.py +0 -0
  50. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/sqlite/reminder_codec.py +0 -0
  51. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/sqlite/reminder_database.py +0 -0
  52. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/sqlite/reminder_migration.py +0 -0
  53. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/sqlite/reminder_repository.py +0 -0
  54. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/sqlite/repository.py +0 -0
  55. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/sqlite/scoped_repository.py +0 -0
  56. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/telegram/__init__.py +0 -0
  57. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/telegram/api.py +0 -0
  58. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/telegram/approval.py +0 -0
  59. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/telegram/attachments.py +0 -0
  60. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/telegram/channel.py +0 -0
  61. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/telegram/identity.py +0 -0
  62. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/telegram/markdown.py +0 -0
  63. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/telegram/outbound.py +0 -0
  64. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/telegram/plugin.py +0 -0
  65. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/wecom/__init__.py +0 -0
  66. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/wecom/channel.py +0 -0
  67. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/wecom/markdown.py +0 -0
  68. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/wecom/outbound.py +0 -0
  69. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/contrib/wecom/plugin.py +0 -0
  70. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/__init__.py +0 -0
  71. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/approval.py +0 -0
  72. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/audit.py +0 -0
  73. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/channel.py +0 -0
  74. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/client.py +0 -0
  75. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/command.py +0 -0
  76. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/concurrency.py +0 -0
  77. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/correlation.py +0 -0
  78. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/instruction.py +0 -0
  79. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/lifecycle.py +0 -0
  80. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/models/__init__.py +0 -0
  81. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/models/entities.py +0 -0
  82. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/models/reminder.py +0 -0
  83. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/models/reminder_owner.py +0 -0
  84. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/models/states.py +0 -0
  85. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/observability.py +0 -0
  86. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/orchestration/__init__.py +0 -0
  87. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/orchestration/command.py +0 -0
  88. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/orchestration/delivery.py +0 -0
  89. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/orchestration/error_feedback.py +0 -0
  90. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/orchestration/reminder.py +0 -0
  91. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/orchestration/reminder_command.py +0 -0
  92. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/orchestration/services.py +0 -0
  93. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/orchestration/session.py +0 -0
  94. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/orchestration/turn.py +0 -0
  95. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/outcomes.py +0 -0
  96. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/paths.py +0 -0
  97. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/reminder.py +0 -0
  98. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/reminder_schedule.py +0 -0
  99. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/runtime.py +0 -0
  100. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/storage.py +0 -0
  101. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/core/timerwheel.py +0 -0
  102. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/i18n/__init__.py +0 -0
  103. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/i18n/catalog.py +0 -0
  104. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/i18n/english.py +0 -0
  105. {bazaar_compute_node-0.1.18 → bazaar_compute_node-0.1.19}/src/bazaar_compute_node/i18n/schinese.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bazaar-compute-node
3
- Version: 0.1.18
3
+ Version: 0.1.19
4
4
  Summary: Runtime-agnostic computer node daemon for agents and channels.
5
5
  License-Expression: AGPL-3.0-only
6
6
  License-File: LICENSE
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "bazaar-compute-node"
3
- version = "0.1.18"
3
+ version = "0.1.19"
4
4
  description = "Runtime-agnostic computer node daemon for agents and channels."
5
5
  readme = "README.md"
6
6
  license = "AGPL-3.0-only"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "bazaar-compute-node"
3
- version = "0.1.18"
3
+ version = "0.1.19"
4
4
  description = "Runtime-agnostic computer node daemon for agents and channels."
5
5
  readme = "README.md"
6
6
  license = "AGPL-3.0-only"
@@ -41,8 +41,21 @@ def install_bcc_wrapper(bin_dir: Path, *, agent_id: str) -> Path:
41
41
  f"$env:BCN_AGENT_ID = '{agent_id}'\n"
42
42
  "$env:PYTHONUTF8 = '1'\n"
43
43
  "$env:PYTHONIOENCODING = 'utf-8'\n"
44
- f'& "{python_executable}" -m bazaar_compute_node.bcc @args\n'
45
- "exit $LASTEXITCODE\n",
44
+ f'$python = "{python_executable}"\n'
45
+ "$previousOutputEncoding = $OutputEncoding\n"
46
+ "$exitCode = 1\n"
47
+ "try {\n"
48
+ " $OutputEncoding = [System.Text.UTF8Encoding]::new($false)\n"
49
+ " if ($MyInvocation.ExpectingInput) {\n"
50
+ " @($Input) | & $python -m bazaar_compute_node.bcc @args\n"
51
+ " } else {\n"
52
+ " & $python -m bazaar_compute_node.bcc @args\n"
53
+ " }\n"
54
+ " $exitCode = $LASTEXITCODE\n"
55
+ "} finally {\n"
56
+ " $OutputEncoding = $previousOutputEncoding\n"
57
+ "}\n"
58
+ "exit $exitCode\n",
46
59
  encoding="utf-8",
47
60
  )
48
61
  except BaseException:
@@ -758,7 +758,14 @@ class LarkChannel(IChannel):
758
758
  )
759
759
  api = self._api
760
760
  identity = self._identity
761
- if api is None or identity is None or self._state not in {"connected", "ready"}:
761
+ transport = self._transport
762
+ if (
763
+ api is None
764
+ or identity is None
765
+ or transport is None
766
+ or self._state not in {"connected", "ready"}
767
+ or transport.state != "connected"
768
+ ):
762
769
  return ProviderCallResult(
763
770
  status=ProviderCallStatus.FAILED,
764
771
  error_kind="channel_unavailable",
@@ -779,6 +786,18 @@ class LarkChannel(IChannel):
779
786
  error_message="Lark delivery timed out waiting for the send lock",
780
787
  )
781
788
  try:
789
+ if (
790
+ self._api is not api
791
+ or self._identity is not identity
792
+ or self._transport is not transport
793
+ or self._state not in {"connected", "ready"}
794
+ or transport.state != "connected"
795
+ ):
796
+ return ProviderCallResult(
797
+ status=ProviderCallStatus.FAILED,
798
+ error_kind="channel_unavailable",
799
+ error_message="Lark channel is not available",
800
+ )
782
801
  return await send_outbound(
783
802
  api,
784
803
  identity=identity,
@@ -421,6 +421,7 @@ class LarkTransport:
421
421
  started_at = monotonic()
422
422
  self._events_received += 1
423
423
  self._last_event_at_ms = time_ns() // 1_000_000
424
+ ack_sent = False
424
425
  try:
425
426
  handler = self._on_message
426
427
  if handler is None:
@@ -429,6 +430,11 @@ class LarkTransport:
429
430
  self._last_message_filter_reason = "handler_unavailable"
430
431
  await self._send_ack(frame, code=200, started_at=started_at)
431
432
  return
433
+
434
+ direct_response = _is_direct_response(message_type, decoded)
435
+ if not direct_response:
436
+ await self._send_ack(frame, code=200, started_at=started_at)
437
+ ack_sent = True
432
438
  result = handler(message_type, decoded, frame)
433
439
  if asyncio.iscoroutine(result) or isinstance(result, Awaitable):
434
440
  result = await result
@@ -436,8 +442,9 @@ class LarkTransport:
436
442
  ack_payload: bytes | None = None
437
443
  if isinstance(result, LarkAck):
438
444
  accepted = result.accepted
439
- ack_code = result.code
440
- ack_payload = result.payload
445
+ if direct_response:
446
+ ack_code = result.code
447
+ ack_payload = result.payload
441
448
  else:
442
449
  accepted = result is not False
443
450
  if not accepted:
@@ -448,12 +455,14 @@ class LarkTransport:
448
455
  self._messages_queued += 1
449
456
  self._last_message_disposition = "queued"
450
457
  self._last_message_filter_reason = None
451
- await self._send_ack(
452
- frame,
453
- code=ack_code,
454
- payload=ack_payload,
455
- started_at=started_at,
456
- )
458
+ if direct_response:
459
+ await self._send_ack(
460
+ frame,
461
+ code=ack_code,
462
+ payload=ack_payload,
463
+ started_at=started_at,
464
+ )
465
+ ack_sent = True
457
466
  if isinstance(result, LarkAck) and result.post_ack is not None:
458
467
  post_ack_task = asyncio.create_task(
459
468
  _run_post_ack(result.post_ack),
@@ -464,7 +473,8 @@ class LarkTransport:
464
473
  except Exception: # noqa: BLE001
465
474
  self._message_mapping_failures += 1
466
475
  self._last_message_disposition = "failed"
467
- await self._send_ack(frame, code=500, started_at=started_at)
476
+ if not ack_sent:
477
+ await self._send_ack(frame, code=500, started_at=started_at)
468
478
 
469
479
  async def _send_ack(
470
480
  self,
@@ -574,6 +584,21 @@ class LarkTransport:
574
584
  await timer.wait()
575
585
 
576
586
 
587
+ def _is_direct_response(
588
+ message_type: str,
589
+ payload: Mapping[str, object],
590
+ ) -> bool:
591
+ if message_type == MESSAGE_CARD:
592
+ return True
593
+ header = payload.get("header")
594
+ if not isinstance(header, Mapping):
595
+ return False
596
+ return header.get("event_type") in {
597
+ "card.action.trigger",
598
+ "p2.card.action.trigger",
599
+ }
600
+
601
+
577
602
  def _delay_ms(seconds: float) -> int:
578
603
  return math.ceil(max(0.0, seconds) * 1_000)
579
604