tqdaemon 0.8.0__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.
- tqdaemon-0.8.0/.github/ISSUE_TEMPLATE/bug_report.yml +28 -0
- tqdaemon-0.8.0/.github/ISSUE_TEMPLATE/config.yml +1 -0
- tqdaemon-0.8.0/.github/ISSUE_TEMPLATE/feature_request.yml +15 -0
- tqdaemon-0.8.0/.github/PULL_REQUEST_TEMPLATE.md +7 -0
- tqdaemon-0.8.0/.github/dependabot.yml +14 -0
- tqdaemon-0.8.0/.github/workflows/ci.yml +36 -0
- tqdaemon-0.8.0/.github/workflows/pages.yml +33 -0
- tqdaemon-0.8.0/.gitignore +18 -0
- tqdaemon-0.8.0/AGENTS.md +27 -0
- tqdaemon-0.8.0/CHANGELOG.md +56 -0
- tqdaemon-0.8.0/CLAUDE.md +10 -0
- tqdaemon-0.8.0/CODE_OF_CONDUCT.md +5 -0
- tqdaemon-0.8.0/CONTRIBUTING.md +28 -0
- tqdaemon-0.8.0/LICENSE +21 -0
- tqdaemon-0.8.0/PKG-INFO +96 -0
- tqdaemon-0.8.0/README.ar.md +65 -0
- tqdaemon-0.8.0/README.md +73 -0
- tqdaemon-0.8.0/README.pl.md +65 -0
- tqdaemon-0.8.0/README.zh.md +63 -0
- tqdaemon-0.8.0/SECURITY.md +9 -0
- tqdaemon-0.8.0/clients/README.md +86 -0
- tqdaemon-0.8.0/clients/cpp/example_checkpoint.cpp +24 -0
- tqdaemon-0.8.0/clients/cpp/example_progress.cpp +12 -0
- tqdaemon-0.8.0/clients/cpp/tq_client.hpp +337 -0
- tqdaemon-0.8.0/clients/python/tq_client.py +304 -0
- tqdaemon-0.8.0/docs/README.md +40 -0
- tqdaemon-0.8.0/docs/WORKER_SETUP.md +499 -0
- tqdaemon-0.8.0/docs/agents/README.md +13 -0
- tqdaemon-0.8.0/docs/agents/recipes.md +120 -0
- tqdaemon-0.8.0/docs/agents/task-script-cookbook.md +92 -0
- tqdaemon-0.8.0/docs/assets/demo.gif +0 -0
- tqdaemon-0.8.0/docs/assets/demo.gif.sha +1 -0
- tqdaemon-0.8.0/docs/assets/hero.jpg +0 -0
- tqdaemon-0.8.0/docs/assets/icon.png +0 -0
- tqdaemon-0.8.0/docs/assets/social.jpg +0 -0
- tqdaemon-0.8.0/docs/capabilities.md +124 -0
- tqdaemon-0.8.0/docs/code_ownership.md +14 -0
- tqdaemon-0.8.0/docs/errors.md +126 -0
- tqdaemon-0.8.0/docs/help/block-project.md +15 -0
- tqdaemon-0.8.0/docs/help/cooperative-control.md +46 -0
- tqdaemon-0.8.0/docs/help/dependencies.md +13 -0
- tqdaemon-0.8.0/docs/help/force-run.md +11 -0
- tqdaemon-0.8.0/docs/help/groups.md +15 -0
- tqdaemon-0.8.0/docs/help/page-alerts.md +39 -0
- tqdaemon-0.8.0/docs/help/page-api.md +25 -0
- tqdaemon-0.8.0/docs/help/page-audit.md +17 -0
- tqdaemon-0.8.0/docs/help/page-config.md +17 -0
- tqdaemon-0.8.0/docs/help/page-dashboard.md +18 -0
- tqdaemon-0.8.0/docs/help/page-deps.md +17 -0
- tqdaemon-0.8.0/docs/help/page-groups.md +13 -0
- tqdaemon-0.8.0/docs/help/page-history.md +27 -0
- tqdaemon-0.8.0/docs/help/page-queue.md +35 -0
- tqdaemon-0.8.0/docs/help/page-resources.md +13 -0
- tqdaemon-0.8.0/docs/help/page-schedule.md +16 -0
- tqdaemon-0.8.0/docs/help/page-tasks.md +15 -0
- tqdaemon-0.8.0/docs/help/page-timeline.md +21 -0
- tqdaemon-0.8.0/docs/help/page-usage.md +15 -0
- tqdaemon-0.8.0/docs/help/page-workers.md +13 -0
- tqdaemon-0.8.0/docs/help/prod-vs-dev.md +11 -0
- tqdaemon-0.8.0/docs/help/project-sets.md +50 -0
- tqdaemon-0.8.0/docs/help/queue-hygiene.md +33 -0
- tqdaemon-0.8.0/docs/help/tq-metric.md +50 -0
- tqdaemon-0.8.0/docs/manifest.json +159 -0
- tqdaemon-0.8.0/docs/master_worker.md +206 -0
- tqdaemon-0.8.0/docs/mcp.md +604 -0
- tqdaemon-0.8.0/docs/operators/README.md +12 -0
- tqdaemon-0.8.0/docs/operators/cli.md +102 -0
- tqdaemon-0.8.0/docs/operators/discoverability.md +16 -0
- tqdaemon-0.8.0/docs/operators/quickstart.md +96 -0
- tqdaemon-0.8.0/docs/operators/web-ui.md +74 -0
- tqdaemon-0.8.0/docs/progress_guide.md +9 -0
- tqdaemon-0.8.0/docs/scheduler.md +529 -0
- tqdaemon-0.8.0/docs/security.md +197 -0
- tqdaemon-0.8.0/docs/surface_map.json +41 -0
- tqdaemon-0.8.0/docs/task_standards.md +665 -0
- tqdaemon-0.8.0/examples/README.md +21 -0
- tqdaemon-0.8.0/examples/checkpointable/README.md +20 -0
- tqdaemon-0.8.0/examples/checkpointable/experiments/operator_queue/train-demo.yaml +13 -0
- tqdaemon-0.8.0/examples/checkpointable/scripts/train_demo.py +55 -0
- tqdaemon-0.8.0/examples/minimal/README.md +21 -0
- tqdaemon-0.8.0/examples/minimal/experiments/operator_queue/hello-progress.yaml +11 -0
- tqdaemon-0.8.0/examples/minimal/scripts/hello_progress.py +22 -0
- tqdaemon-0.8.0/examples/pipeline/README.md +17 -0
- tqdaemon-0.8.0/examples/pipeline/experiments/operator_queue/preprocess.yaml +11 -0
- tqdaemon-0.8.0/examples/pipeline/experiments/operator_queue/train.yaml +10 -0
- tqdaemon-0.8.0/examples/pipeline/scripts/preprocess.py +26 -0
- tqdaemon-0.8.0/examples/pipeline/scripts/train.py +27 -0
- tqdaemon-0.8.0/examples/scheduled/README.md +12 -0
- tqdaemon-0.8.0/examples/scheduled/experiments/operator_queue/nightly-ci.yaml +11 -0
- tqdaemon-0.8.0/examples/scheduled/scripts/nightly_ci.py +23 -0
- tqdaemon-0.8.0/examples/snippets/README.md +10 -0
- tqdaemon-0.8.0/examples/snippets/gpu_require.yaml +10 -0
- tqdaemon-0.8.0/examples/snippets/matrix.yaml +9 -0
- tqdaemon-0.8.0/examples/snippets/ollama_service.yaml +10 -0
- tqdaemon-0.8.0/examples/snippets/remote_transfer.yaml +12 -0
- tqdaemon-0.8.0/fixtures/demo/demo_task.py +26 -0
- tqdaemon-0.8.0/fixtures/tqdemo/README.md +79 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/api-latency-soak.yaml +23 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/dummy-alloc-ram.yaml +11 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/dummy-ask-cpu.yaml +11 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/dummy-ask-gpu.yaml +11 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/dummy-cap.yaml +10 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/dummy-deps-a.yaml +10 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/dummy-deps-b.yaml +11 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/dummy-exclusive-project.yaml +11 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/dummy-exclusive.yaml +11 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/dummy-fail.yaml +10 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/dummy-frozen.yaml +10 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/dummy-hold.yaml +11 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/dummy-lie-progress.yaml +10 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/dummy-pipe-a.yaml +12 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/dummy-pipe-b.yaml +13 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/dummy-pipe-check.yaml +13 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/dummy-progress.yaml +11 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/dummy-resume.yaml +12 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/dummy-suspend.yaml +12 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/mw-at-most-once.yaml +7 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/mw-biglog.yaml +15 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/mw-dispatch-any.yaml +5 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/mw-dispatch-local.yaml +5 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/mw-dispatch-remote.yaml +5 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/mw-idempotent-reclaim.yaml +7 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/mw-transfer-roundtrip.yaml +15 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/stress-biglog.yaml +11 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/stress-cleanup.yaml +11 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/stress-generate.yaml +11 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/test-scale.yaml +11 -0
- tqdaemon-0.8.0/fixtures/tqdemo/experiments/operator_queue/test-stress.yaml +11 -0
- tqdaemon-0.8.0/fixtures/tqdemo/scripts/dummy_alloc_ram.py +27 -0
- tqdaemon-0.8.0/fixtures/tqdemo/scripts/dummy_fail.py +16 -0
- tqdaemon-0.8.0/fixtures/tqdemo/scripts/dummy_hang.py +19 -0
- tqdaemon-0.8.0/fixtures/tqdemo/scripts/dummy_hold.py +23 -0
- tqdaemon-0.8.0/fixtures/tqdemo/scripts/dummy_lie_progress.py +16 -0
- tqdaemon-0.8.0/fixtures/tqdemo/scripts/dummy_pipe_check.py +26 -0
- tqdaemon-0.8.0/fixtures/tqdemo/scripts/dummy_pipe_produce.py +21 -0
- tqdaemon-0.8.0/fixtures/tqdemo/scripts/dummy_progress.py +29 -0
- tqdaemon-0.8.0/fixtures/tqdemo/scripts/dummy_resume.py +55 -0
- tqdaemon-0.8.0/fixtures/tqdemo/scripts/dummy_suspend.py +26 -0
- tqdaemon-0.8.0/fixtures/tqdemo/scripts/run_api_latency_soak.py +21 -0
- tqdaemon-0.8.0/fixtures/tqdemo/scripts/run_pytest.py +74 -0
- tqdaemon-0.8.0/fixtures/tqdemo/scripts/stress_biglog.py +61 -0
- tqdaemon-0.8.0/fixtures/tqdemo/scripts/stress_cleanup.py +43 -0
- tqdaemon-0.8.0/fixtures/tqdemo/scripts/stress_generate.py +115 -0
- tqdaemon-0.8.0/llms.txt +32 -0
- tqdaemon-0.8.0/pyproject.toml +156 -0
- tqdaemon-0.8.0/scripts/build_docs.py +48 -0
- tqdaemon-0.8.0/scripts/check_docs.py +102 -0
- tqdaemon-0.8.0/scripts/install_tq_autostart.ps1 +98 -0
- tqdaemon-0.8.0/scripts/record_demo.py +182 -0
- tqdaemon-0.8.0/site/README.md +19 -0
- tqdaemon-0.8.0/site/google70720338e0635e09.html +1 -0
- tqdaemon-0.8.0/site/hero.jpg +0 -0
- tqdaemon-0.8.0/site/icon.png +0 -0
- tqdaemon-0.8.0/site/index.html +139 -0
- tqdaemon-0.8.0/site/robots.txt +4 -0
- tqdaemon-0.8.0/site/sitemap.xml +8 -0
- tqdaemon-0.8.0/site/social.jpg +0 -0
- tqdaemon-0.8.0/tests/__init__.py +0 -0
- tqdaemon-0.8.0/tests/conftest.py +32 -0
- tqdaemon-0.8.0/tests/fixtures/client_protocol/progress_lines.json +10 -0
- tqdaemon-0.8.0/tests/helpers/__init__.py +1 -0
- tqdaemon-0.8.0/tests/helpers/master_worker.py +397 -0
- tqdaemon-0.8.0/tests/helpers/wait.py +17 -0
- tqdaemon-0.8.0/tests/js_dom_stub.mjs +233 -0
- tqdaemon-0.8.0/tests/test_admission.py +271 -0
- tqdaemon-0.8.0/tests/test_admit_handoff.py +83 -0
- tqdaemon-0.8.0/tests/test_admit_helpers.py +49 -0
- tqdaemon-0.8.0/tests/test_adopt_on_restart.py +210 -0
- tqdaemon-0.8.0/tests/test_agent_stats.py +98 -0
- tqdaemon-0.8.0/tests/test_api_docs.py +105 -0
- tqdaemon-0.8.0/tests/test_archive.py +101 -0
- tqdaemon-0.8.0/tests/test_broken_deps_cache.py +83 -0
- tqdaemon-0.8.0/tests/test_broken_deps_health.py +172 -0
- tqdaemon-0.8.0/tests/test_cap_auto_retry.py +160 -0
- tqdaemon-0.8.0/tests/test_cap_false_completed.py +110 -0
- tqdaemon-0.8.0/tests/test_capacity_validate.py +182 -0
- tqdaemon-0.8.0/tests/test_cas_blob_auth.py +27 -0
- tqdaemon-0.8.0/tests/test_cas_blob_truncated.py +30 -0
- tqdaemon-0.8.0/tests/test_change_tracker.py +37 -0
- tqdaemon-0.8.0/tests/test_checkpoint_cadence.py +108 -0
- tqdaemon-0.8.0/tests/test_cli_6b2_fixes.py +100 -0
- tqdaemon-0.8.0/tests/test_cli_agent_ux_pr1.py +193 -0
- tqdaemon-0.8.0/tests/test_cli_agent_ux_pr2.py +92 -0
- tqdaemon-0.8.0/tests/test_cli_agent_ux_pr3.py +121 -0
- tqdaemon-0.8.0/tests/test_cli_daemon_guard.py +69 -0
- tqdaemon-0.8.0/tests/test_cli_exit_codes.py +126 -0
- tqdaemon-0.8.0/tests/test_cli_readonly_nomigrate.py +38 -0
- tqdaemon-0.8.0/tests/test_cli_retry_set_validation.py +27 -0
- tqdaemon-0.8.0/tests/test_cli_sync_fast.py +149 -0
- tqdaemon-0.8.0/tests/test_cli_table.py +26 -0
- tqdaemon-0.8.0/tests/test_client_protocol_golden.py +51 -0
- tqdaemon-0.8.0/tests/test_client_require_gpu.py +59 -0
- tqdaemon-0.8.0/tests/test_client_suspend.py +88 -0
- tqdaemon-0.8.0/tests/test_clock_jump_flap.py +136 -0
- tqdaemon-0.8.0/tests/test_clone.py +46 -0
- tqdaemon-0.8.0/tests/test_config_audit_rollback.py +40 -0
- tqdaemon-0.8.0/tests/test_config_cache.py +39 -0
- tqdaemon-0.8.0/tests/test_cpp_client.py +80 -0
- tqdaemon-0.8.0/tests/test_cron.py +224 -0
- tqdaemon-0.8.0/tests/test_daemon_admission_phase.py +94 -0
- tqdaemon-0.8.0/tests/test_daemon_events.py +187 -0
- tqdaemon-0.8.0/tests/test_daemon_lease_wait_signal.py +34 -0
- tqdaemon-0.8.0/tests/test_daemon_log_rotation.py +36 -0
- tqdaemon-0.8.0/tests/test_daemon_startup_helpers.py +75 -0
- tqdaemon-0.8.0/tests/test_daemon_tick.py +171 -0
- tqdaemon-0.8.0/tests/test_daemon_tick_helpers.py +377 -0
- tqdaemon-0.8.0/tests/test_daemon_tick_recovery.py +24 -0
- tqdaemon-0.8.0/tests/test_decide_terminal_status.py +98 -0
- tqdaemon-0.8.0/tests/test_dedupe_helpers.py +163 -0
- tqdaemon-0.8.0/tests/test_deprefs.py +25 -0
- tqdaemon-0.8.0/tests/test_deps_invalidate.py +117 -0
- tqdaemon-0.8.0/tests/test_detect_system_cache.py +12 -0
- tqdaemon-0.8.0/tests/test_docs_loader.py +111 -0
- tqdaemon-0.8.0/tests/test_docs_loader_hardening.py +25 -0
- tqdaemon-0.8.0/tests/test_docs_surface.py +24 -0
- tqdaemon-0.8.0/tests/test_doctor.py +65 -0
- tqdaemon-0.8.0/tests/test_doctor_checks.py +86 -0
- tqdaemon-0.8.0/tests/test_errors.py +67 -0
- tqdaemon-0.8.0/tests/test_estimate_cache_key.py +17 -0
- tqdaemon-0.8.0/tests/test_eta.py +171 -0
- tqdaemon-0.8.0/tests/test_eviction.py +119 -0
- tqdaemon-0.8.0/tests/test_excess_stop_order.py +69 -0
- tqdaemon-0.8.0/tests/test_exclusive_drain.py +20 -0
- tqdaemon-0.8.0/tests/test_export_import.py +82 -0
- tqdaemon-0.8.0/tests/test_f074_master_lease.py +140 -0
- tqdaemon-0.8.0/tests/test_f150_f158_correctness.py +158 -0
- tqdaemon-0.8.0/tests/test_f192_deep_health_wave0.py +81 -0
- tqdaemon-0.8.0/tests/test_f212_wave1.py +74 -0
- tqdaemon-0.8.0/tests/test_f245_f246_mutate.py +77 -0
- tqdaemon-0.8.0/tests/test_finalize_atomic.py +53 -0
- tqdaemon-0.8.0/tests/test_fixtures_e2e.py +120 -0
- tqdaemon-0.8.0/tests/test_get_prefix_routes.py +75 -0
- tqdaemon-0.8.0/tests/test_gpu_fits.py +22 -0
- tqdaemon-0.8.0/tests/test_gpu_hours_budget.py +52 -0
- tqdaemon-0.8.0/tests/test_gpu_lock.py +73 -0
- tqdaemon-0.8.0/tests/test_gpu_mock.py +137 -0
- tqdaemon-0.8.0/tests/test_gpu_probe.py +654 -0
- tqdaemon-0.8.0/tests/test_gpu_task_metrics.py +159 -0
- tqdaemon-0.8.0/tests/test_group_bulk_safety.py +185 -0
- tqdaemon-0.8.0/tests/test_hard_evict_dying.py +11 -0
- tqdaemon-0.8.0/tests/test_hard_pressure_eviction.py +105 -0
- tqdaemon-0.8.0/tests/test_health.py +164 -0
- tqdaemon-0.8.0/tests/test_help_topics.py +36 -0
- tqdaemon-0.8.0/tests/test_hold_control.py +63 -0
- tqdaemon-0.8.0/tests/test_http_backlog.py +29 -0
- tqdaemon-0.8.0/tests/test_hygiene.py +137 -0
- tqdaemon-0.8.0/tests/test_js_app.py +215 -0
- tqdaemon-0.8.0/tests/test_js_cfgmodal.py +112 -0
- tqdaemon-0.8.0/tests/test_js_columns.py +25 -0
- tqdaemon-0.8.0/tests/test_js_deps.py +124 -0
- tqdaemon-0.8.0/tests/test_js_docs.py +166 -0
- tqdaemon-0.8.0/tests/test_js_drawer.py +378 -0
- tqdaemon-0.8.0/tests/test_js_filterbars.py +134 -0
- tqdaemon-0.8.0/tests/test_js_fitsnow.py +61 -0
- tqdaemon-0.8.0/tests/test_js_groups.py +174 -0
- tqdaemon-0.8.0/tests/test_js_labels.py +112 -0
- tqdaemon-0.8.0/tests/test_js_loader.py +101 -0
- tqdaemon-0.8.0/tests/test_js_logdock.py +189 -0
- tqdaemon-0.8.0/tests/test_js_mobpicker.py +88 -0
- tqdaemon-0.8.0/tests/test_js_modals.py +252 -0
- tqdaemon-0.8.0/tests/test_js_modules.py +679 -0
- tqdaemon-0.8.0/tests/test_js_nav.py +102 -0
- tqdaemon-0.8.0/tests/test_js_notifications.py +130 -0
- tqdaemon-0.8.0/tests/test_js_palette.py +27 -0
- tqdaemon-0.8.0/tests/test_js_prefs.py +108 -0
- tqdaemon-0.8.0/tests/test_js_progress_badges.py +25 -0
- tqdaemon-0.8.0/tests/test_js_queuefilters.py +249 -0
- tqdaemon-0.8.0/tests/test_js_refresh.py +243 -0
- tqdaemon-0.8.0/tests/test_js_resources.py +114 -0
- tqdaemon-0.8.0/tests/test_js_runlogs.py +164 -0
- tqdaemon-0.8.0/tests/test_js_runmetrics.py +114 -0
- tqdaemon-0.8.0/tests/test_js_shortcuts.py +155 -0
- tqdaemon-0.8.0/tests/test_js_smoke.py +152 -0
- tqdaemon-0.8.0/tests/test_js_sparks.py +129 -0
- tqdaemon-0.8.0/tests/test_js_taskactions.py +301 -0
- tqdaemon-0.8.0/tests/test_js_taskstats.py +96 -0
- tqdaemon-0.8.0/tests/test_js_timeline.py +150 -0
- tqdaemon-0.8.0/tests/test_js_url.py +172 -0
- tqdaemon-0.8.0/tests/test_js_views.py +457 -0
- tqdaemon-0.8.0/tests/test_last_run_progress.py +44 -0
- tqdaemon-0.8.0/tests/test_leases.py +194 -0
- tqdaemon-0.8.0/tests/test_legacy_shim.py +49 -0
- tqdaemon-0.8.0/tests/test_locales.py +65 -0
- tqdaemon-0.8.0/tests/test_log_gzip.py +87 -0
- tqdaemon-0.8.0/tests/test_logio.py +89 -0
- tqdaemon-0.8.0/tests/test_logs_follow.py +52 -0
- tqdaemon-0.8.0/tests/test_m3_backend.py +89 -0
- tqdaemon-0.8.0/tests/test_m7_features.py +61 -0
- tqdaemon-0.8.0/tests/test_master_migrate_gate.py +53 -0
- tqdaemon-0.8.0/tests/test_master_mutations.py +101 -0
- tqdaemon-0.8.0/tests/test_mcp_errors.py +39 -0
- tqdaemon-0.8.0/tests/test_mcp_log_tail.py +50 -0
- tqdaemon-0.8.0/tests/test_mcp_offline_submit.py +28 -0
- tqdaemon-0.8.0/tests/test_mcp_retry_overrides.py +38 -0
- tqdaemon-0.8.0/tests/test_metric_series.py +62 -0
- tqdaemon-0.8.0/tests/test_metrics_snapshot.py +42 -0
- tqdaemon-0.8.0/tests/test_migration_requires_paths.py +32 -0
- tqdaemon-0.8.0/tests/test_mw_disconnect.py +137 -0
- tqdaemon-0.8.0/tests/test_mw_dispatch.py +203 -0
- tqdaemon-0.8.0/tests/test_mw_hung_remote.py +71 -0
- tqdaemon-0.8.0/tests/test_mw_integration.py +56 -0
- tqdaemon-0.8.0/tests/test_mw_log_chunk.py +201 -0
- tqdaemon-0.8.0/tests/test_mw_package_bundle.py +60 -0
- tqdaemon-0.8.0/tests/test_mw_transfer.py +151 -0
- tqdaemon-0.8.0/tests/test_negative_exit.py +69 -0
- tqdaemon-0.8.0/tests/test_netutil_probe.py +130 -0
- tqdaemon-0.8.0/tests/test_next_cron_fire.py +27 -0
- tqdaemon-0.8.0/tests/test_notify.py +308 -0
- tqdaemon-0.8.0/tests/test_notify_default.py +143 -0
- tqdaemon-0.8.0/tests/test_occupancy_estimate_running.py +126 -0
- tqdaemon-0.8.0/tests/test_ollama_ps_cache.py +37 -0
- tqdaemon-0.8.0/tests/test_operator_features.py +384 -0
- tqdaemon-0.8.0/tests/test_p0.py +146 -0
- tqdaemon-0.8.0/tests/test_p3_slots.py +111 -0
- tqdaemon-0.8.0/tests/test_p4_fencing.py +214 -0
- tqdaemon-0.8.0/tests/test_p5_provision.py +117 -0
- tqdaemon-0.8.0/tests/test_p6_master_api.py +114 -0
- tqdaemon-0.8.0/tests/test_p6_p9.py +285 -0
- tqdaemon-0.8.0/tests/test_p6_reservation_top.py +21 -0
- tqdaemon-0.8.0/tests/test_p7_longpoll.py +38 -0
- tqdaemon-0.8.0/tests/test_paused_skips_service_probe.py +24 -0
- tqdaemon-0.8.0/tests/test_perf_micro_6x.py +28 -0
- tqdaemon-0.8.0/tests/test_phase1_security.py +66 -0
- tqdaemon-0.8.0/tests/test_phase1_writes.py +523 -0
- tqdaemon-0.8.0/tests/test_pipeline_doctrine.py +358 -0
- tqdaemon-0.8.0/tests/test_placement_best_fit.py +310 -0
- tqdaemon-0.8.0/tests/test_plan.py +88 -0
- tqdaemon-0.8.0/tests/test_priority_desc.py +146 -0
- tqdaemon-0.8.0/tests/test_progress_health.py +93 -0
- tqdaemon-0.8.0/tests/test_project_colors.py +33 -0
- tqdaemon-0.8.0/tests/test_project_relocate.py +215 -0
- tqdaemon-0.8.0/tests/test_project_sets.py +188 -0
- tqdaemon-0.8.0/tests/test_project_sync.py +77 -0
- tqdaemon-0.8.0/tests/test_provenance.py +84 -0
- tqdaemon-0.8.0/tests/test_pwa_shell.py +62 -0
- tqdaemon-0.8.0/tests/test_queries_wp4.py +77 -0
- tqdaemon-0.8.0/tests/test_queue.py +526 -0
- tqdaemon-0.8.0/tests/test_queue_last_run_join.py +77 -0
- tqdaemon-0.8.0/tests/test_queue_page_two_phase.py +93 -0
- tqdaemon-0.8.0/tests/test_queue_slim_columns.py +28 -0
- tqdaemon-0.8.0/tests/test_queue_sort_deps.py +46 -0
- tqdaemon-0.8.0/tests/test_queue_sort_order.py +51 -0
- tqdaemon-0.8.0/tests/test_queue_window_head_of_line.py +72 -0
- tqdaemon-0.8.0/tests/test_r11_wave_a.py +276 -0
- tqdaemon-0.8.0/tests/test_r11_wave_b.py +66 -0
- tqdaemon-0.8.0/tests/test_r11_wave_c.py +51 -0
- tqdaemon-0.8.0/tests/test_r12_post.py +73 -0
- tqdaemon-0.8.0/tests/test_r12_wave_a.py +161 -0
- tqdaemon-0.8.0/tests/test_r12_wave_b.py +59 -0
- tqdaemon-0.8.0/tests/test_r12_wave_d.py +64 -0
- tqdaemon-0.8.0/tests/test_r2_fencing.py +205 -0
- tqdaemon-0.8.0/tests/test_r3_invariants.py +347 -0
- tqdaemon-0.8.0/tests/test_r3_remaining.py +132 -0
- tqdaemon-0.8.0/tests/test_r3_wave_b.py +84 -0
- tqdaemon-0.8.0/tests/test_r3_wave_cd.py +111 -0
- tqdaemon-0.8.0/tests/test_r5_ds.py +151 -0
- tqdaemon-0.8.0/tests/test_r7_ds.py +191 -0
- tqdaemon-0.8.0/tests/test_r7_ds2.py +213 -0
- tqdaemon-0.8.0/tests/test_r8_mine_scope.py +83 -0
- tqdaemon-0.8.0/tests/test_r8_ownership.py +83 -0
- tqdaemon-0.8.0/tests/test_r9_health.py +82 -0
- tqdaemon-0.8.0/tests/test_ram_hints.py +113 -0
- tqdaemon-0.8.0/tests/test_reader_db_errors.py +53 -0
- tqdaemon-0.8.0/tests/test_reap.py +178 -0
- tqdaemon-0.8.0/tests/test_rename_compat.py +57 -0
- tqdaemon-0.8.0/tests/test_retention_maintenance.py +193 -0
- tqdaemon-0.8.0/tests/test_retry_backoff.py +107 -0
- tqdaemon-0.8.0/tests/test_run_anomaly.py +57 -0
- tqdaemon-0.8.0/tests/test_run_anomaly_flag.py +47 -0
- tqdaemon-0.8.0/tests/test_run_diff.py +46 -0
- tqdaemon-0.8.0/tests/test_run_rerun.py +54 -0
- tqdaemon-0.8.0/tests/test_runner_start_cleanup.py +48 -0
- tqdaemon-0.8.0/tests/test_scale.py +439 -0
- tqdaemon-0.8.0/tests/test_scale_guards.py +123 -0
- tqdaemon-0.8.0/tests/test_scheduler_admit_helpers.py +134 -0
- tqdaemon-0.8.0/tests/test_security.py +278 -0
- tqdaemon-0.8.0/tests/test_service_probe_background.py +87 -0
- tqdaemon-0.8.0/tests/test_service_proxy_hardening.py +70 -0
- tqdaemon-0.8.0/tests/test_set_limits.py +151 -0
- tqdaemon-0.8.0/tests/test_slice_e.py +93 -0
- tqdaemon-0.8.0/tests/test_slice_g.py +152 -0
- tqdaemon-0.8.0/tests/test_slice_h.py +140 -0
- tqdaemon-0.8.0/tests/test_sqlite_snapshot_cleanup.py +42 -0
- tqdaemon-0.8.0/tests/test_sse_cap_wheel.py +58 -0
- tqdaemon-0.8.0/tests/test_sse_events.py +68 -0
- tqdaemon-0.8.0/tests/test_sse_log_stream.py +115 -0
- tqdaemon-0.8.0/tests/test_sse_ticket.py +45 -0
- tqdaemon-0.8.0/tests/test_stop_summary.py +50 -0
- tqdaemon-0.8.0/tests/test_stop_vram_code.py +12 -0
- tqdaemon-0.8.0/tests/test_stress.py +573 -0
- tqdaemon-0.8.0/tests/test_submit_keys.py +109 -0
- tqdaemon-0.8.0/tests/test_sync_bundle_determinism.py +40 -0
- tqdaemon-0.8.0/tests/test_system_alerts.py +358 -0
- tqdaemon-0.8.0/tests/test_t026_parity.py +216 -0
- tqdaemon-0.8.0/tests/test_t204_scavenger.py +154 -0
- tqdaemon-0.8.0/tests/test_t205_min_tasks.py +47 -0
- tqdaemon-0.8.0/tests/test_t206_dep_cancel.py +114 -0
- tqdaemon-0.8.0/tests/test_tasks_bulk.py +87 -0
- tqdaemon-0.8.0/tests/test_taskspec_gaps.py +31 -0
- tqdaemon-0.8.0/tests/test_timeline_forecast_estimates.py +70 -0
- tqdaemon-0.8.0/tests/test_timeline_perf.py +76 -0
- tqdaemon-0.8.0/tests/test_timeline_prefetch.py +56 -0
- tqdaemon-0.8.0/tests/test_token_project_scope.py +103 -0
- tqdaemon-0.8.0/tests/test_top.py +86 -0
- tqdaemon-0.8.0/tests/test_tq_explain.py +30 -0
- tqdaemon-0.8.0/tests/test_transition_task.py +37 -0
- tqdaemon-0.8.0/tests/test_ui_6b3_fixes.py +61 -0
- tqdaemon-0.8.0/tests/test_ui_browser_smoke.py +85 -0
- tqdaemon-0.8.0/tests/test_ui_inline_handlers.py +29 -0
- tqdaemon-0.8.0/tests/test_usability_wave.py +207 -0
- tqdaemon-0.8.0/tests/test_usage_gpu_today.py +32 -0
- tqdaemon-0.8.0/tests/test_usage_track.py +201 -0
- tqdaemon-0.8.0/tests/test_w0_regressions.py +174 -0
- tqdaemon-0.8.0/tests/test_wait_hints.py +77 -0
- tqdaemon-0.8.0/tests/test_waiting.py +261 -0
- tqdaemon-0.8.0/tests/test_wave1_hardening.py +181 -0
- tqdaemon-0.8.0/tests/test_wave_d_fixes.py +764 -0
- tqdaemon-0.8.0/tests/test_web_routes.py +652 -0
- tqdaemon-0.8.0/tests/test_why.py +53 -0
- tqdaemon-0.8.0/tests/test_win_console.py +44 -0
- tqdaemon-0.8.0/tests/test_worker_api.py +289 -0
- tqdaemon-0.8.0/tests/test_worker_api_helpers.py +58 -0
- tqdaemon-0.8.0/tests/test_worker_auth_streak.py +49 -0
- tqdaemon-0.8.0/tests/test_worker_bundle_verify.py +26 -0
- tqdaemon-0.8.0/tests/test_worker_credential_enforcement.py +132 -0
- tqdaemon-0.8.0/tests/test_worker_join.py +146 -0
- tqdaemon-0.8.0/tests/test_worker_setup_merge.py +42 -0
- tqdaemon-0.8.0/tests/test_worker_slot_run.py +59 -0
- tqdaemon-0.8.0/tests/test_worker_upgrade.py +68 -0
- tqdaemon-0.8.0/tests/test_wpa_recovery.py +134 -0
- tqdaemon-0.8.0/tests/test_wpb_remote.py +82 -0
- tqdaemon-0.8.0/tests/test_wpd_hygiene.py +24 -0
- tqdaemon-0.8.0/tests/test_yaml_legacy.py +258 -0
- tqdaemon-0.8.0/tqdaemon/__init__.py +3 -0
- tqdaemon-0.8.0/tqdaemon/_cli_admin.py +1726 -0
- tqdaemon-0.8.0/tqdaemon/_cli_helpers.py +296 -0
- tqdaemon-0.8.0/tqdaemon/_cli_project.py +1031 -0
- tqdaemon-0.8.0/tqdaemon/_cli_prune.py +418 -0
- tqdaemon-0.8.0/tqdaemon/_cli_task.py +1821 -0
- tqdaemon-0.8.0/tqdaemon/_cli_worker.py +521 -0
- tqdaemon-0.8.0/tqdaemon/_db_runs.py +724 -0
- tqdaemon-0.8.0/tqdaemon/_db_tasks.py +1536 -0
- tqdaemon-0.8.0/tqdaemon/_fmt.py +83 -0
- tqdaemon-0.8.0/tqdaemon/_time.py +25 -0
- tqdaemon-0.8.0/tqdaemon/_win_sitecustomize/sitecustomize.py +35 -0
- tqdaemon-0.8.0/tqdaemon/admit_context.py +231 -0
- tqdaemon-0.8.0/tqdaemon/adopt.py +145 -0
- tqdaemon-0.8.0/tqdaemon/agent_stats.py +195 -0
- tqdaemon-0.8.0/tqdaemon/archive.py +94 -0
- tqdaemon-0.8.0/tqdaemon/arg_overrides.py +57 -0
- tqdaemon-0.8.0/tqdaemon/auth.py +61 -0
- tqdaemon-0.8.0/tqdaemon/backoff.py +143 -0
- tqdaemon-0.8.0/tqdaemon/bundle.py +99 -0
- tqdaemon-0.8.0/tqdaemon/capacity.py +198 -0
- tqdaemon-0.8.0/tqdaemon/cli.py +2031 -0
- tqdaemon-0.8.0/tqdaemon/cli_table.py +86 -0
- tqdaemon-0.8.0/tqdaemon/clone.py +70 -0
- tqdaemon-0.8.0/tqdaemon/config.py +335 -0
- tqdaemon-0.8.0/tqdaemon/config_audit.py +61 -0
- tqdaemon-0.8.0/tqdaemon/cron.py +124 -0
- tqdaemon-0.8.0/tqdaemon/daemon.py +2678 -0
- tqdaemon-0.8.0/tqdaemon/daemon_clock.py +17 -0
- tqdaemon-0.8.0/tqdaemon/data/__init__.py +1 -0
- tqdaemon-0.8.0/tqdaemon/data/manifest.py +121 -0
- tqdaemon-0.8.0/tqdaemon/data/service_broker.py +107 -0
- tqdaemon-0.8.0/tqdaemon/db.py +608 -0
- tqdaemon-0.8.0/tqdaemon/dbtxn.py +28 -0
- tqdaemon-0.8.0/tqdaemon/deprefs.py +42 -0
- tqdaemon-0.8.0/tqdaemon/diagnose.py +85 -0
- tqdaemon-0.8.0/tqdaemon/docs_loader.py +579 -0
- tqdaemon-0.8.0/tqdaemon/doctor_checks.py +258 -0
- tqdaemon-0.8.0/tqdaemon/dt_utils.py +46 -0
- tqdaemon-0.8.0/tqdaemon/dto.py +27 -0
- tqdaemon-0.8.0/tqdaemon/errors.py +173 -0
- tqdaemon-0.8.0/tqdaemon/estimate.py +264 -0
- tqdaemon-0.8.0/tqdaemon/eta.py +162 -0
- tqdaemon-0.8.0/tqdaemon/export_import.py +164 -0
- tqdaemon-0.8.0/tqdaemon/fencing.py +79 -0
- tqdaemon-0.8.0/tqdaemon/finalize_hooks.py +145 -0
- tqdaemon-0.8.0/tqdaemon/fsutil.py +24 -0
- tqdaemon-0.8.0/tqdaemon/gpu_lock.py +164 -0
- tqdaemon-0.8.0/tqdaemon/health.py +159 -0
- tqdaemon-0.8.0/tqdaemon/hygiene.py +437 -0
- tqdaemon-0.8.0/tqdaemon/jsonutil.py +11 -0
- tqdaemon-0.8.0/tqdaemon/lease.py +231 -0
- tqdaemon-0.8.0/tqdaemon/log_issues.py +228 -0
- tqdaemon-0.8.0/tqdaemon/logio.py +161 -0
- tqdaemon-0.8.0/tqdaemon/master_client.py +185 -0
- tqdaemon-0.8.0/tqdaemon/mcp_server.py +1629 -0
- tqdaemon-0.8.0/tqdaemon/metrics_export.py +65 -0
- tqdaemon-0.8.0/tqdaemon/metrics_snapshot.py +233 -0
- tqdaemon-0.8.0/tqdaemon/migrations.py +921 -0
- tqdaemon-0.8.0/tqdaemon/models.py +116 -0
- tqdaemon-0.8.0/tqdaemon/mutate.py +51 -0
- tqdaemon-0.8.0/tqdaemon/mutations.py +294 -0
- tqdaemon-0.8.0/tqdaemon/netutil.py +85 -0
- tqdaemon-0.8.0/tqdaemon/notify.py +878 -0
- tqdaemon-0.8.0/tqdaemon/operator_features.py +996 -0
- tqdaemon-0.8.0/tqdaemon/ownership.py +36 -0
- tqdaemon-0.8.0/tqdaemon/placement.py +332 -0
- tqdaemon-0.8.0/tqdaemon/plan.py +125 -0
- tqdaemon-0.8.0/tqdaemon/platform_proc.py +194 -0
- tqdaemon-0.8.0/tqdaemon/platform_utils.py +94 -0
- tqdaemon-0.8.0/tqdaemon/power.py +35 -0
- tqdaemon-0.8.0/tqdaemon/priority_migrate.py +94 -0
- tqdaemon-0.8.0/tqdaemon/progress_sanity.py +117 -0
- tqdaemon-0.8.0/tqdaemon/project_colors.py +94 -0
- tqdaemon-0.8.0/tqdaemon/project_limits.py +255 -0
- tqdaemon-0.8.0/tqdaemon/project_relocate.py +190 -0
- tqdaemon-0.8.0/tqdaemon/project_sets.py +321 -0
- tqdaemon-0.8.0/tqdaemon/project_sync.py +339 -0
- tqdaemon-0.8.0/tqdaemon/provision.py +411 -0
- tqdaemon-0.8.0/tqdaemon/queries.py +612 -0
- tqdaemon-0.8.0/tqdaemon/reap.py +104 -0
- tqdaemon-0.8.0/tqdaemon/reports.py +77 -0
- tqdaemon-0.8.0/tqdaemon/resources.py +1143 -0
- tqdaemon-0.8.0/tqdaemon/rows.py +83 -0
- tqdaemon-0.8.0/tqdaemon/run_diff.py +76 -0
- tqdaemon-0.8.0/tqdaemon/run_wrapper.py +67 -0
- tqdaemon-0.8.0/tqdaemon/runner.py +1286 -0
- tqdaemon-0.8.0/tqdaemon/safetar.py +66 -0
- tqdaemon-0.8.0/tqdaemon/sched_wake.py +33 -0
- tqdaemon-0.8.0/tqdaemon/scheduler.py +2575 -0
- tqdaemon-0.8.0/tqdaemon/sse_ticket.py +54 -0
- tqdaemon-0.8.0/tqdaemon/static/app.css +1055 -0
- tqdaemon-0.8.0/tqdaemon/static/app.js +3 -0
- tqdaemon-0.8.0/tqdaemon/static/error_labels.json +32 -0
- tqdaemon-0.8.0/tqdaemon/static/help-bundle.en.json +2255 -0
- tqdaemon-0.8.0/tqdaemon/static/i18n.js +73 -0
- tqdaemon-0.8.0/tqdaemon/static/index.html +865 -0
- tqdaemon-0.8.0/tqdaemon/static/js/components/cfgmodal.js +268 -0
- tqdaemon-0.8.0/tqdaemon/static/js/components/columns.js +70 -0
- tqdaemon-0.8.0/tqdaemon/static/js/components/drawer.js +425 -0
- tqdaemon-0.8.0/tqdaemon/static/js/components/filterbars.js +180 -0
- tqdaemon-0.8.0/tqdaemon/static/js/components/fitsnow.js +61 -0
- tqdaemon-0.8.0/tqdaemon/static/js/components/logdock.js +147 -0
- tqdaemon-0.8.0/tqdaemon/static/js/components/logpanel.js +271 -0
- tqdaemon-0.8.0/tqdaemon/static/js/components/logview.js +102 -0
- tqdaemon-0.8.0/tqdaemon/static/js/components/mobpicker.js +74 -0
- tqdaemon-0.8.0/tqdaemon/static/js/components/modals.js +456 -0
- tqdaemon-0.8.0/tqdaemon/static/js/components/notifications.js +210 -0
- tqdaemon-0.8.0/tqdaemon/static/js/components/palette.js +155 -0
- tqdaemon-0.8.0/tqdaemon/static/js/components/prefs.js +143 -0
- tqdaemon-0.8.0/tqdaemon/static/js/components/queuefilters.js +414 -0
- tqdaemon-0.8.0/tqdaemon/static/js/components/runlogs.js +417 -0
- tqdaemon-0.8.0/tqdaemon/static/js/components/runmetrics.js +251 -0
- tqdaemon-0.8.0/tqdaemon/static/js/components/setfilter.js +263 -0
- tqdaemon-0.8.0/tqdaemon/static/js/components/shortcuts.js +130 -0
- tqdaemon-0.8.0/tqdaemon/static/js/components/sparks.js +246 -0
- tqdaemon-0.8.0/tqdaemon/static/js/components/taskactions.js +507 -0
- tqdaemon-0.8.0/tqdaemon/static/js/core/actions.js +84 -0
- tqdaemon-0.8.0/tqdaemon/static/js/core/api.js +190 -0
- tqdaemon-0.8.0/tqdaemon/static/js/core/loader.js +120 -0
- tqdaemon-0.8.0/tqdaemon/static/js/core/nav.js +90 -0
- tqdaemon-0.8.0/tqdaemon/static/js/core/refresh.js +742 -0
- tqdaemon-0.8.0/tqdaemon/static/js/core/state.js +99 -0
- tqdaemon-0.8.0/tqdaemon/static/js/core/url.js +278 -0
- tqdaemon-0.8.0/tqdaemon/static/js/main.js +263 -0
- tqdaemon-0.8.0/tqdaemon/static/js/util/a11y.js +44 -0
- tqdaemon-0.8.0/tqdaemon/static/js/util/colors.js +13 -0
- tqdaemon-0.8.0/tqdaemon/static/js/util/format.js +102 -0
- tqdaemon-0.8.0/tqdaemon/static/js/util/labels.js +132 -0
- tqdaemon-0.8.0/tqdaemon/static/js/util/projcolor.js +17 -0
- tqdaemon-0.8.0/tqdaemon/static/js/views/alerts.js +100 -0
- tqdaemon-0.8.0/tqdaemon/static/js/views/audit.js +67 -0
- tqdaemon-0.8.0/tqdaemon/static/js/views/dashboard.js +258 -0
- tqdaemon-0.8.0/tqdaemon/static/js/views/deps.js +635 -0
- tqdaemon-0.8.0/tqdaemon/static/js/views/docs.js +302 -0
- tqdaemon-0.8.0/tqdaemon/static/js/views/groups.js +184 -0
- tqdaemon-0.8.0/tqdaemon/static/js/views/history.js +332 -0
- tqdaemon-0.8.0/tqdaemon/static/js/views/queue.js +646 -0
- tqdaemon-0.8.0/tqdaemon/static/js/views/resources.js +307 -0
- tqdaemon-0.8.0/tqdaemon/static/js/views/schedule.js +68 -0
- tqdaemon-0.8.0/tqdaemon/static/js/views/taskstats.js +70 -0
- tqdaemon-0.8.0/tqdaemon/static/js/views/timeline.js +135 -0
- tqdaemon-0.8.0/tqdaemon/static/js/views/tokens.js +47 -0
- tqdaemon-0.8.0/tqdaemon/static/js/views/usage.js +332 -0
- tqdaemon-0.8.0/tqdaemon/static/locales/ar.json +764 -0
- tqdaemon-0.8.0/tqdaemon/static/locales/en-XX.json +764 -0
- tqdaemon-0.8.0/tqdaemon/static/locales/en.json +764 -0
- tqdaemon-0.8.0/tqdaemon/static/locales/pl.json +762 -0
- tqdaemon-0.8.0/tqdaemon/static/locales/zh.json +764 -0
- tqdaemon-0.8.0/tqdaemon/static/manifest.webmanifest +10 -0
- tqdaemon-0.8.0/tqdaemon/static/sw.js +37 -0
- tqdaemon-0.8.0/tqdaemon/static/theme-boot.js +22 -0
- tqdaemon-0.8.0/tqdaemon/statuses.py +41 -0
- tqdaemon-0.8.0/tqdaemon/stop_reasons.py +24 -0
- tqdaemon-0.8.0/tqdaemon/stop_summary.py +120 -0
- tqdaemon-0.8.0/tqdaemon/submit.py +109 -0
- tqdaemon-0.8.0/tqdaemon/submit_keys.py +94 -0
- tqdaemon-0.8.0/tqdaemon/system_alerts.py +617 -0
- tqdaemon-0.8.0/tqdaemon/taskspec.py +545 -0
- tqdaemon-0.8.0/tqdaemon/timeline_forecast.py +812 -0
- tqdaemon-0.8.0/tqdaemon/top.py +108 -0
- tqdaemon-0.8.0/tqdaemon/usage_track.py +238 -0
- tqdaemon-0.8.0/tqdaemon/validate.py +269 -0
- tqdaemon-0.8.0/tqdaemon/victim.py +141 -0
- tqdaemon-0.8.0/tqdaemon/waiting.py +340 -0
- tqdaemon-0.8.0/tqdaemon/web/__init__.py +171 -0
- tqdaemon-0.8.0/tqdaemon/web/api_docs.py +559 -0
- tqdaemon-0.8.0/tqdaemon/web/change_tracker.py +58 -0
- tqdaemon-0.8.0/tqdaemon/web/context.py +37 -0
- tqdaemon-0.8.0/tqdaemon/web/deps.py +128 -0
- tqdaemon-0.8.0/tqdaemon/web/handler.py +1041 -0
- tqdaemon-0.8.0/tqdaemon/web/hardware.py +210 -0
- tqdaemon-0.8.0/tqdaemon/web/responses.py +1465 -0
- tqdaemon-0.8.0/tqdaemon/web/routes_read.py +1535 -0
- tqdaemon-0.8.0/tqdaemon/web/routes_transfer.py +876 -0
- tqdaemon-0.8.0/tqdaemon/web/routes_worker.py +1143 -0
- tqdaemon-0.8.0/tqdaemon/web/routes_write.py +1619 -0
- tqdaemon-0.8.0/tqdaemon/web/sse.py +354 -0
- tqdaemon-0.8.0/tqdaemon/web/standby.py +137 -0
- tqdaemon-0.8.0/tqdaemon/why.py +106 -0
- tqdaemon-0.8.0/tqdaemon/win_console.py +53 -0
- tqdaemon-0.8.0/tqdaemon/worker.py +1167 -0
- tqdaemon-0.8.0/tqdaemon/worker_api.py +621 -0
- tqdaemon-0.8.0/tqdaemon/worker_http.py +85 -0
- tqdaemon-0.8.0/tqdaemon/worker_join.py +106 -0
- tqdaemon-0.8.0/tqdaemon/worker_journal.py +99 -0
- tqdaemon-0.8.0/tqdaemon/worker_outbox.py +64 -0
- tqdaemon-0.8.0/tqdaemon/worker_slot.py +849 -0
- tqdaemon-0.8.0/tqdaemon/yaml_legacy.py +128 -0
- tqdaemon-0.8.0/tqdaemon/yaml_patch.py +91 -0
- tqdaemon-0.8.0/tqdaemon/yaml_sync.py +380 -0
- tqdaemon-0.8.0/uv.lock +816 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
name: Bug report
|
|
2
|
+
description: Something in tq, the daemon or the web UI does not work as documented
|
|
3
|
+
labels: [bug]
|
|
4
|
+
body:
|
|
5
|
+
- type: textarea
|
|
6
|
+
id: what
|
|
7
|
+
attributes:
|
|
8
|
+
label: What happened
|
|
9
|
+
description: What you did, what you expected, what you got.
|
|
10
|
+
validations:
|
|
11
|
+
required: true
|
|
12
|
+
- type: textarea
|
|
13
|
+
id: repro
|
|
14
|
+
attributes:
|
|
15
|
+
label: Steps to reproduce
|
|
16
|
+
description: Minimal task YAML and commands if possible.
|
|
17
|
+
- type: input
|
|
18
|
+
id: version
|
|
19
|
+
attributes:
|
|
20
|
+
label: Version and OS
|
|
21
|
+
description: Output of `tq doctor` (version, OS, Python).
|
|
22
|
+
validations:
|
|
23
|
+
required: true
|
|
24
|
+
- type: textarea
|
|
25
|
+
id: logs
|
|
26
|
+
attributes:
|
|
27
|
+
label: Logs
|
|
28
|
+
render: shell
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
blank_issues_enabled: true
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
name: Feature request
|
|
2
|
+
description: Suggest an improvement
|
|
3
|
+
labels: [enhancement]
|
|
4
|
+
body:
|
|
5
|
+
- type: textarea
|
|
6
|
+
id: problem
|
|
7
|
+
attributes:
|
|
8
|
+
label: Problem
|
|
9
|
+
description: What are you trying to do that is hard today?
|
|
10
|
+
validations:
|
|
11
|
+
required: true
|
|
12
|
+
- type: textarea
|
|
13
|
+
id: proposal
|
|
14
|
+
attributes:
|
|
15
|
+
label: Proposed solution
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
- package-ecosystem: github-actions
|
|
4
|
+
directory: /
|
|
5
|
+
schedule:
|
|
6
|
+
interval: weekly
|
|
7
|
+
- package-ecosystem: pip
|
|
8
|
+
directory: /
|
|
9
|
+
schedule:
|
|
10
|
+
interval: weekly
|
|
11
|
+
- package-ecosystem: npm
|
|
12
|
+
directory: /
|
|
13
|
+
schedule:
|
|
14
|
+
interval: weekly
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# CI POSTPONED 2026-08-28 — GitHub Actions billing / spending limit exhausted.
|
|
2
|
+
# Auto triggers removed so this does not burn Actions minutes.
|
|
3
|
+
# Manual `workflow_dispatch` kept for optional resume after billing is restored.
|
|
4
|
+
# F-209: single source of truth is scripts/ci.ps1 (local + Actions).
|
|
5
|
+
# See plan/CI_POSTPONED.md.
|
|
6
|
+
|
|
7
|
+
name: ci
|
|
8
|
+
|
|
9
|
+
on:
|
|
10
|
+
workflow_dispatch:
|
|
11
|
+
inputs:
|
|
12
|
+
suite:
|
|
13
|
+
description: "CI suite"
|
|
14
|
+
required: true
|
|
15
|
+
default: fast
|
|
16
|
+
type: choice
|
|
17
|
+
options: [fast, full, nightly]
|
|
18
|
+
|
|
19
|
+
jobs:
|
|
20
|
+
gate:
|
|
21
|
+
runs-on: ubuntu-latest
|
|
22
|
+
steps:
|
|
23
|
+
- uses: actions/checkout@v4
|
|
24
|
+
- uses: astral-sh/setup-uv@v5
|
|
25
|
+
with:
|
|
26
|
+
python-version: "3.12"
|
|
27
|
+
- uses: actions/setup-node@v4
|
|
28
|
+
if: inputs.suite != 'fast'
|
|
29
|
+
with:
|
|
30
|
+
node-version: "22"
|
|
31
|
+
- name: Sync (locked)
|
|
32
|
+
run: uv sync --locked --group dev
|
|
33
|
+
- name: Run scripts/ci.ps1
|
|
34
|
+
shell: pwsh
|
|
35
|
+
# F-209 / deep-audit: one source of truth — including nightly (was a divergent subset).
|
|
36
|
+
run: pwsh scripts/ci.ps1 -Mode "${{ inputs.suite }}"
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Deploy top-level site/ to GitHub Pages (legacy branch Sources only allow / or /docs).
|
|
2
|
+
name: pages
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
paths:
|
|
7
|
+
- "site/**"
|
|
8
|
+
- ".github/workflows/pages.yml"
|
|
9
|
+
workflow_dispatch:
|
|
10
|
+
|
|
11
|
+
permissions:
|
|
12
|
+
contents: read
|
|
13
|
+
pages: write
|
|
14
|
+
id-token: write
|
|
15
|
+
|
|
16
|
+
concurrency:
|
|
17
|
+
group: pages
|
|
18
|
+
cancel-in-progress: false
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
deploy:
|
|
22
|
+
environment:
|
|
23
|
+
name: github-pages
|
|
24
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
25
|
+
runs-on: ubuntu-latest
|
|
26
|
+
steps:
|
|
27
|
+
- uses: actions/checkout@v4
|
|
28
|
+
- uses: actions/configure-pages@v5
|
|
29
|
+
- uses: actions/upload-pages-artifact@v3
|
|
30
|
+
with:
|
|
31
|
+
path: site
|
|
32
|
+
- id: deployment
|
|
33
|
+
uses: actions/deploy-pages@v4
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Generated by house publish export — do not commit local verify debris.
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
.venv/
|
|
6
|
+
venv/
|
|
7
|
+
.pytest_cache/
|
|
8
|
+
.ruff_cache/
|
|
9
|
+
*.egg-info/
|
|
10
|
+
dist/
|
|
11
|
+
build/
|
|
12
|
+
.publish/
|
|
13
|
+
.DS_Store
|
|
14
|
+
*.db
|
|
15
|
+
*.pkl
|
|
16
|
+
.env
|
|
17
|
+
.env.*
|
|
18
|
+
!.env.example
|
tqdaemon-0.8.0/AGENTS.md
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# AGENTS.md — tqdaemon (public)
|
|
2
|
+
|
|
3
|
+
Bootstrap for agents on the **public** tqdaemon tree.
|
|
4
|
+
|
|
5
|
+
1. [README.md](README.md) — pitch, install, first win
|
|
6
|
+
2. [llms.txt](llms.txt) — compact agent index
|
|
7
|
+
3. [docs/mcp.md](docs/mcp.md) — MCP setup + tools
|
|
8
|
+
4. [docs/task_standards.md](docs/task_standards.md) — YAML fields
|
|
9
|
+
5. [docs/agents/task-script-cookbook.md](docs/agents/task-script-cookbook.md) — long jobs with `tq_client`
|
|
10
|
+
6. [docs/operators/cli.md](docs/operators/cli.md) — full `tq` reference
|
|
11
|
+
7. [CONTRIBUTING.md](CONTRIBUTING.md) — tests and PRs
|
|
12
|
+
|
|
13
|
+
## Hard constraints
|
|
14
|
+
|
|
15
|
+
- Long jobs → operator-queue YAML (not in-session shells).
|
|
16
|
+
- **Create:** MCP `submit_task` (preferred) or YAML under `experiments/operator_queue/` + `tq sync`. `enqueue_task` only retries terminal tasks.
|
|
17
|
+
- Do not invent CLI commands or YAML keys.
|
|
18
|
+
- Prefer `tq wait` / MCP `wait_for_task` over sleep polling.
|
|
19
|
+
- Set `TQ_OPERATOR` so `started_by` / `my_tasks` work.
|
|
20
|
+
- Default home `~/.tqdaemon`, UI **8765**.
|
|
21
|
+
|
|
22
|
+
## Tests
|
|
23
|
+
|
|
24
|
+
```text
|
|
25
|
+
uv sync --group dev
|
|
26
|
+
uv run pytest -q -m "not stress"
|
|
27
|
+
```
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project are documented here.
|
|
4
|
+
Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/);
|
|
5
|
+
this project uses [Semantic Versioning](https://semver.org/).
|
|
6
|
+
|
|
7
|
+
## [Unreleased]
|
|
8
|
+
|
|
9
|
+
## [0.8.0] - 2026-11-11
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- **Renamed the project from `taskqueue` to `tqdaemon`** (PyPI distribution `tqdaemon`; `taskqueue`, `tq` and `task-queue` were taken). The `tq` command is unchanged; the Python package is now `tqdaemon`.
|
|
14
|
+
- New names: `TQDAEMON_HOME` (env), `~/.tqdaemon` (state home), `.tqdaemon/project.yaml` (per-project config), MCP server name `tqdaemon`.
|
|
15
|
+
- Migration: the old env var `TASKQUEUE_HOME`, an existing `~/.taskqueue` home, `.taskqueue/project.yaml` and runs started under the old wrapper module are still recognised. To migrate by hand: stop the daemon, rename `~/.taskqueue` to `~/.tqdaemon`, reinstall (`pip install -U tqdaemon`), `tq start`.
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- Automated demo GIF (`scripts/record_demo.py`), issue/PR templates and Dependabot config; PyPI publishing wired into the house publish flow.
|
|
20
|
+
|
|
21
|
+
## [0.7.6] - 2026-11-08
|
|
22
|
+
|
|
23
|
+
### Added
|
|
24
|
+
|
|
25
|
+
- Slim stranger-facing README (EN/PL/ZH/AR) with hero image, agent CTA, and transparency note (no product phone-home).
|
|
26
|
+
- Marketing GitHub Pages tree under `site/` (landing, sitemap, robots); CLI encyclopedia moved to `docs/operators/cli.md`.
|
|
27
|
+
- Root `llms.txt` and expanded package keywords for discoverability.
|
|
28
|
+
|
|
29
|
+
### Fixed
|
|
30
|
+
|
|
31
|
+
- Deep-audit reliability work for remote `stopped` claim paths, MCP mutate helpers, scheduler admit hot path, and web UI SSE/log races (F-244–F-258).
|
|
32
|
+
|
|
33
|
+
## [0.7.5] - 2026-11-01
|
|
34
|
+
|
|
35
|
+
### Added
|
|
36
|
+
|
|
37
|
+
- Queue hygiene report: `tq hygiene` / `tq report --hygiene`, MCP `report` with `kind=hygiene`, and `GET /api/hygiene` — churn rates, multi-use vs flaky classification, and honest archive proposals (`agent_prompt`; never auto-archives).
|
|
38
|
+
- `tq archive --max-completed-runs N` so archive proposals can skip multi-use tasks (hygiene uses `1`).
|
|
39
|
+
- Tasks keep `completed_run_count` / `total_run_count` (schema 33); `tq list` reads them instead of scanning all runs.
|
|
40
|
+
- History tab pages with a fixed offset (Prev/Next) and mounts log/history expand rows only when opened.
|
|
41
|
+
- Help topic `queue-hygiene` and operator/docs notes distinguishing hygiene from retention prune and agent usage summaries.
|
|
42
|
+
- House `publish.manifest.yaml` and dual-tree export readiness for the public GitHub mirror.
|
|
43
|
+
|
|
44
|
+
### Changed
|
|
45
|
+
|
|
46
|
+
- Unscoped queue `sort=deps` / `sort=order` require a project filter when more than 2000 tasks match.
|
|
47
|
+
- `/api/deps` applies project, suite, and `project/task_id` focus in SQL before building the graph; unscoped graphs cap the SELECT at 500 nodes.
|
|
48
|
+
- `GET /api/tasks/<project>/<task_id>/runs` is paginated (`limit` default 50, max 200; `offset`).
|
|
49
|
+
- Unscoped `GET /api/task-stats` returns at most 500 tasks (prefer `project=`).
|
|
50
|
+
- History anomaly badges are computed in a batched pass per page instead of one query per completed run.
|
|
51
|
+
|
|
52
|
+
## [0.7.4] - 2026-10-26
|
|
53
|
+
|
|
54
|
+
### Added
|
|
55
|
+
|
|
56
|
+
- Initial public changelog baseline matching `pyproject.toml` version 0.7.4.
|
tqdaemon-0.8.0/CLAUDE.md
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# CLAUDE.md — tqdaemon (public)
|
|
2
|
+
|
|
3
|
+
Public checkout guidance. Prefer [AGENTS.md](AGENTS.md) and [docs/](docs/).
|
|
4
|
+
|
|
5
|
+
- Package: `tqdaemon/` (`cli.py`, `daemon.py`, `db.py`, `worker.py`, …)
|
|
6
|
+
- Web UI: `tqdaemon/static/` + ES modules under `tqdaemon/static/js/`
|
|
7
|
+
- Scheduler tick: `daemon.daemon_tick` — see `tests/test_daemon_tick.py`
|
|
8
|
+
- Docs hub: [docs/README.md](docs/README.md)
|
|
9
|
+
|
|
10
|
+
Do not assume a sibling `devkit` or shared inbox layout; this repository is standalone for public users.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Code of Conduct
|
|
2
|
+
|
|
3
|
+
Be respectful in issues, discussions, and PRs. Harassment, spam, or deliberate sabotage of the project or its users is not welcome. Maintainers may moderate or ban accounts that violate this standard.
|
|
4
|
+
|
|
5
|
+
This project follows the spirit of the [Contributor Covenant](https://www.contributor-covenant.org/) v2.1.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
## Setup
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
git clone https://github.com/wwylon/tqdaemon.git
|
|
7
|
+
cd tqdaemon
|
|
8
|
+
uv sync --group dev
|
|
9
|
+
uv run tq doctor
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Tests
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
uv run ruff check tqdaemon/ tests/
|
|
16
|
+
uv run pytest -q -m "not stress"
|
|
17
|
+
uv run python scripts/build_docs.py --check
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Pull requests
|
|
21
|
+
|
|
22
|
+
- Open PRs against the public repository.
|
|
23
|
+
- Link an issue when fixing a bug; include `tq doctor` / OS / version for runtime problems.
|
|
24
|
+
- Maintainers may replay accepted changes through an internal mirror; your commits can appear rewritten in the next public export. Attribution is preserved in CHANGELOG / PR comments when practical.
|
|
25
|
+
|
|
26
|
+
## Security
|
|
27
|
+
|
|
28
|
+
See [SECURITY.md](SECURITY.md). Do not file vulnerabilities in public issues.
|
tqdaemon-0.8.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 tqdaemon contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
tqdaemon-0.8.0/PKG-INFO
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: tqdaemon
|
|
3
|
+
Version: 0.8.0
|
|
4
|
+
Summary: Local resource-aware task queue daemon (CLI, web UI, MCP, remote workers)
|
|
5
|
+
Project-URL: Homepage, https://github.com/wwylon/tqdaemon
|
|
6
|
+
Project-URL: Repository, https://github.com/wwylon/tqdaemon
|
|
7
|
+
Project-URL: Issues, https://github.com/wwylon/tqdaemon/issues
|
|
8
|
+
Project-URL: Documentation, https://github.com/wwylon/tqdaemon/tree/main/docs
|
|
9
|
+
Author: tqdaemon contributors
|
|
10
|
+
License-Expression: MIT
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Keywords: ai-agents,cli,daemon,gpu,job-scheduler,local-first,mcp,resource-management,task-queue,web-ui,yaml
|
|
13
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Requires-Python: >=3.12
|
|
17
|
+
Requires-Dist: nvidia-ml-py>=12.0
|
|
18
|
+
Requires-Dist: psutil>=5.9
|
|
19
|
+
Requires-Dist: pyyaml>=6.0
|
|
20
|
+
Provides-Extra: toast
|
|
21
|
+
Requires-Dist: winotify>=1.1.0; extra == 'toast'
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
|
|
24
|
+
# tqdaemon
|
|
25
|
+
|
|
26
|
+
[English](README.md) | [Polski](README.pl.md) | [中文](README.zh.md) | [العربية](README.ar.md)
|
|
27
|
+
|
|
28
|
+
[](LICENSE)
|
|
29
|
+
[](https://www.python.org/downloads/)
|
|
30
|
+
[](https://github.com/wwylon/tqdaemon/actions/workflows/ci.yml)
|
|
31
|
+
[](https://pypi.org/project/tqdaemon/)
|
|
32
|
+
[](https://github.com/wwylon/tqdaemon/tags)
|
|
33
|
+
|
|
34
|
+

|
|
35
|
+
|
|
36
|
+
**tqdaemon** runs long jobs on your own machines without melting them.
|
|
37
|
+
Describe each job in YAML. A local **daemon** starts work only when there is
|
|
38
|
+
enough CPU, RAM, and GPU memory. Watch progress in a **web UI**, the **`tq`**
|
|
39
|
+
CLI, or from an **AI coding agent** (MCP).
|
|
40
|
+
|
|
41
|
+
Not Celery, Kubernetes, or CI. Not the 2011 AMQP/Debian
|
|
42
|
+
[rojkov/taskqueue](https://github.com/rojkov/taskqueue) (simpletaskqueue).
|
|
43
|
+
|
|
44
|
+
## Why use it
|
|
45
|
+
|
|
46
|
+
- Resource-aware admission (CPU / RAM / GPU VRAM) on one PC or with remote workers
|
|
47
|
+
- YAML jobs with checkpoints, deps, priorities, and stable error codes
|
|
48
|
+
- Built for **agents**: submit, wait, diagnose over MCP
|
|
49
|
+
- Local-first — no cloud SaaS account
|
|
50
|
+
|
|
51
|
+
## Best start: ask your agent
|
|
52
|
+
|
|
53
|
+
Tell your coding agent (Cursor, Claude Code, …) to use **tqdaemon** for long
|
|
54
|
+
jobs: wire MCP (`tq mcp`), submit YAML tasks, and `wait_for_task` instead of
|
|
55
|
+
blocking the chat. Setup: **[docs/mcp.md](docs/mcp.md)**.
|
|
56
|
+
|
|
57
|
+
## Install
|
|
58
|
+
|
|
59
|
+
**Need:** Python **3.12+**, [Git](https://git-scm.com/), [`uv`](https://docs.astral.sh/uv/).
|
|
60
|
+
|
|
61
|
+
**From PyPI:** `uvx --from tqdaemon tq doctor` (or `pipx install tqdaemon`). From source:
|
|
62
|
+
|
|
63
|
+
```powershell
|
|
64
|
+
git clone https://github.com/wwylon/tqdaemon.git
|
|
65
|
+
cd tqdaemon
|
|
66
|
+
uv sync
|
|
67
|
+
uv run tq doctor
|
|
68
|
+
uv run tq start
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Open **http://127.0.0.1:8765**. Try the sample in
|
|
72
|
+
[`examples/minimal`](examples/minimal/) (register it as a project, then
|
|
73
|
+
`tq sync` / enable / `tq wait` — see that folder’s README).
|
|
74
|
+
|
|
75
|
+
Optional Windows toasts: `uv sync --extra toast`. Autostart:
|
|
76
|
+
`scripts/install_tq_autostart.ps1`.
|
|
77
|
+
|
|
78
|
+
## Docs
|
|
79
|
+
|
|
80
|
+
| Audience | Start here |
|
|
81
|
+
|----------|------------|
|
|
82
|
+
| Humans | [docs/README.md](docs/README.md) · [Quickstart](docs/operators/quickstart.md) · [Web UI](docs/operators/web-ui.md) · [CLI](docs/operators/cli.md) |
|
|
83
|
+
| Agents | [AGENTS.md](AGENTS.md) · [MCP](docs/mcp.md) · [Cookbook](docs/agents/task-script-cookbook.md) · [llms.txt](llms.txt) |
|
|
84
|
+
|
|
85
|
+
**Advanced:** [Security & privacy](docs/security.md) · [Task standards](docs/task_standards.md) · [Scheduler](docs/scheduler.md) · [Workers](docs/WORKER_SETUP.md)
|
|
86
|
+
|
|
87
|
+
## Transparency
|
|
88
|
+
|
|
89
|
+
We do **not** phone home. Public signals are GitHub stars (badge above) and,
|
|
90
|
+
after a PyPI release under a distinct package name, download counts you can
|
|
91
|
+
verify yourself. Maintainers may use GitHub Traffic Insights (clones ≠ installs).
|
|
92
|
+
Details: [docs/security.md](docs/security.md#privacy--telemetry).
|
|
93
|
+
|
|
94
|
+
## License
|
|
95
|
+
|
|
96
|
+
MIT — see [LICENSE](LICENSE) · [Changelog](CHANGELOG.md)
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# tqdaemon
|
|
2
|
+
|
|
3
|
+
[English](README.md) | [Polski](README.pl.md) | [中文](README.zh.md) | [العربية](README.ar.md)
|
|
4
|
+
|
|
5
|
+
[](LICENSE)
|
|
6
|
+
[](https://www.python.org/downloads/)
|
|
7
|
+
[](https://github.com/wwylon/tqdaemon/actions/workflows/ci.yml)
|
|
8
|
+
[](https://pypi.org/project/tqdaemon/)
|
|
9
|
+
[](https://github.com/wwylon/tqdaemon/tags)
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
**tqdaemon** يشغّل المهام الطويلة على أجهزتك دون إنهاكها.
|
|
14
|
+
تصف كل مهمة في YAML. يعمل **daemon** محلي ويبدأ العمل فقط عند توفر
|
|
15
|
+
CPU وRAM وذاكرة GPU كافية. راقب التقدّم عبر **واجهة ويب** أو CLI **`tq`**
|
|
16
|
+
أو وكيل ترميز بالذكاء الاصطناعي (**MCP**).
|
|
17
|
+
|
|
18
|
+
ليس Celery أو Kubernetes أو CI. وليس مشروع AMQP/Debian القديم من 2011
|
|
19
|
+
[rojkov/taskqueue](https://github.com/rojkov/taskqueue) (simpletaskqueue).
|
|
20
|
+
|
|
21
|
+
## لماذا
|
|
22
|
+
|
|
23
|
+
- قبول المهام حسب الموارد (CPU / RAM / GPU) محلياً أو على عمال بعُدين
|
|
24
|
+
- YAML مع نقاط حفظ وتبعيات وأولويات ورموز أخطاء مستقرة
|
|
25
|
+
- مخصّص للوكلاء: إرسال وانتظار وتشخيص عبر MCP
|
|
26
|
+
- محلي أولاً — بلا حساب SaaS سحابي
|
|
27
|
+
|
|
28
|
+
## أفضل بداية: اطلب من الوكيل
|
|
29
|
+
|
|
30
|
+
اطلب من وكيلك (Cursor أو Claude Code وغيرهما) استخدام **tqdaemon** للمهام
|
|
31
|
+
الطويلة: إعداد MCP (`tq mcp`) وإرسال YAML و`wait_for_task` بدل حجب المحادثة.
|
|
32
|
+
الإعداد: **[docs/mcp.md](docs/mcp.md)**.
|
|
33
|
+
|
|
34
|
+
## التثبيت
|
|
35
|
+
|
|
36
|
+
**المتطلبات:** Python **3.12+** و[Git](https://git-scm.com/) و[`uv`](https://docs.astral.sh/uv/).
|
|
37
|
+
|
|
38
|
+
```powershell
|
|
39
|
+
git clone https://github.com/wwylon/tqdaemon.git
|
|
40
|
+
cd tqdaemon
|
|
41
|
+
uv sync
|
|
42
|
+
uv run tq doctor
|
|
43
|
+
uv run tq start
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
افتح **http://127.0.0.1:8765**. مثال:
|
|
47
|
+
[`examples/minimal`](examples/minimal/).
|
|
48
|
+
|
|
49
|
+
## التوثيق
|
|
50
|
+
|
|
51
|
+
| الجمهور | ابدأ من |
|
|
52
|
+
|---------|---------|
|
|
53
|
+
| بشر | [docs/README.md](docs/README.md) · [Quickstart](docs/operators/quickstart.md) · [Web UI](docs/operators/web-ui.md) · [CLI](docs/operators/cli.md) |
|
|
54
|
+
| وكلاء | [AGENTS.md](AGENTS.md) · [MCP](docs/mcp.md) · [Cookbook](docs/agents/task-script-cookbook.md) · [llms.txt](llms.txt) |
|
|
55
|
+
|
|
56
|
+
**متقدم:** [Security](docs/security.md) · [Task standards](docs/task_standards.md) · [Scheduler](docs/scheduler.md) · [Workers](docs/WORKER_SETUP.md)
|
|
57
|
+
|
|
58
|
+
## الشفافية
|
|
59
|
+
|
|
60
|
+
لا نرسل بيانات استخدام خفية. الإشارات العامة: نجوم GitHub؛ وبعد نشر PyPI
|
|
61
|
+
عدادات التحميل العامة. التفاصيل: [docs/security.md](docs/security.md#privacy--telemetry).
|
|
62
|
+
|
|
63
|
+
## الرخصة
|
|
64
|
+
|
|
65
|
+
MIT — [LICENSE](LICENSE) · [Changelog](CHANGELOG.md)
|
tqdaemon-0.8.0/README.md
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# tqdaemon
|
|
2
|
+
|
|
3
|
+
[English](README.md) | [Polski](README.pl.md) | [中文](README.zh.md) | [العربية](README.ar.md)
|
|
4
|
+
|
|
5
|
+
[](LICENSE)
|
|
6
|
+
[](https://www.python.org/downloads/)
|
|
7
|
+
[](https://github.com/wwylon/tqdaemon/actions/workflows/ci.yml)
|
|
8
|
+
[](https://pypi.org/project/tqdaemon/)
|
|
9
|
+
[](https://github.com/wwylon/tqdaemon/tags)
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
**tqdaemon** runs long jobs on your own machines without melting them.
|
|
14
|
+
Describe each job in YAML. A local **daemon** starts work only when there is
|
|
15
|
+
enough CPU, RAM, and GPU memory. Watch progress in a **web UI**, the **`tq`**
|
|
16
|
+
CLI, or from an **AI coding agent** (MCP).
|
|
17
|
+
|
|
18
|
+
Not Celery, Kubernetes, or CI. Not the 2011 AMQP/Debian
|
|
19
|
+
[rojkov/taskqueue](https://github.com/rojkov/taskqueue) (simpletaskqueue).
|
|
20
|
+
|
|
21
|
+
## Why use it
|
|
22
|
+
|
|
23
|
+
- Resource-aware admission (CPU / RAM / GPU VRAM) on one PC or with remote workers
|
|
24
|
+
- YAML jobs with checkpoints, deps, priorities, and stable error codes
|
|
25
|
+
- Built for **agents**: submit, wait, diagnose over MCP
|
|
26
|
+
- Local-first — no cloud SaaS account
|
|
27
|
+
|
|
28
|
+
## Best start: ask your agent
|
|
29
|
+
|
|
30
|
+
Tell your coding agent (Cursor, Claude Code, …) to use **tqdaemon** for long
|
|
31
|
+
jobs: wire MCP (`tq mcp`), submit YAML tasks, and `wait_for_task` instead of
|
|
32
|
+
blocking the chat. Setup: **[docs/mcp.md](docs/mcp.md)**.
|
|
33
|
+
|
|
34
|
+
## Install
|
|
35
|
+
|
|
36
|
+
**Need:** Python **3.12+**, [Git](https://git-scm.com/), [`uv`](https://docs.astral.sh/uv/).
|
|
37
|
+
|
|
38
|
+
**From PyPI:** `uvx --from tqdaemon tq doctor` (or `pipx install tqdaemon`). From source:
|
|
39
|
+
|
|
40
|
+
```powershell
|
|
41
|
+
git clone https://github.com/wwylon/tqdaemon.git
|
|
42
|
+
cd tqdaemon
|
|
43
|
+
uv sync
|
|
44
|
+
uv run tq doctor
|
|
45
|
+
uv run tq start
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Open **http://127.0.0.1:8765**. Try the sample in
|
|
49
|
+
[`examples/minimal`](examples/minimal/) (register it as a project, then
|
|
50
|
+
`tq sync` / enable / `tq wait` — see that folder’s README).
|
|
51
|
+
|
|
52
|
+
Optional Windows toasts: `uv sync --extra toast`. Autostart:
|
|
53
|
+
`scripts/install_tq_autostart.ps1`.
|
|
54
|
+
|
|
55
|
+
## Docs
|
|
56
|
+
|
|
57
|
+
| Audience | Start here |
|
|
58
|
+
|----------|------------|
|
|
59
|
+
| Humans | [docs/README.md](docs/README.md) · [Quickstart](docs/operators/quickstart.md) · [Web UI](docs/operators/web-ui.md) · [CLI](docs/operators/cli.md) |
|
|
60
|
+
| Agents | [AGENTS.md](AGENTS.md) · [MCP](docs/mcp.md) · [Cookbook](docs/agents/task-script-cookbook.md) · [llms.txt](llms.txt) |
|
|
61
|
+
|
|
62
|
+
**Advanced:** [Security & privacy](docs/security.md) · [Task standards](docs/task_standards.md) · [Scheduler](docs/scheduler.md) · [Workers](docs/WORKER_SETUP.md)
|
|
63
|
+
|
|
64
|
+
## Transparency
|
|
65
|
+
|
|
66
|
+
We do **not** phone home. Public signals are GitHub stars (badge above) and,
|
|
67
|
+
after a PyPI release under a distinct package name, download counts you can
|
|
68
|
+
verify yourself. Maintainers may use GitHub Traffic Insights (clones ≠ installs).
|
|
69
|
+
Details: [docs/security.md](docs/security.md#privacy--telemetry).
|
|
70
|
+
|
|
71
|
+
## License
|
|
72
|
+
|
|
73
|
+
MIT — see [LICENSE](LICENSE) · [Changelog](CHANGELOG.md)
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# tqdaemon
|
|
2
|
+
|
|
3
|
+
[English](README.md) | [Polski](README.pl.md) | [中文](README.zh.md) | [العربية](README.ar.md)
|
|
4
|
+
|
|
5
|
+
[](LICENSE)
|
|
6
|
+
[](https://www.python.org/downloads/)
|
|
7
|
+
[](https://github.com/wwylon/tqdaemon/actions/workflows/ci.yml)
|
|
8
|
+
[](https://pypi.org/project/tqdaemon/)
|
|
9
|
+
[](https://github.com/wwylon/tqdaemon/tags)
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
**tqdaemon** uruchamia długie zadania na Twoich komputerach, nie przeciążając
|
|
14
|
+
ich. Opisujesz job w YAML. Lokalny **daemon** startuje pracę tylko gdy jest
|
|
15
|
+
wystarczająco CPU, RAM i pamięci GPU. Postęp śledzisz w **UI**, CLI **`tq`**
|
|
16
|
+
lub przez agenta AI (**MCP**).
|
|
17
|
+
|
|
18
|
+
To nie Celery, Kubernetes ani CI. To też nie stary projekt AMQP/Debian
|
|
19
|
+
[rojkov/taskqueue](https://github.com/rojkov/taskqueue) (simpletaskqueue).
|
|
20
|
+
|
|
21
|
+
## Po co
|
|
22
|
+
|
|
23
|
+
- Przyjmowanie zadań według zasobów (CPU / RAM / GPU) lokalnie lub na workerach
|
|
24
|
+
- YAML: checkpointy, zależności, priorytety, stabilne kody błędów
|
|
25
|
+
- Pod agentów: submit / wait / diagnose przez MCP
|
|
26
|
+
- Lokalnie — bez konta w chmurze SaaS
|
|
27
|
+
|
|
28
|
+
## Najlepszy start: poproś agenta
|
|
29
|
+
|
|
30
|
+
Powiedz agentowi (Cursor, Claude Code, …), żeby używał **tqdaemon** do długich
|
|
31
|
+
jobów: MCP (`tq mcp`), YAML i `wait_for_task` zamiast blokować czat.
|
|
32
|
+
Setup: **[docs/mcp.md](docs/mcp.md)**.
|
|
33
|
+
|
|
34
|
+
## Instalacja
|
|
35
|
+
|
|
36
|
+
**Wymagania:** Python **3.12+**, [Git](https://git-scm.com/), [`uv`](https://docs.astral.sh/uv/).
|
|
37
|
+
|
|
38
|
+
```powershell
|
|
39
|
+
git clone https://github.com/wwylon/tqdaemon.git
|
|
40
|
+
cd tqdaemon
|
|
41
|
+
uv sync
|
|
42
|
+
uv run tq doctor
|
|
43
|
+
uv run tq start
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Otwórz **http://127.0.0.1:8765**. Przykład:
|
|
47
|
+
[`examples/minimal`](examples/minimal/).
|
|
48
|
+
|
|
49
|
+
## Dokumentacja
|
|
50
|
+
|
|
51
|
+
| Dla | Start |
|
|
52
|
+
|-----|--------|
|
|
53
|
+
| Ludzie | [docs/README.md](docs/README.md) · [Quickstart](docs/operators/quickstart.md) · [Web UI](docs/operators/web-ui.md) · [CLI](docs/operators/cli.md) |
|
|
54
|
+
| Agenci | [AGENTS.md](AGENTS.md) · [MCP](docs/mcp.md) · [Cookbook](docs/agents/task-script-cookbook.md) · [llms.txt](llms.txt) |
|
|
55
|
+
|
|
56
|
+
**Zaawansowane:** [Security](docs/security.md) · [Task standards](docs/task_standards.md) · [Scheduler](docs/scheduler.md) · [Workers](docs/WORKER_SETUP.md)
|
|
57
|
+
|
|
58
|
+
## Przejrzystość
|
|
59
|
+
|
|
60
|
+
Nie wysyłamy telemetrii. Publiczne sygnały: gwiazdki GitHub; po publikacji na
|
|
61
|
+
PyPI — liczniki pobrań. Szczegóły: [docs/security.md](docs/security.md#privacy--telemetry).
|
|
62
|
+
|
|
63
|
+
## Licencja
|
|
64
|
+
|
|
65
|
+
MIT — [LICENSE](LICENSE) · [Changelog](CHANGELOG.md)
|