bazaar-compute-node 0.2.1rc5__tar.gz → 0.2.1rc7__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 (403) hide show
  1. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/PKG-INFO +4 -1
  2. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/pyproject.toml +4 -1
  3. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/pyproject.toml.orig +4 -1
  4. bazaar_compute_node-0.2.1rc7/src/bazaar_compute_server/access.py +156 -0
  5. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/app.py +1 -1
  6. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/cli.py +2 -0
  7. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/config.py +2 -0
  8. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/contrib/sqlite/migrations/registry.py +12 -1
  9. bazaar_compute_node-0.2.1rc7/src/bazaar_compute_server/contrib/sqlite/migrations/v03_roles_oidc.py +51 -0
  10. bazaar_compute_node-0.2.1rc7/src/bazaar_compute_server/contrib/sqlite/migrations/v04_login_order.py +16 -0
  11. bazaar_compute_node-0.2.1rc7/src/bazaar_compute_server/contrib/sqlite/migrations/v05_provider_description.py +11 -0
  12. bazaar_compute_node-0.2.1rc7/src/bazaar_compute_server/contrib/sqlite/migrations/v06_provider_default_role.py +11 -0
  13. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/contrib/sqlite/storage.py +454 -15
  14. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/fleet.py +38 -4
  15. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/gate.py +12 -5
  16. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/pages/__init__.py +43 -0
  17. bazaar_compute_node-0.2.1rc7/src/bazaar_compute_server/pages/accounts.py +92 -0
  18. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/pages/agents.py +15 -13
  19. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/pages/computers.py +16 -15
  20. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/pages/login.py +16 -2
  21. bazaar_compute_node-0.2.1rc7/src/bazaar_compute_server/pages/oidc.py +258 -0
  22. bazaar_compute_node-0.2.1rc7/src/bazaar_compute_server/pages/oidc_login.py +233 -0
  23. bazaar_compute_node-0.2.1rc7/src/bazaar_compute_server/pages/poll.py +82 -0
  24. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/pages/profile.py +70 -9
  25. bazaar_compute_node-0.2.1rc7/src/bazaar_compute_server/pages/roles.py +181 -0
  26. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/pages/settings.py +26 -5
  27. bazaar_compute_node-0.2.1rc7/src/bazaar_compute_server/pages/shares.py +155 -0
  28. bazaar_compute_node-0.2.1rc7/src/bazaar_compute_server/permissions.py +89 -0
  29. bazaar_compute_node-0.2.1rc5/src/bazaar_compute_server/polling.py → bazaar_compute_node-0.2.1rc7/src/bazaar_compute_server/poll_rendering.py +4 -137
  30. bazaar_compute_node-0.2.1rc7/src/bazaar_compute_server/polling.py +307 -0
  31. bazaar_compute_node-0.2.1rc7/src/bazaar_compute_server/reauth.py +40 -0
  32. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/rendering.py +7 -1
  33. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/locales/en.toml +122 -2
  34. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/locales/zh-CN.toml +122 -2
  35. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/static/app.css +152 -8
  36. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/static/components.js +40 -2
  37. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/agent_form.html +2 -2
  38. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/agent_list.html +1 -1
  39. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/agent_profile.html +3 -3
  40. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/agent_profile_activity.html +2 -1
  41. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/agent_profile_config.html +7 -4
  42. bazaar_compute_node-0.2.1rc7/src/bazaar_compute_server/resources/templates/agent_profile_sharing.html +37 -0
  43. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/agent_profile_skills.html +2 -1
  44. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/agent_profile_status.html +1 -1
  45. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/agent_profile_workspace.html +1 -1
  46. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/agent_row.html +1 -1
  47. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/agents.html +1 -1
  48. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/chat.html +1 -1
  49. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/components.html +2 -2
  50. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/computer_detail.html +5 -4
  51. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/computer_list.html +1 -1
  52. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/computers.html +1 -1
  53. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/contacts.html +1 -1
  54. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/conversation_reminders.html +1 -1
  55. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/history.html +1 -1
  56. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/history_rows.html +2 -2
  57. bazaar_compute_node-0.2.1rc7/src/bazaar_compute_server/resources/templates/icons/arrow-left.svg +16 -0
  58. bazaar_compute_node-0.2.1rc7/src/bazaar_compute_server/resources/templates/icons/arrow-right.svg +16 -0
  59. bazaar_compute_node-0.2.1rc7/src/bazaar_compute_server/resources/templates/icons/loader.svg +22 -0
  60. bazaar_compute_node-0.2.1rc7/src/bazaar_compute_server/resources/templates/icons/pencil.svg +16 -0
  61. bazaar_compute_node-0.2.1rc7/src/bazaar_compute_server/resources/templates/login.html +45 -0
  62. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/login_form.html +2 -3
  63. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/profile.html +2 -2
  64. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/rail.html +2 -2
  65. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/review_card.html +2 -2
  66. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/settings.html +5 -1
  67. bazaar_compute_node-0.2.1rc7/src/bazaar_compute_server/resources/templates/settings_accounts.html +36 -0
  68. bazaar_compute_node-0.2.1rc7/src/bazaar_compute_server/resources/templates/settings_oidc.html +59 -0
  69. bazaar_compute_node-0.2.1rc7/src/bazaar_compute_server/resources/templates/settings_roles.html +40 -0
  70. bazaar_compute_node-0.2.1rc7/src/bazaar_compute_server/resources/templates/shares.html +19 -0
  71. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/shell.html +4 -1
  72. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/sessions.py +14 -21
  73. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/storage.py +112 -1
  74. bazaar_compute_node-0.2.1rc5/src/bazaar_compute_server/access.py +0 -110
  75. bazaar_compute_node-0.2.1rc5/src/bazaar_compute_server/pages/poll.py +0 -178
  76. bazaar_compute_node-0.2.1rc5/src/bazaar_compute_server/resources/templates/icons/loader-circle.svg +0 -1
  77. bazaar_compute_node-0.2.1rc5/src/bazaar_compute_server/resources/templates/login.html +0 -21
  78. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/LICENSE +0 -0
  79. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/README.md +0 -0
  80. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/__init__.py +0 -0
  81. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/app/__init__.py +0 -0
  82. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/app/agent.py +0 -0
  83. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/app/agent_management.py +0 -0
  84. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/app/application.py +0 -0
  85. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/app/attachments.py +0 -0
  86. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/app/command.py +0 -0
  87. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/app/config.py +0 -0
  88. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/app/health_report.py +0 -0
  89. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/app/registry.py +0 -0
  90. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/app/resource_dispatch.py +0 -0
  91. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/app/server_management.py +0 -0
  92. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/app/system_service.py +0 -0
  93. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/app/transport.py +0 -0
  94. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/app/upgrade.py +0 -0
  95. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/app/usage.py +0 -0
  96. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/app/version_check.py +0 -0
  97. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/app/windows_pipe.py +0 -0
  98. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/app/wrapper.py +0 -0
  99. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/bcc.py +0 -0
  100. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/cli.py +0 -0
  101. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/cmd/__init__.py +0 -0
  102. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/cmd/bcc/__init__.py +0 -0
  103. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/cmd/bcc/_client.py +0 -0
  104. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/cmd/bcc/_format.py +0 -0
  105. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/cmd/bcc/inbox.py +0 -0
  106. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/cmd/bcc/message.py +0 -0
  107. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/cmd/bcc/node.py +0 -0
  108. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/cmd/bcc/reminder.py +0 -0
  109. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/cmd/bcc/thread.py +0 -0
  110. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/cmd/bcn/__init__.py +0 -0
  111. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/cmd/bcn/_options.py +0 -0
  112. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/cmd/bcn/_runner.py +0 -0
  113. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/cmd/bcn/agent.py +0 -0
  114. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/cmd/bcn/node.py +0 -0
  115. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/cmd/bcn/server.py +0 -0
  116. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/cmd/bcn/service.py +0 -0
  117. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/__init__.py +0 -0
  118. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/claude/__init__.py +0 -0
  119. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/claude/approval.py +0 -0
  120. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/claude/client.py +0 -0
  121. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/claude/events.py +0 -0
  122. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/claude/inspect.py +0 -0
  123. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/claude/plugin.py +0 -0
  124. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/claude/process.py +0 -0
  125. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/claude/protocol.py +0 -0
  126. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/claude/runtime.py +0 -0
  127. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/codex/__init__.py +0 -0
  128. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/codex/approval.py +0 -0
  129. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/codex/client.py +0 -0
  130. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/codex/events.py +0 -0
  131. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/codex/inspect.py +0 -0
  132. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/codex/plugin.py +0 -0
  133. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/codex/process.py +0 -0
  134. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/codex/protocol.py +0 -0
  135. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/codex/runtime.py +0 -0
  136. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/lark/__init__.py +0 -0
  137. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/lark/api.py +0 -0
  138. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/lark/approval.py +0 -0
  139. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/lark/attachments.py +0 -0
  140. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/lark/channel.py +0 -0
  141. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/lark/frame.py +0 -0
  142. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/lark/identity.py +0 -0
  143. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/lark/outbound.py +0 -0
  144. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/lark/plugin.py +0 -0
  145. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/lark/transport.py +0 -0
  146. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/logging/__init__.py +0 -0
  147. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/logging/audit.py +0 -0
  148. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/logging/plugin.py +0 -0
  149. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/server/__init__.py +0 -0
  150. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/server/audit.py +0 -0
  151. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/server/control.py +0 -0
  152. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/server/plugin.py +0 -0
  153. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/__init__.py +0 -0
  154. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/codec.py +0 -0
  155. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/database.py +0 -0
  156. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/executor.py +0 -0
  157. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/__init__.py +0 -0
  158. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/model.py +0 -0
  159. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/registry.py +0 -0
  160. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v01_initial_node_schema.py +0 -0
  161. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v02_session_mapping_indexes.py +0 -0
  162. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v03_message_log_indexes.py +0 -0
  163. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v04_runtime_attempt_facts.py +0 -0
  164. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v05_inbound_message_references.py +0 -0
  165. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v06_inbound_message_reference_integrity.py +0 -0
  166. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v07_inbound_provider_identity.py +0 -0
  167. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v08_transient_stream_events.py +0 -0
  168. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v09_remove_runtime_events.py +0 -0
  169. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v10_add_outbound_attachments.py +0 -0
  170. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v11_remove_runtime_session_mapping.py +0 -0
  171. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v12_add_reminders.py +0 -0
  172. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v13_add_agent_ownership.py +0 -0
  173. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v14_add_inbox_discovery_indexes.py +0 -0
  174. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v15_add_handoffs.py +0 -0
  175. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v16_remove_outbound_drafts.py +0 -0
  176. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v17_remove_agent_identity_triggers.py +0 -0
  177. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v18_unify_messages.py +0 -0
  178. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v19_reminder_system_messages.py +0 -0
  179. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v20_remove_freshness_persistence.py +0 -0
  180. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v21_remove_handoffs.py +0 -0
  181. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v22_readable_targets.py +0 -0
  182. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v23_persist_sender_identity.py +0 -0
  183. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v24_persist_sender_display_name.py +0 -0
  184. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v25_rename_sessions_to_threads.py +0 -0
  185. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v26_remove_handoff_messages.py +0 -0
  186. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v27_name_dms_by_the_peer_id.py +0 -0
  187. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v28_channel_session_identity.py +0 -0
  188. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v29_backfill_channel_identity.py +0 -0
  189. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v30_remove_command_id.py +0 -0
  190. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/migrations/v31_channel_session_review.py +0 -0
  191. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/plugin.py +0 -0
  192. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/reminder_codec.py +0 -0
  193. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/repository/__init__.py +0 -0
  194. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/repository/base.py +0 -0
  195. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/repository/facade.py +0 -0
  196. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/repository/messages.py +0 -0
  197. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/repository/reminders.py +0 -0
  198. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/repository/sessions.py +0 -0
  199. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/repository/settings.py +0 -0
  200. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/sqlite/storage.py +0 -0
  201. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/telegram/__init__.py +0 -0
  202. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/telegram/api.py +0 -0
  203. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/telegram/approval.py +0 -0
  204. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/telegram/attachments.py +0 -0
  205. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/telegram/channel.py +0 -0
  206. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/telegram/identity.py +0 -0
  207. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/telegram/markdown.py +0 -0
  208. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/telegram/outbound.py +0 -0
  209. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/telegram/plugin.py +0 -0
  210. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/wecom/__init__.py +0 -0
  211. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/wecom/channel.py +0 -0
  212. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/wecom/identity.py +0 -0
  213. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/wecom/outbound.py +0 -0
  214. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/contrib/wecom/plugin.py +0 -0
  215. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/__init__.py +0 -0
  216. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/actor.py +0 -0
  217. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/agent.py +0 -0
  218. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/approval.py +0 -0
  219. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/audit.py +0 -0
  220. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/channel.py +0 -0
  221. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/client.py +0 -0
  222. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/command.py +0 -0
  223. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/concurrency.py +0 -0
  224. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/control.py +0 -0
  225. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/correlation.py +0 -0
  226. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/inbox.py +0 -0
  227. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/instruction.py +0 -0
  228. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/lifecycle.py +0 -0
  229. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/models/__init__.py +0 -0
  230. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/models/entities.py +0 -0
  231. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/models/events.py +0 -0
  232. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/models/reminder.py +0 -0
  233. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/models/reminder_owner.py +0 -0
  234. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/models/states.py +0 -0
  235. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/observability.py +0 -0
  236. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/orchestration/__init__.py +0 -0
  237. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/orchestration/commands/__init__.py +0 -0
  238. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/orchestration/commands/base.py +0 -0
  239. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/orchestration/commands/messages.py +0 -0
  240. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/orchestration/commands/reminders.py +0 -0
  241. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/orchestration/commands/review.py +0 -0
  242. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/orchestration/delivery.py +0 -0
  243. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/orchestration/error_feedback.py +0 -0
  244. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/orchestration/orchestrator.py +0 -0
  245. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/orchestration/reminder.py +0 -0
  246. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/orchestration/services.py +0 -0
  247. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/orchestration/turn.py +0 -0
  248. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/orchestration/upgrade_notice.py +0 -0
  249. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/outcomes.py +0 -0
  250. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/paths.py +0 -0
  251. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/reminder.py +0 -0
  252. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/reminder_schedule.py +0 -0
  253. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/restart.py +0 -0
  254. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/review.py +0 -0
  255. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/runtime.py +0 -0
  256. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/serialize.py +0 -0
  257. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/storage.py +0 -0
  258. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/timerwheel.py +0 -0
  259. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/utils/__init__.py +0 -0
  260. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/utils/children.py +0 -0
  261. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/utils/clock.py +0 -0
  262. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/utils/command.py +0 -0
  263. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/utils/line_reader.py +0 -0
  264. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/utils/markdown.py +0 -0
  265. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/utils/sanitization.py +0 -0
  266. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/core/utils/text.py +0 -0
  267. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/i18n/__init__.py +0 -0
  268. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/i18n/catalog.py +0 -0
  269. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/rendering.py +0 -0
  270. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/resources/approval_no_person.tpl +0 -0
  271. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/resources/bcc/check.tpl +0 -0
  272. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/resources/bcc/error.tpl +0 -0
  273. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/resources/bcc/inbox_check.tpl +0 -0
  274. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/resources/bcc/read.tpl +0 -0
  275. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/resources/bcc/reminder_list.tpl +0 -0
  276. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/resources/bcc/reminder_mutation.tpl +0 -0
  277. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/resources/bcc/reminder_schedule.tpl +0 -0
  278. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/resources/bcc/unfollow.tpl +0 -0
  279. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/resources/bcc/upgrade.tpl +0 -0
  280. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/resources/bcc/version.tpl +0 -0
  281. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/resources/command/attachment_suffix.tpl +0 -0
  282. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/resources/command/check_message.tpl +0 -0
  283. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/resources/command/freshness_hold.tpl +0 -0
  284. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/resources/command/read_message.tpl +0 -0
  285. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/resources/command/send_result.tpl +0 -0
  286. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/resources/command/sender.tpl +0 -0
  287. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/resources/developer_instructions.md +0 -0
  288. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/resources/inbox_notice.tpl +0 -0
  289. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/resources/locales/en.toml +0 -0
  290. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/resources/locales/zh-CN.toml +0 -0
  291. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/resources/system_service/launchd.plist +0 -0
  292. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/resources/system_service/launchd.sh +0 -0
  293. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/resources/system_service/systemd.service +0 -0
  294. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/resources/system_service/windows.ps1 +0 -0
  295. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/resources/system_service/windows.vbs +0 -0
  296. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_node/resources/system_service/windows.xml +0 -0
  297. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/__init__.py +0 -0
  298. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/accounts.py +0 -0
  299. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/activity.py +0 -0
  300. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/clock.py +0 -0
  301. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/configure.py +0 -0
  302. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/consumers.py +0 -0
  303. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/contacts.py +0 -0
  304. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/contrib/__init__.py +0 -0
  305. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/contrib/sqlite/__init__.py +0 -0
  306. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/contrib/sqlite/migrations/__init__.py +0 -0
  307. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/contrib/sqlite/migrations/model.py +0 -0
  308. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/contrib/sqlite/migrations/v01_initial_server_schema.py +0 -0
  309. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/contrib/sqlite/migrations/v02_refs.py +0 -0
  310. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/contrib/sqlite/plugin.py +0 -0
  311. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/control.py +0 -0
  312. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/history.py +0 -0
  313. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/i18n.py +0 -0
  314. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/images.py +0 -0
  315. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/markdown.py +0 -0
  316. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/protocol.py +0 -0
  317. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/refs.py +0 -0
  318. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/registry.py +0 -0
  319. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/static/THIRD_PARTY.md +0 -0
  320. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/static/agent-form.js +0 -0
  321. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/static/alpine-3.17.4.min.js +0 -0
  322. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/static/alpine-LICENSE.txt +0 -0
  323. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/static/alpine-collapse-3.17.4.min.js +0 -0
  324. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/static/alpine-collapse-LICENSE.txt +0 -0
  325. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/static/alpine-focus-3.17.4.min.js +0 -0
  326. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/static/alpine-focus-LICENSE.txt +0 -0
  327. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/static/app.webmanifest +0 -0
  328. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/static/apple-touch-icon.png +0 -0
  329. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/static/favicon.svg +0 -0
  330. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/static/htmx-LICENSE.txt +0 -0
  331. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/static/htmx.min.js +0 -0
  332. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/static/hx-alpine-compat-4.0.0.js +0 -0
  333. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/static/icon-192.png +0 -0
  334. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/static/icon-512.png +0 -0
  335. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/static/poll.js +0 -0
  336. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/activity_card.html +0 -0
  337. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/agent_contacts_head.html +0 -0
  338. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/agent_kinds.html +0 -0
  339. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/agent_models.html +0 -0
  340. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/agent_new.html +0 -0
  341. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/agent_profile_events.html +0 -0
  342. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/agent_profile_files.html +0 -0
  343. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/agent_profile_head.html +0 -0
  344. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/agent_remove.html +0 -0
  345. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/agent_rows.html +0 -0
  346. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/board.svg +0 -0
  347. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/code.html +0 -0
  348. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/computer_row.html +0 -0
  349. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/computer_rows.html +0 -0
  350. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/contact_rows.html +0 -0
  351. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/enrol_form.html +0 -0
  352. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/enrolled.html +0 -0
  353. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/error.html +0 -0
  354. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/history_end.html +0 -0
  355. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/history_tail.html +0 -0
  356. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/alarm-clock.svg +0 -0
  357. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/calendar.svg +0 -0
  358. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/check.svg +0 -0
  359. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/chevron-down.svg +0 -0
  360. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/chevron-left.svg +0 -0
  361. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/chevron-right.svg +0 -0
  362. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/chevron-up.svg +0 -0
  363. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/copy.svg +0 -0
  364. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/file.svg +0 -0
  365. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/folder.svg +0 -0
  366. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/grid-2x2.svg +0 -0
  367. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/key-round.svg +0 -0
  368. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/languages.svg +0 -0
  369. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/lark.svg +0 -0
  370. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/log-out.svg +0 -0
  371. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/message-circle.svg +0 -0
  372. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/message-square-text.svg +0 -0
  373. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/monitor.svg +0 -0
  374. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/openai.svg +0 -0
  375. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/paperclip.svg +0 -0
  376. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/plus.svg +0 -0
  377. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/repeat.svg +0 -0
  378. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/rotate-cw.svg +0 -0
  379. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/settings.svg +0 -0
  380. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/si-apple.svg +0 -0
  381. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/si-claude.svg +0 -0
  382. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/si-linux.svg +0 -0
  383. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/si-telegram.svg +0 -0
  384. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/sun-moon.svg +0 -0
  385. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/trash-2.svg +0 -0
  386. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/triangle-alert.svg +0 -0
  387. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/unplug.svg +0 -0
  388. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/user-plus.svg +0 -0
  389. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/users.svg +0 -0
  390. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/wecom.svg +0 -0
  391. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/icons/x.svg +0 -0
  392. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/image.html +0 -0
  393. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/password_form.html +0 -0
  394. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/presence.html +0 -0
  395. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/remove_ask.html +0 -0
  396. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/remove_form.html +0 -0
  397. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/scripts.html +0 -0
  398. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/settings_appearance.html +0 -0
  399. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/settings_security.html +0 -0
  400. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/sign.svg +0 -0
  401. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/resources/templates/unreachable.html +0 -0
  402. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/review.py +0 -0
  403. {bazaar_compute_node-0.2.1rc5 → bazaar_compute_node-0.2.1rc7}/src/bazaar_compute_server/secrets.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bazaar-compute-node
3
- Version: 0.2.1rc5
3
+ Version: 0.2.1rc7
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
@@ -21,6 +21,9 @@ Requires-Dist: python-multipart>=0.0.32
21
21
  Requires-Dist: yarl>=1.18
22
22
  Requires-Dist: markdown-it-py>=4.2.0
23
23
  Requires-Dist: pygments>=2.20.0
24
+ Requires-Dist: authlib>=1.8.0
25
+ Requires-Dist: joserfc>=1.7.5
26
+ Requires-Dist: httpx2>=2.13.1
24
27
  Requires-Python: >=3.14
25
28
  Project-URL: Repository, https://github.com/yuchanns/bazaar-compute-node
26
29
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "bazaar-compute-node"
3
- version = "0.2.1rc5"
3
+ version = "0.2.1rc7"
4
4
  description = "Runtime-agnostic computer node daemon for agents and channels."
5
5
  readme = "README.md"
6
6
  license = "AGPL-3.0-only"
@@ -24,6 +24,9 @@ dependencies = [
24
24
  "yarl>=1.18",
25
25
  "markdown-it-py>=4.2.0",
26
26
  "pygments>=2.20.0",
27
+ "authlib>=1.8.0",
28
+ "joserfc>=1.7.5",
29
+ "httpx2>=2.13.1",
27
30
  ]
28
31
 
29
32
  [project.urls]
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "bazaar-compute-node"
3
- version = "0.2.1rc5"
3
+ version = "0.2.1rc7"
4
4
  description = "Runtime-agnostic computer node daemon for agents and channels."
5
5
  readme = "README.md"
6
6
  license = "AGPL-3.0-only"
@@ -24,6 +24,9 @@ dependencies = [
24
24
  "yarl>=1.18",
25
25
  "markdown-it-py>=4.2.0",
26
26
  "pygments>=2.20.0",
27
+ "authlib>=1.8.0",
28
+ "joserfc>=1.7.5",
29
+ "httpx2>=2.13.1",
27
30
  ]
28
31
 
29
32
  [project.urls]
@@ -0,0 +1,156 @@
1
+ """What the signed-in account may do and may see: the one place the pages ask."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from collections.abc import Awaitable, Callable, Sequence
6
+ from functools import wraps
7
+
8
+ from starlette.exceptions import HTTPException
9
+ from starlette.requests import Request
10
+ from starlette.responses import HTMLResponse, Response
11
+ from starlette.types import ASGIApp, Receive, Scope, Send
12
+
13
+ from .permissions import Permission, PermissionHandler
14
+ from .storage import Account, IStorage, Role
15
+
16
+ type Handler[S] = Callable[[S, Request], Awaitable[Response]]
17
+
18
+
19
+ class Access:
20
+ """Two kinds of permission point. A functional point says whether a
21
+ feature may be used at all (`computers.create`, `agents.update`, ...); a
22
+ data point says which objects of a kind may be touched, read from the
23
+ relations the account stands in. Roles, shares and the rights a share
24
+ carries all arrive here; the pages keep asking the same few things."""
25
+
26
+ def __init__(
27
+ self, account: Account, storage: IStorage, roles: Sequence[Role] = ()
28
+ ) -> None:
29
+ self._targets: dict[tuple[str, Permission], set[str]] = {}
30
+ self._account = account
31
+ self._storage = storage
32
+ self._permissions = frozenset(
33
+ point for role in roles for point in role.permissions
34
+ )
35
+
36
+ @classmethod
37
+ def of(cls, request: Request) -> Access:
38
+ """The one the AccessGate gave this request."""
39
+
40
+ return request.state.access
41
+
42
+ @property
43
+ def account(self) -> Account:
44
+ return self._account
45
+
46
+ @property
47
+ def subject_id(self) -> str:
48
+ """Whose relations a list query is scoped to."""
49
+
50
+ return self._account.id
51
+
52
+ @property
53
+ def is_admin(self) -> bool:
54
+ return self._account.auth_type == "local" and self._account.name == "admin"
55
+
56
+ def allows(self, point: Permission) -> bool:
57
+ return self.is_admin or point in self._permissions
58
+
59
+ async def can(self, kind: str, target_id: str, point: Permission) -> bool:
60
+ if not self.allows(point):
61
+ return False
62
+ return target_id in await self.targets(kind, point)
63
+
64
+ async def targets(self, kind: str, point: Permission) -> set[str]:
65
+ if not self.allows(point):
66
+ return set()
67
+ key = (kind, point)
68
+ if key not in self._targets:
69
+ self._targets[key] = await self._storage.allowed_targets(
70
+ self.subject_id, kind, point
71
+ )
72
+ return self._targets[key]
73
+
74
+ async def can_share(self, kind: str, target_id: str) -> bool:
75
+ return self.is_admin or await self._storage.has_relation(
76
+ self.subject_id, f"{kind}_owner", target_id
77
+ )
78
+
79
+ async def can_see(self, kind: str, target_id: str) -> bool:
80
+ point = (
81
+ Permission.COMPUTERS_VIEW if kind == "computer" else Permission.AGENTS_VIEW
82
+ )
83
+ return await self.can(kind, target_id, point)
84
+
85
+ async def visible(self, kind: str, target_ids: Sequence[str]) -> set[str]:
86
+ point = (
87
+ Permission.COMPUTERS_VIEW if kind == "computer" else Permission.AGENTS_VIEW
88
+ )
89
+ if not self.allows(point):
90
+ return set()
91
+ return set(target_ids) & await self.targets(kind, point)
92
+
93
+
94
+ def allowed[S](
95
+ point: Permission, kind: str | None = None
96
+ ) -> Callable[[Handler[S]], Handler[S]]:
97
+ """The handler is behind a functional point: without it, there is no
98
+ such page."""
99
+
100
+ permission = PermissionHandler(point, kind)
101
+
102
+ def guard(handler: Handler[S]) -> Handler[S]:
103
+ @wraps(handler)
104
+ async def guarded(self: S, request: Request) -> Response:
105
+ if not Access.of(request).allows(point):
106
+ raise HTTPException(status_code=403)
107
+ if not await permission(Access.of(request), request.path_params):
108
+ return HTMLResponse("", status_code=404)
109
+ return await handler(self, request)
110
+
111
+ return guarded
112
+
113
+ return guard
114
+
115
+
116
+ def sees[S](kind: str, param: str) -> Callable[[Handler[S]], Handler[S]]:
117
+ """The handler is about one object of a kind, named by a path parameter:
118
+ one the account may not see is not there."""
119
+
120
+ def guard(handler: Handler[S]) -> Handler[S]:
121
+ @wraps(handler)
122
+ async def guarded(self: S, request: Request) -> Response:
123
+ access = Access.of(request)
124
+ target_id = request.path_params[param]
125
+ if kind == "computer" and "agent_id" in request.path_params:
126
+ agent_id = request.path_params["agent_id"]
127
+ visible = await access.can_see("agent", agent_id)
128
+ computer_id = await access._storage.agent_computer(agent_id)
129
+ if not visible or computer_id != target_id:
130
+ return HTMLResponse("", status_code=404)
131
+ elif not await access.can_see(kind, target_id):
132
+ return HTMLResponse("", status_code=404)
133
+ return await handler(self, request)
134
+
135
+ return guarded
136
+
137
+ return guard
138
+
139
+
140
+ class AccessGate:
141
+ """Behind the Gate: gives every request that has an account its Access."""
142
+
143
+ def __init__(self, app: ASGIApp, *, storage: IStorage) -> None:
144
+ self._app = app
145
+ self._storage = storage
146
+
147
+ async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None:
148
+ state = scope.get("state")
149
+ if state is not None and "account" in state:
150
+ account = state["account"]
151
+ roles = await self._storage.list_roles(account.id)
152
+ state["access"] = Access(account, self._storage, roles)
153
+ await self._app(scope, receive, send)
154
+
155
+
156
+ __all__ = ["Access", "AccessGate", "allowed", "sees"]
@@ -54,7 +54,7 @@ def create_app(configuration: ServerConfiguration, data_dir: Path) -> Starlette:
54
54
  )
55
55
  )
56
56
 
57
- sessions = Sessions()
57
+ sessions = Sessions(max_age=configuration.session_minutes * 60)
58
58
  images = Images(sessions)
59
59
  refs = Refs(storage)
60
60
  controls = Controls()
@@ -41,6 +41,8 @@ def run(config: Path | None) -> None:
41
41
  host=configuration.listen_host,
42
42
  port=configuration.listen_port,
43
43
  log_level="info",
44
+ # OIDC callback query strings contain one-time codes and state.
45
+ access_log=False,
44
46
  # going down comes first: a node's poll held open or a page still
45
47
  # waiting on a computer is not waited out past this
46
48
  timeout_graceful_shutdown=SHUTDOWN_SECONDS,
@@ -23,6 +23,7 @@ class ServerConfiguration(BaseModel):
23
23
  # host and port, read the way a URL is: `127.0.0.1:8765`, `[::1]:8765`,
24
24
  # or the same with a scheme in front
25
25
  listen: str = "127.0.0.1:8765"
26
+ session_minutes: int = Field(default=10, ge=1, strict=True)
26
27
  retention_days: int = Field(default=30, ge=1, strict=True)
27
28
  storage: str = Field(default="sqlite", min_length=1)
28
29
  # a storage's own settings live in a table named after it
@@ -103,6 +104,7 @@ def _serialize(configuration: ServerConfiguration) -> str:
103
104
  lines = [
104
105
  f'listen = "{configuration.listen}"',
105
106
  f"retention_days = {configuration.retention_days}",
107
+ f"session_minutes = {configuration.session_minutes}",
106
108
  f'storage = "{configuration.storage}"',
107
109
  ]
108
110
  return "\n".join(lines) + "\n"
@@ -10,6 +10,10 @@ from ....clock import now_ms
10
10
  from .model import Migration
11
11
  from .v01_initial_server_schema import SCHEMA_MIGRATION
12
12
  from .v02_refs import REFS_MIGRATION
13
+ from .v03_roles_oidc import ROLES_OIDC_MIGRATION
14
+ from .v04_login_order import LOGIN_ORDER_MIGRATION
15
+ from .v05_provider_description import PROVIDER_DESCRIPTION_MIGRATION
16
+ from .v06_provider_default_role import PROVIDER_DEFAULT_ROLE_MIGRATION
13
17
 
14
18
 
15
19
  class MigrationError(RuntimeError):
@@ -27,7 +31,14 @@ def _migration_ledger(*migrations: Migration) -> tuple[Migration, ...]:
27
31
  return migrations
28
32
 
29
33
 
30
- MIGRATIONS = _migration_ledger(SCHEMA_MIGRATION, REFS_MIGRATION)
34
+ MIGRATIONS = _migration_ledger(
35
+ SCHEMA_MIGRATION,
36
+ REFS_MIGRATION,
37
+ ROLES_OIDC_MIGRATION,
38
+ LOGIN_ORDER_MIGRATION,
39
+ PROVIDER_DESCRIPTION_MIGRATION,
40
+ PROVIDER_DEFAULT_ROLE_MIGRATION,
41
+ )
31
42
 
32
43
 
33
44
  async def apply_migrations(connection: aiosqlite.Connection) -> int:
@@ -0,0 +1,51 @@
1
+ """Roles and external login identities for BCS."""
2
+
3
+ from .model import Migration
4
+
5
+ ROLES_OIDC_MIGRATION = Migration(
6
+ version=3,
7
+ name="roles_oidc",
8
+ statements=(
9
+ "ALTER TABLE accounts ADD COLUMN auth_type TEXT NOT NULL DEFAULT 'local'",
10
+ "ALTER TABLE accounts ADD COLUMN session_version INTEGER NOT NULL DEFAULT 0",
11
+ """CREATE TABLE roles (
12
+ id TEXT PRIMARY KEY, name TEXT NOT NULL UNIQUE,
13
+ permissions TEXT NOT NULL, created_at_ms INTEGER NOT NULL,
14
+ updated_at_ms INTEGER NOT NULL
15
+ )""",
16
+ """CREATE TABLE account_roles (
17
+ account_id TEXT NOT NULL REFERENCES accounts(id) ON DELETE CASCADE,
18
+ role_id TEXT NOT NULL REFERENCES roles(id) ON DELETE CASCADE,
19
+ PRIMARY KEY(account_id, role_id)
20
+ )""",
21
+ "CREATE INDEX account_roles_by_role ON account_roles(role_id)",
22
+ """CREATE TABLE auth_settings (
23
+ id INTEGER PRIMARY KEY CHECK(id = 1),
24
+ default_role_id TEXT REFERENCES roles(id)
25
+ )""",
26
+ "INSERT INTO auth_settings(id) VALUES (1)",
27
+ """CREATE TABLE oidc_providers (
28
+ id TEXT PRIMARY KEY, name TEXT NOT NULL, logo_url TEXT NOT NULL,
29
+ issuer TEXT NOT NULL, client_id TEXT NOT NULL, client_secret TEXT NOT NULL,
30
+ redirect_uri TEXT NOT NULL, created_at_ms INTEGER NOT NULL,
31
+ updated_at_ms INTEGER NOT NULL
32
+ )""",
33
+ """CREATE TABLE oidc_identities (
34
+ issuer TEXT NOT NULL, subject TEXT NOT NULL,
35
+ account_id TEXT NOT NULL REFERENCES accounts(id) ON DELETE CASCADE,
36
+ provider_id TEXT NOT NULL REFERENCES oidc_providers(id),
37
+ display_name TEXT NOT NULL, email TEXT NOT NULL,
38
+ PRIMARY KEY(issuer, subject)
39
+ )""",
40
+ "CREATE INDEX oidc_identities_by_account ON oidc_identities(account_id)",
41
+ """CREATE TABLE oidc_transactions (
42
+ state TEXT PRIMARY KEY,
43
+ provider_id TEXT NOT NULL REFERENCES oidc_providers(id) ON DELETE CASCADE,
44
+ browser_hash TEXT NOT NULL, nonce TEXT NOT NULL,
45
+ code_verifier TEXT NOT NULL, redirect_uri TEXT NOT NULL,
46
+ expires_at_ms INTEGER NOT NULL,
47
+ issuer TEXT NOT NULL DEFAULT '', subject TEXT NOT NULL DEFAULT ''
48
+ )""",
49
+ "CREATE INDEX oidc_transactions_by_expiry ON oidc_transactions(expires_at_ms)",
50
+ ),
51
+ )
@@ -0,0 +1,16 @@
1
+ from __future__ import annotations
2
+
3
+ from .model import Migration
4
+
5
+ LOGIN_ORDER_MIGRATION = Migration(
6
+ version=4,
7
+ name="login_order",
8
+ statements=(
9
+ "ALTER TABLE auth_settings ADD COLUMN login_order TEXT NOT NULL DEFAULT '[\"password\"]'",
10
+ (
11
+ "UPDATE auth_settings SET login_order=(SELECT json_group_array(id) FROM "
12
+ "(SELECT 'password' AS id UNION ALL SELECT id FROM "
13
+ "(SELECT id FROM oidc_providers ORDER BY created_at_ms, id))) WHERE id=1"
14
+ ),
15
+ ),
16
+ )
@@ -0,0 +1,11 @@
1
+ from __future__ import annotations
2
+
3
+ from .model import Migration
4
+
5
+ PROVIDER_DESCRIPTION_MIGRATION = Migration(
6
+ version=5,
7
+ name="provider_description",
8
+ statements=(
9
+ "ALTER TABLE oidc_providers ADD COLUMN description TEXT NOT NULL DEFAULT ''",
10
+ ),
11
+ )
@@ -0,0 +1,11 @@
1
+ from __future__ import annotations
2
+
3
+ from .model import Migration
4
+
5
+ PROVIDER_DEFAULT_ROLE_MIGRATION = Migration(
6
+ version=6,
7
+ name="provider_default_role",
8
+ statements=(
9
+ "ALTER TABLE oidc_providers ADD COLUMN default_role_id TEXT REFERENCES roles(id)",
10
+ ),
11
+ )