LICENSE
README.md
pyproject.toml
feather/__init__.py
feather/_optional.py
feather/py.typed
feather/auth/__init__.py
feather/auth/decorators.py
feather/auth/domains.py
feather/auth/google.py
feather/auth/permissions.py
feather/auth/permissions_logic.py
feather/auth/roles.py
feather/auth/routes.py
feather/auth/setup.py
feather/auth/tenancy.py
feather/cache/__init__.py
feather/cache/base.py
feather/cache/decorators.py
feather/cache/memory.py
feather/cache/redis.py
feather/cli/__init__.py
feather/cli/_agent_files.py
feather/cli/_docker_templates.py
feather/cli/_templates_link.py
feather/cli/build.py
feather/cli/check.py
feather/cli/components.py
feather/cli/db.py
feather/cli/dev.py
feather/cli/docker.py
feather/cli/dx.py
feather/cli/env.py
feather/cli/generate.py
feather/cli/jobs.py
feather/cli/new.py
feather/cli/platform_admin.py
feather/cli/security_check.py
feather/cli/worker.py
feather/core/__init__.py
feather/core/app.py
feather/core/config.py
feather/core/decorators.py
feather/core/discovery.py
feather/core/error_handlers.py
feather/core/health.py
feather/core/helpers.py
feather/core/middleware.py
feather/core/registry.py
feather/core/security.py
feather/db/__init__.py
feather/db/base.py
feather/db/mixins.py
feather/db/pagination.py
feather/events/__init__.py
feather/events/dispatcher.py
feather/events/events.py
feather/exceptions/__init__.py
feather/jobs/__init__.py
feather/jobs/base.py
feather/jobs/monitoring.py
feather/jobs/rq.py
feather/jobs/scheduler.py
feather/jobs/sync.py
feather/jobs/thread.py
feather/scaffold/__init__.py
feather/scaffold/_manifest.py
feather/scaffold/_render.py
feather/scaffold/__pycache__/__init__.cpython-312.pyc
feather/scaffold/__pycache__/_manifest.cpython-312.pyc
feather/scaffold/__pycache__/_render.cpython-312.pyc
feather/scaffold/auth/app.py.tmpl
feather/scaffold/auth/rate_limits.py.tmpl
feather/scaffold/auth/seeds.py.tmpl
feather/scaffold/auth/_fragments/admin_logo_svg.html.tmpl
feather/scaffold/auth/_fragments/agents_auth_patterns.md.tmpl
feather/scaffold/auth/_fragments/agents_auth_routes.md.tmpl
feather/scaffold/auth/_fragments/agents_auth_rules.md.tmpl
feather/scaffold/auth/_fragments/agents_rate_limits.md.tmpl
feather/scaffold/auth/_fragments/agents_seed_command.md.tmpl
feather/scaffold/auth/_fragments/config_auth_admin.py.tmpl
feather/scaffold/auth/_fragments/config_auth_session.py.tmpl
feather/scaffold/auth/_fragments/config_auth_tenant.py.tmpl
feather/scaffold/auth/_fragments/config_dev_auth.py.tmpl
feather/scaffold/auth/_fragments/config_prod_auth.py.tmpl
feather/scaffold/auth/_fragments/config_ratelimit.py.tmpl
feather/scaffold/auth/_fragments/env_oauth.env.tmpl
feather/scaffold/auth/_fragments/env_ratelimit.env.tmpl
feather/scaffold/auth/models/__init__.py.tmpl
feather/scaffold/auth/models/account.py.tmpl
feather/scaffold/auth/models/log.py.tmpl
feather/scaffold/auth/models/user.py.tmpl
feather/scaffold/auth/routes/api/health.py.tmpl
feather/scaffold/auth/routes/pages/account.py.tmpl
feather/scaffold/auth/routes/pages/admin.py.tmpl
feather/scaffold/auth/services/admin_service.py.tmpl
feather/scaffold/auth/static/js/admin-chart.js.tmpl
feather/scaffold/auth/static/js/admin.js.tmpl
feather/scaffold/auth/templates/pages/home.html.tmpl
feather/scaffold/auth/templates/pages/account/suspended.html.tmpl
feather/scaffold/auth/templates/pages/admin/analytics.html.tmpl
feather/scaffold/auth/templates/pages/admin/base.html.tmpl
feather/scaffold/auth/templates/pages/admin/logs.html.tmpl
feather/scaffold/auth/templates/pages/admin/tools.html.tmpl
feather/scaffold/auth/templates/pages/admin/user_detail.html.tmpl
feather/scaffold/auth/templates/pages/admin/users.html.tmpl
feather/scaffold/auth/templates/partials/admin/logs_table.html.tmpl
feather/scaffold/auth/templates/partials/admin/user_actions.html.tmpl
feather/scaffold/auth/templates/partials/admin/users_table.html.tmpl
feather/scaffold/auth/tests/test_admin.py.tmpl
feather/scaffold/auth/tests/test_auth.py.tmpl
feather/scaffold/auth_auto_approval/_fragments/config_auth_autoapprove.py.tmpl
feather/scaffold/auth_auto_approval/_fragments/status_badge.html.tmpl
feather/scaffold/auth_auto_approval/_fragments/status_description.html.tmpl
feather/scaffold/auth_email/_fragments/admin_email_routes.py.tmpl
feather/scaffold/auth_email/templates/pages/admin/tools.html.tmpl
feather/scaffold/auth_email/templates/partials/admin/email_result.html.tmpl
feather/scaffold/auth_manual_approval/_fragments/account_pending_route.py.tmpl
feather/scaffold/auth_manual_approval/_fragments/status_badge.html.tmpl
feather/scaffold/auth_manual_approval/_fragments/status_description.html.tmpl
feather/scaffold/auth_manual_approval/templates/pages/account/pending.html.tmpl
feather/scaffold/base/app.py.tmpl
feather/scaffold/base/config.py.tmpl
feather/scaffold/base/dot_env.tmpl
feather/scaffold/base/dot_gitignore.tmpl
feather/scaffold/base/package.json.tmpl
feather/scaffold/base/requirements.txt.tmpl
feather/scaffold/base/vite.config.js.tmpl
feather/scaffold/base/_fragments/agents_body.md.tmpl
feather/scaffold/base/_fragments/agents_deploy_rows.md.tmpl
feather/scaffold/base/_fragments/agents_deploy_rules.md.tmpl
feather/scaffold/base/_fragments/config_cache.py.tmpl
feather/scaffold/base/_fragments/config_imports.py.tmpl
feather/scaffold/base/_fragments/config_jobs.py.tmpl
feather/scaffold/base/_fragments/env_debug.env.tmpl
feather/scaffold/base/routes/__init__.py.tmpl
feather/scaffold/base/routes/api/__init__.py.tmpl
feather/scaffold/base/routes/api/health.py.tmpl
feather/scaffold/base/routes/pages/__init__.py.tmpl
feather/scaffold/base/routes/pages/home.py.tmpl
feather/scaffold/base/services/__init__.py.tmpl
feather/scaffold/base/static/css/app.css.tmpl
feather/scaffold/base/static/islands/counter.js.tmpl
feather/scaffold/base/static/js/app.js.tmpl
feather/scaffold/base/static/js/vendor.js.tmpl
feather/scaffold/base/templates/base.html.tmpl
feather/scaffold/base/templates/components/README.md.tmpl
feather/scaffold/base/templates/pages/home.html.tmpl
feather/scaffold/base/templates/partials/like_button.html.tmpl
feather/scaffold/base/templates/partials/load_more.html.tmpl
feather/scaffold/base/tests/__init__.py.tmpl
feather/scaffold/base/tests/conftest.py.tmpl
feather/scaffold/base/tests/test_home.py.tmpl
feather/scaffold/cache/_fragments/config_cache.py.tmpl
feather/scaffold/cache/_fragments/env_redis.env.tmpl
feather/scaffold/cache_jobs/_fragments/env_redis.env.tmpl
feather/scaffold/db/_fragments/agents_db_commands.md.tmpl
feather/scaffold/db/_fragments/agents_db_patterns.md.tmpl
feather/scaffold/db/_fragments/agents_deploy_rows.md.tmpl
feather/scaffold/db/_fragments/agents_deploy_rules.md.tmpl
feather/scaffold/db/_fragments/agents_models_dir.md.tmpl
feather/scaffold/db/_fragments/config_database.py.tmpl
feather/scaffold/db/_fragments/env_database.env.tmpl
feather/scaffold/db/migrations/alembic.ini.tmpl
feather/scaffold/db/migrations/env.py.tmpl
feather/scaffold/db/migrations/script.py.mako.tmpl
feather/scaffold/db/models/__init__.py.tmpl
feather/scaffold/db/tests/conftest.py.tmpl
feather/scaffold/email/_fragments/config_email.py.tmpl
feather/scaffold/email/_fragments/env_email.env.tmpl
feather/scaffold/email/_fragments/services_email_import.py.tmpl
feather/scaffold/email/services/email_service.py.tmpl
feather/scaffold/jobs/_fragments/agents_worker_target.md.tmpl
feather/scaffold/jobs/_fragments/config_imports.py.tmpl
feather/scaffold/jobs/_fragments/config_jobs.py.tmpl
feather/scaffold/jobs/_fragments/config_jobs_guard.py.tmpl
feather/scaffold/jobs/_fragments/config_prod_jobs.py.tmpl
feather/scaffold/jobs/_fragments/env_debug.env.tmpl
feather/scaffold/jobs/_fragments/env_jobs.env.tmpl
feather/scaffold/jobs/_fragments/env_redis.env.tmpl
feather/scaffold/multi_tenant/seeds.py.tmpl
feather/scaffold/multi_tenant/_fragments/admin_tenant_routes.py.tmpl
feather/scaffold/multi_tenant/_fragments/agents_multi_tenant_patterns.md.tmpl
feather/scaffold/multi_tenant/_fragments/agents_multi_tenant_rules.md.tmpl
feather/scaffold/multi_tenant/models/__init__.py.tmpl
feather/scaffold/multi_tenant/models/log.py.tmpl
feather/scaffold/multi_tenant/models/tenant.py.tmpl
feather/scaffold/multi_tenant/models/user.py.tmpl
feather/scaffold/multi_tenant/services/admin_service.py.tmpl
feather/scaffold/multi_tenant/templates/pages/admin/base.html.tmpl
feather/scaffold/multi_tenant/templates/pages/admin/tenant_detail.html.tmpl
feather/scaffold/multi_tenant/templates/pages/admin/tenants.html.tmpl
feather/scaffold/multi_tenant/templates/partials/admin/tenant_actions.html.tmpl
feather/scaffold/multi_tenant/templates/partials/admin/tenants_table.html.tmpl
feather/scaffold/storage/_fragments/config_storage.py.tmpl
feather/scaffold/storage/_fragments/env_storage.env.tmpl
feather/serializers/__init__.py
feather/serializers/base.py
feather/services/__init__.py
feather/services/base.py
feather/static/api.js
feather/static/apple-touch-icon.png
feather/static/dark-mode.js
feather/static/dropdown.js
feather/static/favicon.svg
feather/static/feather.js
feather/static/icon-192.png
feather/static/icon-512.png
feather/static/page-loader.js
feather/static/prompt-modal.js
feather/static/toast.js
feather/storage/__init__.py
feather/storage/base.py
feather/storage/gcs.py
feather/storage/local.py
feather/templates/components/__init__.html
feather/templates/components/alert.html
feather/templates/components/button.html
feather/templates/components/card.html
feather/templates/components/confirm_modal.html
feather/templates/components/dropdown.html
feather/templates/components/htmx_indicator.html
feather/templates/components/icon.html
feather/templates/components/input.html
feather/templates/components/modal.html
feather/templates/components/page_loader.html
feather/templates/components/prompt_modal.html
feather/templates/components/spinner.html
feather/templates/components/toast.html
feather/templates/errors/auth_required.html
feather/templates/errors/error.html
feather_framework.egg-info/PKG-INFO
feather_framework.egg-info/SOURCES.txt
feather_framework.egg-info/dependency_links.txt
feather_framework.egg-info/entry_points.txt
feather_framework.egg-info/requires.txt
feather_framework.egg-info/top_level.txt
tests/test_auth_hardening.py