codex-autorunner 1.2.0__tar.gz → 1.2.1__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.
- {codex_autorunner-1.2.0/src/codex_autorunner.egg-info → codex_autorunner-1.2.1}/PKG-INFO +1 -1
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/pyproject.toml +1 -1
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/about_car.py +12 -12
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/config.py +2 -2
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/context_awareness.py +1 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/pma_context.py +188 -1
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/adapter.py +1 -1
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/config.py +1 -1
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/handlers/messages.py +8 -2
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/archive.js +274 -81
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/archiveApi.js +21 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/constants.js +1 -1
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/notifications.js +33 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/styles.css +16 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/terminalManager.js +22 -3
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/routes/archive.py +197 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/routes/file_chat.py +6 -26
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/schemas.py +11 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1/src/codex_autorunner.egg-info}/PKG-INFO +1 -1
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_pma_context.py +26 -2
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_pma_routing.py +4 -5
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/LICENSE +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/README.md +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/setup.cfg +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/__init__.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/__main__.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/agents/__init__.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/agents/base.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/agents/codex/__init__.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/agents/codex/harness.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/agents/opencode/__init__.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/agents/opencode/agent_config.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/agents/opencode/client.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/agents/opencode/constants.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/agents/opencode/events.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/agents/opencode/harness.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/agents/opencode/logging.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/agents/opencode/run_prompt.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/agents/opencode/runtime.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/agents/opencode/supervisor.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/agents/registry.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/agents/types.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/api.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/bootstrap.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/cli.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/codex_cli.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/codex_runner.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/__init__.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/app_server_ids.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/app_server_logging.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/app_server_prompts.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/app_server_threads.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/app_server_utils.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/archive.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/circuit_breaker.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/codex_runner.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/docs.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/drafts.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/exceptions.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/filebox.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/flows/__init__.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/flows/controller.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/flows/definition.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/flows/models.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/flows/reasons.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/flows/reconciler.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/flows/runtime.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/flows/store.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/flows/transition.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/flows/ux_helpers.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/flows/worker_process.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/git_utils.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/hub.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/injected_context.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/lifecycle_events.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/locks.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/logging_utils.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/notifications.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/optional_dependencies.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/patch_utils.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/path_utils.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/pma_audit.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/pma_dispatch_interceptor.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/pma_lifecycle.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/pma_queue.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/pma_safety.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/pma_state.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/ports/__init__.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/ports/agent_backend.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/ports/backend_orchestrator.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/ports/run_event.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/prompt.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/prompts.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/redaction.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/request_context.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/retry.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/review_context.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/run_index.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/runner_controller.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/runner_process.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/runner_state.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/runtime.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/sqlite_utils.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/state.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/state_roots.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/supervisor_protocol.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/supervisor_utils.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/templates/__init__.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/templates/git_mirror.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/templates/provenance.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/templates/scan_cache.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/text_delta_coalescer.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/ticket_linter_cli.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/ticket_manager_cli.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/time_utils.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/types.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/update.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/update_paths.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/update_runner.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/usage.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/utils.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/discovery.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/flows/review/__init__.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/flows/review/service.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/flows/ticket_flow/__init__.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/flows/ticket_flow/definition.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/housekeeping.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/__init__.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/agents/__init__.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/agents/backend_orchestrator.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/agents/codex_adapter.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/agents/codex_backend.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/agents/opencode_adapter.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/agents/opencode_backend.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/agents/runner.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/agents/wiring.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/app_server/__init__.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/app_server/client.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/app_server/env.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/app_server/event_buffer.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/app_server/supervisor.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/github/__init__.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/github/service.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/__init__.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/api_schemas.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/commands_registry.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/constants.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/dispatch.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/doctor.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/handlers/__init__.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/handlers/approvals.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/handlers/callbacks.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/handlers/commands/__init__.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/handlers/commands/approvals.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/handlers/commands/execution.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/handlers/commands/files.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/handlers/commands/flows.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/handlers/commands/formatting.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/handlers/commands/github.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/handlers/commands/shared.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/handlers/commands/voice.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/handlers/commands/workspace.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/handlers/commands_runtime.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/handlers/commands_spec.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/handlers/questions.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/handlers/selections.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/handlers/utils.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/helpers.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/notifications.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/outbox.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/overflow.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/progress_stream.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/rendering.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/retry.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/runtime.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/service.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/state.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/ticket_flow_bridge.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/transport.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/trigger_mode.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/types.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/telegram/voice.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/templates/__init__.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/integrations/templates/scan_agent.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/manifest.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/plugin_api.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/routes/__init__.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/routes/agents.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/routes/analytics.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/routes/app_server.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/routes/base.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/routes/file_chat.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/routes/flows.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/routes/messages.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/routes/repos.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/routes/review.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/routes/sessions.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/routes/settings.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/routes/shared.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/routes/system.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/routes/usage.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/routes/voice.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/routes/workspace.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/server.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/agentControls.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/agentEvents.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/app.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/autoRefresh.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/bootstrap.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/bus.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/cache.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/chatUploads.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/dashboard.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/diffRenderer.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/docChatCore.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/docChatStorage.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/docChatVoice.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/docEditor.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/env.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/eventSummarizer.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/fileChat.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/fileboxUi.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/health.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/hub.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/index.html +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/liveUpdates.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/loader.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/messages.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/mobileCompact.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/pma.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/preserve.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/settings.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/smartRefresh.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/streamUtils.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/tabs.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/templateReposSettings.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/terminal.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/ticketChatActions.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/ticketChatEvents.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/ticketChatStorage.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/ticketChatStream.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/ticketEditor.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/ticketTemplates.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/ticketVoice.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/tickets.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/turnEvents.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/turnResume.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/utils.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/vendor/LICENSE.xterm +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-400-cyrillic-ext.woff2 +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-400-cyrillic.woff2 +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-400-greek.woff2 +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-400-latin-ext.woff2 +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-400-latin.woff2 +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-400-vietnamese.woff2 +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-500-cyrillic-ext.woff2 +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-500-cyrillic.woff2 +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-500-greek.woff2 +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-500-latin-ext.woff2 +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-500-latin.woff2 +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-500-vietnamese.woff2 +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-600-cyrillic-ext.woff2 +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-600-cyrillic.woff2 +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-600-greek.woff2 +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-600-latin-ext.woff2 +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-600-latin.woff2 +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/vendor/fonts/jetbrains-mono/JetBrainsMono-600-vietnamese.woff2 +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/vendor/fonts/jetbrains-mono/OFL.txt +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/vendor/xterm-addon-fit.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/vendor/xterm.css +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/vendor/xterm.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/voice.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/workspace.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/workspaceApi.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/static/workspaceFileBrowser.js +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/__init__.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/cli/__init__.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/cli/cli.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/cli/codex_cli.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/cli/pma_cli.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/telegram/__init__.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/__init__.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/app.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/hub_jobs.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/middleware.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/pty_session.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/review.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/routes/__init__.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/routes/agents.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/routes/analytics.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/routes/app_server.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/routes/base.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/routes/filebox.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/routes/flows.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/routes/messages.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/routes/pma.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/routes/repos.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/routes/review.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/routes/sessions.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/routes/settings.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/routes/shared.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/routes/system.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/routes/templates.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/routes/terminal_images.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/routes/usage.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/routes/voice.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/routes/workspace.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/runner_manager.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/static_assets.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/static_refresh.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/surfaces/web/terminal_sessions.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/tickets/__init__.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/tickets/agent_pool.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/tickets/files.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/tickets/frontmatter.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/tickets/lint.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/tickets/models.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/tickets/outbox.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/tickets/replies.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/tickets/runner.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/tickets/spec_ingest.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/voice/__init__.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/voice/capture.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/voice/config.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/voice/provider.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/voice/providers/__init__.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/voice/providers/openai_whisper.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/voice/resolver.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/voice/service.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/web/__init__.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/web/app.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/web/hub_jobs.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/web/middleware.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/web/pty_session.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/web/runner_manager.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/web/schemas.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/web/static_assets.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/web/static_refresh.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/web/terminal_sessions.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/workspace/__init__.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/workspace/paths.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner.egg-info/SOURCES.txt +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner.egg-info/dependency_links.txt +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner.egg-info/entry_points.txt +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner.egg-info/requires.txt +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner.egg-info/top_level.txt +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_about_car_terminal_context.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_agent_run_events.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_agents_plugins.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_agents_registry.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_api_contract.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_app_server_client.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_app_server_event_formatter.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_app_server_events.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_app_server_prompts.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_app_server_supervisor.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_app_server_thread_registry.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_archive_worktree.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_auth_middleware.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_base_path.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_base_path_static.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_cli_hub_snapshot.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_cli_hub_worktree.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_cli_init.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_cli_sessions.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_cli_status.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_cli_templates_apply.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_cli_templates_fetch.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_cli_templates_repos.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_cli_ticket_flow_guard.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_codex_app_server_integration.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_codex_backend_security.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_codex_cli_flags.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_codex_runner.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_config_resolution.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_core_web_boundary.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_doctor_checks.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_durable_writes.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_file_chat_drafts.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_file_chat_prompt.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_filebox.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_housekeeping.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_hub_app_context.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_hub_create.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_hub_foundation.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_hub_supervisor.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_hub_terminal_sessions.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_hub_ui_escape.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_lifecycle_events.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_lock_utils.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_logging_utils.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_notifications.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_opencode_agent_config.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_opencode_agent_pool.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_opencode_backend_streaming.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_opencode_client.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_opencode_event_formatter.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_opencode_integration.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_opencode_review_arguments.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_opencode_runtime.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_optional_dependencies.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_origin_middleware.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_patch_utils.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_pma_audit_safety.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_pma_bootstrap.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_pma_cli.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_pma_lifecycle.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_pma_routes.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_redaction.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_request_logging.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_review_context.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_review_service.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_runner_controller.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_runner_state.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_state_lock.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_state_sessions.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_static.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_static_asset_cache.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_system_update_check.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_system_update_worker.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_adapter.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_bot_config.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_bot_integration.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_bot_lock.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_cache_cleanup.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_car_context.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_codex_feature_flags.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_command_registry.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_fast_ack.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_files_pma.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_flow_aliases.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_flow_bootstrap.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_flow_callback_actions.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_flow_commands.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_flow_lifecycle.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_flow_status.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_handlers_callbacks.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_handlers_messages.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_interrupt_status.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_media_batch_failure.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_opencode_context_cache.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_opencode_usage.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_outbox.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_overflow.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_paths_compatible.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_progress_stream.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_review_opencode.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_state.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_status_rate_limits.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_task_tracking.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_thread_paths.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_ticket_flow_bridge.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_topic_queue.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_transport.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_trigger_mode.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_turn_queue.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_update_dedupe.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_telegram_whisper_disclaimer.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_terminal_idle_timeout.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_terminal_input_dedupe.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_ticket_flow_approval_config.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_ticket_linter_cli.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_ticket_manager_cli.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_time_utils.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_update_paths.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_usage.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_voice_capture.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_voice_config.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_voice_service.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_voice_transcribe_endpoint.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_voice_ui.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_voice_whisper_mime_types.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_voice_whisper_provider.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_workspace_functional.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_workspace_helpers.py +0 -0
- {codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/tests/test_workspace_paths.py +0 -0
|
@@ -7,7 +7,6 @@ from .config import (
|
|
|
7
7
|
REPO_OVERRIDE_FILENAME,
|
|
8
8
|
ROOT_CONFIG_FILENAME,
|
|
9
9
|
ROOT_OVERRIDE_FILENAME,
|
|
10
|
-
Config,
|
|
11
10
|
find_nearest_hub_config_path,
|
|
12
11
|
)
|
|
13
12
|
|
|
@@ -98,6 +97,18 @@ def build_about_car_markdown(
|
|
|
98
97
|
f"`{decisions_disp}`\n"
|
|
99
98
|
"- **Spec**: "
|
|
100
99
|
f"`{spec_disp}`\n\n"
|
|
100
|
+
"## Web UI quick map (repo page)\n"
|
|
101
|
+
"- Repo view: `/repos/<repo_id>/`\n"
|
|
102
|
+
"- Tabs: **Tickets** = `.codex-autorunner/tickets/` queue.\n"
|
|
103
|
+
"- Tabs: **Inbox** = paused run dispatches/handoffs.\n"
|
|
104
|
+
"- Tabs: **Workspace** = edit `active_context.md`, `spec.md`, `decisions.md`.\n"
|
|
105
|
+
"- Tabs: **Terminal** = launches the configured `codex` binary in a PTY.\n"
|
|
106
|
+
"- Tabs: **Archive** = browse worktree snapshots.\n\n"
|
|
107
|
+
"## FileBox (attachments)\n"
|
|
108
|
+
"- Repo FileBox root: `.codex-autorunner/filebox/`.\n"
|
|
109
|
+
"- User uploads: `.codex-autorunner/filebox/inbox/`.\n"
|
|
110
|
+
"- Files to send back: `.codex-autorunner/filebox/outbox/`.\n"
|
|
111
|
+
"- Note: ticket_flow uses per-run dispatch directories; do not confuse dispatch with FileBox.\n\n"
|
|
101
112
|
"## Critical rules\n"
|
|
102
113
|
"- Do **not** create new copies of workspace docs elsewhere in the repo.\n"
|
|
103
114
|
"- Treat `.codex-autorunner/` as intentional project structure even though it is hidden/gitignored.\n\n"
|
|
@@ -211,17 +222,6 @@ def build_tickets_agents_markdown(*, repo_root: Path) -> str:
|
|
|
211
222
|
)
|
|
212
223
|
|
|
213
224
|
|
|
214
|
-
def ensure_about_car_file(config: Config, *, force: bool = False) -> Path:
|
|
215
|
-
"""Config-aware wrapper that uses configured doc paths."""
|
|
216
|
-
repo_root = config.root
|
|
217
|
-
docs = {
|
|
218
|
-
"active_context": config.doc_path("active_context"),
|
|
219
|
-
"decisions": config.doc_path("decisions"),
|
|
220
|
-
"spec": config.doc_path("spec"),
|
|
221
|
-
}
|
|
222
|
-
return ensure_about_car_file_for_repo(repo_root, doc_paths=docs, force=force)
|
|
223
|
-
|
|
224
|
-
|
|
225
225
|
def ensure_ticket_flow_quickstart_file_for_repo(
|
|
226
226
|
repo_root: Path, *, force: bool = False
|
|
227
227
|
) -> Path:
|
|
@@ -258,7 +258,7 @@ DEFAULT_REPO_CONFIG: Dict[str, Any] = {
|
|
|
258
258
|
"files": True,
|
|
259
259
|
"max_image_bytes": 10_000_000,
|
|
260
260
|
"max_voice_bytes": 10_000_000,
|
|
261
|
-
"max_file_bytes":
|
|
261
|
+
"max_file_bytes": 100_000_000,
|
|
262
262
|
"image_prompt": (
|
|
263
263
|
"The user sent an image with no caption. Use it to continue the "
|
|
264
264
|
"conversation; if no clear task, describe the image and ask what "
|
|
@@ -542,7 +542,7 @@ DEFAULT_HUB_CONFIG: Dict[str, Any] = {
|
|
|
542
542
|
"files": True,
|
|
543
543
|
"max_image_bytes": 10_000_000,
|
|
544
544
|
"max_voice_bytes": 10_000_000,
|
|
545
|
-
"max_file_bytes":
|
|
545
|
+
"max_file_bytes": 100_000_000,
|
|
546
546
|
"image_prompt": (
|
|
547
547
|
"The user sent an image with no caption. Use it to continue the "
|
|
548
548
|
"conversation; if no clear task, describe the image and ask what "
|
{codex_autorunner-1.2.0 → codex_autorunner-1.2.1}/src/codex_autorunner/core/context_awareness.py
RENAMED
|
@@ -12,6 +12,7 @@ CAR’s durable control-plane lives under `.codex-autorunner/`:
|
|
|
12
12
|
- `active_context.md` — current “north star” context; kept fresh for ongoing work.
|
|
13
13
|
- `spec.md` — longer spec / acceptance criteria when needed.
|
|
14
14
|
- `decisions.md` — prior decisions / tradeoffs when relevant.
|
|
15
|
+
- `.codex-autorunner/filebox/` — attachments inbox/outbox used by CAR surfaces (if present).
|
|
15
16
|
|
|
16
17
|
Intent signals: if the user mentions tickets, “dispatch”, “resume”, workspace docs, or `.codex-autorunner/`, they are likely referring to CAR artifacts/workflow rather than generic repo files.
|
|
17
18
|
|
|
@@ -19,6 +19,30 @@ PMA_MAX_MESSAGES = 10
|
|
|
19
19
|
PMA_MAX_TEXT = 800
|
|
20
20
|
PMA_MAX_TEMPLATE_REPOS = 25
|
|
21
21
|
PMA_MAX_TEMPLATE_FIELD_CHARS = 120
|
|
22
|
+
PMA_MAX_PMA_FILES = 50
|
|
23
|
+
PMA_MAX_LIFECYCLE_EVENTS = 20
|
|
24
|
+
|
|
25
|
+
# Keep this short and stable; see ticket TICKET-001 for rationale.
|
|
26
|
+
PMA_FASTPATH = """<pma_fastpath>
|
|
27
|
+
You are PMA inside Codex Autorunner (CAR). Treat the filesystem as truth; prefer creating/updating CAR artifacts over "chat-only" plans.
|
|
28
|
+
|
|
29
|
+
First-turn routine:
|
|
30
|
+
1) Read <user_message> and <hub_snapshot>.
|
|
31
|
+
2) If hub_snapshot.inbox has entries, handle them first (these are paused runs needing input):
|
|
32
|
+
- Summarize the dispatch question.
|
|
33
|
+
- Answer it or propose the next minimal action.
|
|
34
|
+
- Include the item.open_url so the user can jump straight to the repo Inbox tab.
|
|
35
|
+
3) If the request is new work:
|
|
36
|
+
- Identify the target repo(s).
|
|
37
|
+
- Prefer hub-owned worktrees for changes.
|
|
38
|
+
- Create/adjust repo tickets under each repo's `.codex-autorunner/tickets/`.
|
|
39
|
+
|
|
40
|
+
Web UI map (user perspective):
|
|
41
|
+
- Hub root: `/` (repos list + global notifications).
|
|
42
|
+
- Repo view: `/repos/<repo_id>/` tabs: Tickets | Inbox | Workspace | Terminal | Analytics | Archive.
|
|
43
|
+
- Tickets: edit queue; Inbox: paused run dispatches; Workspace: active_context/spec/decisions.
|
|
44
|
+
</pma_fastpath>
|
|
45
|
+
"""
|
|
22
46
|
|
|
23
47
|
# Defaults used when hub config is not available (should be rare).
|
|
24
48
|
PMA_DOCS_MAX_CHARS = 12_000
|
|
@@ -192,13 +216,170 @@ def load_pma_prompt(hub_root: Path) -> str:
|
|
|
192
216
|
return ""
|
|
193
217
|
|
|
194
218
|
|
|
219
|
+
def _render_ticket_flow_summary(summary: Optional[dict[str, Any]]) -> str:
|
|
220
|
+
if not summary:
|
|
221
|
+
return "null"
|
|
222
|
+
status = summary.get("status")
|
|
223
|
+
done_count = summary.get("done_count")
|
|
224
|
+
total_count = summary.get("total_count")
|
|
225
|
+
current_step = summary.get("current_step")
|
|
226
|
+
parts: list[str] = []
|
|
227
|
+
if status is not None:
|
|
228
|
+
parts.append(f"status={status}")
|
|
229
|
+
if done_count is not None and total_count is not None:
|
|
230
|
+
parts.append(f"done={done_count}/{total_count}")
|
|
231
|
+
if current_step is not None:
|
|
232
|
+
parts.append(f"step={current_step}")
|
|
233
|
+
if not parts:
|
|
234
|
+
return "null"
|
|
235
|
+
return " ".join(parts)
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
def _render_hub_snapshot(
|
|
239
|
+
snapshot: dict[str, Any],
|
|
240
|
+
*,
|
|
241
|
+
max_repos: int = PMA_MAX_REPOS,
|
|
242
|
+
max_messages: int = PMA_MAX_MESSAGES,
|
|
243
|
+
max_text_chars: int = PMA_MAX_TEXT,
|
|
244
|
+
max_template_repos: int = PMA_MAX_TEMPLATE_REPOS,
|
|
245
|
+
max_field_chars: int = PMA_MAX_TEMPLATE_FIELD_CHARS,
|
|
246
|
+
max_pma_files: int = PMA_MAX_PMA_FILES,
|
|
247
|
+
max_lifecycle_events: int = PMA_MAX_LIFECYCLE_EVENTS,
|
|
248
|
+
) -> str:
|
|
249
|
+
lines: list[str] = []
|
|
250
|
+
|
|
251
|
+
inbox = snapshot.get("inbox") or []
|
|
252
|
+
if inbox:
|
|
253
|
+
lines.append("Inbox (paused runs needing attention):")
|
|
254
|
+
for item in list(inbox)[: max(0, max_messages)]:
|
|
255
|
+
repo_id = _truncate(str(item.get("repo_id", "")), max_field_chars)
|
|
256
|
+
run_id = _truncate(str(item.get("run_id", "")), max_field_chars)
|
|
257
|
+
seq = _truncate(str(item.get("seq", "")), max_field_chars)
|
|
258
|
+
dispatch = item.get("dispatch") or {}
|
|
259
|
+
mode = _truncate(str(dispatch.get("mode", "")), max_field_chars)
|
|
260
|
+
handoff = bool(dispatch.get("is_handoff"))
|
|
261
|
+
lines.append(
|
|
262
|
+
f"- repo_id={repo_id} run_id={run_id} seq={seq} mode={mode} "
|
|
263
|
+
f"handoff={str(handoff).lower()}"
|
|
264
|
+
)
|
|
265
|
+
title = dispatch.get("title")
|
|
266
|
+
if title:
|
|
267
|
+
lines.append(f" title: {_truncate(str(title), max_text_chars)}")
|
|
268
|
+
body = dispatch.get("body")
|
|
269
|
+
if body:
|
|
270
|
+
lines.append(f" body: {_truncate(str(body), max_text_chars)}")
|
|
271
|
+
files = item.get("files") or []
|
|
272
|
+
if files:
|
|
273
|
+
display = [
|
|
274
|
+
_truncate(str(name), max_field_chars)
|
|
275
|
+
for name in list(files)[: max(0, max_pma_files)]
|
|
276
|
+
]
|
|
277
|
+
lines.append(f" attachments: [{', '.join(display)}]")
|
|
278
|
+
open_url = item.get("open_url")
|
|
279
|
+
if open_url:
|
|
280
|
+
lines.append(f" open_url: {_truncate(str(open_url), max_field_chars)}")
|
|
281
|
+
lines.append("")
|
|
282
|
+
|
|
283
|
+
repos = snapshot.get("repos") or []
|
|
284
|
+
if repos:
|
|
285
|
+
lines.append("Repos:")
|
|
286
|
+
for repo in list(repos)[: max(0, max_repos)]:
|
|
287
|
+
repo_id = _truncate(str(repo.get("id", "")), max_field_chars)
|
|
288
|
+
display_name = _truncate(str(repo.get("display_name", "")), max_field_chars)
|
|
289
|
+
status = _truncate(str(repo.get("status", "")), max_field_chars)
|
|
290
|
+
last_run_id = _truncate(str(repo.get("last_run_id", "")), max_field_chars)
|
|
291
|
+
last_exit = _truncate(str(repo.get("last_exit_code", "")), max_field_chars)
|
|
292
|
+
ticket_flow = _render_ticket_flow_summary(repo.get("ticket_flow"))
|
|
293
|
+
lines.append(
|
|
294
|
+
f"- {repo_id} ({display_name}): status={status} "
|
|
295
|
+
f"last_run_id={last_run_id} last_exit_code={last_exit} "
|
|
296
|
+
f"ticket_flow={ticket_flow}"
|
|
297
|
+
)
|
|
298
|
+
lines.append("")
|
|
299
|
+
|
|
300
|
+
templates = snapshot.get("templates") or {}
|
|
301
|
+
template_repos = templates.get("repos") or []
|
|
302
|
+
template_scan = templates.get("last_scan")
|
|
303
|
+
if templates.get("enabled") or template_repos or template_scan:
|
|
304
|
+
enabled = bool(templates.get("enabled"))
|
|
305
|
+
lines.append("Templates:")
|
|
306
|
+
lines.append(f"- enabled={str(enabled).lower()}")
|
|
307
|
+
if template_repos:
|
|
308
|
+
items: list[str] = []
|
|
309
|
+
for repo in list(template_repos)[: max(0, max_template_repos)]:
|
|
310
|
+
repo_id = _truncate(str(repo.get("id", "")), max_field_chars)
|
|
311
|
+
default_ref = _truncate(
|
|
312
|
+
str(repo.get("default_ref", "")), max_field_chars
|
|
313
|
+
)
|
|
314
|
+
trusted = bool(repo.get("trusted"))
|
|
315
|
+
items.append(f"{repo_id}@{default_ref} trusted={str(trusted).lower()}")
|
|
316
|
+
lines.append(f"- repos: [{', '.join(items)}]")
|
|
317
|
+
if template_scan:
|
|
318
|
+
repo_id = _truncate(str(template_scan.get("repo_id", "")), max_field_chars)
|
|
319
|
+
decision = _truncate(
|
|
320
|
+
str(template_scan.get("decision", "")), max_field_chars
|
|
321
|
+
)
|
|
322
|
+
severity = _truncate(
|
|
323
|
+
str(template_scan.get("severity", "")), max_field_chars
|
|
324
|
+
)
|
|
325
|
+
scanned_at = _truncate(
|
|
326
|
+
str(template_scan.get("scanned_at", "")), max_field_chars
|
|
327
|
+
)
|
|
328
|
+
lines.append(
|
|
329
|
+
f"- last_scan: {repo_id} {decision} {severity} {scanned_at}".strip()
|
|
330
|
+
)
|
|
331
|
+
lines.append("")
|
|
332
|
+
|
|
333
|
+
pma_files = snapshot.get("pma_files") or {}
|
|
334
|
+
inbox_files = pma_files.get("inbox") or []
|
|
335
|
+
outbox_files = pma_files.get("outbox") or []
|
|
336
|
+
if inbox_files or outbox_files:
|
|
337
|
+
lines.append("PMA files:")
|
|
338
|
+
if inbox_files:
|
|
339
|
+
files = [
|
|
340
|
+
_truncate(str(name), max_field_chars)
|
|
341
|
+
for name in list(inbox_files)[: max(0, max_pma_files)]
|
|
342
|
+
]
|
|
343
|
+
lines.append(f"- inbox: [{', '.join(files)}]")
|
|
344
|
+
if outbox_files:
|
|
345
|
+
files = [
|
|
346
|
+
_truncate(str(name), max_field_chars)
|
|
347
|
+
for name in list(outbox_files)[: max(0, max_pma_files)]
|
|
348
|
+
]
|
|
349
|
+
lines.append(f"- outbox: [{', '.join(files)}]")
|
|
350
|
+
lines.append("")
|
|
351
|
+
|
|
352
|
+
lifecycle_events = snapshot.get("lifecycle_events") or []
|
|
353
|
+
if lifecycle_events:
|
|
354
|
+
lines.append("Lifecycle events (recent):")
|
|
355
|
+
for event in list(lifecycle_events)[: max(0, max_lifecycle_events)]:
|
|
356
|
+
timestamp = _truncate(str(event.get("timestamp", "")), max_field_chars)
|
|
357
|
+
event_type = _truncate(str(event.get("event_type", "")), max_field_chars)
|
|
358
|
+
repo_id = _truncate(str(event.get("repo_id", "")), max_field_chars)
|
|
359
|
+
run_id = _truncate(str(event.get("run_id", "")), max_field_chars)
|
|
360
|
+
lines.append(
|
|
361
|
+
f"- {timestamp} {event_type} repo_id={repo_id} run_id={run_id}"
|
|
362
|
+
)
|
|
363
|
+
lines.append("")
|
|
364
|
+
|
|
365
|
+
if lines and lines[-1] == "":
|
|
366
|
+
lines.pop()
|
|
367
|
+
return "\n".join(lines)
|
|
368
|
+
|
|
369
|
+
|
|
195
370
|
def format_pma_prompt(
|
|
196
371
|
base_prompt: str,
|
|
197
372
|
snapshot: dict[str, Any],
|
|
198
373
|
message: str,
|
|
199
374
|
hub_root: Optional[Path] = None,
|
|
200
375
|
) -> str:
|
|
201
|
-
|
|
376
|
+
limits = snapshot.get("limits") or {}
|
|
377
|
+
snapshot_text = _render_hub_snapshot(
|
|
378
|
+
snapshot,
|
|
379
|
+
max_repos=limits.get("max_repos", PMA_MAX_REPOS),
|
|
380
|
+
max_messages=limits.get("max_messages", PMA_MAX_MESSAGES),
|
|
381
|
+
max_text_chars=limits.get("max_text_chars", PMA_MAX_TEXT),
|
|
382
|
+
)
|
|
202
383
|
|
|
203
384
|
pma_docs: Optional[dict[str, Any]] = None
|
|
204
385
|
if hub_root is not None:
|
|
@@ -235,6 +416,7 @@ def format_pma_prompt(
|
|
|
235
416
|
"</pma_workspace_docs>\n\n"
|
|
236
417
|
)
|
|
237
418
|
|
|
419
|
+
prompt += f"{PMA_FASTPATH}\n\n"
|
|
238
420
|
prompt += (
|
|
239
421
|
"<hub_snapshot>\n"
|
|
240
422
|
f"{snapshot_text}\n"
|
|
@@ -493,4 +675,9 @@ async def build_hub_snapshot(
|
|
|
493
675
|
"templates": templates,
|
|
494
676
|
"pma_files": pma_files,
|
|
495
677
|
"lifecycle_events": lifecycle_events,
|
|
678
|
+
"limits": {
|
|
679
|
+
"max_repos": max_repos,
|
|
680
|
+
"max_messages": max_messages,
|
|
681
|
+
"max_text_chars": max_text_chars,
|
|
682
|
+
},
|
|
496
683
|
}
|
|
@@ -1370,7 +1370,7 @@ class TelegramBotClient:
|
|
|
1370
1370
|
return bool(result) if isinstance(result, bool) else False
|
|
1371
1371
|
|
|
1372
1372
|
async def download_file(
|
|
1373
|
-
self, file_path: str, max_size_bytes: int =
|
|
1373
|
+
self, file_path: str, max_size_bytes: int = 100 * 1024 * 1024
|
|
1374
1374
|
) -> bytes:
|
|
1375
1375
|
safe_path = file_path.lstrip("/")
|
|
1376
1376
|
url = f"{self._file_base_url}/{safe_path}"
|
|
@@ -44,7 +44,7 @@ DEFAULT_APP_SERVER_TURN_TIMEOUT_SECONDS = 28800
|
|
|
44
44
|
DEFAULT_APPROVAL_TIMEOUT_SECONDS = 300.0
|
|
45
45
|
DEFAULT_MEDIA_MAX_IMAGE_BYTES = 10 * 1024 * 1024
|
|
46
46
|
DEFAULT_MEDIA_MAX_VOICE_BYTES = 10 * 1024 * 1024
|
|
47
|
-
DEFAULT_MEDIA_MAX_FILE_BYTES =
|
|
47
|
+
DEFAULT_MEDIA_MAX_FILE_BYTES = 100 * 1024 * 1024
|
|
48
48
|
DEFAULT_MEDIA_IMAGE_PROMPT = (
|
|
49
49
|
"The user sent an image with no caption. Use it to continue the "
|
|
50
50
|
"conversation; if no clear task, describe the image and ask what they want."
|
|
@@ -859,7 +859,10 @@ async def handle_media_message(
|
|
|
859
859
|
best = photos[0]
|
|
860
860
|
try:
|
|
861
861
|
file_info = await handlers._bot.get_file(best.file_id)
|
|
862
|
-
data = await handlers._bot.download_file(
|
|
862
|
+
data = await handlers._bot.download_file(
|
|
863
|
+
file_info.file_path,
|
|
864
|
+
max_size_bytes=handlers._config.media.max_image_bytes,
|
|
865
|
+
)
|
|
863
866
|
filename = f"photo_{best.file_id}.jpg"
|
|
864
867
|
files.append((filename, data))
|
|
865
868
|
except Exception as exc:
|
|
@@ -868,7 +871,10 @@ async def handle_media_message(
|
|
|
868
871
|
elif message.document:
|
|
869
872
|
try:
|
|
870
873
|
file_info = await handlers._bot.get_file(message.document.file_id)
|
|
871
|
-
data = await handlers._bot.download_file(
|
|
874
|
+
data = await handlers._bot.download_file(
|
|
875
|
+
file_info.file_path,
|
|
876
|
+
max_size_bytes=handlers._config.media.max_file_bytes,
|
|
877
|
+
)
|
|
872
878
|
filename = (
|
|
873
879
|
message.document.file_name or f"document_{message.document.file_id}"
|
|
874
880
|
)
|