devops-bot-sdk 1.6.48__tar.gz → 1.6.49__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.
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/PKG-INFO +1 -1
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/devops_bot_sdk.egg-info/PKG-INFO +1 -1
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/__init__.py +2 -2
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/activity/collectors/linux_auditd.py +8 -1
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_activity_collectors.py +17 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/README.md +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/devops_bot_sdk.egg-info/SOURCES.txt +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/devops_bot_sdk.egg-info/dependency_links.txt +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/devops_bot_sdk.egg-info/entry_points.txt +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/devops_bot_sdk.egg-info/requires.txt +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/devops_bot_sdk.egg-info/top_level.txt +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/pyproject.toml +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/activity/__init__.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/activity/classifier.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/activity/collectors/__init__.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/activity/collectors/common.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/activity/collectors/macos_eslogger.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/activity/collectors/windows_eventlog.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/activity/models.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/activity/os_setup.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/activity/recorder.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/activity/redact.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/activity/settings.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/activity/shipper.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/activity/spool.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agentd.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/__init__.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/activity.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/builder.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/chat.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/connectors.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/engines/__init__.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/engines/claude_code.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/engines/http.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/engines/mcp.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/engines/n8n.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/engines/shell.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/integrations.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/inventory.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/library/__init__.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/manifest.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/prompt_studio.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/prompt_template.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/prompt_vars.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/run_log.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/schedules.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/secrets.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/ticket_run.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/usage.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/agents/varstore.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/browser_profile.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/cli.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/client.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/collectors/__init__.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/collectors/files.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/collectors/process.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/collectors/screenshot.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/config.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/crucial.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/departments.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/design_verify/__init__.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/design_verify/assets.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/design_verify/bootstrap.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/design_verify/browser.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/design_verify/compare.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/design_verify/loop.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/estimator.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/exceptions.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/firewall.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/formats.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/git_ops.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/github_fetch.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/github_ingest.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/graph_recon.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/graphify.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/hooks/__init__.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/hooks/crucial_guard.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/intake.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ipc/__init__.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ipc/electron_bridge.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ipc/handlers.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/journal.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/local_exec.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/memory_guard.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/models/__init__.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/models/envelope.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/models/requests.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/models/responses.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/models/snapshots.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/phase_timer.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/plan_run.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/platform_compat.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/prd_progress.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/proof_readers.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/providers.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/py.typed +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/resume.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/router.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/run_auto.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/scheduler.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/self_report.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/self_report_local.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/sse.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/swagger.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/task_file.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/task_types.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/test.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/test_pipeline.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ticket_fields.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/tiers/__init__.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/tiers/mini_agent.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/__init__.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/api.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/dashboard.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/health.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/ip_allowlist.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/jobs.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/models.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/runner.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/security.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/server.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/service.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/session.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/setup_manager.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/static/agents.html +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/static/app.js +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/static/chat.html +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/static/custom-agents.html +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/static/default-agents.html +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/static/index.html +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/static/report.html +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/static/runs.html +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/static/schedules.html +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/static/setup.html +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/static/styles.css +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/static/tickets.html +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/ui/swagger.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/updater.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/url_access.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/vps_health.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/sdk/write_hook.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/setup.cfg +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_activity_core.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_activity_macos.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_activity_os_setup.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_activity_pipeline.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_agent_activity.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_agent_activity_tracking.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_agent_chat_features.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_agent_listing.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_agent_prompt_async.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_agent_prompt_models.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_agent_run_ticket.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_agent_schedules.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_agent_workspace_settings.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_agents_connectors_builder.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_allowed_tools_config.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_auto_agent_dispatch.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_browser_profile.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_cheap_tier.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_client_jira_projects.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_config_token_diagnostics.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_configure_token_owner.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_console_encoding.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_crash_recovery.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_departments.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_done_transition.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_epic_decompose_run.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_epic_inherited_agent_id.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_epic_session_isolation.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_estimator.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_firewall_open_on_update.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_formats.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_git_action.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_github_fetch.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_github_ingest.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_graph_recon.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_graphify_build.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_graphify_hook_install.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_health.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_intake_job_outcome.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_intake_plan_review.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_journal.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_local_exec_provider.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_mcp_route_contract.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_memory_guard.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_phase_timer.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_plan_new_command.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_plan_run_activity.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_pr_identity.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_prd_artifact.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_project_path_resolution.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_proof_readers.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_providers.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_recon_session_isolation.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_resume.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_router.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_run_auto_agent_only.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_run_outputs.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_run_verdict_is_honest.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_schedule_api.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_schedule_outputs_and_plans.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_scheduler.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_self_report.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_service_token_warning.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_swagger_command.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_task_file_and_plan_run.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_task_file_format_doc.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_ticket_fields.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_ticket_run_resolve_by_id.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_ticket_speed_fixes.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_tier_flag_parity.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_ui_gate.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_ui_lifespan.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_update_timer.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_updater_extras.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_updater_reports_the_truth.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_url_access.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_vps_health.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_windows_loop_identity.py +0 -0
- {devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/tests/test_write_hook.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""AgentOS Desktop SDK — thin HTTPS/SSE client for the Electron app.
|
|
2
2
|
|
|
3
|
-
Version: 1.6.
|
|
3
|
+
Version: 1.6.49
|
|
4
4
|
|
|
5
5
|
Public surface:
|
|
6
6
|
BackendClient.from_config() — create client from ~/.agentos/config.toml
|
|
@@ -34,7 +34,7 @@ Rules:
|
|
|
34
34
|
- All data egress through submit_webhook only
|
|
35
35
|
"""
|
|
36
36
|
|
|
37
|
-
__version__ = "1.6.
|
|
37
|
+
__version__ = "1.6.49" # SINGLE SOURCE OF TRUTH — bump on every change; pyproject,
|
|
38
38
|
__author__ = "AgentOS" # sdk.client.SDK_VERSION and the UI server version all read this.
|
|
39
39
|
|
|
40
40
|
from sdk.client import BackendClient
|
|
@@ -53,6 +53,8 @@ _UNSET = {"4294967295", "-1", "unset"}
|
|
|
53
53
|
#: Records of one event share a serial; bound how many half-seen events we hold.
|
|
54
54
|
_MAX_PENDING = 512
|
|
55
55
|
_MAX_PID_CACHE = 20_000
|
|
56
|
+
#: ``acct`` values on a failed login that are placeholders, not an account name.
|
|
57
|
+
_NOT_A_NAME = ("(unknown)", "(invalid user)", "?")
|
|
56
58
|
|
|
57
59
|
_HEADER = re.compile(r"type=(\w+) msg=audit\((\d+(?:\.\d+)?):(\d+)\):\s?(.*)")
|
|
58
60
|
_KV = re.compile(r"""(\w+)=("[^"]*"|'[^']*'|\S+)""")
|
|
@@ -225,12 +227,17 @@ class AuditdParser:
|
|
|
225
227
|
# The attempted account name: a failed login has no uid to resolve (it is
|
|
226
228
|
# unset, or an invalid user), so without acct the record says nothing about
|
|
227
229
|
# which names an attacker is trying.
|
|
230
|
+
# OpenSSH writes the literal "(invalid user)" (hex-encoded) when the name does
|
|
231
|
+
# not exist on the box, and never the name itself, so it is a flag, not a
|
|
232
|
+
# user. The attempted name is only in sshd's auth.log line.
|
|
228
233
|
acct = rec.get("m_acct", "")
|
|
229
|
-
|
|
234
|
+
invalid = acct == "(invalid user)"
|
|
235
|
+
tried = acct if acct and acct not in _NOT_A_NAME else user
|
|
230
236
|
recorder.record_event(ActivityEvent(
|
|
231
237
|
os=Os.LINUX, source=Source.AUDITD, category=Category.LOGIN, action="login.failed",
|
|
232
238
|
occurredAt=ts, osUser=tried, target=remote, severity=Severity.WARNING,
|
|
233
239
|
actorType=ActorType.UNKNOWN, actorConfidence=0,
|
|
240
|
+
metadata={"invalidUser": True} if invalid else None,
|
|
234
241
|
))
|
|
235
242
|
return
|
|
236
243
|
if not _is_set(ses):
|
|
@@ -235,6 +235,23 @@ class TestAuditdParsing:
|
|
|
235
235
|
_, events = _queued()
|
|
236
236
|
assert events[0]["action"] == "login.failed" and events[0]["osUser"] == expected
|
|
237
237
|
|
|
238
|
+
def test_an_invalid_user_attempt_is_flagged_not_named(self):
|
|
239
|
+
"""Real line from a VPS (OpenSSH 9.8 sshd-session): the name of a NON-existent
|
|
240
|
+
account is never written; acct is the hex of "(invalid user)"."""
|
|
241
|
+
p = _parser(user_name=L._default_user_name)
|
|
242
|
+
_feed(p, [
|
|
243
|
+
"type=USER_LOGIN msg=audit(1791568160.154:240124): pid=1828747 uid=0 "
|
|
244
|
+
"auid=4294967295 ses=4294967295 subj=unconfined msg='op=login "
|
|
245
|
+
"acct=28696E76616C6964207573657229 exe=\"/usr/lib/openssh/sshd-session\" "
|
|
246
|
+
"hostname=? addr=80.94.92.55 terminal=sshd res=failed'UID=\"root\" AUID=\"unset\"",
|
|
247
|
+
"type=EOE msg=audit(1791568160.154:240124): ",
|
|
248
|
+
])
|
|
249
|
+
_, events = _queued()
|
|
250
|
+
e = events[0]
|
|
251
|
+
assert e["action"] == "login.failed" and e["target"] == "80.94.92.55"
|
|
252
|
+
assert "osUser" not in e
|
|
253
|
+
assert e["metadata"] == {"invalidUser": True}
|
|
254
|
+
|
|
238
255
|
def test_an_unknown_account_on_a_failed_login_is_not_recorded_as_a_name(self):
|
|
239
256
|
p = _parser(user_name=L._default_user_name) # the real resolver: unset uid → None
|
|
240
257
|
_feed(p, [
|
|
File without changes
|
|
File without changes
|
{devops_bot_sdk-1.6.48 → devops_bot_sdk-1.6.49}/devops_bot_sdk.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|