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.
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/PKG-INFO +1 -1
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/pyproject.toml +6 -3
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/pyproject.toml.orig +3 -2
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/application.py +5 -23
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/resource_dispatch.py +0 -2
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/server_management.py +3 -4
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/system_service.py +132 -11
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/upgrade.py +5 -7
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/bcc/__init__.py +4 -7
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/bcn/node.py +1 -1
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/orchestration/turn.py +0 -4
- bazaar_compute_node-0.2.1rc15/src/bazaar_compute_node/core/paths.py +19 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/utils/children.py +19 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/inbox_notice.tpl +1 -1
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/system_service/launchd.plist +6 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/system_service/launchd.sh +3 -1
- bazaar_compute_node-0.2.1rc15/src/bazaar_compute_node/resources/system_service/supervisor.py +58 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/system_service/systemd.service +2 -1
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/system_service/windows.ps1 +8 -4
- bazaar_compute_node-0.2.1rc13/src/bazaar_compute_node/core/paths.py +0 -30
- bazaar_compute_node-0.2.1rc13/src/bazaar_compute_node/core/restart.py +0 -9
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/LICENSE +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/README.md +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/agent.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/agent_management.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/attachments.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/command.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/config.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/health_report.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/registry.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/transport.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/usage.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/version_check.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/windows_pipe.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/app/wrapper.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/bcc.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cli.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/bcc/_client.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/bcc/_format.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/bcc/inbox.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/bcc/message.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/bcc/node.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/bcc/reminder.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/bcc/thread.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/bcn/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/bcn/_options.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/bcn/_runner.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/bcn/agent.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/bcn/server.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/cmd/bcn/service.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/claude/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/claude/approval.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/claude/client.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/claude/events.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/claude/inspect.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/claude/plugin.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/claude/process.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/claude/protocol.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/claude/runtime.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/codex/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/codex/approval.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/codex/client.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/codex/events.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/codex/inspect.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/codex/plugin.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/codex/process.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/codex/protocol.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/codex/runtime.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/lark/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/lark/api.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/lark/approval.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/lark/attachments.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/lark/channel.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/lark/frame.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/lark/identity.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/lark/outbound.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/lark/plugin.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/lark/transport.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/logging/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/logging/audit.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/logging/plugin.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/server/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/server/audit.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/server/control.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/server/plugin.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/codec.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/database.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/executor.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/model.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/migrations/registry.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/plugin.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/reminder_codec.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/repository/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/repository/base.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/repository/facade.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/repository/messages.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/repository/reminders.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/repository/search.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/repository/sessions.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/repository/settings.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/sqlite/storage.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/telegram/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/telegram/api.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/telegram/approval.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/telegram/attachments.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/telegram/channel.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/telegram/identity.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/telegram/markdown.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/telegram/outbound.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/telegram/plugin.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/wecom/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/wecom/channel.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/wecom/identity.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/wecom/outbound.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/contrib/wecom/plugin.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/actor.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/agent.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/approval.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/audit.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/channel.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/client.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/command.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/concurrency.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/control.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/correlation.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/inbox.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/instruction.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/lifecycle.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/models/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/models/entities.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/models/events.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/models/reminder.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/models/reminder_owner.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/models/states.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/observability.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/orchestration/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/orchestration/commands/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/orchestration/commands/base.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/orchestration/commands/messages.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/orchestration/commands/reminders.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/orchestration/commands/review.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/orchestration/delivery.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/orchestration/error_feedback.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/orchestration/orchestrator.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/orchestration/reminder.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/orchestration/services.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/orchestration/upgrade_notice.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/outcomes.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/reminder.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/reminder_schedule.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/review.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/runtime.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/serialize.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/storage.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/timerwheel.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/utils/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/utils/clock.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/utils/command.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/utils/line_reader.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/utils/markdown.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/utils/sanitization.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/core/utils/text.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/i18n/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/i18n/catalog.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/rendering.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/approval_no_person.tpl +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/bcc/check.tpl +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/bcc/error.tpl +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/bcc/inbox_check.tpl +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/bcc/read.tpl +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/bcc/reminder_list.tpl +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/bcc/reminder_mutation.tpl +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/bcc/reminder_schedule.tpl +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/bcc/search.tpl +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/bcc/unfollow.tpl +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/bcc/upgrade.tpl +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/bcc/version.tpl +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/command/attachment_suffix.tpl +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/command/check_message.tpl +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/command/freshness_hold.tpl +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/command/read_message.tpl +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/command/send_result.tpl +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/command/sender.tpl +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/developer_instructions.md +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/locales/en.toml +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/locales/zh-CN.toml +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/system_service/windows.vbs +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_node/resources/system_service/windows.xml +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/access.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/accounts.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/activity.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/app.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/cli.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/clock.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/config.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/configure.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/consumers.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/contacts.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/contrib/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/contrib/sqlite/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/contrib/sqlite/migrations/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/contrib/sqlite/migrations/model.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/contrib/sqlite/migrations/registry.py +0 -0
- {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
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/contrib/sqlite/migrations/v02_refs.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/contrib/sqlite/plugin.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/contrib/sqlite/storage.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/control.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/fleet.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/gate.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/history.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/i18n.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/images.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/markdown.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/pages/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/pages/accounts.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/pages/agents.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/pages/computers.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/pages/login.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/pages/oidc.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/pages/oidc_login.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/pages/poll.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/pages/profile.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/pages/roles.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/pages/settings.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/pages/shares.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/permissions.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/poll_rendering.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/polling.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/protocol.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/reauth.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/refs.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/registry.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/rendering.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/locales/en.toml +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/locales/zh-CN.toml +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/THIRD_PARTY.md +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/agent-form.js +0 -0
- {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
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/alpine-LICENSE.txt +0 -0
- {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
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/alpine-collapse-LICENSE.txt +0 -0
- {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
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/alpine-focus-LICENSE.txt +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/app.css +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/app.webmanifest +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/apple-touch-icon.png +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/components.js +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/favicon.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/htmx-LICENSE.txt +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/htmx.min.js +0 -0
- {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
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/icon-192.png +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/icon-512.png +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/static/poll.js +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/activity_card.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_contacts_head.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_form.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_kinds.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_list.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_models.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_new.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_profile.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_profile_activity.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_profile_config.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_profile_events.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_profile_files.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_profile_head.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_profile_sharing.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_profile_skills.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_profile_status.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_profile_workspace.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_remove.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_row.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agent_rows.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/agents.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/board.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/chat.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/code.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/components.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/computer_detail.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/computer_list.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/computer_row.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/computer_rows.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/computers.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/contact_rows.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/contacts.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/conversation_reminders.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/enrol_form.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/enrolled.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/error.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/history.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/history_end.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/history_rows.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/history_tail.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/alarm-clock.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/arrow-down.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/arrow-left.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/arrow-right.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/arrow-up.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/calendar.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/check.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/chevron-down.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/chevron-left.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/chevron-right.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/chevron-up.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/chevrons-down.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/copy.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/file.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/folder.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/grid-2x2.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/key-round.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/languages.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/lark.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/loader.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/log-out.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/message-circle.svg +0 -0
- {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
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/monitor.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/openai.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/paperclip.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/pencil.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/plus.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/repeat.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/rotate-cw.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/search.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/settings.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/si-apple.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/si-claude.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/si-linux.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/si-telegram.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/sun-moon.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/trash-2.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/triangle-alert.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/unplug.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/user-plus.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/users.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/wecom.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/icons/x.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/image.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/login.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/login_form.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/password_form.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/presence.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/profile.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/rail.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/remove_ask.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/remove_form.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/review_card.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/scripts.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/search.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/search_results.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/settings.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/settings_accounts.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/settings_appearance.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/settings_oidc.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/settings_roles.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/settings_security.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/shares.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/shell.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/sign.svg +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/resources/templates/unreachable.html +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/review.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/search.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/secrets.py +0 -0
- {bazaar_compute_node-0.2.1rc13 → bazaar_compute_node-0.2.1rc15}/src/bazaar_compute_server/sessions.py +0 -0
- {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
|
[project]
|
|
2
2
|
name = "bazaar-compute-node"
|
|
3
|
-
version = "0.2.
|
|
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 = [
|
|
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.
|
|
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.
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
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
|
|
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 = (
|
|
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
|
-
|
|
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
|
-
"
|
|
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
|
|
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(
|
|
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
|
-
|
|
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)
|
|
491
|
-
|
|
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
|
-
|
|
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
|
-
|
|
94
|
+
request_stop: Callable[[], None],
|
|
94
95
|
) -> None:
|
|
95
96
|
self._available_version = available_version
|
|
96
97
|
self._installed_version = installed_version
|
|
97
|
-
self.
|
|
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
|
-
|
|
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
|
-
|
|
40
|
-
#
|
|
41
|
-
|
|
42
|
-
|
|
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
|
|
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.
|
|
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
|
-
|
|
12
|
+
export BCN_HOME="$directory"
|
|
13
|
+
exec "$BCN_PYTHON" "$BCN_SUPERVISOR" --executable "$BCN_EXECUTABLE" --config "$BCN_CONFIG"
|