bazaar-compute-node 0.2.1rc13__tar.gz → 0.2.1rc15__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 (412) hide show
  1. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/PKG-INFO +1 -1
  2. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/pyproject.toml +6 -3
  3. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/pyproject.toml.orig +3 -2
  4. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/application.py +5 -23
  5. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/resource_dispatch.py +0 -2
  6. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/server_management.py +3 -4
  7. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/system_service.py +132 -11
  8. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/upgrade.py +5 -7
  9. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/bcc/__init__.py +4 -7
  10. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/bcn/node.py +1 -1
  11. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/orchestration/turn.py +0 -4
  12. bazaar_compute_node-0.2.1rc15/src/bazaar_compute_node/core/paths.py +19 -0
  13. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/utils/children.py +19 -0
  14. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/inbox_notice.tpl +1 -1
  15. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/system_service/launchd.plist +6 -0
  16. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/system_service/launchd.sh +3 -1
  17. bazaar_compute_node-0.2.1rc15/src/bazaar_compute_node/resources/system_service/supervisor.py +58 -0
  18. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/system_service/systemd.service +2 -1
  19. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/system_service/windows.ps1 +8 -4
  20. bazaar_compute_node-0.2.1rc13/src/bazaar_compute_node/core/paths.py +0 -30
  21. bazaar_compute_node-0.2.1rc13/src/bazaar_compute_node/core/restart.py +0 -9
  22. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/LICENSE +0 -0
  23. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/README.md +0 -0
  24. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/__init__.py +0 -0
  25. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/__init__.py +0 -0
  26. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/agent.py +0 -0
  27. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/agent_management.py +0 -0
  28. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/attachments.py +0 -0
  29. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/command.py +0 -0
  30. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/config.py +0 -0
  31. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/health_report.py +0 -0
  32. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/registry.py +0 -0
  33. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/transport.py +0 -0
  34. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/usage.py +0 -0
  35. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/version_check.py +0 -0
  36. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/windows_pipe.py +0 -0
  37. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/wrapper.py +0 -0
  38. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/bcc.py +0 -0
  39. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cli.py +0 -0
  40. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/__init__.py +0 -0
  41. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/bcc/_client.py +0 -0
  42. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/bcc/_format.py +0 -0
  43. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/bcc/inbox.py +0 -0
  44. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/bcc/message.py +0 -0
  45. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/bcc/node.py +0 -0
  46. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/bcc/reminder.py +0 -0
  47. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/bcc/thread.py +0 -0
  48. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/bcn/__init__.py +0 -0
  49. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/bcn/_options.py +0 -0
  50. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/bcn/_runner.py +0 -0
  51. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/bcn/agent.py +0 -0
  52. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/bcn/server.py +0 -0
  53. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/bcn/service.py +0 -0
  54. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/__init__.py +0 -0
  55. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/claude/__init__.py +0 -0
  56. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/claude/approval.py +0 -0
  57. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/claude/client.py +0 -0
  58. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/claude/events.py +0 -0
  59. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/claude/inspect.py +0 -0
  60. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/claude/plugin.py +0 -0
  61. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/claude/process.py +0 -0
  62. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/claude/protocol.py +0 -0
  63. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/claude/runtime.py +0 -0
  64. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/codex/__init__.py +0 -0
  65. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/codex/approval.py +0 -0
  66. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/codex/client.py +0 -0
  67. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/codex/events.py +0 -0
  68. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/codex/inspect.py +0 -0
  69. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/codex/plugin.py +0 -0
  70. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/codex/process.py +0 -0
  71. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/codex/protocol.py +0 -0
  72. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/codex/runtime.py +0 -0
  73. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/lark/__init__.py +0 -0
  74. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/lark/api.py +0 -0
  75. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/lark/approval.py +0 -0
  76. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/lark/attachments.py +0 -0
  77. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/lark/channel.py +0 -0
  78. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/lark/frame.py +0 -0
  79. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/lark/identity.py +0 -0
  80. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/lark/outbound.py +0 -0
  81. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/lark/plugin.py +0 -0
  82. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/lark/transport.py +0 -0
  83. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/logging/__init__.py +0 -0
  84. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/logging/audit.py +0 -0
  85. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/logging/plugin.py +0 -0
  86. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/server/__init__.py +0 -0
  87. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/server/audit.py +0 -0
  88. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/server/control.py +0 -0
  89. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/server/plugin.py +0 -0
  90. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/__init__.py +0 -0
  91. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/codec.py +0 -0
  92. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/database.py +0 -0
  93. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/executor.py +0 -0
  94. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/__init__.py +0 -0
  95. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/model.py +0 -0
  96. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/registry.py +0 -0
  97. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v01_initial_node_schema.py +0 -0
  98. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v02_session_mapping_indexes.py +0 -0
  99. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v03_message_log_indexes.py +0 -0
  100. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v04_runtime_attempt_facts.py +0 -0
  101. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v05_inbound_message_references.py +0 -0
  102. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v06_inbound_message_reference_integrity.py +0 -0
  103. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v07_inbound_provider_identity.py +0 -0
  104. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v08_transient_stream_events.py +0 -0
  105. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v09_remove_runtime_events.py +0 -0
  106. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v10_add_outbound_attachments.py +0 -0
  107. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v11_remove_runtime_session_mapping.py +0 -0
  108. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v12_add_reminders.py +0 -0
  109. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v13_add_agent_ownership.py +0 -0
  110. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v14_add_inbox_discovery_indexes.py +0 -0
  111. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v15_add_handoffs.py +0 -0
  112. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v16_remove_outbound_drafts.py +0 -0
  113. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v17_remove_agent_identity_triggers.py +0 -0
  114. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v18_unify_messages.py +0 -0
  115. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v19_reminder_system_messages.py +0 -0
  116. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v20_remove_freshness_persistence.py +0 -0
  117. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v21_remove_handoffs.py +0 -0
  118. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v22_readable_targets.py +0 -0
  119. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v23_persist_sender_identity.py +0 -0
  120. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v24_persist_sender_display_name.py +0 -0
  121. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v25_rename_sessions_to_threads.py +0 -0
  122. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v26_remove_handoff_messages.py +0 -0
  123. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v27_name_dms_by_the_peer_id.py +0 -0
  124. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v28_channel_session_identity.py +0 -0
  125. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v29_backfill_channel_identity.py +0 -0
  126. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v30_remove_command_id.py +0 -0
  127. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v31_channel_session_review.py +0 -0
  128. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/v32_message_search.py +0 -0
  129. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/plugin.py +0 -0
  130. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/reminder_codec.py +0 -0
  131. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/repository/__init__.py +0 -0
  132. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/repository/base.py +0 -0
  133. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/repository/facade.py +0 -0
  134. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/repository/messages.py +0 -0
  135. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/repository/reminders.py +0 -0
  136. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/repository/search.py +0 -0
  137. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/repository/sessions.py +0 -0
  138. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/repository/settings.py +0 -0
  139. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/storage.py +0 -0
  140. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/telegram/__init__.py +0 -0
  141. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/telegram/api.py +0 -0
  142. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/telegram/approval.py +0 -0
  143. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/telegram/attachments.py +0 -0
  144. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/telegram/channel.py +0 -0
  145. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/telegram/identity.py +0 -0
  146. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/telegram/markdown.py +0 -0
  147. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/telegram/outbound.py +0 -0
  148. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/telegram/plugin.py +0 -0
  149. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/wecom/__init__.py +0 -0
  150. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/wecom/channel.py +0 -0
  151. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/wecom/identity.py +0 -0
  152. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/wecom/outbound.py +0 -0
  153. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/wecom/plugin.py +0 -0
  154. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/__init__.py +0 -0
  155. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/actor.py +0 -0
  156. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/agent.py +0 -0
  157. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/approval.py +0 -0
  158. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/audit.py +0 -0
  159. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/channel.py +0 -0
  160. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/client.py +0 -0
  161. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/command.py +0 -0
  162. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/concurrency.py +0 -0
  163. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/control.py +0 -0
  164. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/correlation.py +0 -0
  165. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/inbox.py +0 -0
  166. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/instruction.py +0 -0
  167. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/lifecycle.py +0 -0
  168. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/models/__init__.py +0 -0
  169. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/models/entities.py +0 -0
  170. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/models/events.py +0 -0
  171. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/models/reminder.py +0 -0
  172. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/models/reminder_owner.py +0 -0
  173. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/models/states.py +0 -0
  174. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/observability.py +0 -0
  175. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/orchestration/__init__.py +0 -0
  176. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/orchestration/commands/__init__.py +0 -0
  177. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/orchestration/commands/base.py +0 -0
  178. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/orchestration/commands/messages.py +0 -0
  179. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/orchestration/commands/reminders.py +0 -0
  180. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/orchestration/commands/review.py +0 -0
  181. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/orchestration/delivery.py +0 -0
  182. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/orchestration/error_feedback.py +0 -0
  183. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/orchestration/orchestrator.py +0 -0
  184. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/orchestration/reminder.py +0 -0
  185. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/orchestration/services.py +0 -0
  186. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/orchestration/upgrade_notice.py +0 -0
  187. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/outcomes.py +0 -0
  188. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/reminder.py +0 -0
  189. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/reminder_schedule.py +0 -0
  190. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/review.py +0 -0
  191. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/runtime.py +0 -0
  192. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/serialize.py +0 -0
  193. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/storage.py +0 -0
  194. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/timerwheel.py +0 -0
  195. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/utils/__init__.py +0 -0
  196. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/utils/clock.py +0 -0
  197. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/utils/command.py +0 -0
  198. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/utils/line_reader.py +0 -0
  199. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/utils/markdown.py +0 -0
  200. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/utils/sanitization.py +0 -0
  201. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/utils/text.py +0 -0
  202. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/i18n/__init__.py +0 -0
  203. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/i18n/catalog.py +0 -0
  204. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/rendering.py +0 -0
  205. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/approval_no_person.tpl +0 -0
  206. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/bcc/check.tpl +0 -0
  207. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/bcc/error.tpl +0 -0
  208. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/bcc/inbox_check.tpl +0 -0
  209. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/bcc/read.tpl +0 -0
  210. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/bcc/reminder_list.tpl +0 -0
  211. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/bcc/reminder_mutation.tpl +0 -0
  212. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/bcc/reminder_schedule.tpl +0 -0
  213. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/bcc/search.tpl +0 -0
  214. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/bcc/unfollow.tpl +0 -0
  215. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/bcc/upgrade.tpl +0 -0
  216. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/bcc/version.tpl +0 -0
  217. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/command/attachment_suffix.tpl +0 -0
  218. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/command/check_message.tpl +0 -0
  219. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/command/freshness_hold.tpl +0 -0
  220. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/command/read_message.tpl +0 -0
  221. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/command/send_result.tpl +0 -0
  222. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/command/sender.tpl +0 -0
  223. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/developer_instructions.md +0 -0
  224. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/locales/en.toml +0 -0
  225. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/locales/zh-CN.toml +0 -0
  226. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/system_service/windows.vbs +0 -0
  227. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/system_service/windows.xml +0 -0
  228. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/__init__.py +0 -0
  229. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/access.py +0 -0
  230. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/accounts.py +0 -0
  231. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/activity.py +0 -0
  232. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/app.py +0 -0
  233. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/cli.py +0 -0
  234. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/clock.py +0 -0
  235. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/config.py +0 -0
  236. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/configure.py +0 -0
  237. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/consumers.py +0 -0
  238. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/contacts.py +0 -0
  239. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/contrib/__init__.py +0 -0
  240. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/contrib/sqlite/__init__.py +0 -0
  241. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/contrib/sqlite/migrations/__init__.py +0 -0
  242. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/contrib/sqlite/migrations/model.py +0 -0
  243. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/contrib/sqlite/migrations/registry.py +0 -0
  244. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/contrib/sqlite/migrations/v01_initial_server_schema.py +0 -0
  245. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/contrib/sqlite/migrations/v02_refs.py +0 -0
  246. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/contrib/sqlite/migrations/v03_roles_oidc.py +0 -0
  247. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/contrib/sqlite/migrations/v04_login_order.py +0 -0
  248. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/contrib/sqlite/migrations/v05_provider_description.py +0 -0
  249. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/contrib/sqlite/migrations/v06_provider_default_role.py +0 -0
  250. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/contrib/sqlite/migrations/v07_oidc_session_settings.py +0 -0
  251. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/contrib/sqlite/plugin.py +0 -0
  252. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/contrib/sqlite/storage.py +0 -0
  253. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/control.py +0 -0
  254. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/fleet.py +0 -0
  255. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/gate.py +0 -0
  256. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/history.py +0 -0
  257. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/i18n.py +0 -0
  258. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/images.py +0 -0
  259. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/markdown.py +0 -0
  260. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/pages/__init__.py +0 -0
  261. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/pages/accounts.py +0 -0
  262. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/pages/agents.py +0 -0
  263. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/pages/computers.py +0 -0
  264. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/pages/login.py +0 -0
  265. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/pages/oidc.py +0 -0
  266. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/pages/oidc_login.py +0 -0
  267. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/pages/poll.py +0 -0
  268. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/pages/profile.py +0 -0
  269. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/pages/roles.py +0 -0
  270. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/pages/settings.py +0 -0
  271. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/pages/shares.py +0 -0
  272. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/permissions.py +0 -0
  273. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/poll_rendering.py +0 -0
  274. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/polling.py +0 -0
  275. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/protocol.py +0 -0
  276. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/reauth.py +0 -0
  277. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/refs.py +0 -0
  278. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/registry.py +0 -0
  279. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/rendering.py +0 -0
  280. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/locales/en.toml +0 -0
  281. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/locales/zh-CN.toml +0 -0
  282. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/THIRD_PARTY.md +0 -0
  283. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/agent-form.js +0 -0
  284. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/alpine-3.17.4.min.js +0 -0
  285. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/alpine-LICENSE.txt +0 -0
  286. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/alpine-collapse-3.17.4.min.js +0 -0
  287. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/alpine-collapse-LICENSE.txt +0 -0
  288. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/alpine-focus-3.17.4.min.js +0 -0
  289. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/alpine-focus-LICENSE.txt +0 -0
  290. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/app.css +0 -0
  291. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/app.webmanifest +0 -0
  292. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/apple-touch-icon.png +0 -0
  293. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/components.js +0 -0
  294. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/favicon.svg +0 -0
  295. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/htmx-LICENSE.txt +0 -0
  296. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/htmx.min.js +0 -0
  297. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/hx-alpine-compat-4.0.0.js +0 -0
  298. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/icon-192.png +0 -0
  299. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/icon-512.png +0 -0
  300. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/poll.js +0 -0
  301. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/activity_card.html +0 -0
  302. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_contacts_head.html +0 -0
  303. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_form.html +0 -0
  304. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_kinds.html +0 -0
  305. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_list.html +0 -0
  306. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_models.html +0 -0
  307. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_new.html +0 -0
  308. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_profile.html +0 -0
  309. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_profile_activity.html +0 -0
  310. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_profile_config.html +0 -0
  311. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_profile_events.html +0 -0
  312. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_profile_files.html +0 -0
  313. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_profile_head.html +0 -0
  314. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_profile_sharing.html +0 -0
  315. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_profile_skills.html +0 -0
  316. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_profile_status.html +0 -0
  317. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_profile_workspace.html +0 -0
  318. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_remove.html +0 -0
  319. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_row.html +0 -0
  320. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_rows.html +0 -0
  321. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agents.html +0 -0
  322. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/board.svg +0 -0
  323. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/chat.html +0 -0
  324. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/code.html +0 -0
  325. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/components.html +0 -0
  326. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/computer_detail.html +0 -0
  327. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/computer_list.html +0 -0
  328. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/computer_row.html +0 -0
  329. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/computer_rows.html +0 -0
  330. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/computers.html +0 -0
  331. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/contact_rows.html +0 -0
  332. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/contacts.html +0 -0
  333. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/conversation_reminders.html +0 -0
  334. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/enrol_form.html +0 -0
  335. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/enrolled.html +0 -0
  336. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/error.html +0 -0
  337. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/history.html +0 -0
  338. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/history_end.html +0 -0
  339. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/history_rows.html +0 -0
  340. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/history_tail.html +0 -0
  341. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/alarm-clock.svg +0 -0
  342. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/arrow-down.svg +0 -0
  343. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/arrow-left.svg +0 -0
  344. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/arrow-right.svg +0 -0
  345. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/arrow-up.svg +0 -0
  346. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/calendar.svg +0 -0
  347. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/check.svg +0 -0
  348. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/chevron-down.svg +0 -0
  349. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/chevron-left.svg +0 -0
  350. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/chevron-right.svg +0 -0
  351. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/chevron-up.svg +0 -0
  352. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/chevrons-down.svg +0 -0
  353. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/copy.svg +0 -0
  354. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/file.svg +0 -0
  355. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/folder.svg +0 -0
  356. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/grid-2x2.svg +0 -0
  357. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/key-round.svg +0 -0
  358. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/languages.svg +0 -0
  359. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/lark.svg +0 -0
  360. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/loader.svg +0 -0
  361. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/log-out.svg +0 -0
  362. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/message-circle.svg +0 -0
  363. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/message-square-text.svg +0 -0
  364. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/monitor.svg +0 -0
  365. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/openai.svg +0 -0
  366. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/paperclip.svg +0 -0
  367. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/pencil.svg +0 -0
  368. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/plus.svg +0 -0
  369. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/repeat.svg +0 -0
  370. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/rotate-cw.svg +0 -0
  371. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/search.svg +0 -0
  372. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/settings.svg +0 -0
  373. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/si-apple.svg +0 -0
  374. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/si-claude.svg +0 -0
  375. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/si-linux.svg +0 -0
  376. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/si-telegram.svg +0 -0
  377. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/sun-moon.svg +0 -0
  378. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/trash-2.svg +0 -0
  379. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/triangle-alert.svg +0 -0
  380. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/unplug.svg +0 -0
  381. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/user-plus.svg +0 -0
  382. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/users.svg +0 -0
  383. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/wecom.svg +0 -0
  384. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/x.svg +0 -0
  385. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/image.html +0 -0
  386. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/login.html +0 -0
  387. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/login_form.html +0 -0
  388. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/password_form.html +0 -0
  389. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/presence.html +0 -0
  390. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/profile.html +0 -0
  391. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/rail.html +0 -0
  392. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/remove_ask.html +0 -0
  393. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/remove_form.html +0 -0
  394. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/review_card.html +0 -0
  395. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/scripts.html +0 -0
  396. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/search.html +0 -0
  397. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/search_results.html +0 -0
  398. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/settings.html +0 -0
  399. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/settings_accounts.html +0 -0
  400. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/settings_appearance.html +0 -0
  401. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/settings_oidc.html +0 -0
  402. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/settings_roles.html +0 -0
  403. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/settings_security.html +0 -0
  404. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/shares.html +0 -0
  405. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/shell.html +0 -0
  406. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/sign.svg +0 -0
  407. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/unreachable.html +0 -0
  408. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/review.py +0 -0
  409. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/search.py +0 -0
  410. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/secrets.py +0 -0
  411. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/sessions.py +0 -0
  412. {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/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.1rc13
3
+ Version: 0.2.1rc15
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.1rc13"
3
+ version = "0.2.1rc15"
4
4
  description = "Runtime-agnostic computer node daemon for agents and channels."
5
5
  readme = "README.md"
6
6
  license = "AGPL-3.0-only"
@@ -78,8 +78,11 @@ module-name = [
78
78
  ]
79
79
 
80
80
  [tool.pytest.ini_options]
81
- addopts = "-m 'not e2e' -p no:anyio"
82
- markers = ["e2e: requires a real external provider"]
81
+ addopts = "-m 'not e2e and not system' -p no:anyio"
82
+ markers = [
83
+ "e2e: requires a real external provider",
84
+ "system: runs real native system services in an isolated environment",
85
+ ]
83
86
 
84
87
  [build-system]
85
88
  requires = ["uv_build>=0.12.2,<0.13.0"]
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "bazaar-compute-node"
3
- version = "0.2.1rc13"
3
+ version = "0.2.1rc15"
4
4
  description = "Runtime-agnostic computer node daemon for agents and channels."
5
5
  readme = "README.md"
6
6
  license = "AGPL-3.0-only"
@@ -73,9 +73,10 @@ bcn-test-support = { path = "tests/support", editable = true }
73
73
  [tool.pytest.ini_options]
74
74
  # anyio arrives with starlette and brings a pytest plugin that fights
75
75
  # pytest-asyncio over the event loop; the suite runs on pytest-asyncio alone
76
- addopts = "-m 'not e2e' -p no:anyio"
76
+ addopts = "-m 'not e2e and not system' -p no:anyio"
77
77
  markers = [
78
78
  "e2e: requires a real external provider",
79
+ "system: runs real native system services in an isolated environment",
79
80
  ]
80
81
 
81
82
  [build-system]
@@ -20,7 +20,6 @@ from ..core.models import InboundAttachment, Message, RuntimeEventState
20
20
  from ..core.observability import AuditContext, IAudit
21
21
  from ..core.orchestration import ReminderScheduler
22
22
  from ..core.paths import resolve_data_dir, resolve_workspace_dir
23
- from ..core.restart import RESTART_EXIT_CODE
24
23
  from ..core.runtime import RuntimeAvailability, RuntimeDescription, RuntimeModels
25
24
  from ..core.storage import IStorage
26
25
  from ..core.timerwheel import TimerWheel
@@ -204,17 +203,11 @@ class NodeApplication:
204
203
  version=__version__,
205
204
  interval_seconds=self.timeout_budget.startup_seconds,
206
205
  )
207
- self._restart_requested = False
208
- # Windows has nothing that brings the node back after it exits, so
209
- # there it offers no upgrade command at all
210
- self.upgrade_service = (
211
- None
212
- if os.name == "nt"
213
- else UpgradeService(
214
- available_version=self.version_watcher.available_version,
215
- installed_version=__version__,
216
- request_restart=self.request_restart,
217
- )
206
+ self._stopped = asyncio.Event()
207
+ self.upgrade_service = UpgradeService(
208
+ available_version=self.version_watcher.available_version,
209
+ installed_version=__version__,
210
+ request_stop=self._stopped.set,
218
211
  )
219
212
  self.command_server = LocalCommandServer(
220
213
  self._dispatch,
@@ -226,7 +219,6 @@ class NodeApplication:
226
219
  self._started = False
227
220
  self._ready = False
228
221
  self._accepting = False
229
- self._stopped = asyncio.Event()
230
222
  self._logger = logging.getLogger("bazaar_compute_node.application")
231
223
 
232
224
  @property
@@ -865,16 +857,6 @@ class NodeApplication:
865
857
  if errors:
866
858
  self._log("bcn.stop.errors", errors=errors)
867
859
 
868
- def request_restart(self) -> None:
869
- """Stop, and tell whatever hosts this node to start it again."""
870
-
871
- self._restart_requested = True
872
- self._stopped.set()
873
-
874
- @property
875
- def exit_code(self) -> int:
876
- return RESTART_EXIT_CODE if self._restart_requested else 0
877
-
878
860
  async def wait(self) -> None:
879
861
  loop = asyncio.get_running_loop()
880
862
  for signum in (signal.SIGINT, signal.SIGTERM):
@@ -273,8 +273,6 @@ class CommandDispatcher(_MessageCommandDispatcher):
273
273
  if resource == "node":
274
274
  upgrade_service = self._upgrade_service
275
275
  if upgrade_service is None:
276
- # nothing on this platform would bring the node back after an
277
- # upgrade exits it, so the Agent is given no upgrade to run
278
276
  raise CommandDispatchError(
279
277
  "UNKNOWN_RESOURCE",
280
278
  f"unsupported command resource: {resource}",
@@ -13,10 +13,9 @@ from .config import (
13
13
  NodeConfiguration,
14
14
  _replace_file,
15
15
  load_node_configuration,
16
- resolve_config_path,
17
16
  write_configuration,
18
17
  )
19
- from .system_service import default_env_file, installed_env_file
18
+ from .system_service import default_env_file, installed_env_file, resolve_service_paths
20
19
  from .usage import Usage
21
20
 
22
21
  TOKEN_ENV = "BCN_SERVER_TOKEN"
@@ -31,7 +30,7 @@ def run_server_command(args: argparse.Namespace, parser: Usage) -> int:
31
30
  or args.foreground
32
31
  ):
33
32
  parser.error("bcn server commands only accept the node-level --config option")
34
- config_path = (args.config or resolve_config_path()).expanduser()
33
+ config_path, _ = resolve_service_paths(args.config)
35
34
  try:
36
35
  configuration = load_node_configuration(config_path)
37
36
  except ConfigurationError as error:
@@ -61,7 +60,7 @@ def _connect(
61
60
  parser.error("--token must not contain quotes or line breaks")
62
61
  # a registered service already said which file it reads; before any
63
62
  # registration the default is ours to set, and the install must match it
64
- registered = installed_env_file()
63
+ registered = installed_env_file(registered=True)
65
64
  env_file = (args.env_file or registered or default_env_file()).expanduser()
66
65
  options = MappingProxyType({"url": url, "token_env": TOKEN_ENV})
67
66
  updated = replace(
@@ -14,6 +14,7 @@ import sys
14
14
  import tempfile
15
15
  import time
16
16
  from dataclasses import dataclass
17
+ from importlib.resources import files
17
18
  from pathlib import Path
18
19
 
19
20
  from ..core.paths import resolve_data_dir
@@ -43,6 +44,7 @@ class SystemServiceContext:
43
44
  """Resolved paths used to render one user-level system service."""
44
45
 
45
46
  executable: Path | None
47
+ python: Path
46
48
  config_path: Path
47
49
  data_dir: Path
48
50
  env_file: Path
@@ -88,14 +90,16 @@ def _build_context(
88
90
  "bcn system-service commands only accept the node-level --config option"
89
91
  )
90
92
  executable = _resolve_executable() if require_executable else None
91
- config_path = (args.config or resolve_config_path()).expanduser().resolve()
93
+ config_path, data_dir = resolve_service_paths(
94
+ args.config, registered=not require_executable
95
+ )
92
96
  # the service reads the same file `bcn server connect` writes to unless
93
97
  # told another; none of the platforms minds the file not existing yet
94
98
  env_file = (getattr(args, "env_file", None) or default_env_file()).expanduser()
95
99
  env_file = env_file.resolve()
96
- data_dir = resolve_data_dir()
97
100
  return SystemServiceContext(
98
101
  executable=executable,
102
+ python=Path(vars(sys)["_base_executable"]).resolve(),
99
103
  config_path=config_path,
100
104
  data_dir=data_dir,
101
105
  env_file=env_file,
@@ -104,6 +108,61 @@ def _build_context(
104
108
  )
105
109
 
106
110
 
111
+ def resolve_service_paths(
112
+ config: Path | None = None, *, registered: bool = True
113
+ ) -> tuple[Path, Path]:
114
+ """Read the node paths selected by an installed service, without account lookup."""
115
+
116
+ config_path = (config or resolve_config_path()).expanduser().resolve()
117
+ data_dir = resolve_data_dir()
118
+ if registered:
119
+ system = platform.system()
120
+ if system == "Linux":
121
+ unit_path = _systemd_unit_path()
122
+ if _is_managed(unit_path):
123
+ values = dict(
124
+ line.split("=", 1)
125
+ for line in unit_path.read_text(encoding="utf-8").splitlines()
126
+ if "=" in line
127
+ )
128
+ data_dir = Path(values["WorkingDirectory"].replace("%%", "%"))
129
+ if config is None:
130
+ command = shlex.split(values["ExecStart"])
131
+ config_path = Path(
132
+ command[command.index("--config") + 1].replace("%%", "%")
133
+ )
134
+ elif system == "Darwin":
135
+ plist_path, _ = _launchd_paths()
136
+ if _is_managed(plist_path):
137
+ with plist_path.open("rb") as stream:
138
+ values = plistlib.load(stream)
139
+ data_dir = Path(values["WorkingDirectory"])
140
+ if config is None:
141
+ config_path = Path(values["EnvironmentVariables"]["BCN_CONFIG"])
142
+ elif system == "Windows":
143
+ directory = _windows_service_data_dir()
144
+ if directory is not None:
145
+ data_dir = directory
146
+ if config is None:
147
+ _, script_path, _ = _windows_paths(data_dir)
148
+ if not _is_managed(script_path):
149
+ raise RuntimeError(
150
+ "registered system service wrapper is missing or unmanaged"
151
+ )
152
+ for line in script_path.read_text(encoding="utf-8").splitlines():
153
+ if line.startswith("$configPath = '"):
154
+ value = line.removeprefix("$configPath = '").removesuffix(
155
+ "'"
156
+ )
157
+ config_path = Path(value.replace("''", "'"))
158
+ break
159
+ else:
160
+ raise RuntimeError(
161
+ "registered system service wrapper has no config path"
162
+ )
163
+ return config_path, data_dir
164
+
165
+
107
166
  def _resolve_current_user() -> str:
108
167
  try:
109
168
  return getpass.getuser()
@@ -123,8 +182,11 @@ def _require_executable(context: SystemServiceContext) -> Path:
123
182
  return context.executable
124
183
 
125
184
 
126
- def _systemd_quote(path: Path) -> str:
127
- return shlex.quote(str(path))
185
+ def _systemd_quote(path: Path | str, *, quote: bool = True) -> str:
186
+ value = str(path).replace("%", "%%")
187
+ return (
188
+ '"' + value.replace("\\", "\\\\").replace('"', '\\"') + '"' if quote else value
189
+ )
128
190
 
129
191
 
130
192
  def _powershell_literal(path: Path | str | None) -> str:
@@ -137,9 +199,12 @@ def _render_systemd_unit(context: SystemServiceContext) -> str:
137
199
  {
138
200
  "managed_marker": MANAGED_MARKER,
139
201
  "executable": _systemd_quote(_require_executable(context)),
202
+ "python": _systemd_quote(context.python),
203
+ "supervisor_path": _systemd_quote(context.data_dir / "supervisor.py"),
140
204
  "config_path": _systemd_quote(context.config_path),
141
- "data_dir": _systemd_quote(context.data_dir),
142
- "environment_file": _systemd_quote(context.env_file),
205
+ "data_dir": _systemd_quote(context.data_dir, quote=False),
206
+ "home_environment": _systemd_quote(f"BCN_HOME={context.data_dir.parent}"),
207
+ "environment_file": _systemd_quote(context.env_file, quote=False),
143
208
  }
144
209
  )
145
210
 
@@ -158,9 +223,12 @@ def _render_launchd_plist(
158
223
  "managed_marker": MANAGED_MARKER,
159
224
  "wrapper_path": str(wrapper_path),
160
225
  "data_dir": str(context.data_dir),
226
+ "home_dir": str(context.data_dir.parent),
161
227
  "config_path": str(context.config_path),
162
228
  "environment_file": str(context.env_file),
163
229
  "executable": str(_require_executable(context)),
230
+ "python": str(context.python),
231
+ "supervisor_path": str(context.data_dir / "supervisor.py"),
164
232
  "log_path": str(context.log_path),
165
233
  }
166
234
  ).encode("utf-8")
@@ -171,7 +239,10 @@ def _render_windows_wrapper(context: SystemServiceContext) -> str:
171
239
  {
172
240
  "managed_marker": MANAGED_MARKER,
173
241
  "executable": _powershell_literal(_require_executable(context)),
242
+ "python": _powershell_literal(context.python),
243
+ "supervisor_path": _powershell_literal(context.data_dir / "supervisor.py"),
174
244
  "config_path": _powershell_literal(context.config_path),
245
+ "home_dir": _powershell_literal(context.data_dir.parent),
175
246
  "environment_script": _powershell_literal(context.env_file),
176
247
  "log_path": _powershell_literal(context.log_path),
177
248
  }
@@ -313,6 +384,7 @@ def _windows_paths(data_dir: Path) -> tuple[Path, Path, Path]:
313
384
 
314
385
 
315
386
  def _install_linux(context: SystemServiceContext) -> None:
387
+ _install_supervisor(context)
316
388
  unit_path = _systemd_unit_path()
317
389
  _write_managed_file(unit_path, _render_systemd_unit(context), mode=0o600)
318
390
  _run_native_command(["systemctl", "--user", "daemon-reload"])
@@ -325,6 +397,7 @@ def _install_linux(context: SystemServiceContext) -> None:
325
397
 
326
398
 
327
399
  def _install_macos(context: SystemServiceContext) -> None:
400
+ _install_supervisor(context)
328
401
  plist_path, wrapper_path = _launchd_paths()
329
402
  _write_managed_file(
330
403
  wrapper_path,
@@ -344,6 +417,7 @@ def _install_macos(context: SystemServiceContext) -> None:
344
417
 
345
418
 
346
419
  def _install_windows(context: SystemServiceContext) -> None:
420
+ _install_supervisor(context)
347
421
  xml_path, wrapper_path, launcher_path = _windows_paths(context.data_dir)
348
422
  context.data_dir.mkdir(parents=True, exist_ok=True)
349
423
  _write_managed_file(
@@ -379,6 +453,16 @@ def _install_windows(context: SystemServiceContext) -> None:
379
453
  print(f"Start with: schtasks /Run /TN {WINDOWS_TASK_NAME}", flush=True)
380
454
 
381
455
 
456
+ def _install_supervisor(context: SystemServiceContext) -> None:
457
+ _write_managed_file(
458
+ context.data_dir / "supervisor.py",
459
+ files("bazaar_compute_node")
460
+ .joinpath("resources/system_service/supervisor.py")
461
+ .read_bytes(),
462
+ mode=0o600,
463
+ )
464
+
465
+
382
466
  def default_env_file() -> Path:
383
467
  """The environment file a service reads unless told another, in the
384
468
  platform's format."""
@@ -387,7 +471,31 @@ def default_env_file() -> Path:
387
471
  return Path.home() / ".config" / "bcn" / name
388
472
 
389
473
 
390
- def installed_env_file() -> Path | None:
474
+ def _windows_service_data_dir() -> Path | None:
475
+ task_path = _powershell_literal("\\")
476
+ task_name = _powershell_literal(WINDOWS_TASK_NAME.lstrip("\\"))
477
+ query_script = "\n".join(
478
+ (
479
+ "$ErrorActionPreference = 'Stop'",
480
+ f"$task = Get-ScheduledTask -TaskPath {task_path} -TaskName {task_name}",
481
+ f"if ($task.Description -eq {_powershell_literal(MANAGED_MARKER)}) {{",
482
+ " $task.Actions.WorkingDirectory",
483
+ "}",
484
+ "",
485
+ )
486
+ )
487
+ queried = _run_native_command(
488
+ ["powershell.exe", "-NoProfile", "-NonInteractive", "-Command", query_script],
489
+ check=False,
490
+ )
491
+ return (
492
+ Path(queried.stdout.strip())
493
+ if queried.returncode == 0 and queried.stdout.strip()
494
+ else None
495
+ )
496
+
497
+
498
+ def installed_env_file(*, registered: bool = False) -> Path | None:
391
499
  """The environment file the registered service was told to read, if any;
392
500
  a service file at our path that is not ours says nothing."""
393
501
 
@@ -399,7 +507,7 @@ def installed_env_file() -> Path | None:
399
507
  for line in unit_path.read_text(encoding="utf-8").splitlines():
400
508
  if line.startswith("EnvironmentFile="):
401
509
  value = line.removeprefix("EnvironmentFile=").removeprefix("-")
402
- return Path(shlex.split(value)[0]) if value else None
510
+ return Path(value.replace("%%", "%")) if value else None
403
511
  return None
404
512
  if system == "Darwin":
405
513
  plist_path, _ = _launchd_paths()
@@ -413,7 +521,12 @@ def installed_env_file() -> Path | None:
413
521
  )
414
522
  return Path(value) if isinstance(value, str) and value else None
415
523
  if system == "Windows":
416
- _, script_path, _ = _windows_paths(resolve_data_dir())
524
+ data_dir = (
525
+ _windows_service_data_dir() or resolve_data_dir()
526
+ if registered
527
+ else resolve_data_dir()
528
+ )
529
+ _, script_path, _ = _windows_paths(data_dir)
417
530
  if not _is_managed(script_path):
418
531
  return None
419
532
  for line in script_path.read_text(encoding="utf-8").splitlines():
@@ -477,18 +590,21 @@ def _stop_macos() -> None:
477
590
 
478
591
  def _managed_windows_process_ids(context: SystemServiceContext) -> tuple[int, ...]:
479
592
  config_path = _powershell_literal(context.config_path)
593
+ supervisor_path = _powershell_literal(context.data_dir / "supervisor.py")
480
594
  script = "\n".join(
481
595
  (
482
596
  "$ErrorActionPreference = 'Stop'",
483
597
  "$queryProcessId = $PID",
484
598
  f"$configPath = [IO.Path]::GetFullPath({config_path}).ToLowerInvariant()",
599
+ f"$supervisorPath = [IO.Path]::GetFullPath({supervisor_path}).ToLowerInvariant()",
485
600
  "Get-CimInstance -ClassName Win32_Process |",
486
601
  " Where-Object {",
487
602
  " $_.ProcessId -ne $queryProcessId -and",
488
603
  " $_.CommandLine -and",
489
604
  " $_.CommandLine.ToLowerInvariant().Contains($configPath) -and",
490
- r" $_.CommandLine -match '(?i)(^|\s)run(\s|$)' -and",
491
- r" $_.CommandLine -match '(?i)(^|\s)--config(\s|$)'",
605
+ r" $_.CommandLine -match '(?i)(^|\s)--config(\s|$)' -and",
606
+ " ($_.CommandLine.ToLowerInvariant().Contains($supervisorPath) -or",
607
+ r" $_.CommandLine -match '(?i)(^|\s)run(\s|$)')",
492
608
  " } |",
493
609
  " ForEach-Object { $_.ProcessId }",
494
610
  "",
@@ -630,6 +746,10 @@ def _uninstall(context: SystemServiceContext) -> None:
630
746
  _uninstall_windows(context)
631
747
  else:
632
748
  raise RuntimeError(f"unsupported host service platform: {system}")
749
+ _remove_managed_file(context.data_dir / "supervisor.py")
750
+ (
751
+ context.data_dir / ("bcn.running.exe" if os.name == "nt" else "bcn.running")
752
+ ).unlink(missing_ok=True)
633
753
 
634
754
 
635
755
  def _status_linux() -> NativeServiceStatus:
@@ -900,5 +1020,6 @@ __all__ = [
900
1020
  "SystemServiceContext",
901
1021
  "default_env_file",
902
1022
  "installed_env_file",
1023
+ "resolve_service_paths",
903
1024
  "run_system_service_command",
904
1025
  ]
@@ -70,7 +70,8 @@ def _install(version: str) -> None:
70
70
  _uv_executable(),
71
71
  "tool",
72
72
  "install",
73
- "--force",
73
+ # Reuse the tool environment: --force would remove its running
74
+ # Python interpreter on Windows, even with a copied entry point.
74
75
  # the release was announced by PyPI's own API minutes ago, while uv
75
76
  # resolves against a separately cached index that can still predate
76
77
  # it and would then report the version as one that does not exist
@@ -90,11 +91,11 @@ class UpgradeService:
90
91
  *,
91
92
  available_version: Callable[[], str | None],
92
93
  installed_version: str,
93
- request_restart: Callable[[], None],
94
+ request_stop: Callable[[], None],
94
95
  ) -> None:
95
96
  self._available_version = available_version
96
97
  self._installed_version = installed_version
97
- self._request_restart = request_restart
98
+ self._request_stop = request_stop
98
99
  self._lock = asyncio.Lock()
99
100
 
100
101
  @property
@@ -134,10 +135,7 @@ class UpgradeService:
134
135
  raise UpgradeError(f"{version!r} is not a release version") from error
135
136
  await self.install(version)
136
137
  reminder_id = await wake_after(version)
137
- # the node cannot restart itself from the inside: on Windows the
138
- # stop it would ask for kills the process tree it is asking from.
139
- # Exiting is the one thing it can do that its host watches for.
140
- self._request_restart()
138
+ self._request_stop()
141
139
  return version, reminder_id
142
140
 
143
141
  async def install(self, version: str) -> None:
@@ -36,13 +36,10 @@ for group in (message, thread, reminder):
36
36
  if os.environ.get("BCN_AGENT_MODE") == Mode.DANGEROUS_INDIVIDUAL.value:
37
37
  bcc.add_command(inbox)
38
38
 
39
- # Windows has nothing that brings the node back after an upgrade exits it, so
40
- # there the node offers no upgrade and the commands would only ever be refused
41
- if os.name != "nt":
42
- bcc.add_command(node)
43
- # `bcc upgrade` reads better than `bcc node upgrade`, so the command line name
44
- # and the resource it addresses differ here
45
- bcc.add_command(node.commands["upgrade"], "upgrade")
39
+ bcc.add_command(node)
40
+ # `bcc upgrade` reads better than `bcc node upgrade`, so the command line name
41
+ # and the resource it addresses differ here
42
+ bcc.add_command(node.commands["upgrade"], "upgrade")
46
43
 
47
44
 
48
45
  def main(argv: Sequence[str] | None = None) -> int:
@@ -175,7 +175,7 @@ async def _run_node(args: argparse.Namespace, parser: Usage) -> int:
175
175
  except TimeoutError:
176
176
  print("bcn stop timed out; ending runtimes", file=sys.stderr, flush=True)
177
177
  await children.end_all()
178
- return node.exit_code
178
+ return 0
179
179
 
180
180
 
181
181
  def build_node_commands(translator: Translator) -> tuple[click.Command, ...]:
@@ -2,7 +2,6 @@ from __future__ import annotations
2
2
 
3
3
  import asyncio
4
4
  import logging
5
- import os
6
5
  from collections.abc import Awaitable, Callable, Mapping, Sequence
7
6
  from dataclasses import asdict, dataclass, replace
8
7
 
@@ -257,9 +256,6 @@ def inbox_notice(
257
256
  "rows": [row[2] for row in rows],
258
257
  "upgrade_version": upgrade_version,
259
258
  "installed_version": installed_version,
260
- # Windows has nothing that would bring the node back after an
261
- # upgrade exits it, so there the user runs the commands themselves
262
- "manual_upgrade": os.name == "nt",
263
259
  "closing_bracket_on_own_line": closing_bracket_on_own_line,
264
260
  }
265
261
  )
@@ -0,0 +1,19 @@
1
+ from __future__ import annotations
2
+
3
+ import os
4
+ from pathlib import Path
5
+
6
+
7
+ def resolve_data_dir() -> Path:
8
+ """Resolve .bcn under BCN_HOME or the user's home."""
9
+
10
+ path = Path(os.environ.get("BCN_HOME") or Path.home())
11
+ return path.expanduser().resolve() / ".bcn"
12
+
13
+
14
+ def resolve_workspace_dir(agent_id: str) -> Path:
15
+ """Resolve the persistent workspace owned by one configured Agent."""
16
+
17
+ if not isinstance(agent_id, str) or not agent_id:
18
+ raise ValueError("agent_id must be a non-empty string")
19
+ return resolve_data_dir() / "workspaces" / agent_id
@@ -69,6 +69,9 @@ def _signal_group(pid: int, number: signal.Signals) -> None:
69
69
  os.killpg(pid, number)
70
70
  except ProcessLookupError:
71
71
  pass
72
+ except PermissionError:
73
+ if sys.platform != "darwin" or _group_has_live_members(pid):
74
+ raise
72
75
 
73
76
 
74
77
  def _group_alive(pid: int) -> bool:
@@ -76,9 +79,25 @@ def _group_alive(pid: int) -> bool:
76
79
  os.killpg(pid, 0)
77
80
  except ProcessLookupError:
78
81
  return False
82
+ except PermissionError:
83
+ if sys.platform != "darwin" or _group_has_live_members(pid):
84
+ raise
85
+ return False
79
86
  return True
80
87
 
81
88
 
89
+ def _group_has_live_members(pid: int) -> bool:
90
+ # Darwin also returns EPERM for a group containing only zombies. Check
91
+ # the kernel's process list before treating a permission error as exit.
92
+ result = subprocess.run(
93
+ ["ps", "-axo", "pgid=,stat="], capture_output=True, text=True, check=True
94
+ )
95
+ return any(
96
+ int(group) == pid and not state.startswith("Z")
97
+ for group, state in (line.split() for line in result.stdout.splitlines())
98
+ )
99
+
100
+
82
101
  async def _end_tree(pid: int) -> None:
83
102
  process = await asyncio.create_subprocess_exec(
84
103
  "taskkill",
@@ -1,5 +1,5 @@
1
1
  [inbox notice:
2
2
  Inbox update: {{ total_unread_count }} unread {{ "message" if total_unread_count == 1 else "messages" }} total; {{ rows | length }} changed {{ "target" if rows | length == 1 else "targets" }}{% for row in rows %}
3
3
  {{ row.target }} pending: {{ row.pending_count }} {{ "message" if row.pending_count == 1 else "messages" }} · first msg={{ row.first_id }}{% if row.latest_sender is not none %} · latest sender @{{ row.latest_sender }}{% endif %} · latest msg={{ row.latest_id }}{% for flag in row.flags %} · {{ "you were mentioned" if flag == "mention" else flag }}{% endfor %}{% endfor %}{% if upgrade_version is not none and installed_version is not none %}
4
- Upgrade available: {{ distribution }} {{ upgrade_version }} (installed {{ installed_version }}). Mention it in passing when you reply and offer to upgrade. {% if manual_upgrade %}Upgrading is theirs to run on this platform: if they want it, give them these three commands in this order, and say the second one needs the node stopped: `bcn system-service stop`, `uv tool install --force --refresh-package {{ distribution }} {{ distribution }}=={{ upgrade_version }}`, `bcn system-service start`.{% else %}If the user agrees, run `bcc node upgrade`.{% endif %} If they do not want it, just carry on.{% endif %}{% if closing_bracket_on_own_line %}
4
+ Upgrade available: {{ distribution }} {{ upgrade_version }} (installed {{ installed_version }}). Mention it in passing when you reply and offer to upgrade. If the user agrees, run `bcc node upgrade`. If they do not want it, just carry on.{% endif %}{% if closing_bracket_on_own_line %}
5
5
  {% endif %}]{{ "" -}}
@@ -14,12 +14,18 @@
14
14
  <string>{{ data_dir | e }}</string>
15
15
  <key>EnvironmentVariables</key>
16
16
  <dict>
17
+ <key>BCN_HOME</key>
18
+ <string>{{ home_dir | e }}</string>
17
19
  <key>BCN_CONFIG</key>
18
20
  <string>{{ config_path | e }}</string>
19
21
  <key>BCN_ENV_FILE</key>
20
22
  <string>{{ environment_file | e }}</string>
21
23
  <key>BCN_EXECUTABLE</key>
22
24
  <string>{{ executable | e }}</string>
25
+ <key>BCN_PYTHON</key>
26
+ <string>{{ python | e }}</string>
27
+ <key>BCN_SUPERVISOR</key>
28
+ <string>{{ supervisor_path | e }}</string>
23
29
  </dict>
24
30
  <key>RunAtLoad</key>
25
31
  <true/>
@@ -2,10 +2,12 @@
2
2
  # {{ managed_marker }}
3
3
  set -eu
4
4
 
5
+ directory=$BCN_HOME
5
6
  if [ -n "${BCN_ENV_FILE:-}" ] && [ -f "$BCN_ENV_FILE" ]; then
6
7
  set -a
7
8
  . "$BCN_ENV_FILE"
8
9
  set +a
9
10
  fi
10
11
 
11
- exec "$BCN_EXECUTABLE" run --config "$BCN_CONFIG"
12
+ export BCN_HOME="$directory"
13
+ exec "$BCN_PYTHON" "$BCN_SUPERVISOR" --executable "$BCN_EXECUTABLE" --config "$BCN_CONFIG"