.gitignore
.pre-commit-config.yaml
CHANGELOG.md
CONTRIBUTING.md
LICENSE
Makefile
README.md
pycatalyst.cfg
pycatalyst.cfg.example
pyproject.toml
setup.sh
.github/workflows/publish.yml
.github/workflows/test.yml
docs/PUBLISHING.md
scripts/publish-once.sh
src/pycatalyst/__init__.py
src/pycatalyst/_protocols.py
src/pycatalyst/_types.py
src/pycatalyst/cli.py
src/pycatalyst/errors.py
src/pycatalyst/py.typed
src/pycatalyst.egg-info/PKG-INFO
src/pycatalyst.egg-info/SOURCES.txt
src/pycatalyst.egg-info/dependency_links.txt
src/pycatalyst.egg-info/entry_points.txt
src/pycatalyst.egg-info/requires.txt
src/pycatalyst.egg-info/top_level.txt
src/pycatalyst/api/__init__.py
src/pycatalyst/api/main.py
src/pycatalyst/api/dependencies/__init__.py
src/pycatalyst/api/dependencies/auth.py
src/pycatalyst/api/dependencies/database.py
src/pycatalyst/api/models/__init__.py
src/pycatalyst/api/models/requests.py
src/pycatalyst/api/models/responses.py
src/pycatalyst/api/routes/__init__.py
src/pycatalyst/api/routes/v1/__init__.py
src/pycatalyst/api/routes/v1/auth.py
src/pycatalyst/api/routes/v1/generate.py
src/pycatalyst/api/routes/v1/infer.py
src/pycatalyst/api/routes/v1/recipes.py
src/pycatalyst/api/routes/v1/settings.py
src/pycatalyst/api/routes/v1/workbench.py
src/pycatalyst/config/__init__.py
src/pycatalyst/config/auth.py
src/pycatalyst/config/database.py
src/pycatalyst/config/paths.py
src/pycatalyst/config/ui.py
src/pycatalyst/config/workbench.py
src/pycatalyst/data/seed/.gitkeep
src/pycatalyst/data/templates/recipes/pycharter_contracts.yaml
src/pycatalyst/data/templates/recipes/pyoptima_portfolio.yaml
src/pycatalyst/data/templates/recipes/pystator_events.yaml
src/pycatalyst/db/__init__.py
src/pycatalyst/db/base.py
src/pycatalyst/db/cli.py
src/pycatalyst/db/config.py
src/pycatalyst/db/paths.py
src/pycatalyst/db/migrations/__init__.py
src/pycatalyst/db/migrations/env.py
src/pycatalyst/db/migrations/versions/20260101000000_initial.py
src/pycatalyst/db/migrations/versions/__init__.py
src/pycatalyst/db/models/__init__.py
src/pycatalyst/db/models/app_metadata.py
src/pycatalyst/generators/__init__.py
src/pycatalyst/generators/compound.py
src/pycatalyst/generators/engine.py
src/pycatalyst/generators/registry.py
src/pycatalyst/generators/scalar.py
src/pycatalyst/recipes/__init__.py
src/pycatalyst/recipes/loader.py
src/pycatalyst/recipes/models.py
src/pycatalyst/recipes/runner.py
src/pycatalyst/schema/__init__.py
src/pycatalyst/schema/inferrer.py
src/pycatalyst/schema/json_schema.py
src/pycatalyst/schema/pydantic.py
src/pycatalyst/schema/spec.py
src/pycatalyst/services/__init__.py
src/pycatalyst/services/workbench_manager.py
src/pycatalyst/services/backends/__init__.py
src/pycatalyst/services/backends/base.py
src/pycatalyst/services/backends/docker_backend.py
src/pycatalyst/services/backends/venv_backend.py
src/pycatalyst/sinks/__init__.py
src/pycatalyst/sinks/database.py
src/pycatalyst/sinks/file.py
src/pycatalyst/sinks/http.py
src/pycatalyst/sinks/kafka.py
src/pycatalyst/sinks/memory.py
src/pycatalyst/sinks/rabbitmq.py
src/pycatalyst/ui/.eslintrc.json
src/pycatalyst/ui/.npmrc
src/pycatalyst/ui/__init__.py
src/pycatalyst/ui/build.py
src/pycatalyst/ui/components.json
src/pycatalyst/ui/dev.py
src/pycatalyst/ui/next-env.d.ts
src/pycatalyst/ui/next.config.js
src/pycatalyst/ui/package-lock.json
src/pycatalyst/ui/package.json
src/pycatalyst/ui/postcss.config.js
src/pycatalyst/ui/server.py
src/pycatalyst/ui/tailwind.config.js
src/pycatalyst/ui/tsconfig.json
src/pycatalyst/ui/tsconfig.tsbuildinfo
src/pycatalyst/ui/node_modules/flatted/python/flatted.py
src/pycatalyst/ui/out/404.html
src/pycatalyst/ui/out/__next.__PAGE__.txt
src/pycatalyst/ui/out/__next._full.txt
src/pycatalyst/ui/out/__next._head.txt
src/pycatalyst/ui/out/__next._index.txt
src/pycatalyst/ui/out/__next._tree.txt
src/pycatalyst/ui/out/index.html
src/pycatalyst/ui/out/index.txt
src/pycatalyst/ui/out/404/index.html
src/pycatalyst/ui/out/_next/static/chunks/0575f275776d153c.js
src/pycatalyst/ui/out/_next/static/chunks/0664a23cd6a5f7ba.js
src/pycatalyst/ui/out/_next/static/chunks/31674d9a34dac40b.js
src/pycatalyst/ui/out/_next/static/chunks/33dc0ae90f863979.js
src/pycatalyst/ui/out/_next/static/chunks/3db2622c9e17684f.js
src/pycatalyst/ui/out/_next/static/chunks/48f408d5c9d2a0ba.js
src/pycatalyst/ui/out/_next/static/chunks/4a93e9c0c43d24a7.css
src/pycatalyst/ui/out/_next/static/chunks/612195d87a9f708e.js
src/pycatalyst/ui/out/_next/static/chunks/826946f349a354cd.js
src/pycatalyst/ui/out/_next/static/chunks/82abf2d65f5428ae.js
src/pycatalyst/ui/out/_next/static/chunks/88a6dfcd964f4302.js
src/pycatalyst/ui/out/_next/static/chunks/a6dad97d9634a72d.js
src/pycatalyst/ui/out/_next/static/chunks/a6dad97d9634a72d.js.map
src/pycatalyst/ui/out/_next/static/chunks/ab52a6590efbe138.js
src/pycatalyst/ui/out/_next/static/chunks/ace5f280042c2f7a.js
src/pycatalyst/ui/out/_next/static/chunks/b7b85a15f387ab7c.css
src/pycatalyst/ui/out/_next/static/chunks/b82d3555a0c5ad54.js
src/pycatalyst/ui/out/_next/static/chunks/c0645d6fea057384.js
src/pycatalyst/ui/out/_next/static/chunks/c6ac0e3a3d0e355f.js
src/pycatalyst/ui/out/_next/static/chunks/cc784667b24a8c60.js
src/pycatalyst/ui/out/_next/static/chunks/cd046009fa99a225.js
src/pycatalyst/ui/out/_next/static/chunks/d2be314c3ece3fbe.js
src/pycatalyst/ui/out/_next/static/chunks/de634c2407095732.js
src/pycatalyst/ui/out/_next/static/chunks/f2f58a7e93290fbb.js
src/pycatalyst/ui/out/_next/static/chunks/ff1a16fafef87110.js
src/pycatalyst/ui/out/_next/static/chunks/turbopack-dc3a2def751ab70b.js
src/pycatalyst/ui/out/_next/static/meh2aGCK9OPfD1hpQF-go/_buildManifest.js
src/pycatalyst/ui/out/_next/static/meh2aGCK9OPfD1hpQF-go/_clientMiddlewareManifest.json
src/pycatalyst/ui/out/_next/static/meh2aGCK9OPfD1hpQF-go/_ssgManifest.js
src/pycatalyst/ui/out/_not-found/__next._full.txt
src/pycatalyst/ui/out/_not-found/__next._head.txt
src/pycatalyst/ui/out/_not-found/__next._index.txt
src/pycatalyst/ui/out/_not-found/__next._not-found.__PAGE__.txt
src/pycatalyst/ui/out/_not-found/__next._not-found.txt
src/pycatalyst/ui/out/_not-found/__next._tree.txt
src/pycatalyst/ui/out/_not-found/index.html
src/pycatalyst/ui/out/_not-found/index.txt
src/pycatalyst/ui/out/documentation/__next._full.txt
src/pycatalyst/ui/out/documentation/__next._head.txt
src/pycatalyst/ui/out/documentation/__next._index.txt
src/pycatalyst/ui/out/documentation/__next._tree.txt
src/pycatalyst/ui/out/documentation/__next.documentation.__PAGE__.txt
src/pycatalyst/ui/out/documentation/__next.documentation.txt
src/pycatalyst/ui/out/documentation/index.html
src/pycatalyst/ui/out/documentation/index.txt
src/pycatalyst/ui/out/generate/__next._full.txt
src/pycatalyst/ui/out/generate/__next._head.txt
src/pycatalyst/ui/out/generate/__next._index.txt
src/pycatalyst/ui/out/generate/__next._tree.txt
src/pycatalyst/ui/out/generate/__next.generate.__PAGE__.txt
src/pycatalyst/ui/out/generate/__next.generate.txt
src/pycatalyst/ui/out/generate/index.html
src/pycatalyst/ui/out/generate/index.txt
src/pycatalyst/ui/out/login/__next._full.txt
src/pycatalyst/ui/out/login/__next._head.txt
src/pycatalyst/ui/out/login/__next._index.txt
src/pycatalyst/ui/out/login/__next._tree.txt
src/pycatalyst/ui/out/login/__next.login.__PAGE__.txt
src/pycatalyst/ui/out/login/__next.login.txt
src/pycatalyst/ui/out/login/index.html
src/pycatalyst/ui/out/login/index.txt
src/pycatalyst/ui/out/recipes/__next._full.txt
src/pycatalyst/ui/out/recipes/__next._head.txt
src/pycatalyst/ui/out/recipes/__next._index.txt
src/pycatalyst/ui/out/recipes/__next._tree.txt
src/pycatalyst/ui/out/recipes/__next.recipes.__PAGE__.txt
src/pycatalyst/ui/out/recipes/__next.recipes.txt
src/pycatalyst/ui/out/recipes/index.html
src/pycatalyst/ui/out/recipes/index.txt
src/pycatalyst/ui/out/schemas/__next._full.txt
src/pycatalyst/ui/out/schemas/__next._head.txt
src/pycatalyst/ui/out/schemas/__next._index.txt
src/pycatalyst/ui/out/schemas/__next._tree.txt
src/pycatalyst/ui/out/schemas/__next.schemas.__PAGE__.txt
src/pycatalyst/ui/out/schemas/__next.schemas.txt
src/pycatalyst/ui/out/schemas/index.html
src/pycatalyst/ui/out/schemas/index.txt
src/pycatalyst/ui/out/settings/__next._full.txt
src/pycatalyst/ui/out/settings/__next._head.txt
src/pycatalyst/ui/out/settings/__next._index.txt
src/pycatalyst/ui/out/settings/__next._tree.txt
src/pycatalyst/ui/out/settings/__next.settings.__PAGE__.txt
src/pycatalyst/ui/out/settings/__next.settings.txt
src/pycatalyst/ui/out/settings/index.html
src/pycatalyst/ui/out/settings/index.txt
src/pycatalyst/ui/out/sinks/__next._full.txt
src/pycatalyst/ui/out/sinks/__next._head.txt
src/pycatalyst/ui/out/sinks/__next._index.txt
src/pycatalyst/ui/out/sinks/__next._tree.txt
src/pycatalyst/ui/out/sinks/__next.sinks.__PAGE__.txt
src/pycatalyst/ui/out/sinks/__next.sinks.txt
src/pycatalyst/ui/out/sinks/index.html
src/pycatalyst/ui/out/sinks/index.txt
src/pycatalyst/ui/out/workbench/__next._full.txt
src/pycatalyst/ui/out/workbench/__next._head.txt
src/pycatalyst/ui/out/workbench/__next._index.txt
src/pycatalyst/ui/out/workbench/__next._tree.txt
src/pycatalyst/ui/out/workbench/__next.workbench.__PAGE__.txt
src/pycatalyst/ui/out/workbench/__next.workbench.txt
src/pycatalyst/ui/out/workbench/index.html
src/pycatalyst/ui/out/workbench/index.txt
src/pycatalyst/ui/src/app/error.tsx
src/pycatalyst/ui/src/app/globals.css
src/pycatalyst/ui/src/app/layout.tsx
src/pycatalyst/ui/src/app/loading.tsx
src/pycatalyst/ui/src/app/page.tsx
src/pycatalyst/ui/src/app/themes.css
src/pycatalyst/ui/src/app/documentation/page.tsx
src/pycatalyst/ui/src/app/generate/page.tsx
src/pycatalyst/ui/src/app/login/page.tsx
src/pycatalyst/ui/src/app/recipes/page.tsx
src/pycatalyst/ui/src/app/schemas/page.tsx
src/pycatalyst/ui/src/app/settings/page.tsx
src/pycatalyst/ui/src/app/sinks/page.tsx
src/pycatalyst/ui/src/app/workbench/page.tsx
src/pycatalyst/ui/src/components/ThemeFromConfig.tsx
src/pycatalyst/ui/src/components/ThemeSync.tsx
src/pycatalyst/ui/src/components/common/ErrorBoundary.tsx
src/pycatalyst/ui/src/components/common/ErrorDisplay.tsx
src/pycatalyst/ui/src/components/common/LoadingSpinner.tsx
src/pycatalyst/ui/src/components/common/index.ts
src/pycatalyst/ui/src/components/layout/ApiUnavailableBanner.tsx
src/pycatalyst/ui/src/components/layout/AppShell.tsx
src/pycatalyst/ui/src/components/layout/AuthGuard.tsx
src/pycatalyst/ui/src/components/layout/Navigation.tsx
src/pycatalyst/ui/src/components/layout/PageContainer.tsx
src/pycatalyst/ui/src/components/layout/PageHeader.tsx
src/pycatalyst/ui/src/components/layout/index.ts
src/pycatalyst/ui/src/components/ui/alert.tsx
src/pycatalyst/ui/src/components/ui/badge.tsx
src/pycatalyst/ui/src/components/ui/button.tsx
src/pycatalyst/ui/src/components/ui/card.tsx
src/pycatalyst/ui/src/components/ui/input.tsx
src/pycatalyst/ui/src/components/ui/label.tsx
src/pycatalyst/ui/src/components/ui/skeleton.tsx
src/pycatalyst/ui/src/components/ui/switch.tsx
src/pycatalyst/ui/src/components/ui/tabs.tsx
src/pycatalyst/ui/src/components/ui/textarea.tsx
src/pycatalyst/ui/src/components/workbench/ContainerDialog.tsx
src/pycatalyst/ui/src/components/workbench/TerminalPanel.tsx
src/pycatalyst/ui/src/components/workbench/WorkbenchToolbar.tsx
src/pycatalyst/ui/src/hooks/use-auth-init.ts
src/pycatalyst/ui/src/lib/api.ts
src/pycatalyst/ui/src/lib/auth-storage.ts
src/pycatalyst/ui/src/lib/constants.ts
src/pycatalyst/ui/src/lib/settings.ts
src/pycatalyst/ui/src/lib/terminal-theme.ts
src/pycatalyst/ui/src/lib/utils.ts
src/pycatalyst/ui/src/lib/workbench-storage.ts
src/pycatalyst/ui/src/lib/workbench.ts
src/pycatalyst/ui/src/lib/types/index.ts
src/pycatalyst/ui/src/stores/app-config.ts
src/pycatalyst/ui/src/stores/auth.ts
src/pycatalyst/ui/src/stores/index.ts
src/pycatalyst/ui/src/types/global.d.ts
src/pycatalyst/ui/static/404.html
src/pycatalyst/ui/static/__next.__PAGE__.txt
src/pycatalyst/ui/static/__next._full.txt
src/pycatalyst/ui/static/__next._head.txt
src/pycatalyst/ui/static/__next._index.txt
src/pycatalyst/ui/static/__next._tree.txt
src/pycatalyst/ui/static/index.html
src/pycatalyst/ui/static/index.txt
src/pycatalyst/ui/static/404/index.html
src/pycatalyst/ui/static/_next/static/chunks/0575f275776d153c.js
src/pycatalyst/ui/static/_next/static/chunks/0664a23cd6a5f7ba.js
src/pycatalyst/ui/static/_next/static/chunks/31674d9a34dac40b.js
src/pycatalyst/ui/static/_next/static/chunks/33dc0ae90f863979.js
src/pycatalyst/ui/static/_next/static/chunks/3db2622c9e17684f.js
src/pycatalyst/ui/static/_next/static/chunks/48f408d5c9d2a0ba.js
src/pycatalyst/ui/static/_next/static/chunks/4a93e9c0c43d24a7.css
src/pycatalyst/ui/static/_next/static/chunks/612195d87a9f708e.js
src/pycatalyst/ui/static/_next/static/chunks/826946f349a354cd.js
src/pycatalyst/ui/static/_next/static/chunks/82abf2d65f5428ae.js
src/pycatalyst/ui/static/_next/static/chunks/88a6dfcd964f4302.js
src/pycatalyst/ui/static/_next/static/chunks/a6dad97d9634a72d.js
src/pycatalyst/ui/static/_next/static/chunks/a6dad97d9634a72d.js.map
src/pycatalyst/ui/static/_next/static/chunks/ab52a6590efbe138.js
src/pycatalyst/ui/static/_next/static/chunks/ace5f280042c2f7a.js
src/pycatalyst/ui/static/_next/static/chunks/b7b85a15f387ab7c.css
src/pycatalyst/ui/static/_next/static/chunks/b82d3555a0c5ad54.js
src/pycatalyst/ui/static/_next/static/chunks/c0645d6fea057384.js
src/pycatalyst/ui/static/_next/static/chunks/c6ac0e3a3d0e355f.js
src/pycatalyst/ui/static/_next/static/chunks/cc784667b24a8c60.js
src/pycatalyst/ui/static/_next/static/chunks/cd046009fa99a225.js
src/pycatalyst/ui/static/_next/static/chunks/d2be314c3ece3fbe.js
src/pycatalyst/ui/static/_next/static/chunks/de634c2407095732.js
src/pycatalyst/ui/static/_next/static/chunks/f2f58a7e93290fbb.js
src/pycatalyst/ui/static/_next/static/chunks/ff1a16fafef87110.js
src/pycatalyst/ui/static/_next/static/chunks/turbopack-dc3a2def751ab70b.js
src/pycatalyst/ui/static/_next/static/meh2aGCK9OPfD1hpQF-go/_buildManifest.js
src/pycatalyst/ui/static/_next/static/meh2aGCK9OPfD1hpQF-go/_clientMiddlewareManifest.json
src/pycatalyst/ui/static/_next/static/meh2aGCK9OPfD1hpQF-go/_ssgManifest.js
src/pycatalyst/ui/static/_not-found/__next._full.txt
src/pycatalyst/ui/static/_not-found/__next._head.txt
src/pycatalyst/ui/static/_not-found/__next._index.txt
src/pycatalyst/ui/static/_not-found/__next._not-found.__PAGE__.txt
src/pycatalyst/ui/static/_not-found/__next._not-found.txt
src/pycatalyst/ui/static/_not-found/__next._tree.txt
src/pycatalyst/ui/static/_not-found/index.html
src/pycatalyst/ui/static/_not-found/index.txt
src/pycatalyst/ui/static/documentation/__next._full.txt
src/pycatalyst/ui/static/documentation/__next._head.txt
src/pycatalyst/ui/static/documentation/__next._index.txt
src/pycatalyst/ui/static/documentation/__next._tree.txt
src/pycatalyst/ui/static/documentation/__next.documentation.__PAGE__.txt
src/pycatalyst/ui/static/documentation/__next.documentation.txt
src/pycatalyst/ui/static/documentation/index.html
src/pycatalyst/ui/static/documentation/index.txt
src/pycatalyst/ui/static/generate/__next._full.txt
src/pycatalyst/ui/static/generate/__next._head.txt
src/pycatalyst/ui/static/generate/__next._index.txt
src/pycatalyst/ui/static/generate/__next._tree.txt
src/pycatalyst/ui/static/generate/__next.generate.__PAGE__.txt
src/pycatalyst/ui/static/generate/__next.generate.txt
src/pycatalyst/ui/static/generate/index.html
src/pycatalyst/ui/static/generate/index.txt
src/pycatalyst/ui/static/login/__next._full.txt
src/pycatalyst/ui/static/login/__next._head.txt
src/pycatalyst/ui/static/login/__next._index.txt
src/pycatalyst/ui/static/login/__next._tree.txt
src/pycatalyst/ui/static/login/__next.login.__PAGE__.txt
src/pycatalyst/ui/static/login/__next.login.txt
src/pycatalyst/ui/static/login/index.html
src/pycatalyst/ui/static/login/index.txt
src/pycatalyst/ui/static/recipes/__next._full.txt
src/pycatalyst/ui/static/recipes/__next._head.txt
src/pycatalyst/ui/static/recipes/__next._index.txt
src/pycatalyst/ui/static/recipes/__next._tree.txt
src/pycatalyst/ui/static/recipes/__next.recipes.__PAGE__.txt
src/pycatalyst/ui/static/recipes/__next.recipes.txt
src/pycatalyst/ui/static/recipes/index.html
src/pycatalyst/ui/static/recipes/index.txt
src/pycatalyst/ui/static/schemas/__next._full.txt
src/pycatalyst/ui/static/schemas/__next._head.txt
src/pycatalyst/ui/static/schemas/__next._index.txt
src/pycatalyst/ui/static/schemas/__next._tree.txt
src/pycatalyst/ui/static/schemas/__next.schemas.__PAGE__.txt
src/pycatalyst/ui/static/schemas/__next.schemas.txt
src/pycatalyst/ui/static/schemas/index.html
src/pycatalyst/ui/static/schemas/index.txt
src/pycatalyst/ui/static/settings/__next._full.txt
src/pycatalyst/ui/static/settings/__next._head.txt
src/pycatalyst/ui/static/settings/__next._index.txt
src/pycatalyst/ui/static/settings/__next._tree.txt
src/pycatalyst/ui/static/settings/__next.settings.__PAGE__.txt
src/pycatalyst/ui/static/settings/__next.settings.txt
src/pycatalyst/ui/static/settings/index.html
src/pycatalyst/ui/static/settings/index.txt
src/pycatalyst/ui/static/sinks/__next._full.txt
src/pycatalyst/ui/static/sinks/__next._head.txt
src/pycatalyst/ui/static/sinks/__next._index.txt
src/pycatalyst/ui/static/sinks/__next._tree.txt
src/pycatalyst/ui/static/sinks/__next.sinks.__PAGE__.txt
src/pycatalyst/ui/static/sinks/__next.sinks.txt
src/pycatalyst/ui/static/sinks/index.html
src/pycatalyst/ui/static/sinks/index.txt
src/pycatalyst/ui/static/workbench/__next._full.txt
src/pycatalyst/ui/static/workbench/__next._head.txt
src/pycatalyst/ui/static/workbench/__next._index.txt
src/pycatalyst/ui/static/workbench/__next._tree.txt
src/pycatalyst/ui/static/workbench/__next.workbench.__PAGE__.txt
src/pycatalyst/ui/static/workbench/__next.workbench.txt
src/pycatalyst/ui/static/workbench/index.html
src/pycatalyst/ui/static/workbench/index.txt
src/pycatalyst/worker/__init__.py
tests/__init__.py
tests/conftest.py
tests/test_version.py
tests/integration/__init__.py
tests/unit/__init__.py
tests/unit/test_api.py
tests/unit/test_database_sink.py
tests/unit/test_errors.py
tests/unit/test_file_sink.py
tests/unit/test_generators.py
tests/unit/test_http_sink.py
tests/unit/test_kafka_sink.py
tests/unit/test_protocols.py
tests/unit/test_rabbitmq_sink.py
tests/unit/test_recipes.py
tests/unit/test_schema.py
tests/unit/test_scrollback_buffer.py
tests/unit/test_sinks.py
tests/unit/test_types.py
tests/unit/test_venv_backend.py
tests/unit/test_workbench_manager.py
tests/unit/test_workbench_routes.py