devops-bot-sdk 1.6.52__tar.gz → 1.6.53__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.52 → devops_bot_sdk-1.6.53}/PKG-INFO +1 -1
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/devops_bot_sdk.egg-info/PKG-INFO +1 -1
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/__init__.py +1 -1
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/activity/collectors/macos_eslogger.py +11 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_activity_macos.py +31 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/README.md +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/devops_bot_sdk.egg-info/SOURCES.txt +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/devops_bot_sdk.egg-info/dependency_links.txt +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/devops_bot_sdk.egg-info/entry_points.txt +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/devops_bot_sdk.egg-info/requires.txt +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/devops_bot_sdk.egg-info/top_level.txt +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/pyproject.toml +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/activity/__init__.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/activity/classifier.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/activity/collectors/__init__.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/activity/collectors/common.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/activity/collectors/linux_auditd.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/activity/collectors/windows_eventlog.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/activity/models.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/activity/os_setup.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/activity/recorder.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/activity/redact.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/activity/settings.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/activity/shipper.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/activity/spool.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/agentd.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/agents/__init__.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/agents/activity.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/agents/builder.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/agents/chat.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/agents/connectors.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/agents/engines/__init__.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/agents/engines/claude_code.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/agents/engines/http.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/agents/engines/mcp.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/agents/engines/n8n.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/agents/engines/shell.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/agents/integrations.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/agents/inventory.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/agents/library/__init__.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/agents/manifest.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/agents/prompt_studio.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/agents/prompt_template.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/agents/prompt_vars.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/agents/run_log.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/agents/schedules.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/agents/secrets.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/agents/ticket_run.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/agents/usage.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/agents/varstore.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/browser_profile.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/cli.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/client.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/collectors/__init__.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/collectors/files.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/collectors/process.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/collectors/screenshot.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/config.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/crucial.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/departments.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/design_verify/__init__.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/design_verify/assets.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/design_verify/bootstrap.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/design_verify/browser.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/design_verify/compare.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/design_verify/loop.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/estimator.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/exceptions.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/firewall.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/formats.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/git_ops.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/github_fetch.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/github_ingest.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/graph_recon.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/graphify.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/hooks/__init__.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/hooks/crucial_guard.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/intake.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/ipc/__init__.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/ipc/electron_bridge.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/ipc/handlers.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/journal.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/local_exec.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/memory_guard.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/models/__init__.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/models/envelope.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/models/requests.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/models/responses.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/models/snapshots.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/phase_timer.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/plan_run.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/platform_compat.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/prd_progress.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/proof_readers.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/providers.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/py.typed +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/resume.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/router.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/run_auto.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/scheduler.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/self_report.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/self_report_local.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/sse.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/swagger.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/task_file.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/task_types.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/test.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/test_pipeline.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/ticket_fields.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/tiers/__init__.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/tiers/mini_agent.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/ui/__init__.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/ui/api.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/ui/dashboard.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/ui/health.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/ui/ip_allowlist.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/ui/jobs.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/ui/models.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/ui/runner.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/ui/security.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/ui/server.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/ui/service.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/ui/session.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/ui/setup_manager.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/ui/static/agents.html +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/ui/static/app.js +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/ui/static/chat.html +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/ui/static/custom-agents.html +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/ui/static/default-agents.html +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/ui/static/index.html +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/ui/static/report.html +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/ui/static/runs.html +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/ui/static/schedules.html +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/ui/static/setup.html +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/ui/static/styles.css +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/ui/static/tickets.html +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/ui/swagger.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/updater.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/url_access.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/vps_health.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/sdk/write_hook.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/setup.cfg +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_activity_collectors.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_activity_core.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_activity_os_setup.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_activity_pipeline.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_agent_activity.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_agent_activity_tracking.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_agent_chat_features.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_agent_listing.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_agent_prompt_async.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_agent_prompt_models.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_agent_run_ticket.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_agent_schedules.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_agent_workspace_settings.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_agents_connectors_builder.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_allowed_tools_config.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_auto_agent_dispatch.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_browser_profile.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_cheap_tier.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_client_jira_projects.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_config_token_diagnostics.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_configure_token_owner.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_console_encoding.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_crash_recovery.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_departments.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_done_transition.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_epic_decompose_run.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_epic_inherited_agent_id.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_epic_session_isolation.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_estimator.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_firewall_open_on_update.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_formats.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_git_action.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_github_fetch.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_github_ingest.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_graph_recon.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_graphify_build.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_graphify_hook_install.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_health.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_intake_job_outcome.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_intake_plan_review.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_journal.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_local_exec_provider.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_mcp_route_contract.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_memory_guard.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_phase_timer.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_plan_new_command.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_plan_run_activity.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_pr_identity.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_prd_artifact.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_project_path_resolution.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_proof_readers.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_providers.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_recon_session_isolation.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_resume.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_router.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_run_auto_agent_only.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_run_outputs.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_run_verdict_is_honest.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_schedule_api.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_schedule_outputs_and_plans.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_scheduler.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_self_report.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_service_token_warning.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_stale_panel_restart.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_swagger_command.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_task_file_and_plan_run.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_task_file_format_doc.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_ticket_fields.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_ticket_run_resolve_by_id.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_ticket_speed_fixes.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_tier_flag_parity.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_ui_gate.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_ui_lifespan.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_update_timer.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_updater_extras.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_updater_pep668.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_updater_reports_the_truth.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_url_access.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_vps_health.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_windows_loop_identity.py +0 -0
- {devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/tests/test_write_hook.py +0 -0
|
@@ -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.53" # 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
|
|
@@ -167,6 +167,17 @@ class EsloggerParser:
|
|
|
167
167
|
def flush(self) -> None:
|
|
168
168
|
"""Nothing is buffered — every eslogger line is a whole event."""
|
|
169
169
|
|
|
170
|
+
def flush_older_than(self, cutoff: float) -> None:
|
|
171
|
+
"""No-op, for the same reason as :meth:`flush`: nothing is held.
|
|
172
|
+
|
|
173
|
+
:class:`EsloggerCollector` reuses :class:`AuditdCollector`'s tail loop, which
|
|
174
|
+
calls this on the parser every poll to close auditd events whose trailing
|
|
175
|
+
records never arrived. An eslogger line is already a whole event, so there is
|
|
176
|
+
nothing to time-flush — but the method MUST exist, or the shared loop raises
|
|
177
|
+
``AttributeError`` on its first idle poll and the whole collector thread dies
|
|
178
|
+
before a single event is recorded (the tail starts at EOF, so the very first
|
|
179
|
+
poll reads nothing and goes straight here)."""
|
|
180
|
+
|
|
170
181
|
# ── sessions ─────────────────────────────────────────────────────────────
|
|
171
182
|
|
|
172
183
|
def _asid_session(self, asid: int, ts: float) -> str:
|
|
@@ -158,6 +158,37 @@ class TestParser:
|
|
|
158
158
|
c = M.EsloggerCollector(str(log), parser=_parser(), state_file=tmp_path / "st.json")
|
|
159
159
|
assert c._state == tmp_path / "st.json"
|
|
160
160
|
|
|
161
|
+
def test_tail_loop_records_events_and_does_not_crash_on_an_idle_poll(
|
|
162
|
+
self, tmp_path, monkeypatch
|
|
163
|
+
):
|
|
164
|
+
"""Regression: EsloggerCollector reuses AuditdCollector's tail loop, which calls
|
|
165
|
+
``parser.flush_older_than`` on EVERY poll. EsloggerParser was missing it, so the
|
|
166
|
+
collector thread died with AttributeError on its first (idle) poll — the tail
|
|
167
|
+
starts at EOF, so the first poll reads nothing and goes straight to that call —
|
|
168
|
+
and not a single event was ever recorded (SDK v1.6.52 on the Mac VPS)."""
|
|
169
|
+
from sdk.activity.collectors import linux_auditd as L
|
|
170
|
+
|
|
171
|
+
log = tmp_path / "es.ndjson"
|
|
172
|
+
log.write_text(_exec(1, ["old"], tty="/dev/ttys001") + "\n") # pre-install: not backfilled
|
|
173
|
+
collector = M.EsloggerCollector(
|
|
174
|
+
str(log), parser=_parser(), state_file=tmp_path / "st.json", poll_s=0,
|
|
175
|
+
)
|
|
176
|
+
calls = {"n": 0}
|
|
177
|
+
|
|
178
|
+
def fake_sleep(_):
|
|
179
|
+
calls["n"] += 1
|
|
180
|
+
if calls["n"] == 1: # new activity lands after the first, empty poll
|
|
181
|
+
with log.open("a") as fh:
|
|
182
|
+
fh.write(_exec(2, ["whoami"], tty="/dev/ttys001") + "\n")
|
|
183
|
+
else:
|
|
184
|
+
collector.stop()
|
|
185
|
+
|
|
186
|
+
monkeypatch.setattr(L.time, "sleep", fake_sleep)
|
|
187
|
+
collector.run() # before the fix: raises AttributeError out of the loop
|
|
188
|
+
|
|
189
|
+
_, events = _queued()
|
|
190
|
+
assert [e["command"] for e in events] == ["whoami"]
|
|
191
|
+
|
|
161
192
|
|
|
162
193
|
# ─────────────────────────────── setup ───────────────────────────────
|
|
163
194
|
|
|
File without changes
|
|
File without changes
|
{devops_bot_sdk-1.6.52 → devops_bot_sdk-1.6.53}/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
|
|
File without changes
|
|
File without changes
|