github Python analyzed cdc278e

Unlimited-Data-Works-LLC/Email-Triage

github

HIPAA compliant email triage

maintainer
Unlimited-Data-Works-LLC
licence
Apache-2.0
first seen
2026-07-26
last seen
2026-08-05
releases · 30d
0
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 0 tools
transport stdio · http counts 0 tools · 0 res · 0 prompts permission surface via code analysis

No tools enumerated yet for this server.

skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit cdc278e · analyzer v33 · 2w ago

skills & prompt files 1

danger signals5

code evidence vv0.1.2 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 517

filesystem 92

  • fs (weak) Unlimited-Data-Works-LLC-Email-Triage-cdc278e/openclaw/skills/email-triage-api/scripts/email-triage-api.py :68 with open(path, encoding="utf-8") as f:
  • fs (weak) Unlimited-Data-Works-LLC-Email-Triage-cdc278e/openclaw/skills/email-triage-api/tests/test_multiuser.py :14 from pathlib import Path
  • fs (weak) Unlimited-Data-Works-LLC-Email-Triage-cdc278e/scripts/build-embedding-bits-manifest.py :59 from pathlib import Path
  • fs (weak) Unlimited-Data-Works-LLC-Email-Triage-cdc278e/scripts/gen-pwa-icons.py :34 from pathlib import Path
  • fs (weak) Unlimited-Data-Works-LLC-Email-Triage-cdc278e/scripts/verify-draft-headers.py :10 from pathlib import Path
  • fs Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/backup.py :45 from pathlib import Path
  • fs Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/backup_snapshot_cleanup.py :41 from pathlib import Path
  • fs Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/cli.py :33 from pathlib import Path
  • fs Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/config.py :14 from pathlib import Path
  • fs Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/db/_engine.py :52 from pathlib import Path
  • fs Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/db/_migrate.py :43 import shutil
  • fs Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/embedding_bits/__init__.py :68 import shutil
show 28 more
  • fs Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/engine/store.py :35 from pathlib import Path
  • fs Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/providers/imap.py :1957 # means the TCP socket is half-open (NAT/firewall idle
  • fs Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/providers/office365.py :26 from pathlib import Path
  • fs Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/secrets.py :34 from pathlib import Path
  • fs Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/tls.py :20 from pathlib import Path
  • fs Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/tls_csr.py :28 from pathlib import Path
  • fs Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/version.py :39 from pathlib import Path
  • fs Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/acme_renewer.py :48 from pathlib import Path
  • fs Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/app.py :18 from pathlib import Path
  • fs Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/daily_health.py :840 from pathlib import Path as _Path
  • fs Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/db.py :12 from pathlib import Path
  • fs Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/db_writelock.py :46 when a transaction is actually open (``conn.in_transaction``) and only
  • fs Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/migrations.py :2941 are skipped while the LLM circuit breaker is open (re-running classify
  • fs Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/routers/auth_keys.py :1646 from pathlib import Path
  • fs Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/routers/backup.py :24 from pathlib import Path
  • fs Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/routers/tls_csr.py :23 from pathlib import Path
  • fs Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/routers/ui/_shared.py :5656 from pathlib import Path
  • fs Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/routers/ui/embedding_install.py :55 from pathlib import Path
  • fs (weak) Unlimited-Data-Works-LLC-Email-Triage-cdc278e/tests/test_acme_renewer.py :16 from pathlib import Path
  • fs (weak) Unlimited-Data-Works-LLC-Email-Triage-cdc278e/tests/test_actions/test_add_label.py :369 from pathlib import Path
  • fs (weak) Unlimited-Data-Works-LLC-Email-Triage-cdc278e/tests/test_alembic_baseline.py :40 from pathlib import Path
  • fs (weak) Unlimited-Data-Works-LLC-Email-Triage-cdc278e/tests/test_backup.py :22 from pathlib import Path
  • fs (weak) Unlimited-Data-Works-LLC-Email-Triage-cdc278e/tests/test_backup_snapshot_cleanup.py :21 from pathlib import Path
  • fs (weak) Unlimited-Data-Works-LLC-Email-Triage-cdc278e/tests/test_cache/test_classification.py :1083 from pathlib import Path
  • fs (weak) Unlimited-Data-Works-LLC-Email-Triage-cdc278e/tests/test_cache/test_classification_async.py :486 from pathlib import Path
  • fs (weak) Unlimited-Data-Works-LLC-Email-Triage-cdc278e/tests/test_cli.py :4 from pathlib import Path
  • fs (weak) Unlimited-Data-Works-LLC-Email-Triage-cdc278e/tests/test_cli_audit.py :14 from pathlib import Path
  • fs (weak) Unlimited-Data-Works-LLC-Email-Triage-cdc278e/tests/test_cli_restore.py :9 from pathlib import Path

52 more not shown — this panel samples each group; the count above is the real total.

shell / exec 6

  • shell (weak) Unlimited-Data-Works-LLC-Email-Triage-cdc278e/openclaw/skills/email-triage-api/tests/test_multiuser.py :12 import subprocess
  • shell Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/embedding_bits/__init__.py :70 import subprocess
  • shell Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/tls.py :178 import subprocess
  • shell (weak) Unlimited-Data-Works-LLC-Email-Triage-cdc278e/tests/test_alembic_baseline.py :38 import subprocess
  • shell (weak) Unlimited-Data-Works-LLC-Email-Triage-cdc278e/tests/test_embedding_bits/test_runtime_ready_check.py :6 import subprocess
  • shell (weak) Unlimited-Data-Works-LLC-Email-Triage-cdc278e/tests/test_tls.py :4 import subprocess

network 51

  • net (weak) Unlimited-Data-Works-LLC-Email-Triage-cdc278e/openclaw/skills/email-triage-api/scripts/email-triage-api.py :46 import urllib.error
  • net (weak) Unlimited-Data-Works-LLC-Email-Triage-cdc278e/scripts/build-embedding-bits-manifest.py :17 * Pure stdlib (argparse + urllib.request). No new install-time dep.
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/_http_client.py :1 """Lazy-init / lock-protected ``httpx.AsyncClient`` holder.
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/ai_backends/azure_openai.py :57 from urllib.parse import urlsplit
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/ai_backends/gemini_adapter.py :58 from urllib.parse import urlsplit
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/ai_backends/openai_direct.py :65 from urllib.parse import urlsplit
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/classify/baa_gate.py :30 from urllib.parse import urlparse
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/classify/base.py :52 from urllib.parse import urlparse
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/classify/gemini.py :4 via httpx. Requires an API key from Google AI Studio or Vertex AI.
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/classify/ollama.py :3 Uses the Ollama REST API (``/api/chat``) via httpx. This is the default
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/cli.py :2553 import httpx
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/embedding_bits/__init__.py :75 import urllib.error
show 28 more
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/engine/embedding_backend.py :44 import httpx
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/llm_health.py :64 Wraps the underlying ``httpx.ConnectError`` /
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/providers/_oauth_http.py :70 client: ``httpx.AsyncClient`` to issue the request on.
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/providers/calendar_base.py :20 import httpx
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/providers/dispatcher.py :180 import socket
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/providers/gmail_api.py :28 import httpx
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/providers/gmail_calendar.py :23 import httpx
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/providers/office365.py :29 import httpx
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/providers/office365_calendar.py :16 import httpx
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/acme_renewer.py :1624 import requests
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/csrf.py :53 from urllib.parse import parse_qs
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/daily_health.py :45 import urllib.error
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/events.py :32 import httpx
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/gmail_push_auth.py :20 import httpx
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/ingestion_push.py :113 import httpx
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/routers/auth_keys.py :137 from urllib.parse import urlparse
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/routers/backup.py :176 import socket
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/routers/ui/accounts.py :318 from urllib.parse import urlencode
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/routers/ui/admin.py :1162 from urllib.parse import urlencode
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/routers/ui/retry_queue.py :192 # qualname prefix ("httpx.ReadTimeout" → "ReadTimeout").
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/routers/ui/wizard.py :725 from urllib.parse import quote
  • net Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/watch_runner.py :28 import httpx
  • net (weak) Unlimited-Data-Works-LLC-Email-Triage-cdc278e/tests/test_ai_backends/test_breaker_integration.py :10 * a connect-class failure (``httpx.ConnectError``) on the pooled
  • net (weak) Unlimited-Data-Works-LLC-Email-Triage-cdc278e/tests/test_classify/test_gemini.py :62 httpx.AsyncClient(...)`` per call. The stub returns ``mock_resp``
  • net (weak) Unlimited-Data-Works-LLC-Email-Triage-cdc278e/tests/test_classify/test_ollama.py :123 with patch("email_triage.classify.ollama.httpx.AsyncClient") as mock_client_cls:
  • net (weak) Unlimited-Data-Works-LLC-Email-Triage-cdc278e/tests/test_classify/test_openai_compat.py :57 httpx.AsyncClient(...)`` per call. The stub returns ``mock_resp``
  • net (weak) Unlimited-Data-Works-LLC-Email-Triage-cdc278e/tests/test_http_client_long_lived.py :1 """Bundle J / — long-lived ``httpx.AsyncClient`` invariants.
  • net (weak) Unlimited-Data-Works-LLC-Email-Triage-cdc278e/tests/test_llm_health.py :10 import httpx

11 more not shown — this panel samples each group; the count above is the real total.

secrets 4

  • secrets (weak) Unlimited-Data-Works-LLC-Email-Triage-cdc278e/openclaw/skills/email-triage-api/scripts/email-triage-api.py :138 return os.environ.get("EMAIL_TRIAGE_TOKEN", "") or ""
  • secrets Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/cli.py :742 import getpass
  • secrets Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/secrets.py :312 import keyring as kr
  • secrets (weak) Unlimited-Data-Works-LLC-Email-Triage-cdc278e/tests/test_secrets.py :188 os.environ["TEST_MASTER_KEY"] = master_key

database 143

  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/actions/hipaa_sent_counter.py :79 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/actions/hipaa_style_distill.py :81 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/actions/sent_mail_capture.py :68 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/actions/sent_mail_index.py :55 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/ai_backends/loader.py :40 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/baa_expiry.py :67 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/backup.py :40 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/cache/classification.py :630 import redis # type: ignore[import-not-found]
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/classify/baa_gate.py :28 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/cli.py :1865 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/db/_engine.py :51 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/db/_helpers.py :30 import sqlite3
show 28 more
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/db/_migrate.py :44 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/db/accounts.py :51 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/db/audit.py :38 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/db/reconciliation.py :57 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/db/style.py :86 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/db/users.py :18 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/embedding_bits/__init__.py :69 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/engine/persistent_counters.py :92 import redis # type: ignore[import-not-found]
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/engine/store.py :33 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/jobs/embedding_reindex.py :53 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/providers/dispatcher.py :149 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/providers/provider_labels.py :47 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/single_flight.py :48 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/style_learning/distill_hipaa.py :51 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/style_learning/per_contact_hipaa.py :83 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/style_learning/trigger_watcher.py :88 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/triage_logging.py :27 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/version.py :37 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/acme_job_state.py :39 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/acme_renewer.py :43 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/app.py :14 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/auth.py :18 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/background_sweepers.py :43 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/daily_health.py :43 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/db.py :10 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/db_writelock.py :57 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/dependencies.py :47 import sqlite3
  • db Unlimited-Data-Works-LLC-Email-Triage-cdc278e/src/email_triage/web/email_watches.py :56 import sqlite3

103 more not shown — this panel samples each group; the count above is the real total.

declared dependencies 25

  • mcp@>=1.0.0
  • pyyaml@>=6.0
  • httpx@>=0.27.0
  • fastapi@>=0.115.0
  • uvicorn@>=0.30.0
  • jinja2@>=3.1.0
  • python-multipart@>=0.0.9
  • itsdangerous@>=2.2.0
  • pyjwt@>=2.8.0
  • icalendar@>=5.0
  • cryptography@>=43.0.0
  • s@library, BSD).
show 13 more
  • acme@>=2.10
  • josepy@>=1.14
  • keyring@>=25.0.0
  • sqlcipher3-binary@>=0.5.4,<0.6
  • aioimaplib@>=1.1.0
  • msal@>=1.30.0
  • openai@>=1.0.0
  • google-generativeai@>=0.8.0
  • redis@>=5.0
  • sentence-transformers@>=3.0
  • pytest@>=8.0
  • pytest-asyncio@>=0.24
  • pytest-xdist@>=3.5