bazaar-compute-node 0.2.1rc15__tar.gz → 0.2.2__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 (413) hide show
  1. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/PKG-INFO +1 -1
  2. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/pyproject.toml +1 -1
  3. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/pyproject.toml.orig +1 -1
  4. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/app/attachments.py +6 -26
  5. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/lark/channel.py +1 -3
  6. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/telegram/channel.py +11 -12
  7. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/wecom/channel.py +90 -38
  8. bazaar_compute_node-0.2.2/src/bazaar_compute_node/contrib/wecom/identity.py +71 -0
  9. bazaar_compute_node-0.2.2/src/bazaar_compute_node/contrib/wecom/topic.py +711 -0
  10. bazaar_compute_node-0.2.2/src/bazaar_compute_node/contrib/wecom/topic_api.py +364 -0
  11. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/orchestration/orchestrator.py +39 -2
  12. bazaar_compute_node-0.2.1rc15/src/bazaar_compute_node/contrib/wecom/identity.py +0 -23
  13. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/LICENSE +0 -0
  14. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/README.md +0 -0
  15. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/__init__.py +0 -0
  16. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/app/__init__.py +0 -0
  17. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/app/agent.py +0 -0
  18. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/app/agent_management.py +0 -0
  19. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/app/application.py +0 -0
  20. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/app/command.py +0 -0
  21. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/app/config.py +0 -0
  22. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/app/health_report.py +0 -0
  23. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/app/registry.py +0 -0
  24. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/app/resource_dispatch.py +0 -0
  25. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/app/server_management.py +0 -0
  26. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/app/system_service.py +0 -0
  27. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/app/transport.py +0 -0
  28. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/app/upgrade.py +0 -0
  29. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/app/usage.py +0 -0
  30. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/app/version_check.py +0 -0
  31. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/app/windows_pipe.py +0 -0
  32. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/app/wrapper.py +0 -0
  33. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/bcc.py +0 -0
  34. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/cli.py +0 -0
  35. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/cmd/__init__.py +0 -0
  36. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/cmd/bcc/__init__.py +0 -0
  37. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/cmd/bcc/_client.py +0 -0
  38. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/cmd/bcc/_format.py +0 -0
  39. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/cmd/bcc/inbox.py +0 -0
  40. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/cmd/bcc/message.py +0 -0
  41. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/cmd/bcc/node.py +0 -0
  42. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/cmd/bcc/reminder.py +0 -0
  43. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/cmd/bcc/thread.py +0 -0
  44. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/cmd/bcn/__init__.py +0 -0
  45. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/cmd/bcn/_options.py +0 -0
  46. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/cmd/bcn/_runner.py +0 -0
  47. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/cmd/bcn/agent.py +0 -0
  48. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/cmd/bcn/node.py +0 -0
  49. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/cmd/bcn/server.py +0 -0
  50. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/cmd/bcn/service.py +0 -0
  51. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/__init__.py +0 -0
  52. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/claude/__init__.py +0 -0
  53. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/claude/approval.py +0 -0
  54. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/claude/client.py +0 -0
  55. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/claude/events.py +0 -0
  56. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/claude/inspect.py +0 -0
  57. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/claude/plugin.py +0 -0
  58. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/claude/process.py +0 -0
  59. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/claude/protocol.py +0 -0
  60. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/claude/runtime.py +0 -0
  61. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/codex/__init__.py +0 -0
  62. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/codex/approval.py +0 -0
  63. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/codex/client.py +0 -0
  64. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/codex/events.py +0 -0
  65. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/codex/inspect.py +0 -0
  66. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/codex/plugin.py +0 -0
  67. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/codex/process.py +0 -0
  68. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/codex/protocol.py +0 -0
  69. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/codex/runtime.py +0 -0
  70. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/lark/__init__.py +0 -0
  71. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/lark/api.py +0 -0
  72. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/lark/approval.py +0 -0
  73. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/lark/attachments.py +0 -0
  74. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/lark/frame.py +0 -0
  75. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/lark/identity.py +0 -0
  76. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/lark/outbound.py +0 -0
  77. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/lark/plugin.py +0 -0
  78. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/lark/transport.py +0 -0
  79. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/logging/__init__.py +0 -0
  80. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/logging/audit.py +0 -0
  81. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/logging/plugin.py +0 -0
  82. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/server/__init__.py +0 -0
  83. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/server/audit.py +0 -0
  84. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/server/control.py +0 -0
  85. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/server/plugin.py +0 -0
  86. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/__init__.py +0 -0
  87. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/codec.py +0 -0
  88. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/database.py +0 -0
  89. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/executor.py +0 -0
  90. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/__init__.py +0 -0
  91. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/model.py +0 -0
  92. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/registry.py +0 -0
  93. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v01_initial_node_schema.py +0 -0
  94. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v02_session_mapping_indexes.py +0 -0
  95. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v03_message_log_indexes.py +0 -0
  96. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v04_runtime_attempt_facts.py +0 -0
  97. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v05_inbound_message_references.py +0 -0
  98. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v06_inbound_message_reference_integrity.py +0 -0
  99. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v07_inbound_provider_identity.py +0 -0
  100. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v08_transient_stream_events.py +0 -0
  101. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v09_remove_runtime_events.py +0 -0
  102. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v10_add_outbound_attachments.py +0 -0
  103. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v11_remove_runtime_session_mapping.py +0 -0
  104. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v12_add_reminders.py +0 -0
  105. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v13_add_agent_ownership.py +0 -0
  106. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v14_add_inbox_discovery_indexes.py +0 -0
  107. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v15_add_handoffs.py +0 -0
  108. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v16_remove_outbound_drafts.py +0 -0
  109. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v17_remove_agent_identity_triggers.py +0 -0
  110. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v18_unify_messages.py +0 -0
  111. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v19_reminder_system_messages.py +0 -0
  112. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v20_remove_freshness_persistence.py +0 -0
  113. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v21_remove_handoffs.py +0 -0
  114. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v22_readable_targets.py +0 -0
  115. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v23_persist_sender_identity.py +0 -0
  116. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v24_persist_sender_display_name.py +0 -0
  117. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v25_rename_sessions_to_threads.py +0 -0
  118. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v26_remove_handoff_messages.py +0 -0
  119. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v27_name_dms_by_the_peer_id.py +0 -0
  120. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v28_channel_session_identity.py +0 -0
  121. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v29_backfill_channel_identity.py +0 -0
  122. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v30_remove_command_id.py +0 -0
  123. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v31_channel_session_review.py +0 -0
  124. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/migrations/v32_message_search.py +0 -0
  125. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/plugin.py +0 -0
  126. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/reminder_codec.py +0 -0
  127. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/repository/__init__.py +0 -0
  128. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/repository/base.py +0 -0
  129. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/repository/facade.py +0 -0
  130. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/repository/messages.py +0 -0
  131. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/repository/reminders.py +0 -0
  132. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/repository/search.py +0 -0
  133. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/repository/sessions.py +0 -0
  134. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/repository/settings.py +0 -0
  135. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/sqlite/storage.py +0 -0
  136. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/telegram/__init__.py +0 -0
  137. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/telegram/api.py +0 -0
  138. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/telegram/approval.py +0 -0
  139. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/telegram/attachments.py +0 -0
  140. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/telegram/identity.py +0 -0
  141. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/telegram/markdown.py +0 -0
  142. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/telegram/outbound.py +0 -0
  143. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/telegram/plugin.py +0 -0
  144. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/wecom/__init__.py +0 -0
  145. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/wecom/outbound.py +0 -0
  146. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/contrib/wecom/plugin.py +0 -0
  147. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/__init__.py +0 -0
  148. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/actor.py +0 -0
  149. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/agent.py +0 -0
  150. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/approval.py +0 -0
  151. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/audit.py +0 -0
  152. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/channel.py +0 -0
  153. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/client.py +0 -0
  154. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/command.py +0 -0
  155. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/concurrency.py +0 -0
  156. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/control.py +0 -0
  157. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/correlation.py +0 -0
  158. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/inbox.py +0 -0
  159. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/instruction.py +0 -0
  160. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/lifecycle.py +0 -0
  161. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/models/__init__.py +0 -0
  162. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/models/entities.py +0 -0
  163. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/models/events.py +0 -0
  164. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/models/reminder.py +0 -0
  165. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/models/reminder_owner.py +0 -0
  166. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/models/states.py +0 -0
  167. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/observability.py +0 -0
  168. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/orchestration/__init__.py +0 -0
  169. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/orchestration/commands/__init__.py +0 -0
  170. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/orchestration/commands/base.py +0 -0
  171. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/orchestration/commands/messages.py +0 -0
  172. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/orchestration/commands/reminders.py +0 -0
  173. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/orchestration/commands/review.py +0 -0
  174. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/orchestration/delivery.py +0 -0
  175. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/orchestration/error_feedback.py +0 -0
  176. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/orchestration/reminder.py +0 -0
  177. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/orchestration/services.py +0 -0
  178. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/orchestration/turn.py +0 -0
  179. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/orchestration/upgrade_notice.py +0 -0
  180. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/outcomes.py +0 -0
  181. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/paths.py +0 -0
  182. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/reminder.py +0 -0
  183. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/reminder_schedule.py +0 -0
  184. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/review.py +0 -0
  185. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/runtime.py +0 -0
  186. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/serialize.py +0 -0
  187. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/storage.py +0 -0
  188. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/timerwheel.py +0 -0
  189. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/utils/__init__.py +0 -0
  190. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/utils/children.py +0 -0
  191. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/utils/clock.py +0 -0
  192. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/utils/command.py +0 -0
  193. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/utils/line_reader.py +0 -0
  194. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/utils/markdown.py +0 -0
  195. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/utils/sanitization.py +0 -0
  196. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/core/utils/text.py +0 -0
  197. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/i18n/__init__.py +0 -0
  198. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/i18n/catalog.py +0 -0
  199. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/rendering.py +0 -0
  200. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/resources/approval_no_person.tpl +0 -0
  201. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/resources/bcc/check.tpl +0 -0
  202. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/resources/bcc/error.tpl +0 -0
  203. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/resources/bcc/inbox_check.tpl +0 -0
  204. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/resources/bcc/read.tpl +0 -0
  205. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/resources/bcc/reminder_list.tpl +0 -0
  206. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/resources/bcc/reminder_mutation.tpl +0 -0
  207. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/resources/bcc/reminder_schedule.tpl +0 -0
  208. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/resources/bcc/search.tpl +0 -0
  209. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/resources/bcc/unfollow.tpl +0 -0
  210. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/resources/bcc/upgrade.tpl +0 -0
  211. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/resources/bcc/version.tpl +0 -0
  212. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/resources/command/attachment_suffix.tpl +0 -0
  213. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/resources/command/check_message.tpl +0 -0
  214. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/resources/command/freshness_hold.tpl +0 -0
  215. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/resources/command/read_message.tpl +0 -0
  216. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/resources/command/send_result.tpl +0 -0
  217. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/resources/command/sender.tpl +0 -0
  218. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/resources/developer_instructions.md +0 -0
  219. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/resources/inbox_notice.tpl +0 -0
  220. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/resources/locales/en.toml +0 -0
  221. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/resources/locales/zh-CN.toml +0 -0
  222. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/resources/system_service/launchd.plist +0 -0
  223. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/resources/system_service/launchd.sh +0 -0
  224. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/resources/system_service/supervisor.py +0 -0
  225. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/resources/system_service/systemd.service +0 -0
  226. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/resources/system_service/windows.ps1 +0 -0
  227. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/resources/system_service/windows.vbs +0 -0
  228. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_node/resources/system_service/windows.xml +0 -0
  229. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/__init__.py +0 -0
  230. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/access.py +0 -0
  231. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/accounts.py +0 -0
  232. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/activity.py +0 -0
  233. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/app.py +0 -0
  234. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/cli.py +0 -0
  235. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/clock.py +0 -0
  236. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/config.py +0 -0
  237. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/configure.py +0 -0
  238. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/consumers.py +0 -0
  239. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/contacts.py +0 -0
  240. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/contrib/__init__.py +0 -0
  241. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/contrib/sqlite/__init__.py +0 -0
  242. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/contrib/sqlite/migrations/__init__.py +0 -0
  243. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/contrib/sqlite/migrations/model.py +0 -0
  244. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/contrib/sqlite/migrations/registry.py +0 -0
  245. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/contrib/sqlite/migrations/v01_initial_server_schema.py +0 -0
  246. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/contrib/sqlite/migrations/v02_refs.py +0 -0
  247. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/contrib/sqlite/migrations/v03_roles_oidc.py +0 -0
  248. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/contrib/sqlite/migrations/v04_login_order.py +0 -0
  249. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/contrib/sqlite/migrations/v05_provider_description.py +0 -0
  250. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/contrib/sqlite/migrations/v06_provider_default_role.py +0 -0
  251. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/contrib/sqlite/migrations/v07_oidc_session_settings.py +0 -0
  252. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/contrib/sqlite/plugin.py +0 -0
  253. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/contrib/sqlite/storage.py +0 -0
  254. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/control.py +0 -0
  255. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/fleet.py +0 -0
  256. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/gate.py +0 -0
  257. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/history.py +0 -0
  258. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/i18n.py +0 -0
  259. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/images.py +0 -0
  260. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/markdown.py +0 -0
  261. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/pages/__init__.py +0 -0
  262. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/pages/accounts.py +0 -0
  263. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/pages/agents.py +0 -0
  264. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/pages/computers.py +0 -0
  265. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/pages/login.py +0 -0
  266. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/pages/oidc.py +0 -0
  267. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/pages/oidc_login.py +0 -0
  268. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/pages/poll.py +0 -0
  269. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/pages/profile.py +0 -0
  270. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/pages/roles.py +0 -0
  271. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/pages/settings.py +0 -0
  272. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/pages/shares.py +0 -0
  273. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/permissions.py +0 -0
  274. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/poll_rendering.py +0 -0
  275. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/polling.py +0 -0
  276. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/protocol.py +0 -0
  277. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/reauth.py +0 -0
  278. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/refs.py +0 -0
  279. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/registry.py +0 -0
  280. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/rendering.py +0 -0
  281. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/locales/en.toml +0 -0
  282. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/locales/zh-CN.toml +0 -0
  283. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/static/THIRD_PARTY.md +0 -0
  284. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/static/agent-form.js +0 -0
  285. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/static/alpine-3.17.4.min.js +0 -0
  286. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/static/alpine-LICENSE.txt +0 -0
  287. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/static/alpine-collapse-3.17.4.min.js +0 -0
  288. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/static/alpine-collapse-LICENSE.txt +0 -0
  289. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/static/alpine-focus-3.17.4.min.js +0 -0
  290. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/static/alpine-focus-LICENSE.txt +0 -0
  291. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/static/app.css +0 -0
  292. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/static/app.webmanifest +0 -0
  293. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/static/apple-touch-icon.png +0 -0
  294. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/static/components.js +0 -0
  295. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/static/favicon.svg +0 -0
  296. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/static/htmx-LICENSE.txt +0 -0
  297. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/static/htmx.min.js +0 -0
  298. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/static/hx-alpine-compat-4.0.0.js +0 -0
  299. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/static/icon-192.png +0 -0
  300. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/static/icon-512.png +0 -0
  301. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/static/poll.js +0 -0
  302. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/activity_card.html +0 -0
  303. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/agent_contacts_head.html +0 -0
  304. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/agent_form.html +0 -0
  305. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/agent_kinds.html +0 -0
  306. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/agent_list.html +0 -0
  307. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/agent_models.html +0 -0
  308. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/agent_new.html +0 -0
  309. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/agent_profile.html +0 -0
  310. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/agent_profile_activity.html +0 -0
  311. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/agent_profile_config.html +0 -0
  312. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/agent_profile_events.html +0 -0
  313. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/agent_profile_files.html +0 -0
  314. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/agent_profile_head.html +0 -0
  315. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/agent_profile_sharing.html +0 -0
  316. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/agent_profile_skills.html +0 -0
  317. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/agent_profile_status.html +0 -0
  318. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/agent_profile_workspace.html +0 -0
  319. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/agent_remove.html +0 -0
  320. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/agent_row.html +0 -0
  321. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/agent_rows.html +0 -0
  322. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/agents.html +0 -0
  323. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/board.svg +0 -0
  324. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/chat.html +0 -0
  325. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/code.html +0 -0
  326. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/components.html +0 -0
  327. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/computer_detail.html +0 -0
  328. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/computer_list.html +0 -0
  329. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/computer_row.html +0 -0
  330. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/computer_rows.html +0 -0
  331. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/computers.html +0 -0
  332. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/contact_rows.html +0 -0
  333. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/contacts.html +0 -0
  334. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/conversation_reminders.html +0 -0
  335. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/enrol_form.html +0 -0
  336. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/enrolled.html +0 -0
  337. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/error.html +0 -0
  338. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/history.html +0 -0
  339. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/history_end.html +0 -0
  340. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/history_rows.html +0 -0
  341. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/history_tail.html +0 -0
  342. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/alarm-clock.svg +0 -0
  343. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/arrow-down.svg +0 -0
  344. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/arrow-left.svg +0 -0
  345. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/arrow-right.svg +0 -0
  346. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/arrow-up.svg +0 -0
  347. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/calendar.svg +0 -0
  348. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/check.svg +0 -0
  349. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/chevron-down.svg +0 -0
  350. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/chevron-left.svg +0 -0
  351. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/chevron-right.svg +0 -0
  352. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/chevron-up.svg +0 -0
  353. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/chevrons-down.svg +0 -0
  354. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/copy.svg +0 -0
  355. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/file.svg +0 -0
  356. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/folder.svg +0 -0
  357. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/grid-2x2.svg +0 -0
  358. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/key-round.svg +0 -0
  359. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/languages.svg +0 -0
  360. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/lark.svg +0 -0
  361. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/loader.svg +0 -0
  362. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/log-out.svg +0 -0
  363. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/message-circle.svg +0 -0
  364. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/message-square-text.svg +0 -0
  365. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/monitor.svg +0 -0
  366. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/openai.svg +0 -0
  367. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/paperclip.svg +0 -0
  368. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/pencil.svg +0 -0
  369. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/plus.svg +0 -0
  370. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/repeat.svg +0 -0
  371. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/rotate-cw.svg +0 -0
  372. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/search.svg +0 -0
  373. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/settings.svg +0 -0
  374. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/si-apple.svg +0 -0
  375. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/si-claude.svg +0 -0
  376. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/si-linux.svg +0 -0
  377. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/si-telegram.svg +0 -0
  378. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/sun-moon.svg +0 -0
  379. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/trash-2.svg +0 -0
  380. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/triangle-alert.svg +0 -0
  381. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/unplug.svg +0 -0
  382. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/user-plus.svg +0 -0
  383. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/users.svg +0 -0
  384. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/wecom.svg +0 -0
  385. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/icons/x.svg +0 -0
  386. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/image.html +0 -0
  387. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/login.html +0 -0
  388. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/login_form.html +0 -0
  389. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/password_form.html +0 -0
  390. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/presence.html +0 -0
  391. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/profile.html +0 -0
  392. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/rail.html +0 -0
  393. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/remove_ask.html +0 -0
  394. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/remove_form.html +0 -0
  395. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/review_card.html +0 -0
  396. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/scripts.html +0 -0
  397. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/search.html +0 -0
  398. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/search_results.html +0 -0
  399. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/settings.html +0 -0
  400. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/settings_accounts.html +0 -0
  401. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/settings_appearance.html +0 -0
  402. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/settings_oidc.html +0 -0
  403. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/settings_roles.html +0 -0
  404. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/settings_security.html +0 -0
  405. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/shares.html +0 -0
  406. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/shell.html +0 -0
  407. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/sign.svg +0 -0
  408. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/resources/templates/unreachable.html +0 -0
  409. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/review.py +0 -0
  410. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/search.py +0 -0
  411. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/secrets.py +0 -0
  412. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/sessions.py +0 -0
  413. {bazaar_compute_node-0.2.1rc15 → bazaar_compute_node-0.2.2}/src/bazaar_compute_server/storage.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bazaar-compute-node
3
- Version: 0.2.1rc15
3
+ Version: 0.2.2
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.2.1rc15"
3
+ version = "0.2.2"
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.2.1rc15"
3
+ version = "0.2.2"
4
4
  description = "Runtime-agnostic computer node daemon for agents and channels."
5
5
  readme = "README.md"
6
6
  license = "AGPL-3.0-only"
@@ -21,12 +21,10 @@ class AttachmentMaterializer:
21
21
  referenced_paths: Callable[[], Awaitable[set[str]]],
22
22
  *,
23
23
  max_file_bytes: int = 25 * 1024 * 1024,
24
- max_workspace_bytes: int = 1024 * 1024 * 1024,
25
24
  ) -> None:
26
25
  self._workspace = workspace
27
26
  self._referenced_paths = referenced_paths
28
27
  self._max_file_bytes = max_file_bytes
29
- self._max_workspace_bytes = max_workspace_bytes
30
28
  self._lock = asyncio.Lock()
31
29
 
32
30
  async def reconcile(self) -> None:
@@ -66,11 +64,9 @@ class AttachmentMaterializer:
66
64
  source: bytes | AsyncIterable[bytes],
67
65
  temporary: Path,
68
66
  destination: Path,
69
- root: Path,
70
67
  ) -> int:
71
68
  """Write an attachment aside, then move it into place once it is whole."""
72
69
 
73
- current_size = await asyncio.to_thread(self._stored_size, root)
74
70
  descriptor: int | None = None
75
71
  try:
76
72
  descriptor = await asyncio.to_thread(
@@ -80,7 +76,7 @@ class AttachmentMaterializer:
80
76
  0o600,
81
77
  )
82
78
  try:
83
- size = await self._write(descriptor, source, current_size)
79
+ size = await self._write(descriptor, source)
84
80
  await asyncio.to_thread(os.fsync, descriptor)
85
81
  stored = await asyncio.to_thread(os.fstat, descriptor)
86
82
  if stored.st_size != size:
@@ -107,12 +103,12 @@ class AttachmentMaterializer:
107
103
  self,
108
104
  descriptor: int,
109
105
  source: bytes | AsyncIterable[bytes],
110
- current_size: int,
111
106
  ) -> int:
112
107
  """Write the source through, refusing it the moment it goes over a limit."""
113
108
 
114
109
  if isinstance(source, bytes):
115
- self._check_room(len(source), current_size)
110
+ if len(source) > self._max_file_bytes:
111
+ raise ValueError("attachment exceeds the per-file size limit")
116
112
  await asyncio.to_thread(_write_all, descriptor, source)
117
113
  return len(source)
118
114
  size = 0
@@ -120,16 +116,11 @@ class AttachmentMaterializer:
120
116
  if not isinstance(chunk, bytes):
121
117
  raise TypeError("attachment stream must yield bytes")
122
118
  size += len(chunk)
123
- self._check_room(size, current_size)
119
+ if size > self._max_file_bytes:
120
+ raise ValueError("attachment exceeds the per-file size limit")
124
121
  await asyncio.to_thread(_write_all, descriptor, chunk)
125
122
  return size
126
123
 
127
- def _check_room(self, size: int, current_size: int) -> None:
128
- if size > self._max_file_bytes:
129
- raise ValueError("attachment exceeds the per-file size limit")
130
- if current_size + size > self._max_workspace_bytes:
131
- raise ValueError("attachment workspace quota exceeded")
132
-
133
124
  async def materialize(
134
125
  self,
135
126
  source: bytes | AsyncIterable[bytes],
@@ -153,7 +144,7 @@ class AttachmentMaterializer:
153
144
  await asyncio.to_thread(
154
145
  staging.mkdir, parents=True, exist_ok=True, mode=0o700
155
146
  )
156
- size = await self._stage(source, temporary, destination, root)
147
+ size = await self._stage(source, temporary, destination)
157
148
  return InboundAttachment(
158
149
  attachment_id=attachment_id,
159
150
  name=Path(name).name,
@@ -181,17 +172,6 @@ class AttachmentMaterializer:
181
172
  error=error,
182
173
  )
183
174
 
184
- @staticmethod
185
- def _stored_size(root: Path) -> int:
186
- if not root.exists():
187
- return 0
188
- return sum(
189
- path.stat().st_size
190
- for pattern in ("*/content", "*/content.*")
191
- for path in root.glob(pattern)
192
- if path.is_file() and not path.is_symlink()
193
- )
194
-
195
175
 
196
176
  def _write_all(descriptor: int, payload: bytes) -> None:
197
177
  view = memoryview(payload)
@@ -437,6 +437,7 @@ class LarkChannel(IChannel):
437
437
 
438
438
  quoted: Message | None = None
439
439
  if parent_id is not None:
440
+ metadata["provider_reply_to_message_id"] = parent_id
440
441
  quoted, failure = await self._quoted_message(
441
442
  parent_id,
442
443
  chat_id=fields.chat_id,
@@ -462,7 +463,6 @@ class LarkChannel(IChannel):
462
463
  mentions_agent=target_kind is ChannelTargetKind.GROUP,
463
464
  notifies_runtime=True,
464
465
  received_at_ms=received_at_ms,
465
- reply_to_message_id=quoted.message_id if quoted is not None else None,
466
466
  provider_payload_metadata=metadata,
467
467
  )
468
468
  await self._queue_inbound(
@@ -485,7 +485,6 @@ class LarkChannel(IChannel):
485
485
  mentions_agent: bool,
486
486
  notifies_runtime: bool,
487
487
  received_at_ms: int,
488
- reply_to_message_id: str | None = None,
489
488
  provider_payload_metadata: Mapping[str, object] | None = None,
490
489
  ) -> Message:
491
490
  provider_message_id = _provider_text(message.get("message_id"))
@@ -546,7 +545,6 @@ class LarkChannel(IChannel):
546
545
  notifies_runtime=notifies_runtime,
547
546
  attachments=attachments,
548
547
  provider_time_ms=_provider_time_ms(message.get("create_time")),
549
- reply_to_message_id=reply_to_message_id,
550
548
  metadata=metadata,
551
549
  )
552
550
 
@@ -779,9 +779,9 @@ class TelegramChannel(IChannel):
779
779
  reply = message.get("reply_to_message")
780
780
 
781
781
  received_at_ms = time_ns() // 1_000_000
782
- reply_to_message_id: str | None = None
782
+ reference: str | None = None
783
783
  if isinstance(reply, Mapping):
784
- reply_to_message_id = await self._queue_reply_backfill(
784
+ reference = await self._queue_reply_backfill(
785
785
  reply,
786
786
  update_id=update_id,
787
787
  identity=identity,
@@ -818,8 +818,8 @@ class TelegramChannel(IChannel):
818
818
  notifies_runtime=activation.notifies_runtime,
819
819
  attachments=update.content.attachments,
820
820
  provider_time_ms=update.provider_time_s * 1_000,
821
- reply_to_message_id=reply_to_message_id,
822
821
  metadata={
822
+ "provider_reply_to_message_id": reference,
823
823
  "telegram_update_id": update_id,
824
824
  "telegram_chat_id": update.chat_id,
825
825
  "telegram_message_thread_id": update.topic_id,
@@ -866,20 +866,20 @@ class TelegramChannel(IChannel):
866
866
  bot_username = self._bot_username or ""
867
867
  if bot_id is None:
868
868
  raise RuntimeError("Telegram bot identity is not initialized")
869
- # what the bot itself said is on record as sent; quoted back, it is
870
- # not heard a second time as if someone else had said it
871
869
  quoted_sender = reply.get("from")
872
- if isinstance(quoted_sender, Mapping) and quoted_sender.get("id") == bot_id:
873
- return None
874
870
  content = await self._content(
875
871
  reply,
876
872
  bot_id=bot_id,
877
873
  bot_username=bot_username,
878
874
  )
879
875
  if content is None:
880
- return None
876
+ return str(provider_message_id)
881
877
 
882
- sender = self._sender(reply)
878
+ sender = (
879
+ None
880
+ if isinstance(quoted_sender, Mapping) and quoted_sender.get("id") == bot_id
881
+ else self._sender(reply)
882
+ )
883
883
  provider_time_s = reply.get("date")
884
884
  provider_time_ms: int | None = None
885
885
  historical: bool | None = None
@@ -892,12 +892,11 @@ class TelegramChannel(IChannel):
892
892
  historical = provider_time_s < self._started_at_s
893
893
 
894
894
  channel_session_id = identity.channel_session_id
895
- message_id = identity.message_id(provider_message_id)
896
895
  await self._inbound.put(
897
896
  Message(
898
897
  direction=MessageDirection.INBOUND,
899
898
  seq=0,
900
- message_id=message_id,
899
+ message_id=identity.message_id(provider_message_id),
901
900
  thread_id=identity.session_id,
902
901
  channel_session_id=channel_session_id,
903
902
  channel="telegram",
@@ -935,7 +934,7 @@ class TelegramChannel(IChannel):
935
934
  )
936
935
  self._messages_queued += 1
937
936
  self._quoted_messages_queued += 1
938
- return message_id
937
+ return str(provider_message_id)
939
938
 
940
939
  async def _content(
941
940
  self,
@@ -43,7 +43,7 @@ from ...core.timerwheel import TimerWheel
43
43
  from ...core.utils.clock import remaining
44
44
  from ...core.utils.markdown import split_markdown, utf8_bytes
45
45
  from ...i18n import ENGLISH, Translator, create_translator
46
- from .identity import conversation_thread_id, parse_provider_thread_id
46
+ from .identity import TopicAddress, conversation_thread_id, parse_provider_thread_id
47
47
  from .outbound import (
48
48
  AttachmentReader,
49
49
  PreparedAttachment,
@@ -52,6 +52,7 @@ from .outbound import (
52
52
  prepare_attachments,
53
53
  visible_message_body,
54
54
  )
55
+ from .topic import TopicConversations
55
56
 
56
57
  _STOP = object()
57
58
  _MAX_MEDIA_BYTES = 25 * 1024 * 1024
@@ -198,6 +199,13 @@ class WeComChannel(IChannel):
198
199
  self._logger.addHandler(logging.StreamHandler())
199
200
  self._logger.setLevel(logging.INFO)
200
201
  self._logger.propagate = False
202
+ self._topics = TopicConversations(
203
+ context,
204
+ bot_id=bot_id,
205
+ secret=secret,
206
+ emit=self._inbound.put,
207
+ logger=self._logger,
208
+ )
201
209
 
202
210
  @property
203
211
  def name(self) -> str:
@@ -241,6 +249,7 @@ class WeComChannel(IChannel):
241
249
  self._startup_finished.clear()
242
250
  self._startup_error = None
243
251
  self._state = "connecting"
252
+ self._topics.start()
244
253
  self._runner = asyncio.create_task(self._run(), name="bcn-wecom-channel")
245
254
  try:
246
255
  await asyncio.wait_for(self._startup_finished.wait(), timeout=timeout)
@@ -249,46 +258,57 @@ class WeComChannel(IChannel):
249
258
  self._runner.cancel()
250
259
  await asyncio.gather(self._runner, return_exceptions=True)
251
260
  self._runner = None
261
+ await self._topics.stop(timeout=timeout)
252
262
  self._state = "stopped"
253
263
  raise
254
264
  if self._startup_error is not None:
265
+ await self._topics.stop(timeout=timeout)
255
266
  raise self._startup_error
256
267
 
257
268
  async def stop(self, *, timeout: float) -> None:
258
269
  self._stopping.set()
259
- decided_at_ms = time_ns() // 1_000_000
260
- for pending in tuple(self._pending_approvals.values()):
261
- if not pending.future.done():
262
- pending.future.set_result(
263
- ApprovalResult(
264
- request_id=pending.request.approval.request_id,
265
- decision=ApprovalDecision.REJECTED,
266
- decided_at_ms=decided_at_ms,
267
- reason="channel_stopped",
268
- )
269
- )
270
- self._pending_approvals.clear()
271
- self._approval_task_ids_by_request.clear()
272
- await self._cancel_approval_card_updates()
270
+ deadline = asyncio.get_running_loop().time() + timeout
271
+ shutdown = asyncio.create_task(
272
+ self._topics.stop(timeout=timeout), name="bcn-wecom-topics-stop"
273
+ )
273
274
  try:
274
- await asyncio.wait_for(self._send_lock.acquire(), timeout=timeout)
275
- except TimeoutError:
276
- pass
277
- else:
278
- self._send_lock.release()
279
- connection = self._connection
280
- if connection is not None:
281
- await connection.close()
282
- runner = self._runner
283
- if runner is not None:
275
+ decided_at_ms = time_ns() // 1_000_000
276
+ for pending in tuple(self._pending_approvals.values()):
277
+ if not pending.future.done():
278
+ pending.future.set_result(
279
+ ApprovalResult(
280
+ request_id=pending.request.approval.request_id,
281
+ decision=ApprovalDecision.REJECTED,
282
+ decided_at_ms=decided_at_ms,
283
+ reason="channel_stopped",
284
+ )
285
+ )
286
+ self._pending_approvals.clear()
287
+ self._approval_task_ids_by_request.clear()
288
+ await self._cancel_approval_card_updates()
284
289
  try:
285
- await asyncio.wait_for(runner, timeout=timeout)
290
+ await asyncio.wait_for(
291
+ self._send_lock.acquire(), timeout=remaining(deadline)
292
+ )
286
293
  except TimeoutError:
287
- runner.cancel()
288
- await asyncio.gather(runner, return_exceptions=True)
289
- self._runner = None
290
- self._state = "stopped"
291
- await self._inbound.put(_STOP)
294
+ pass
295
+ else:
296
+ self._send_lock.release()
297
+ connection = self._connection
298
+ if connection is not None:
299
+ await connection.close()
300
+ runner = self._runner
301
+ if runner is not None:
302
+ try:
303
+ await asyncio.wait_for(runner, timeout=remaining(deadline))
304
+ except TimeoutError:
305
+ runner.cancel()
306
+ await asyncio.gather(runner, return_exceptions=True)
307
+ finally:
308
+ self._runner = None
309
+ await shutdown
310
+ self._state = "stopped"
311
+ await self._inbound.put(_STOP)
292
312
 
293
313
  async def receive(self) -> AsyncIterator[Message]:
294
314
  while True:
@@ -510,6 +530,24 @@ class WeComChannel(IChannel):
510
530
  async def send(
511
531
  self, request: ChannelSendRequest, *, timeout: float
512
532
  ) -> ProviderCallResult[ChannelDeliveryReceipt]:
533
+ try:
534
+ address = TopicAddress.parse(request.provider_thread_id)
535
+ if address is not None and address.bot_id != self._bot_id:
536
+ raise ValueError("WeCom topic belongs to another bot")
537
+ except ValueError as error:
538
+ return ProviderCallResult(
539
+ status=ProviderCallStatus.FAILED,
540
+ error_kind="invalid_topic_target",
541
+ error_message=str(error),
542
+ )
543
+ if address is not None:
544
+ if self._stopping.is_set():
545
+ return ProviderCallResult(
546
+ status=ProviderCallStatus.FAILED,
547
+ error_kind="channel_stopped",
548
+ error_message="WeCom channel is stopping",
549
+ )
550
+ return await self._topics.send(request, address, timeout=timeout)
513
551
  _, target_id = parse_provider_thread_id(request.provider_thread_id)
514
552
  try:
515
553
  batches = (
@@ -945,6 +983,13 @@ class WeComChannel(IChannel):
945
983
  async def request_approval(
946
984
  self, request: ChannelApprovalRequest, *, timeout: float
947
985
  ) -> ApprovalResult:
986
+ if TopicAddress.parse(request.provider_thread_id) is not None:
987
+ return ApprovalResult(
988
+ request_id=request.approval.request_id,
989
+ decision=ApprovalDecision.REJECTED,
990
+ decided_at_ms=time_ns() // 1_000_000,
991
+ reason="WeCom native topics do not support approval cards",
992
+ )
948
993
  request_id = request.approval.request_id
949
994
  if timeout <= 0:
950
995
  raise TimeoutError("WeCom approval card delivery timed out")
@@ -1247,7 +1292,7 @@ class WeComChannel(IChannel):
1247
1292
  )
1248
1293
  return None
1249
1294
  quote_content = await self._content(quote, quote_type)
1250
- reply_to_message_id = str(
1295
+ message_id = str(
1251
1296
  uuid5(
1252
1297
  NAMESPACE_URL,
1253
1298
  f"bcn:wecom:{self._bot_id}:quoted-message:{conversation}:"
@@ -1258,7 +1303,7 @@ class WeComChannel(IChannel):
1258
1303
  Message(
1259
1304
  direction=MessageDirection.INBOUND,
1260
1305
  seq=0,
1261
- message_id=reply_to_message_id,
1306
+ message_id=message_id,
1262
1307
  thread_id=session_id,
1263
1308
  channel_session_id=channel_session_id,
1264
1309
  channel=self.name,
@@ -1277,7 +1322,7 @@ class WeComChannel(IChannel):
1277
1322
  metadata={"sender_kind": SenderKind.HUMAN.value},
1278
1323
  )
1279
1324
  )
1280
- return reply_to_message_id
1325
+ return quote_content.fingerprint
1281
1326
 
1282
1327
  def _update_approval_card(
1283
1328
  self,
@@ -1375,7 +1420,7 @@ class WeComChannel(IChannel):
1375
1420
  return False
1376
1421
 
1377
1422
  async def _receive_event(self, frame: Mapping[str, object]) -> None:
1378
- """Take in a bot event frame, which is only ever an approval decision."""
1423
+ """Route native topic events and ordinary chat approval decisions."""
1379
1424
 
1380
1425
  body = frame.get("body")
1381
1426
  event = body.get("event") if isinstance(body, dict) else None
@@ -1387,6 +1432,8 @@ class WeComChannel(IChannel):
1387
1432
  "wecom.event.received",
1388
1433
  event_type=self._last_event_type,
1389
1434
  )
1435
+ if isinstance(body, dict) and self._topics.receive(body):
1436
+ return
1390
1437
  if (
1391
1438
  self._last_event_type == "template_card_event"
1392
1439
  and isinstance(event, dict)
@@ -1408,6 +1455,10 @@ class WeComChannel(IChannel):
1408
1455
  if not isinstance(body, dict):
1409
1456
  self._filter_message("invalid_body")
1410
1457
  return
1458
+ compatibility = body.get("compat_info")
1459
+ if isinstance(compatibility, dict) and compatibility.get("source") == "channel":
1460
+ self._filter_message("native_topic_projection")
1461
+ return
1411
1462
  route = self._route(body)
1412
1463
  if route is None:
1413
1464
  return
@@ -1428,7 +1479,7 @@ class WeComChannel(IChannel):
1428
1479
  create_time = body.get("create_time")
1429
1480
  if isinstance(create_time, int) and not isinstance(create_time, bool):
1430
1481
  metadata["provider_create_time"] = create_time
1431
- reply_to_message_id = await self._queue_quoted_message(
1482
+ reference = await self._queue_quoted_message(
1432
1483
  body.get("quote"),
1433
1484
  provider_message_id=provider_message_id,
1434
1485
  conversation=conversation,
@@ -1438,6 +1489,8 @@ class WeComChannel(IChannel):
1438
1489
  target_kind=target_kind,
1439
1490
  received_at_ms=received_at_ms,
1440
1491
  )
1492
+ if reference is not None:
1493
+ metadata["provider_reply_to_message_id"] = reference
1441
1494
  await self._inbound.put(
1442
1495
  Message(
1443
1496
  direction=MessageDirection.INBOUND,
@@ -1462,7 +1515,6 @@ class WeComChannel(IChannel):
1462
1515
  target_kind=target_kind,
1463
1516
  mentions_agent=mentions_agent,
1464
1517
  attachments=content.attachments,
1465
- reply_to_message_id=reply_to_message_id,
1466
1518
  metadata=metadata,
1467
1519
  )
1468
1520
  )
@@ -1476,7 +1528,7 @@ class WeComChannel(IChannel):
1476
1528
  session_id=session_id,
1477
1529
  target_kind=target_kind.value,
1478
1530
  message_type=message_type,
1479
- referenced=reply_to_message_id is not None,
1531
+ referenced=reference is not None,
1480
1532
  )
1481
1533
 
1482
1534
  async def _send_approval_card_update(
@@ -0,0 +1,71 @@
1
+ from __future__ import annotations
2
+
3
+ from dataclasses import dataclass
4
+ from urllib.parse import quote, unquote
5
+
6
+ _PROVIDER_PREFIX = "wecom"
7
+
8
+
9
+ def conversation_thread_id(bot_id: str, conversation: str) -> str:
10
+ """Address a conversation by the bot it lives on and WeCom's own chat id."""
11
+
12
+ return f"{_PROVIDER_PREFIX}:{bot_id}:{conversation}"
13
+
14
+
15
+ def parse_provider_thread_id(value: str) -> tuple[str, str]:
16
+ """Split a provider thread id back into the bot id and the WeCom chat id."""
17
+
18
+ if not isinstance(value, str) or not value:
19
+ raise ValueError("WeCom provider_thread_id must be non-empty")
20
+ parts = value.split(":", 2)
21
+ if len(parts) != 3 or parts[0] != _PROVIDER_PREFIX or not parts[1] or not parts[2]:
22
+ raise ValueError("WeCom provider_thread_id has invalid format")
23
+ return parts[1], parts[2]
24
+
25
+
26
+ @dataclass(frozen=True, slots=True)
27
+ class TopicAddress:
28
+ bot_id: str
29
+ topic_id: str
30
+ post_id: str | None = None
31
+
32
+ @property
33
+ def provider_thread_id(self) -> str:
34
+ value = (
35
+ f"wecom:{quote(self.bot_id, safe='')}:topic:{quote(self.topic_id, safe='')}"
36
+ )
37
+ if self.post_id is not None:
38
+ value += f":post:{quote(self.post_id, safe='')}"
39
+ return value
40
+
41
+ @classmethod
42
+ def parse(cls, value: str) -> TopicAddress | None:
43
+ parts = value.split(":")
44
+ if len(parts) not in {4, 6} or parts[0] != "wecom" or parts[2] != "topic":
45
+ return None
46
+ if not parts[1] or not parts[3]:
47
+ raise ValueError("WeCom topic address requires a bot and channel")
48
+ if len(parts) == 6 and (parts[4] != "post" or not parts[5]):
49
+ raise ValueError("WeCom topic address requires a post id")
50
+ return cls(
51
+ unquote(parts[1]),
52
+ unquote(parts[3]),
53
+ unquote(parts[5]) if len(parts) == 6 else None,
54
+ )
55
+
56
+
57
+ def post_message_id(post_id: str) -> str:
58
+ return "post:" + quote(post_id, safe="")
59
+
60
+
61
+ def reply_message_id(post_id: str, reply_id: str) -> str:
62
+ return "reply:" + quote(post_id, safe="") + ":" + quote(reply_id, safe="")
63
+
64
+
65
+ __all__ = [
66
+ "TopicAddress",
67
+ "conversation_thread_id",
68
+ "parse_provider_thread_id",
69
+ "post_message_id",
70
+ "reply_message_id",
71
+ ]