bazaar-compute-node 0.2.1rc8__tar.gz → 0.2.1rc10__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.1rc8 → bazaar_compute_node-0.2.1rc10}/PKG-INFO +1 -1
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/pyproject.toml +1 -1
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/pyproject.toml.orig +1 -1
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/contrib/sqlite/migrations/registry.py +2 -0
- bazaar_compute_node-0.2.1rc10/src/bazaar_compute_server/contrib/sqlite/migrations/v07_oidc_session_settings.py +12 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/contrib/sqlite/storage.py +4 -39
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/gate.py +19 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/pages/oidc.py +4 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/pages/oidc_login.py +69 -26
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/locales/en.toml +5 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/locales/zh-CN.toml +5 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/static/agent-form.js +7 -2
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/static/app.css +14 -11
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/static/components.js +5 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/static/poll.js +1 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/agent_form.html +3 -3
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/history.html +2 -1
- bazaar_compute_node-0.2.1rc10/src/bazaar_compute_server/resources/templates/icons/chevrons-down.svg +1 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/settings_oidc.html +1 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/sessions.py +8 -5
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/storage.py +1 -19
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/LICENSE +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/README.md +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/app/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/app/agent.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/app/agent_management.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/app/application.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/app/attachments.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/app/command.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/app/config.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/app/health_report.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/app/registry.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/app/resource_dispatch.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/app/server_management.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/app/system_service.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/app/transport.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/app/upgrade.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/app/usage.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/app/version_check.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/app/windows_pipe.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/app/wrapper.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/bcc.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/cli.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/cmd/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/cmd/bcc/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/cmd/bcc/_client.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/cmd/bcc/_format.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/cmd/bcc/inbox.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/cmd/bcc/message.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/cmd/bcc/node.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/cmd/bcc/reminder.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/cmd/bcc/thread.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/cmd/bcn/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/cmd/bcn/_options.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/cmd/bcn/_runner.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/cmd/bcn/agent.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/cmd/bcn/node.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/cmd/bcn/server.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/cmd/bcn/service.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/claude/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/claude/approval.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/claude/client.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/claude/events.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/claude/inspect.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/claude/plugin.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/claude/process.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/claude/protocol.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/claude/runtime.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/codex/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/codex/approval.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/codex/client.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/codex/events.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/codex/inspect.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/codex/plugin.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/codex/process.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/codex/protocol.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/codex/runtime.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/lark/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/lark/api.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/lark/approval.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/lark/attachments.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/lark/channel.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/lark/frame.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/lark/identity.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/lark/outbound.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/lark/plugin.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/lark/transport.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/logging/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/logging/audit.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/logging/plugin.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/server/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/server/audit.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/server/control.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/server/plugin.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/codec.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/database.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/executor.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/model.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/registry.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v01_initial_node_schema.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v02_session_mapping_indexes.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v03_message_log_indexes.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v04_runtime_attempt_facts.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v05_inbound_message_references.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v06_inbound_message_reference_integrity.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v07_inbound_provider_identity.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v08_transient_stream_events.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v09_remove_runtime_events.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v10_add_outbound_attachments.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v11_remove_runtime_session_mapping.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v12_add_reminders.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v13_add_agent_ownership.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v14_add_inbox_discovery_indexes.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v15_add_handoffs.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v16_remove_outbound_drafts.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v17_remove_agent_identity_triggers.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v18_unify_messages.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v19_reminder_system_messages.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v20_remove_freshness_persistence.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v21_remove_handoffs.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v22_readable_targets.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v23_persist_sender_identity.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v24_persist_sender_display_name.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v25_rename_sessions_to_threads.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v26_remove_handoff_messages.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v27_name_dms_by_the_peer_id.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v28_channel_session_identity.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v29_backfill_channel_identity.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v30_remove_command_id.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/migrations/v31_channel_session_review.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/plugin.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/reminder_codec.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/repository/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/repository/base.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/repository/facade.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/repository/messages.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/repository/reminders.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/repository/sessions.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/repository/settings.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/sqlite/storage.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/telegram/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/telegram/api.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/telegram/approval.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/telegram/attachments.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/telegram/channel.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/telegram/identity.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/telegram/markdown.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/telegram/outbound.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/telegram/plugin.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/wecom/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/wecom/channel.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/wecom/identity.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/wecom/outbound.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/contrib/wecom/plugin.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/actor.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/agent.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/approval.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/audit.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/channel.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/client.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/command.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/concurrency.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/control.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/correlation.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/inbox.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/instruction.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/lifecycle.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/models/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/models/entities.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/models/events.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/models/reminder.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/models/reminder_owner.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/models/states.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/observability.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/orchestration/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/orchestration/commands/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/orchestration/commands/base.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/orchestration/commands/messages.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/orchestration/commands/reminders.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/orchestration/commands/review.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/orchestration/delivery.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/orchestration/error_feedback.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/orchestration/orchestrator.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/orchestration/reminder.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/orchestration/services.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/orchestration/turn.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/orchestration/upgrade_notice.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/outcomes.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/paths.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/reminder.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/reminder_schedule.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/restart.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/review.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/runtime.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/serialize.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/storage.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/timerwheel.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/utils/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/utils/children.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/utils/clock.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/utils/command.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/utils/line_reader.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/utils/markdown.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/utils/sanitization.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/core/utils/text.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/i18n/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/i18n/catalog.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/rendering.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/resources/approval_no_person.tpl +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/resources/bcc/check.tpl +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/resources/bcc/error.tpl +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/resources/bcc/inbox_check.tpl +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/resources/bcc/read.tpl +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/resources/bcc/reminder_list.tpl +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/resources/bcc/reminder_mutation.tpl +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/resources/bcc/reminder_schedule.tpl +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/resources/bcc/unfollow.tpl +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/resources/bcc/upgrade.tpl +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/resources/bcc/version.tpl +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/resources/command/attachment_suffix.tpl +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/resources/command/check_message.tpl +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/resources/command/freshness_hold.tpl +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/resources/command/read_message.tpl +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/resources/command/send_result.tpl +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/resources/command/sender.tpl +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/resources/developer_instructions.md +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/resources/inbox_notice.tpl +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/resources/locales/en.toml +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/resources/locales/zh-CN.toml +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/resources/system_service/launchd.plist +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/resources/system_service/launchd.sh +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/resources/system_service/systemd.service +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/resources/system_service/windows.ps1 +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/resources/system_service/windows.vbs +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_node/resources/system_service/windows.xml +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/access.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/accounts.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/activity.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/app.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/cli.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/clock.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/config.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/configure.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/consumers.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/contacts.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/contrib/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/contrib/sqlite/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/contrib/sqlite/migrations/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/contrib/sqlite/migrations/model.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/contrib/sqlite/migrations/v01_initial_server_schema.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/contrib/sqlite/migrations/v02_refs.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/contrib/sqlite/migrations/v03_roles_oidc.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/contrib/sqlite/migrations/v04_login_order.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/contrib/sqlite/migrations/v05_provider_description.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/contrib/sqlite/migrations/v06_provider_default_role.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/contrib/sqlite/plugin.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/control.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/fleet.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/history.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/i18n.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/images.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/markdown.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/pages/__init__.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/pages/accounts.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/pages/agents.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/pages/computers.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/pages/login.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/pages/poll.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/pages/profile.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/pages/roles.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/pages/settings.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/pages/shares.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/permissions.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/poll_rendering.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/polling.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/protocol.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/reauth.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/refs.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/registry.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/rendering.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/static/THIRD_PARTY.md +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/static/alpine-3.17.4.min.js +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/static/alpine-LICENSE.txt +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/static/alpine-collapse-3.17.4.min.js +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/static/alpine-collapse-LICENSE.txt +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/static/alpine-focus-3.17.4.min.js +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/static/alpine-focus-LICENSE.txt +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/static/app.webmanifest +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/static/apple-touch-icon.png +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/static/favicon.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/static/htmx-LICENSE.txt +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/static/htmx.min.js +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/static/hx-alpine-compat-4.0.0.js +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/static/icon-192.png +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/static/icon-512.png +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/activity_card.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/agent_contacts_head.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/agent_kinds.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/agent_list.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/agent_models.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/agent_new.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/agent_profile.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/agent_profile_activity.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/agent_profile_config.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/agent_profile_events.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/agent_profile_files.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/agent_profile_head.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/agent_profile_sharing.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/agent_profile_skills.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/agent_profile_status.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/agent_profile_workspace.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/agent_remove.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/agent_row.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/agent_rows.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/agents.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/board.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/chat.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/code.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/components.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/computer_detail.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/computer_list.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/computer_row.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/computer_rows.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/computers.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/contact_rows.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/contacts.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/conversation_reminders.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/enrol_form.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/enrolled.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/error.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/history_end.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/history_rows.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/history_tail.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/alarm-clock.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/arrow-left.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/arrow-right.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/calendar.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/check.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/chevron-down.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/chevron-left.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/chevron-right.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/chevron-up.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/copy.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/file.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/folder.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/grid-2x2.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/key-round.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/languages.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/lark.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/loader.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/log-out.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/message-circle.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/message-square-text.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/monitor.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/openai.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/paperclip.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/pencil.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/plus.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/repeat.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/rotate-cw.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/settings.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/si-apple.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/si-claude.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/si-linux.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/si-telegram.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/sun-moon.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/trash-2.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/triangle-alert.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/unplug.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/user-plus.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/users.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/wecom.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/icons/x.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/image.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/login.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/login_form.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/password_form.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/presence.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/profile.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/rail.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/remove_ask.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/remove_form.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/review_card.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/scripts.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/settings.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/settings_accounts.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/settings_appearance.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/settings_roles.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/settings_security.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/shares.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/shell.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/sign.svg +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/resources/templates/unreachable.html +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/review.py +0 -0
- {bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/secrets.py +0 -0
|
@@ -14,6 +14,7 @@ from .v03_roles_oidc import ROLES_OIDC_MIGRATION
|
|
|
14
14
|
from .v04_login_order import LOGIN_ORDER_MIGRATION
|
|
15
15
|
from .v05_provider_description import PROVIDER_DESCRIPTION_MIGRATION
|
|
16
16
|
from .v06_provider_default_role import PROVIDER_DEFAULT_ROLE_MIGRATION
|
|
17
|
+
from .v07_oidc_session_settings import OIDC_SESSION_SETTINGS_MIGRATION
|
|
17
18
|
|
|
18
19
|
|
|
19
20
|
class MigrationError(RuntimeError):
|
|
@@ -38,6 +39,7 @@ MIGRATIONS = _migration_ledger(
|
|
|
38
39
|
LOGIN_ORDER_MIGRATION,
|
|
39
40
|
PROVIDER_DESCRIPTION_MIGRATION,
|
|
40
41
|
PROVIDER_DEFAULT_ROLE_MIGRATION,
|
|
42
|
+
OIDC_SESSION_SETTINGS_MIGRATION,
|
|
41
43
|
)
|
|
42
44
|
|
|
43
45
|
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from .model import Migration
|
|
4
|
+
|
|
5
|
+
OIDC_SESSION_SETTINGS_MIGRATION = Migration(
|
|
6
|
+
version=7,
|
|
7
|
+
name="oidc_session_settings",
|
|
8
|
+
statements=(
|
|
9
|
+
"ALTER TABLE oidc_providers ADD COLUMN session_minutes INTEGER NOT NULL DEFAULT 10",
|
|
10
|
+
"DROP TABLE oidc_transactions",
|
|
11
|
+
),
|
|
12
|
+
)
|
|
@@ -25,7 +25,6 @@ from ...storage import (
|
|
|
25
25
|
Enrolment,
|
|
26
26
|
IStorage,
|
|
27
27
|
OIDCProvider,
|
|
28
|
-
OIDCTransaction,
|
|
29
28
|
Role,
|
|
30
29
|
RoleShare,
|
|
31
30
|
StoredEvent,
|
|
@@ -300,10 +299,10 @@ class SqliteStorage(IStorage):
|
|
|
300
299
|
async def save_oidc_provider(self, provider: OIDCProvider) -> None:
|
|
301
300
|
async def save(db: aiosqlite.Connection) -> None:
|
|
302
301
|
await db.execute(
|
|
303
|
-
"INSERT INTO oidc_providers(id,name,logo_url,issuer,client_id,client_secret,redirect_uri,created_at_ms,updated_at_ms,description,default_role_id)"
|
|
304
|
-
" VALUES (
|
|
302
|
+
"INSERT INTO oidc_providers(id,name,logo_url,issuer,client_id,client_secret,redirect_uri,created_at_ms,updated_at_ms,description,default_role_id,session_minutes)"
|
|
303
|
+
" VALUES (?,?,?,?,?,?,?,?,?,?,?,?) ON CONFLICT(id) DO UPDATE SET"
|
|
305
304
|
" name=excluded.name,logo_url=excluded.logo_url,issuer=excluded.issuer,client_id=excluded.client_id,"
|
|
306
|
-
" client_secret=excluded.client_secret,redirect_uri=excluded.redirect_uri,updated_at_ms=excluded.updated_at_ms,description=excluded.description,default_role_id=excluded.default_role_id",
|
|
305
|
+
" client_secret=excluded.client_secret,redirect_uri=excluded.redirect_uri,updated_at_ms=excluded.updated_at_ms,description=excluded.description,default_role_id=excluded.default_role_id,session_minutes=excluded.session_minutes",
|
|
307
306
|
(
|
|
308
307
|
provider.id,
|
|
309
308
|
provider.name,
|
|
@@ -316,6 +315,7 @@ class SqliteStorage(IStorage):
|
|
|
316
315
|
provider.updated_at_ms,
|
|
317
316
|
provider.description,
|
|
318
317
|
provider.default_role_id,
|
|
318
|
+
provider.session_minutes,
|
|
319
319
|
),
|
|
320
320
|
)
|
|
321
321
|
await db.execute(
|
|
@@ -376,41 +376,6 @@ class SqliteStorage(IStorage):
|
|
|
376
376
|
|
|
377
377
|
return await self._write(resolve)
|
|
378
378
|
|
|
379
|
-
async def save_oidc_transaction(self, transaction: OIDCTransaction) -> None:
|
|
380
|
-
async def save(db: aiosqlite.Connection) -> None:
|
|
381
|
-
await db.execute(
|
|
382
|
-
"DELETE FROM oidc_transactions WHERE expires_at_ms <= ?", (now_ms(),)
|
|
383
|
-
)
|
|
384
|
-
await db.execute(
|
|
385
|
-
"INSERT INTO oidc_transactions(state,provider_id,browser_hash,nonce,code_verifier,redirect_uri,expires_at_ms,issuer,subject) VALUES (?,?,?,?,?,?,?,?,?)",
|
|
386
|
-
(
|
|
387
|
-
transaction.state,
|
|
388
|
-
transaction.provider_id,
|
|
389
|
-
transaction.browser_hash,
|
|
390
|
-
transaction.nonce,
|
|
391
|
-
transaction.code_verifier,
|
|
392
|
-
transaction.redirect_uri,
|
|
393
|
-
transaction.expires_at_ms,
|
|
394
|
-
transaction.issuer,
|
|
395
|
-
transaction.subject,
|
|
396
|
-
),
|
|
397
|
-
)
|
|
398
|
-
|
|
399
|
-
await self._write(save)
|
|
400
|
-
|
|
401
|
-
async def consume_oidc_transaction(
|
|
402
|
-
self, state: str, browser_hash: str, provider_id: str
|
|
403
|
-
) -> OIDCTransaction | None:
|
|
404
|
-
async def consume(db: aiosqlite.Connection) -> OIDCTransaction | None:
|
|
405
|
-
async with db.execute(
|
|
406
|
-
"DELETE FROM oidc_transactions WHERE state=? AND browser_hash=? AND provider_id=? AND expires_at_ms>? RETURNING *",
|
|
407
|
-
(state, browser_hash, provider_id, now_ms()),
|
|
408
|
-
) as rows:
|
|
409
|
-
row = await rows.fetchone()
|
|
410
|
-
return None if row is None else OIDCTransaction(**dict(row))
|
|
411
|
-
|
|
412
|
-
return await self._write(consume)
|
|
413
|
-
|
|
414
379
|
async def list_role_shares(self, kind: str, target_id: str) -> list[RoleShare]:
|
|
415
380
|
async with (
|
|
416
381
|
self._reader() as db,
|
{bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/gate.py
RENAMED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
from urllib.parse import urlencode, urlsplit
|
|
6
|
+
|
|
5
7
|
from starlette.requests import Request
|
|
6
8
|
from starlette.responses import RedirectResponse, Response
|
|
7
9
|
from starlette.types import ASGIApp, Message, Receive, Scope, Send
|
|
@@ -106,6 +108,23 @@ def _to_login(request: Request) -> Response:
|
|
|
106
108
|
destination = (
|
|
107
109
|
"/login/oidc/resume" if request.cookies.get(reauth.COOKIE) else LOGIN_PATH
|
|
108
110
|
)
|
|
111
|
+
if request.cookies.get(reauth.COOKIE):
|
|
112
|
+
# Partial requests name the page in the browser, not the fragment endpoint.
|
|
113
|
+
if request.headers.get("HX-Request") == "true":
|
|
114
|
+
current = request.headers.get("HX-Current-URL", "")
|
|
115
|
+
elif request.method in ("GET", "HEAD"):
|
|
116
|
+
current = str(request.url)
|
|
117
|
+
else:
|
|
118
|
+
current = request.headers.get("Referer", "")
|
|
119
|
+
try:
|
|
120
|
+
current = urlsplit(current)
|
|
121
|
+
origin = urlsplit(str(request.url))
|
|
122
|
+
if (current.scheme, current.netloc) == (origin.scheme, origin.netloc):
|
|
123
|
+
destination += "?" + urlencode(
|
|
124
|
+
{"return_to": current._replace(scheme="", netloc="").geturl()}
|
|
125
|
+
)
|
|
126
|
+
except ValueError:
|
|
127
|
+
pass
|
|
109
128
|
# htmx cannot follow a redirect into the shell; it is told to go there whole
|
|
110
129
|
if request.headers.get("HX-Request") == "true":
|
|
111
130
|
return Response(status_code=401, headers={"HX-Redirect": destination})
|
|
@@ -38,6 +38,7 @@ class ProviderForm(BaseModel):
|
|
|
38
38
|
str, StringConstraints(strip_whitespace=True, max_length=200)
|
|
39
39
|
] = ""
|
|
40
40
|
default_role_id: str = ""
|
|
41
|
+
session_minutes: int = Field(default=10, ge=1)
|
|
41
42
|
|
|
42
43
|
clear_logo: bool = False
|
|
43
44
|
issuer: HttpUrl
|
|
@@ -127,6 +128,7 @@ class OIDCPages:
|
|
|
127
128
|
"name": selected.name if selected else "",
|
|
128
129
|
"description": selected.description if selected else "",
|
|
129
130
|
"default_role_id": (selected.default_role_id or "") if selected else "",
|
|
131
|
+
"session_minutes": str(selected.session_minutes if selected else 10),
|
|
130
132
|
"logo_url": selected.logo_url if selected else "",
|
|
131
133
|
"issuer": selected.issuer if selected else "",
|
|
132
134
|
"client_id": selected.client_id if selected else "",
|
|
@@ -179,6 +181,7 @@ class OIDCPages:
|
|
|
179
181
|
"redirect_uri",
|
|
180
182
|
)
|
|
181
183
|
}
|
|
184
|
+
values["session_minutes"] = str(form.get("session_minutes", "10"))
|
|
182
185
|
values["logo_url"] = selected.logo_url if selected else ""
|
|
183
186
|
logo = form.get("logo")
|
|
184
187
|
logo_url = values["logo_url"]
|
|
@@ -241,6 +244,7 @@ class OIDCPages:
|
|
|
241
244
|
now_ms(),
|
|
242
245
|
description=parsed.description,
|
|
243
246
|
default_role_id=parsed.default_role_id or None,
|
|
247
|
+
session_minutes=parsed.session_minutes,
|
|
244
248
|
)
|
|
245
249
|
await self._storage.save_oidc_provider(provider)
|
|
246
250
|
await self.refs.load([provider.id])
|
|
@@ -1,30 +1,60 @@
|
|
|
1
|
-
"""OIDC protocol calls with
|
|
1
|
+
"""OIDC protocol calls with short-lived, single-use in-memory login state."""
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
from collections import OrderedDict
|
|
5
6
|
from hashlib import sha256
|
|
7
|
+
from pathlib import PurePosixPath
|
|
6
8
|
from secrets import token_urlsafe
|
|
7
9
|
|
|
8
10
|
from authlib.integrations.base_client import OAuthError
|
|
9
11
|
from authlib.integrations.starlette_client import StarletteOAuth2App
|
|
10
12
|
from httpx2 import HTTPError
|
|
11
13
|
from joserfc.errors import JoseError
|
|
12
|
-
from pydantic import BaseModel, Field, ValidationError
|
|
14
|
+
from pydantic import BaseModel, Field, ValidationError, field_validator
|
|
13
15
|
from starlette.requests import Request
|
|
14
16
|
from starlette.responses import RedirectResponse, Response
|
|
17
|
+
from yarl import URL
|
|
15
18
|
|
|
16
19
|
from .. import reauth
|
|
17
20
|
from ..clock import now_ms
|
|
18
21
|
from ..gate import set_session
|
|
19
22
|
from ..rendering import Renderer
|
|
20
23
|
from ..sessions import Sessions
|
|
21
|
-
from ..storage import IStorage, OIDCProvider
|
|
24
|
+
from ..storage import IStorage, OIDCProvider
|
|
22
25
|
from .login import HOME
|
|
23
26
|
|
|
24
27
|
LIFETIME = 600
|
|
28
|
+
MAX_TRANSACTIONS = 1024
|
|
25
29
|
COOKIE = "bcs_oidc"
|
|
26
30
|
|
|
27
31
|
|
|
32
|
+
class Destination(BaseModel):
|
|
33
|
+
return_to: str = Field(default=HOME, max_length=8192)
|
|
34
|
+
|
|
35
|
+
@field_validator("return_to")
|
|
36
|
+
@classmethod
|
|
37
|
+
def local_path(cls, value: str) -> str:
|
|
38
|
+
url = URL(value)
|
|
39
|
+
path = PurePosixPath(url.raw_path)
|
|
40
|
+
if url.scheme or url.authority or path.root != "/":
|
|
41
|
+
raise ValueError("return_to must be a local absolute path")
|
|
42
|
+
return str(
|
|
43
|
+
url.with_path(str(path), encoded=True, keep_query=True, keep_fragment=True)
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class Transaction(Destination):
|
|
48
|
+
expires_at_ms: int
|
|
49
|
+
browser_hash: str
|
|
50
|
+
provider_id: str
|
|
51
|
+
nonce: str
|
|
52
|
+
code_verifier: str
|
|
53
|
+
redirect_uri: str
|
|
54
|
+
issuer: str
|
|
55
|
+
subject: str
|
|
56
|
+
|
|
57
|
+
|
|
28
58
|
class Callback(BaseModel):
|
|
29
59
|
state: str = Field(min_length=1, max_length=256)
|
|
30
60
|
code: str = Field(default="", max_length=8192)
|
|
@@ -39,8 +69,8 @@ class Identity(BaseModel):
|
|
|
39
69
|
|
|
40
70
|
|
|
41
71
|
def client(provider: OIDCProvider) -> StarletteOAuth2App:
|
|
42
|
-
# BCS
|
|
43
|
-
#
|
|
72
|
+
# BCS keeps login state in memory rather than the framework session adapter.
|
|
73
|
+
# Authlib handles the protocol and token checks.
|
|
44
74
|
return StarletteOAuth2App(
|
|
45
75
|
framework=None,
|
|
46
76
|
client_id=provider.client_id,
|
|
@@ -62,6 +92,7 @@ class OIDCLoginPages:
|
|
|
62
92
|
self._storage = storage
|
|
63
93
|
self._render = renderer
|
|
64
94
|
self._sessions = sessions
|
|
95
|
+
self._transactions: OrderedDict[str, Transaction] = OrderedDict()
|
|
65
96
|
|
|
66
97
|
async def failure(self, request: Request, reason: str) -> Response:
|
|
67
98
|
response = self._render.standalone(
|
|
@@ -106,6 +137,10 @@ class OIDCLoginPages:
|
|
|
106
137
|
async def _start(
|
|
107
138
|
self, request: Request, provider: OIDCProvider, hint: reauth.Hint | None = None
|
|
108
139
|
) -> Response:
|
|
140
|
+
try:
|
|
141
|
+
destination = Destination.model_validate(dict(request.query_params))
|
|
142
|
+
except ValidationError:
|
|
143
|
+
destination = Destination()
|
|
109
144
|
state, nonce, verifier, browser = (token_urlsafe(32) for _ in range(4))
|
|
110
145
|
oauth = client(provider)
|
|
111
146
|
try:
|
|
@@ -121,19 +156,24 @@ class OIDCLoginPages:
|
|
|
121
156
|
)
|
|
122
157
|
except HTTPError, OAuthError, ValueError, KeyError, RuntimeError:
|
|
123
158
|
return await self.failure(request, "oidc.unavailable")
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
hint.subject if hint else "",
|
|
135
|
-
)
|
|
159
|
+
self._transactions[state] = Transaction(
|
|
160
|
+
expires_at_ms=now_ms() + LIFETIME * 1000,
|
|
161
|
+
browser_hash=sha256(browser.encode()).hexdigest(),
|
|
162
|
+
provider_id=provider.id,
|
|
163
|
+
nonce=nonce,
|
|
164
|
+
code_verifier=verifier,
|
|
165
|
+
redirect_uri=provider.redirect_uri,
|
|
166
|
+
issuer=hint.issuer if hint else "",
|
|
167
|
+
subject=hint.subject if hint else "",
|
|
168
|
+
return_to=destination.return_to,
|
|
136
169
|
)
|
|
170
|
+
# Each entry is read only when consumed, so the oldest pending entry
|
|
171
|
+
# is also the least recently used one.
|
|
172
|
+
while self._transactions and (
|
|
173
|
+
len(self._transactions) > MAX_TRANSACTIONS
|
|
174
|
+
or next(iter(self._transactions.values())).expires_at_ms <= now_ms()
|
|
175
|
+
):
|
|
176
|
+
self._transactions.popitem(last=False)
|
|
137
177
|
response = RedirectResponse(authorization["url"], status_code=302)
|
|
138
178
|
response.delete_cookie(reauth.COOKIE, path="/")
|
|
139
179
|
response.set_cookie(
|
|
@@ -154,13 +194,16 @@ class OIDCLoginPages:
|
|
|
154
194
|
values = Callback.model_validate(dict(request.query_params))
|
|
155
195
|
except ValidationError:
|
|
156
196
|
return await self.failure(request, "oidc.expired")
|
|
157
|
-
transaction =
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
197
|
+
transaction = self._transactions.get(values.state)
|
|
198
|
+
if (
|
|
199
|
+
transaction is None
|
|
200
|
+
or transaction.expires_at_ms <= now_ms()
|
|
201
|
+
or transaction.browser_hash
|
|
202
|
+
!= sha256(request.cookies.get(COOKIE, "").encode()).hexdigest()
|
|
203
|
+
or request.path_params["provider_id"] != transaction.provider_id
|
|
204
|
+
):
|
|
163
205
|
return await self.failure(request, "oidc.expired")
|
|
206
|
+
self._transactions.pop(values.state)
|
|
164
207
|
if values.error or not values.code:
|
|
165
208
|
return await self.failure(request, "oidc.failed")
|
|
166
209
|
provider = await self._storage.get_oidc_provider(transaction.provider_id)
|
|
@@ -203,12 +246,12 @@ class OIDCLoginPages:
|
|
|
203
246
|
)
|
|
204
247
|
except ValueError:
|
|
205
248
|
return await self.failure(request, "oidc.default_required")
|
|
206
|
-
response = RedirectResponse(
|
|
249
|
+
response = RedirectResponse(transaction.return_to, status_code=302)
|
|
207
250
|
set_session(
|
|
208
251
|
response,
|
|
209
|
-
self._sessions.issue(account),
|
|
252
|
+
self._sessions.issue(account, max_age=provider.session_minutes * 60),
|
|
210
253
|
request=request,
|
|
211
|
-
max_age=
|
|
254
|
+
max_age=provider.session_minutes * 60,
|
|
212
255
|
)
|
|
213
256
|
response.delete_cookie(COOKIE, path="/login/oidc")
|
|
214
257
|
hint = reauth.Hint(
|
|
@@ -438,3 +438,8 @@
|
|
|
438
438
|
"error.403.text" = "Your account does not have permission to access this page. Choose an available module from the navigation."
|
|
439
439
|
|
|
440
440
|
"computers.overview" = "Overview"
|
|
441
|
+
|
|
442
|
+
"oidc.session_minutes" = "Session duration (minutes)"
|
|
443
|
+
"oidc.session_minutes_hint" = "Defaults to 10 minutes. Changes apply on the next sign-in or automatic sign-in renewal."
|
|
444
|
+
|
|
445
|
+
"history.jump_bottom" = "Jump to latest"
|
|
@@ -19,7 +19,7 @@ document.addEventListener('alpine:init', () => {
|
|
|
19
19
|
this.step = Number(this.form.dataset.at || 0);
|
|
20
20
|
for (const family of ['channel', 'runtime']) {
|
|
21
21
|
this.cards[family] = this.cards[family].map(card => ({
|
|
22
|
-
app_id: '', region: 'feishu', bot_id: '', websocket_url: '',
|
|
22
|
+
app_id: '', region: 'feishu', bot_id: '', websocket_url: '', version: '',
|
|
23
23
|
model: '', effort: '', sandbox_mode: 'workspace-write', network_access: true,
|
|
24
24
|
models: [{value: card.model || '', label: card.model || labels.modelDefault, efforts: []}],
|
|
25
25
|
efforts: card.effort ? [card.effort] : [], modelState: 'idle', modelError: '',
|
|
@@ -69,7 +69,8 @@ document.addEventListener('alpine:init', () => {
|
|
|
69
69
|
reveal() {
|
|
70
70
|
if (!this.active) return;
|
|
71
71
|
for (const family of ['channel', 'runtime']) {
|
|
72
|
-
|
|
72
|
+
const blank = this.form.querySelector(`[data-blank="${family}"]`);
|
|
73
|
+
if (blank.checkVisibility() || (family === 'runtime' && this.cards.runtime.length && (!this.wizard || this.step >= 2))) this.loadKinds(family);
|
|
73
74
|
}
|
|
74
75
|
},
|
|
75
76
|
kindStarted(event) {
|
|
@@ -84,6 +85,10 @@ document.addEventListener('alpine:init', () => {
|
|
|
84
85
|
if (!blank) return;
|
|
85
86
|
this.kindRequests.delete(blank.dataset.blank);
|
|
86
87
|
this.kinds[blank.dataset.blank] = ctx.status === 'swapped' && !blank.querySelector('.err') ? 'ready' : 'error';
|
|
88
|
+
if (blank.dataset.blank === 'runtime' && this.kinds.runtime === 'ready') {
|
|
89
|
+
const versions = new Map([...blank.querySelectorAll('[data-add]')].map(option => [option.dataset.add, option.dataset.version]));
|
|
90
|
+
for (const card of this.cards.runtime) card.version = versions.get(`runtime-${card.kind}`) || '';
|
|
91
|
+
}
|
|
87
92
|
},
|
|
88
93
|
async loadKinds(family, retry = false) {
|
|
89
94
|
if (!this.active || this.kinds[family] === 'loading' || (!retry && this.kinds[family] !== 'idle')) return;
|
|
@@ -83,6 +83,7 @@ a { color: inherit; text-decoration: none; }
|
|
|
83
83
|
|
|
84
84
|
/* the chat: a run of one speaker's messages under their name, oldest at
|
|
85
85
|
the top, the newest end kept in view; no bubbles, no colour per speaker */
|
|
86
|
+
#chat { position: relative; }
|
|
86
87
|
.chat { flex: 1; overflow-y: auto; padding: 12px 16px; }
|
|
87
88
|
.turn { display: flex; gap: 10px; margin: 10px 0; }
|
|
88
89
|
/* where a day starts, in the chat and the activity log alike: its date
|
|
@@ -206,7 +207,7 @@ a { color: inherit; text-decoration: none; }
|
|
|
206
207
|
/* the card is fixed, shown while the pointer is on the agent's avatar and
|
|
207
208
|
kept by the pointer (the avatar moves it); never clipped by the scrolling
|
|
208
209
|
list it belongs to */
|
|
209
|
-
.agent .card, .turn.own .card { display: none; position: fixed; width: 300px; background: var(--float); border: 1px solid var(--line); border-radius: 8px;
|
|
210
|
+
.agent .card, .turn.own .card { display: none; position: fixed; width: 300px; background: var(--float); border: 1px solid var(--line); border-radius: 8px; padding: 12px 14px; z-index: 3; font-size: .92em; pointer-events: none; }
|
|
210
211
|
.agent:has(> .in > .av:hover) .card, .turn.own:has(> .av:hover) .card { display: block; }
|
|
211
212
|
.card .h { display: flex; align-items: center; gap: 8px; font-weight: 600; margin-bottom: 8px; }
|
|
212
213
|
.card .h .dot { margin-left: auto; }
|
|
@@ -249,6 +250,8 @@ a { color: inherit; text-decoration: none; }
|
|
|
249
250
|
.btn.icon { width: 28px; height: 28px; padding: 0; justify-content: center; margin-left: auto; color: var(--muted); }
|
|
250
251
|
.btn.icon:hover { color: var(--fg); background: var(--chip); }
|
|
251
252
|
.btn.icon .i { margin: 0; }
|
|
253
|
+
.btn.chat-jump { position: absolute; right: 18px; bottom: 18px; width: 36px; height: 36px; border: 0; background: transparent; color: var(--fg); z-index: 2; }
|
|
254
|
+
.btn.chat-jump .i svg { width: 22px; height: 22px; }
|
|
252
255
|
.btn.icon .i svg { width: 16px; height: 16px; }
|
|
253
256
|
.field { display: flex; align-items: center; gap: 10px; margin: 8px 0; }
|
|
254
257
|
.field label { width: 64px; color: var(--muted); }
|
|
@@ -256,7 +259,7 @@ a { color: inherit; text-decoration: none; }
|
|
|
256
259
|
/* a text box grows with what is typed, from three lines, and has no grip */
|
|
257
260
|
.field textarea { resize: none; field-sizing: content; min-height: 3lh; }
|
|
258
261
|
/* forms are short: a card no wider than it needs */
|
|
259
|
-
.dialog { border: 1px solid var(--edge); border-radius: 8px; padding: 14px 16px; margin: 12px 0; background: var(--panel); max-width: 420px;
|
|
262
|
+
.dialog { border: 1px solid var(--edge); border-radius: 8px; padding: 14px 16px; margin: 12px 0; background: var(--panel); max-width: 420px; }
|
|
260
263
|
.dialog h3 { margin: 0 0 8px; font-size: 1em; }
|
|
261
264
|
/* a command to copy: wraps rather than scrolls, with the copy button in its corner */
|
|
262
265
|
/* two commands, one per kind of machine: flat tabs, the open one in the
|
|
@@ -324,7 +327,7 @@ a { color: inherit; text-decoration: none; }
|
|
|
324
327
|
@supports (appearance: base-select) {
|
|
325
328
|
.select select, .select select::picker(select) { appearance: base-select; }
|
|
326
329
|
.select select::picker-icon { display: none; }
|
|
327
|
-
.select select::picker(select) { margin-top: 4px; padding: 4px; border: 1px solid var(--line); border-radius: 8px; background: var(--float); color: var(--fg);
|
|
330
|
+
.select select::picker(select) { margin-top: 4px; padding: 4px; border: 1px solid var(--line); border-radius: 8px; background: var(--float); color: var(--fg); }
|
|
328
331
|
.select option { padding: 6px 9px; border-radius: 4px; }
|
|
329
332
|
.select option:hover, .select option:focus-visible { background: var(--hi); outline: none; }
|
|
330
333
|
.select option:checked { color: var(--accent); font-weight: 500; }
|
|
@@ -374,7 +377,7 @@ a { color: inherit; text-decoration: none; }
|
|
|
374
377
|
/* the chat's title wears the conversation's face, which opens its card */
|
|
375
378
|
.hd .face { padding: 0; border: 1px solid var(--line); cursor: pointer; }
|
|
376
379
|
#chat { position: relative; }
|
|
377
|
-
.drawer { position: absolute; top: 0; right: 0; bottom: 0; width: 320px; display: flex; flex-direction: column; background: var(--float); border-left: 1px solid var(--line);
|
|
380
|
+
.drawer { position: absolute; top: 0; right: 0; bottom: 0; width: 320px; display: flex; flex-direction: column; background: var(--float); border-left: 1px solid var(--line); z-index: 4; }
|
|
378
381
|
.drawer[hidden] { display: none; }
|
|
379
382
|
.drawer .hd .btn.icon { margin-left: auto; }
|
|
380
383
|
.drawer .who { display: flex; gap: 12px; align-items: center; padding: 14px; border-bottom: 1px solid var(--line); }
|
|
@@ -427,12 +430,12 @@ a { color: inherit; text-decoration: none; }
|
|
|
427
430
|
|
|
428
431
|
/* a form in steps: a sheet over the page, the steps across its top as dots
|
|
429
432
|
on a line, the one open scrolling under them, the buttons at its foot */
|
|
430
|
-
.veil .sheet { width: 520px; max-height: 88vh; display: flex; flex-direction: column; overflow: hidden; border: 1px solid var(--edge); border-radius: 10px; background: var(--canvas);
|
|
433
|
+
.veil .sheet { width: 520px; max-height: 88vh; display: flex; flex-direction: column; overflow: hidden; border: 1px solid var(--edge); border-radius: 10px; background: var(--canvas); }
|
|
431
434
|
.sheet h3 { margin: 0; padding: 16px 18px 10px; font-size: 1em; }
|
|
432
435
|
.sheet .steps { flex: 1; overflow-y: auto; padding: 14px 18px 4px; min-height: 340px; }
|
|
433
436
|
.sheet .steps > [hidden] { display: none; }
|
|
434
437
|
.sheet .hint { margin: 0 0 12px; color: var(--muted); font-size: .9em; }
|
|
435
|
-
.sheet .dialog { max-width: none; margin: 0 0 12px;
|
|
438
|
+
.sheet .dialog { max-width: none; margin: 0 0 12px; }
|
|
436
439
|
.sheet .foot { display: flex; gap: 8px; padding: 12px 18px 16px; border-top: 1px solid var(--line); }
|
|
437
440
|
.sheet .foot .grow { flex: 1; }
|
|
438
441
|
.sheet .foot [hidden] { display: none; }
|
|
@@ -478,8 +481,8 @@ a { color: inherit; text-decoration: none; }
|
|
|
478
481
|
.field [data-again] { margin-left: 0; }
|
|
479
482
|
.field .wait[hidden], .field [data-again][hidden] { display: none; }
|
|
480
483
|
/* a logo beside words sits on their middle, not their baseline */
|
|
481
|
-
.part .title .ch, .part .title .rt, .blank .kinds .ch, .blank .kinds .rt { display: inline-flex; }
|
|
482
|
-
.part .title .ch .i svg, .part .title .rt .i svg, .blank .kinds .ch .i svg, .blank .kinds .rt .i svg {
|
|
484
|
+
.part .title .kind-logo, .part .title .ch, .part .title .rt, .blank .kinds .ch, .blank .kinds .rt { display: inline-flex; }
|
|
485
|
+
.part .title .ch .i svg, .part .title .rt .i svg, .blank .kinds .ch .i svg, .blank .kinds .rt .i svg { display: block; }
|
|
483
486
|
.field[hidden] { display: none; }
|
|
484
487
|
.part > .field:first-child, .part > input[type=hidden] + .title + .field { margin-top: 0; }
|
|
485
488
|
.part > .field:last-child { margin-bottom: 0; }
|
|
@@ -510,7 +513,7 @@ a { color: inherit; text-decoration: none; }
|
|
|
510
513
|
.switch.text .tab { width: auto; gap: 6px; padding: 0 12px; font: inherit; }
|
|
511
514
|
.profile .body { flex: 1; }
|
|
512
515
|
.profile .body > .dialog, .profile .config { max-width: 480px; }
|
|
513
|
-
.profile .config .dialog, .profile .body > .dialog.part { max-width: none; margin: 0 0 12px;
|
|
516
|
+
.profile .config .dialog, .profile .body > .dialog.part { max-width: none; margin: 0 0 12px; }
|
|
514
517
|
.profile .config .section, .profile .body > .section { margin: 18px 0 8px; }
|
|
515
518
|
.profile .config > .section:first-child, .profile .body > .section:first-child { margin-top: 0; }
|
|
516
519
|
/* the heading names the card: the card need not say it again */
|
|
@@ -539,7 +542,7 @@ a { color: inherit; text-decoration: none; }
|
|
|
539
542
|
.profile .file .name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
540
543
|
.profile .file .size, .profile .file .when { color: var(--muted); font-size: .88em; font-variant-numeric: tabular-nums; }
|
|
541
544
|
.profile .health { max-width: 480px; }
|
|
542
|
-
.profile .health .dialog { max-width: none; margin: 0 0 12px;
|
|
545
|
+
.profile .health .dialog { max-width: none; margin: 0 0 12px; }
|
|
543
546
|
.profile .health .section { margin: 18px 0 8px; }
|
|
544
547
|
.profile .health .title { display: flex; align-items: center; gap: 6px; font-weight: 600; margin-bottom: 6px; }
|
|
545
548
|
.profile .health .field .v { display: inline-flex; align-items: baseline; gap: 6px; min-width: 0; overflow-wrap: anywhere; }
|
|
@@ -771,7 +774,7 @@ a:focus-visible, button:focus-visible { outline: 2px solid var(--accent); outlin
|
|
|
771
774
|
.role-tag .i svg { width: 14px; height: 14px; }
|
|
772
775
|
.role-picker-toggle { flex: 1; justify-content: flex-end; gap: 12px; min-width: 24px; min-height: 24px; }
|
|
773
776
|
.role-picker-toggle > span:first-child { margin-right: auto; }
|
|
774
|
-
.role-options { position: absolute; z-index: 10; left: 0; right: 0; top: calc(100% + 6px); padding: 8px; border: 1px solid var(--edge); border-radius: var(--r-sm); background: var(--panel);
|
|
777
|
+
.role-options { position: absolute; z-index: 10; left: 0; right: 0; top: calc(100% + 6px); padding: 8px; border: 1px solid var(--edge); border-radius: var(--r-sm); background: var(--panel); }
|
|
775
778
|
.role-options > input { width: 100%; }
|
|
776
779
|
.role-options-list { max-height: 220px; overflow-y: auto; margin-top: 6px; }
|
|
777
780
|
.role-options .check { width: auto; padding: 8px; border-radius: var(--r-sm); color: var(--fg); }
|
|
@@ -238,6 +238,7 @@ document.addEventListener('alpine:init', () => {
|
|
|
238
238
|
}));
|
|
239
239
|
Alpine.data('history', () => ({
|
|
240
240
|
element: null,
|
|
241
|
+
atBottom: true,
|
|
241
242
|
pending: new Map(),
|
|
242
243
|
active: true,
|
|
243
244
|
init() {
|
|
@@ -245,6 +246,9 @@ document.addEventListener('alpine:init', () => {
|
|
|
245
246
|
this.$nextTick(() => { if (this.active) this.element.scrollTop = this.element.scrollHeight; });
|
|
246
247
|
},
|
|
247
248
|
destroy() { this.active = false; this.pending.clear(); },
|
|
249
|
+
updateBottom() {
|
|
250
|
+
this.atBottom = this.element.scrollHeight - this.element.scrollTop - this.element.clientHeight < 2;
|
|
251
|
+
},
|
|
248
252
|
before(event) {
|
|
249
253
|
const {ctx} = event.detail;
|
|
250
254
|
if (!this.element.contains(ctx.sourceElement)) return;
|
|
@@ -262,6 +266,7 @@ document.addEventListener('alpine:init', () => {
|
|
|
262
266
|
if (!this.active) return;
|
|
263
267
|
if (position.earlier) this.element.scrollTop = position.top + this.element.scrollHeight - position.height;
|
|
264
268
|
else if (position.bottom) this.element.scrollTop = this.element.scrollHeight;
|
|
269
|
+
this.updateBottom();
|
|
265
270
|
});
|
|
266
271
|
},
|
|
267
272
|
}));
|
|
@@ -52,6 +52,7 @@ document.addEventListener('alpine:init', () => {
|
|
|
52
52
|
const response = await fetch('/poll', {
|
|
53
53
|
method: 'POST', credentials: 'same-origin', signal: controller.signal,
|
|
54
54
|
headers: {'Content-Type': 'application/json', 'HX-Request': 'true',
|
|
55
|
+
'HX-Current-URL': location.href,
|
|
55
56
|
'X-Build': document.body.dataset.build,
|
|
56
57
|
'X-Timezone': Intl.DateTimeFormat().resolvedOptions().timeZone},
|
|
57
58
|
body: JSON.stringify({subscriptions: items.map(({id, scope, seen}) => ({id, scope, seen}))}),
|
|
@@ -63,8 +63,8 @@
|
|
|
63
63
|
|
|
64
64
|
{% macro card_head(family) -%}
|
|
65
65
|
<div class="title">
|
|
66
|
-
{% for kind in ("telegram", "lark", "wecom") if family == "channel" %}<span x-show="card.kind === '{{ kind }}'">{{ logo(family, kind) }}</span>{% endfor %}
|
|
67
|
-
{% for kind in ("codex", "claudecode") if family == "runtime" %}<span x-show="card.kind === '{{ kind }}'">{{ logo(family, kind) }}</span>{% endfor %}
|
|
66
|
+
{% for kind in ("telegram", "lark", "wecom") if family == "channel" %}<span class="kind-logo" x-show="card.kind === '{{ kind }}'">{{ logo(family, kind) }}</span>{% endfor %}
|
|
67
|
+
{% for kind in ("codex", "claudecode") if family == "runtime" %}<span class="kind-logo" x-show="card.kind === '{{ kind }}'">{{ logo(family, kind) }}</span>{% endfor %}
|
|
68
68
|
<span x-text="labels.{{ family }}[card.kind] || card.kind"></span><span class="ver" x-show="card.version" x-text="card.version"></span>
|
|
69
69
|
<button class="btn icon" type="button" title="{{ t.text('agents.remove_card') }}" aria-label="{{ t.text('agents.remove_card') }}" data-remove @click="removeCard('{{ family }}', card)">{{ c.icon('trash-2') }}</button>
|
|
70
70
|
</div>
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
{% if listed.answer != 'listed' %}
|
|
112
112
|
<p class="err">{{ t.text('agents.' ~ listed.answer, {'code': listed.code}) }}</p><button class="btn sm" type="button" @click="loadKinds('{{ family }}', true)">{{ c.icon('rotate-cw') }} {{ t.text('agents.retry') }}</button>
|
|
113
113
|
{% else %}
|
|
114
|
-
{% for item in listed.kinds %}<button type="button" data-add="{{ family }}-{{ item.kind }}" @click='addCard({{ family|tojson }}, {{ item.kind|tojson }}, {{ (item.version if family == "runtime" else "")|tojson }})'{% if family == 'runtime' and not item.available %} disabled title="{{ t.text('agents.not_found') }}"{% endif %}>{{ logo(family, item.kind) }}{{ kind_name(family, item.kind) }}{% if family == 'runtime' %}{% if item.available %}{% if item.version %}<span class="ver">{{ item.version }}</span>{% endif %}{% else %}<span class="miss">{{ c.icon('triangle-alert') }}</span>{% endif %}{% endif %}</button>{% endfor %}
|
|
114
|
+
{% for item in listed.kinds %}<button type="button" data-add="{{ family }}-{{ item.kind }}"{% if family == "runtime" %} data-version="{{ item.version or '' }}"{% endif %} @click='addCard({{ family|tojson }}, {{ item.kind|tojson }}, {{ (item.version if family == "runtime" else "")|tojson }})'{% if family == 'runtime' and not item.available %} disabled title="{{ t.text('agents.not_found') }}"{% endif %}>{{ logo(family, item.kind) }}{{ kind_name(family, item.kind) }}{% if family == 'runtime' %}{% if item.available %}{% if item.version %}<span class="ver">{{ item.version }}</span>{% endif %}{% else %}<span class="miss">{{ c.icon('triangle-alert') }}</span>{% endif %}{% endif %}</button>{% endfor %}
|
|
115
115
|
{% endif %}
|
|
116
116
|
{%- endmacro %}
|
|
117
117
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{% import "components.html" as c with context %}
|
|
2
2
|
{% set url = c.messages_url(history.agent, history.contact) %}
|
|
3
|
-
<div class="chat" id="history" x-data="history" @htmx:before:request.window="before($event)" @htmx:after:swap.window="after($event)" @htmx:finally:request.window="pending.delete($event.detail.ctx)">
|
|
3
|
+
<div class="chat" id="history" x-data="history" @scroll.passive="updateBottom()" @resize.window="updateBottom()" @htmx:before:request.window="before($event)" @htmx:after:swap.window="after($event)" @htmx:finally:request.window="pending.delete($event.detail.ctx)">
|
|
4
4
|
{% if history.answer == "offline" %}
|
|
5
5
|
{{ c.empty(t.text("contacts.offline")) }}
|
|
6
6
|
{% elif history.answer != "listed" %}
|
|
@@ -10,4 +10,5 @@
|
|
|
10
10
|
{% if not history.turns %}{{ c.empty(t.text("history.empty"), "message-square-text") }}{% endif %}
|
|
11
11
|
{% endif %}
|
|
12
12
|
{% include "history_end.html" %}
|
|
13
|
+
<button class="btn icon chat-jump" type="button" x-show="!atBottom" x-cloak @click="element.scrollTop = element.scrollHeight" title="{{ t.text('history.jump_bottom') }}" aria-label="{{ t.text('history.jump_bottom') }}">{{ c.icon("chevrons-down") }}</button>
|
|
13
14
|
</div>
|
bazaar_compute_node-0.2.1rc10/src/bazaar_compute_server/resources/templates/icons/chevrons-down.svg
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<!-- @license lucide-static v1.46.0 - ISC --><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m7 6 5 5 5-5" /><path d="m7 13 5 5 5-5" /></svg>
|
|
@@ -49,6 +49,7 @@
|
|
|
49
49
|
</div>
|
|
50
50
|
</div>
|
|
51
51
|
<div class="field"><label for="oidc-default-role">{{ t.text("oidc.default_role") }}</label><span class="select"><select id="oidc-default-role" name="default_role_id"><option value=""{% if not values.default_role_id %} selected{% endif %}>{{ t.text("oidc.global_role") }} · {{ default.name }}</option>{% for role in roles %}<option value="{{ role.id }}"{% if values.default_role_id == role.id %} selected{% endif %}>{{ role.name }}</option>{% endfor %}</select>{{ c.icon("chevron-down") }}</span><small>{{ t.text("oidc.default_role_hint") }}</small></div>
|
|
52
|
+
<div class="field"><label for="oidc-session-minutes">{{ t.text("oidc.session_minutes") }}</label><input id="oidc-session-minutes" name="session_minutes" type="number" min="1" step="1" value="{{ values.session_minutes }}" required><small>{{ t.text("oidc.session_minutes_hint") }}</small></div>
|
|
52
53
|
<p>{{ t.text("oidc.callback_hint") }}</p>
|
|
53
54
|
<div class="field"><label for="oidc-secret">{{ t.text("oidc.client_secret") }}</label><input id="oidc-secret" name="client_secret" type="password" value="" autocomplete="new-password"{% if not selected %} required{% endif %}></div>{% if selected %}<p>{{ t.text("oidc.secret_set") }}</p>{% endif %}
|
|
54
55
|
<button class="btn p" type="submit">{{ t.text("manage.save") }}</button>
|
{bazaar_compute_node-0.2.1rc8 → bazaar_compute_node-0.2.1rc10}/src/bazaar_compute_server/sessions.py
RENAMED
|
@@ -39,8 +39,10 @@ class Sessions:
|
|
|
39
39
|
self.max_age = max_age
|
|
40
40
|
self.key = b""
|
|
41
41
|
|
|
42
|
-
def issue(self, account: Account) -> str:
|
|
43
|
-
|
|
42
|
+
def issue(self, account: Account, *, max_age: int | None = None) -> str:
|
|
43
|
+
issued = now_ms()
|
|
44
|
+
expires = issued + (self.max_age if max_age is None else max_age) * 1000
|
|
45
|
+
body = f"{account.id}:{issued}:{account.session_version}:{expires}"
|
|
44
46
|
return f"{body}:{self._sign(body)}"
|
|
45
47
|
|
|
46
48
|
def read(self, cookie: str | None) -> Claim | None:
|
|
@@ -52,13 +54,14 @@ class Sessions:
|
|
|
52
54
|
if not body or not hmac.compare_digest(self._sign(body), signature):
|
|
53
55
|
return None
|
|
54
56
|
parts = body.split(":")
|
|
55
|
-
if len(parts) !=
|
|
57
|
+
if len(parts) != 4:
|
|
56
58
|
return None
|
|
57
|
-
account_id, issued, mark = parts
|
|
59
|
+
account_id, issued, mark, expires = parts
|
|
58
60
|
if (
|
|
59
61
|
not mark.isdigit()
|
|
60
62
|
or not issued.isdigit()
|
|
61
|
-
or
|
|
63
|
+
or not expires.isdigit()
|
|
64
|
+
or now_ms() >= int(expires)
|
|
62
65
|
):
|
|
63
66
|
return None
|
|
64
67
|
return Claim(
|