kryten-webqueue 0.33.2__tar.gz → 0.33.4__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.
- kryten_webqueue-0.33.4/.github/workflows/gitleaks.yml +31 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/.gitignore +3 -0
- kryten_webqueue-0.33.4/.gitleaks.toml +6 -0
- kryten_webqueue-0.33.4/.pre-commit-config.yaml +36 -0
- kryten_webqueue-0.33.4/AGENT-WORKFLOW-GUIDE.md +1247 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/CHANGELOG.md +24 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/PKG-INFO +1 -1
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/config.example.json +11 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/api_gate/client.py +13 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/app.py +22 -1
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/catalog/db/_connection.py +0 -1
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/config.py +19 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/integrations/cmsutils/enrichmeta.py +1 -1
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/integrations/cmsutils/fetchurls.py +9 -9
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/integrations/ytpipe/downloader.py +42 -36
- kryten_webqueue-0.33.4/kryten_webqueue/jobs/rehost_emotes.py +289 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/routes/admin_playlists.py +0 -1
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/routes/pages.py +1 -2
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/pyproject.toml +1 -1
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/.github/workflows/python-publish.yml +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/.github/workflows/release.yml +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/README.md +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/deploy/kryten-webqueue.service +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/deploy/nginx-queue.conf +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/docs/IMPLEMENTATION_SPEC.md +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/docs/IMPL_API_GATE.md +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/docs/IMPL_ECONOMY.md +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/docs/IMPL_KRYTEN_PY.md +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/docs/IMPL_ROBOT.md +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/docs/Kryten-Economy Service Quality Survey Report at v0.13.0.md +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/docs/Kryten-Webqueue Service Quality Survey Report at v0.27.1.md +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/docs/Log for incorrect promo insertion problem.txt +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/docs/PLAN_PRESENCE_AND_PROMOS.md +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/docs/PRE_PLAN_GAPS.md +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/docs/PRODUCT_PLAN.md +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/docs/SPEC_JOBS_AND_BROWSE.md +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/docs/UX_POLISH_PLAN.md +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/__init__.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/__main__.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/api_gate/__init__.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/auth/__init__.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/auth/otp.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/auth/rate_limit.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/auth/session.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/catalog/__init__.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/catalog/db/__init__.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/catalog/db/_catalog.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/catalog/db/_feedback.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/catalog/db/_playlists.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/catalog/db/_queue.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/catalog/images.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/catalog/mediacms.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/catalog/sync.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/integrations/__init__.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/integrations/cmsutils/__init__.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/integrations/cmsutils/_common.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/integrations/cmsutils/enrichtitles.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/integrations/cmsutils/enrichtv.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/integrations/ytpipe/__init__.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/jobs/__init__.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/jobs/fetchurls_auth.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/jobs/manager.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/jobs/tasks.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/logging_config.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/playlists/__init__.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/playlists/bulk_add.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/playlists/fire.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/playlists/importer.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/playlists/ordering.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/playlists/scheduler.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/promos/__init__.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/promos/director.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/queue/__init__.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/queue/completion.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/queue/ordering.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/queue/poller.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/queue/presence.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/queue/race_poller.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/queue/shadow.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/routes/__init__.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/routes/admin_catalog.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/routes/admin_feedback.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/routes/admin_jobs.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/routes/admin_moderation.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/routes/admin_promos.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/routes/admin_queue.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/routes/admin_schedules.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/routes/auth.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/routes/catalog.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/routes/feedback.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/routes/queue.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/routes/user.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/static/css/main.css +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/static/js/admin-playlists.js +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/static/js/admin-promos.js +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/static/js/admin-queue-mgmt.js +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/static/js/admin-schedules.js +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/static/js/admin.js +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/static/js/main.js +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/templates/admin/index.html +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/templates/admin/playlists.html +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/templates/admin/promos.html +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/templates/admin/queue_mgmt.html +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/templates/admin/schedules.html +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/templates/auth/login.html +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/templates/base.html +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/templates/catalog/browse.html +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/templates/catalog/item_detail.html +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/templates/catalog/item_not_found.html +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/templates/feedback/index.html +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/templates/queue/index.html +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/templates/race.html +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/templates/user/dashboard.html +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/ws/__init__.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/ws/handler.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/kryten_webqueue/ws/manager.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/tests/__init__.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/tests/test_config_persistence.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/tests/test_feedback.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/tests/test_fetchurls_sharepoint.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/tests/test_phase1.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/tests/test_phase2_jobs.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/tests/test_phase3_jobs.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/tests/test_phase4_live_fixes.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/tests/test_playlist_import.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/tests/test_presence_refund.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/tests/test_promo_director.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/tests/test_promo_pool_exclusion.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/tests/test_queue_announce.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/tests/test_race_poller.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/tests/test_recently_played_hide.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/tests/test_save_results_to_playlist.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/tests/test_schedule_lock.py +0 -0
- {kryten_webqueue-0.33.2 → kryten_webqueue-0.33.4}/tests/test_search_facets.py +0 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
name: Secret Scan (gitleaks)
|
|
2
|
+
|
|
3
|
+
# Server-side enforcement of the ecosystem secret-scanning requirement.
|
|
4
|
+
# Local pre-commit hooks can be bypassed (--no-verify); this gate cannot.
|
|
5
|
+
on:
|
|
6
|
+
push:
|
|
7
|
+
branches: [ main ]
|
|
8
|
+
pull_request:
|
|
9
|
+
branches: [ main ]
|
|
10
|
+
workflow_dispatch:
|
|
11
|
+
|
|
12
|
+
permissions:
|
|
13
|
+
contents: read
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
gitleaks:
|
|
17
|
+
name: gitleaks
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v4
|
|
21
|
+
with:
|
|
22
|
+
# Full history so the scan covers every commit in the push / PR range.
|
|
23
|
+
fetch-depth: 0
|
|
24
|
+
|
|
25
|
+
- name: Run gitleaks
|
|
26
|
+
uses: gitleaks/gitleaks-action@v2
|
|
27
|
+
env:
|
|
28
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
29
|
+
# gitleaks-action is free for public repos. For a private repo, add a
|
|
30
|
+
# GITLEAKS_LICENSE org/repo secret (see gitleaks-action docs).
|
|
31
|
+
# Rules + allowlist are read from .gitleaks.toml at the repo root.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Pre-commit hooks (Kryten ecosystem).
|
|
2
|
+
#
|
|
3
|
+
# Runs safe auto-fixers (ruff --fix, black) and a secret scan (gitleaks) before each
|
|
4
|
+
# commit. ruff/black apply fixes and abort the commit so you re-stage and commit again.
|
|
5
|
+
# ruff and black run via `uv run` so they use THIS repo's exact locked versions — the same
|
|
6
|
+
# ones CI uses — avoiding formatter/linter drift between local commits and CI.
|
|
7
|
+
#
|
|
8
|
+
# One-time setup per clone:
|
|
9
|
+
# 1. uv sync # create the project env (ruff/black live here)
|
|
10
|
+
# 2. Install the gitleaks binary: winget install Gitleaks.Gitleaks (macOS: brew install gitleaks)
|
|
11
|
+
# 3. pipx install pre-commit # or: pip install pre-commit
|
|
12
|
+
# 4. pre-commit install
|
|
13
|
+
#
|
|
14
|
+
# Manual run: pre-commit run --all-files
|
|
15
|
+
# Config: ruff/black read pyproject.toml; gitleaks reads .gitleaks.toml.
|
|
16
|
+
repos:
|
|
17
|
+
- repo: local
|
|
18
|
+
hooks:
|
|
19
|
+
- id: ruff
|
|
20
|
+
name: ruff (lint + safe autofix)
|
|
21
|
+
entry: uv run --no-sync ruff check --fix --force-exclude
|
|
22
|
+
language: system
|
|
23
|
+
types_or: [python, pyi]
|
|
24
|
+
require_serial: true
|
|
25
|
+
- id: black
|
|
26
|
+
name: black (format)
|
|
27
|
+
entry: uv run --no-sync black
|
|
28
|
+
language: system
|
|
29
|
+
types_or: [python, pyi]
|
|
30
|
+
require_serial: true
|
|
31
|
+
- id: gitleaks
|
|
32
|
+
name: gitleaks (secret scan)
|
|
33
|
+
description: Block commits that introduce secrets.
|
|
34
|
+
entry: gitleaks git --pre-commit --staged --redact --verbose
|
|
35
|
+
language: system
|
|
36
|
+
pass_filenames: false
|