LICENSE
README.md
pyproject.toml
setup.py
src/pystator/__init__.py
src/pystator/builder.py
src/pystator/cli.py
src/pystator/idempotency.py
src/pystator/observability.py
src/pystator/py.typed
src/pystator/visualization.py
src/pystator.egg-info/PKG-INFO
src/pystator.egg-info/SOURCES.txt
src/pystator.egg-info/dependency_links.txt
src/pystator.egg-info/entry_points.txt
src/pystator.egg-info/requires.txt
src/pystator.egg-info/top_level.txt
src/pystator/actions/__init__.py
src/pystator/actions/executor.py
src/pystator/actions/registry.py
src/pystator/actions/retry.py
src/pystator/api/__init__.py
src/pystator/api/main.py
src/pystator/api/dependencies/__init__.py
src/pystator/api/dependencies/auth.py
src/pystator/api/dependencies/core.py
src/pystator/api/dependencies/database.py
src/pystator/api/models/__init__.py
src/pystator/api/models/requests.py
src/pystator/api/models/responses.py
src/pystator/api/routes/__init__.py
src/pystator/api/routes/v1/__init__.py
src/pystator/api/routes/v1/auth.py
src/pystator/api/routes/v1/entities.py
src/pystator/api/routes/v1/machines.py
src/pystator/api/routes/v1/process.py
src/pystator/api/routes/v1/settings.py
src/pystator/api/routes/v1/templates.py
src/pystator/api/services/__init__.py
src/pystator/api/services/fsm_service.py
src/pystator/config/__init__.py
src/pystator/config/auth.py
src/pystator/config/converter.py
src/pystator/config/database.py
src/pystator/config/loader.py
src/pystator/config/models.py
src/pystator/config/paths.py
src/pystator/config/validator.py
src/pystator/contrib/__init__.py
src/pystator/contrib/order/__init__.py
src/pystator/contrib/order/fsm/order_fsm.yaml
src/pystator/contrib/rebalance/__init__.py
src/pystator/contrib/rebalance/fsm/rebalance_fsm.yaml
src/pystator/core/__init__.py
src/pystator/core/errors.py
src/pystator/core/event.py
src/pystator/core/invoke.py
src/pystator/core/machine.py
src/pystator/core/parallel.py
src/pystator/core/state.py
src/pystator/core/state_hierarchy.py
src/pystator/core/state_store.py
src/pystator/core/transition.py
src/pystator/data/seed/machines.yaml
src/pystator/data/seed/trading_machines.yaml
src/pystator/data/templates/fsm/blank.yaml
src/pystator/data/templates/fsm/day_trading.yaml
src/pystator/data/templates/fsm/order_management.yaml
src/pystator/data/templates/fsm/portfolio_optimization.yaml
src/pystator/data/templates/fsm/rebalance_workflow.yaml
src/pystator/db/__init__.py
src/pystator/db/base.py
src/pystator/db/cli.py
src/pystator/db/paths.py
src/pystator/db/migrations/env.py
src/pystator/db/migrations/versions/20260130000000_initial_machines.py
src/pystator/db/migrations/versions/20260205000000_add_entity_states.py
src/pystator/db/migrations/versions/20260206000000_add_entity_states_is_terminal.py
src/pystator/db/migrations/versions/__init__.py
src/pystator/db/models/__init__.py
src/pystator/db/models/entity_state.py
src/pystator/db/models/machine.py
src/pystator/db/models/transition_history.py
src/pystator/guards/__init__.py
src/pystator/guards/builtins.py
src/pystator/guards/evaluator.py
src/pystator/guards/registry.py
src/pystator/orchestration/__init__.py
src/pystator/orchestration/invoke.py
src/pystator/orchestration/orchestrator.py
src/pystator/recipes/__init__.py
src/pystator/recipes/actions.py
src/pystator/recipes/context.py
src/pystator/recipes/guards.py
src/pystator/recipes/utils.py
src/pystator/scheduler/__init__.py
src/pystator/scheduler/asyncio_scheduler.py
src/pystator/scheduler/base.py
src/pystator/scheduler/celery_scheduler.py
src/pystator/scheduler/redis_scheduler.py
src/pystator/state_stores/__init__.py
src/pystator/state_stores/redis_store.py
src/pystator/state_stores/sqlalchemy_store.py
src/pystator/timeout/__init__.py
src/pystator/timeout/manager.py
src/pystator/ui/__init__.py
src/pystator/ui/build.py
src/pystator/ui/dev.py
src/pystator/ui/server.py
src/pystator/ui/node_modules/flatted/python/flatted.py
src/pystator/ui/node_modules/katex/src/fonts/generate_fonts.py
src/pystator/ui/node_modules/katex/src/metrics/extract_tfms.py
src/pystator/ui/node_modules/katex/src/metrics/extract_ttfs.py
src/pystator/ui/node_modules/katex/src/metrics/format_json.py
src/pystator/ui/node_modules/katex/src/metrics/parse_tfm.py
src/pystator/ui/out/404.html
src/pystator/ui/out/__next.__PAGE__.txt
src/pystator/ui/out/__next._full.txt
src/pystator/ui/out/__next._head.txt
src/pystator/ui/out/__next._index.txt
src/pystator/ui/out/__next._tree.txt
src/pystator/ui/out/index.html
src/pystator/ui/out/index.txt
src/pystator/ui/out/404/index.html
src/pystator/ui/out/_next/static/FaJOAIvmiIvuWxkEFPCkS/_buildManifest.js
src/pystator/ui/out/_next/static/FaJOAIvmiIvuWxkEFPCkS/_clientMiddlewareManifest.json
src/pystator/ui/out/_next/static/FaJOAIvmiIvuWxkEFPCkS/_ssgManifest.js
src/pystator/ui/out/_next/static/chunks/0ac2c33f74cfed15.js
src/pystator/ui/out/_next/static/chunks/0f065a0009d11961.js
src/pystator/ui/out/_next/static/chunks/121d372457204b13.js
src/pystator/ui/out/_next/static/chunks/1662da3413150cbc.js
src/pystator/ui/out/_next/static/chunks/1d17bad024f729a9.js
src/pystator/ui/out/_next/static/chunks/244155a5b032cefa.js
src/pystator/ui/out/_next/static/chunks/383222c95ca90ec5.js
src/pystator/ui/out/_next/static/chunks/3d06c0ec5c1fcade.js
src/pystator/ui/out/_next/static/chunks/441bf35cf7a833aa.js
src/pystator/ui/out/_next/static/chunks/481b15521da6167c.js
src/pystator/ui/out/_next/static/chunks/4d348ff2302e5aac.js
src/pystator/ui/out/_next/static/chunks/5dc99c7a5099fc08.js
src/pystator/ui/out/_next/static/chunks/82abf2d65f5428ae.js
src/pystator/ui/out/_next/static/chunks/a6dad97d9634a72d.js
src/pystator/ui/out/_next/static/chunks/a6dad97d9634a72d.js.map
src/pystator/ui/out/_next/static/chunks/a73b3b7d2b33ea57.js
src/pystator/ui/out/_next/static/chunks/aefe8b2dd60e44e5.js
src/pystator/ui/out/_next/static/chunks/afafbe33954249fe.css
src/pystator/ui/out/_next/static/chunks/b7279522ccf64a9e.js
src/pystator/ui/out/_next/static/chunks/b8bbf1094b4b1e34.js
src/pystator/ui/out/_next/static/chunks/d59f830a2b8e768c.js
src/pystator/ui/out/_next/static/chunks/d5e86d125df015db.css
src/pystator/ui/out/_next/static/chunks/f2f58a7e93290fbb.js
src/pystator/ui/out/_next/static/chunks/facdd0769126435b.js
src/pystator/ui/out/_next/static/chunks/fdfaa16b807ad651.js
src/pystator/ui/out/_next/static/chunks/ff1a16fafef87110.js
src/pystator/ui/out/_next/static/chunks/turbopack-2d2bdff18970af68.js
src/pystator/ui/out/_not-found/__next._full.txt
src/pystator/ui/out/_not-found/__next._head.txt
src/pystator/ui/out/_not-found/__next._index.txt
src/pystator/ui/out/_not-found/__next._not-found.__PAGE__.txt
src/pystator/ui/out/_not-found/__next._not-found.txt
src/pystator/ui/out/_not-found/__next._tree.txt
src/pystator/ui/out/_not-found/index.html
src/pystator/ui/out/_not-found/index.txt
src/pystator/ui/out/documentation/__next._full.txt
src/pystator/ui/out/documentation/__next._head.txt
src/pystator/ui/out/documentation/__next._index.txt
src/pystator/ui/out/documentation/__next._tree.txt
src/pystator/ui/out/documentation/__next.documentation.__PAGE__.txt
src/pystator/ui/out/documentation/__next.documentation.txt
src/pystator/ui/out/documentation/index.html
src/pystator/ui/out/documentation/index.txt
src/pystator/ui/out/entities/__next._full.txt
src/pystator/ui/out/entities/__next._head.txt
src/pystator/ui/out/entities/__next._index.txt
src/pystator/ui/out/entities/__next._tree.txt
src/pystator/ui/out/entities/__next.entities.__PAGE__.txt
src/pystator/ui/out/entities/__next.entities.txt
src/pystator/ui/out/entities/index.html
src/pystator/ui/out/entities/index.txt
src/pystator/ui/out/login/__next._full.txt
src/pystator/ui/out/login/__next._head.txt
src/pystator/ui/out/login/__next._index.txt
src/pystator/ui/out/login/__next._tree.txt
src/pystator/ui/out/login/__next.login.__PAGE__.txt
src/pystator/ui/out/login/__next.login.txt
src/pystator/ui/out/login/index.html
src/pystator/ui/out/login/index.txt
src/pystator/ui/out/machines/__next._full.txt
src/pystator/ui/out/machines/__next._head.txt
src/pystator/ui/out/machines/__next._index.txt
src/pystator/ui/out/machines/__next._tree.txt
src/pystator/ui/out/machines/__next.machines.__PAGE__.txt
src/pystator/ui/out/machines/__next.machines.txt
src/pystator/ui/out/machines/index.html
src/pystator/ui/out/machines/index.txt
src/pystator/ui/out/settings/__next._full.txt
src/pystator/ui/out/settings/__next._head.txt
src/pystator/ui/out/settings/__next._index.txt
src/pystator/ui/out/settings/__next._tree.txt
src/pystator/ui/out/settings/__next.settings.__PAGE__.txt
src/pystator/ui/out/settings/__next.settings.txt
src/pystator/ui/out/settings/index.html
src/pystator/ui/out/settings/index.txt
src/pystator/ui/out/templates/__next._full.txt
src/pystator/ui/out/templates/__next._head.txt
src/pystator/ui/out/templates/__next._index.txt
src/pystator/ui/out/templates/__next._tree.txt
src/pystator/ui/out/templates/__next.templates.__PAGE__.txt
src/pystator/ui/out/templates/__next.templates.txt
src/pystator/ui/out/templates/index.html
src/pystator/ui/out/templates/index.txt
src/pystator/ui/out/visualization/__next._full.txt
src/pystator/ui/out/visualization/__next._head.txt
src/pystator/ui/out/visualization/__next._index.txt
src/pystator/ui/out/visualization/__next._tree.txt
src/pystator/ui/out/visualization/__next.visualization.__PAGE__.txt
src/pystator/ui/out/visualization/__next.visualization.txt
src/pystator/ui/out/visualization/index.html
src/pystator/ui/out/visualization/index.txt
src/pystator/ui/out/workspace/__next._full.txt
src/pystator/ui/out/workspace/__next._head.txt
src/pystator/ui/out/workspace/__next._index.txt
src/pystator/ui/out/workspace/__next._tree.txt
src/pystator/ui/out/workspace/__next.workspace.__PAGE__.txt
src/pystator/ui/out/workspace/__next.workspace.txt
src/pystator/ui/out/workspace/index.html
src/pystator/ui/out/workspace/index.txt
src/pystator/ui/static/404.html
src/pystator/ui/static/__next.__PAGE__.txt
src/pystator/ui/static/__next._full.txt
src/pystator/ui/static/__next._head.txt
src/pystator/ui/static/__next._index.txt
src/pystator/ui/static/__next._tree.txt
src/pystator/ui/static/index.html
src/pystator/ui/static/index.txt
src/pystator/ui/static/404/index.html
src/pystator/ui/static/_next/static/FaJOAIvmiIvuWxkEFPCkS/_buildManifest.js
src/pystator/ui/static/_next/static/FaJOAIvmiIvuWxkEFPCkS/_clientMiddlewareManifest.json
src/pystator/ui/static/_next/static/FaJOAIvmiIvuWxkEFPCkS/_ssgManifest.js
src/pystator/ui/static/_next/static/chunks/0ac2c33f74cfed15.js
src/pystator/ui/static/_next/static/chunks/0f065a0009d11961.js
src/pystator/ui/static/_next/static/chunks/121d372457204b13.js
src/pystator/ui/static/_next/static/chunks/1662da3413150cbc.js
src/pystator/ui/static/_next/static/chunks/1d17bad024f729a9.js
src/pystator/ui/static/_next/static/chunks/244155a5b032cefa.js
src/pystator/ui/static/_next/static/chunks/383222c95ca90ec5.js
src/pystator/ui/static/_next/static/chunks/3d06c0ec5c1fcade.js
src/pystator/ui/static/_next/static/chunks/441bf35cf7a833aa.js
src/pystator/ui/static/_next/static/chunks/481b15521da6167c.js
src/pystator/ui/static/_next/static/chunks/4d348ff2302e5aac.js
src/pystator/ui/static/_next/static/chunks/5dc99c7a5099fc08.js
src/pystator/ui/static/_next/static/chunks/82abf2d65f5428ae.js
src/pystator/ui/static/_next/static/chunks/a6dad97d9634a72d.js
src/pystator/ui/static/_next/static/chunks/a6dad97d9634a72d.js.map
src/pystator/ui/static/_next/static/chunks/a73b3b7d2b33ea57.js
src/pystator/ui/static/_next/static/chunks/aefe8b2dd60e44e5.js
src/pystator/ui/static/_next/static/chunks/afafbe33954249fe.css
src/pystator/ui/static/_next/static/chunks/b7279522ccf64a9e.js
src/pystator/ui/static/_next/static/chunks/b8bbf1094b4b1e34.js
src/pystator/ui/static/_next/static/chunks/d59f830a2b8e768c.js
src/pystator/ui/static/_next/static/chunks/d5e86d125df015db.css
src/pystator/ui/static/_next/static/chunks/f2f58a7e93290fbb.js
src/pystator/ui/static/_next/static/chunks/facdd0769126435b.js
src/pystator/ui/static/_next/static/chunks/fdfaa16b807ad651.js
src/pystator/ui/static/_next/static/chunks/ff1a16fafef87110.js
src/pystator/ui/static/_next/static/chunks/turbopack-2d2bdff18970af68.js
src/pystator/ui/static/_not-found/__next._full.txt
src/pystator/ui/static/_not-found/__next._head.txt
src/pystator/ui/static/_not-found/__next._index.txt
src/pystator/ui/static/_not-found/__next._not-found.__PAGE__.txt
src/pystator/ui/static/_not-found/__next._not-found.txt
src/pystator/ui/static/_not-found/__next._tree.txt
src/pystator/ui/static/_not-found/index.html
src/pystator/ui/static/_not-found/index.txt
src/pystator/ui/static/documentation/__next._full.txt
src/pystator/ui/static/documentation/__next._head.txt
src/pystator/ui/static/documentation/__next._index.txt
src/pystator/ui/static/documentation/__next._tree.txt
src/pystator/ui/static/documentation/__next.documentation.__PAGE__.txt
src/pystator/ui/static/documentation/__next.documentation.txt
src/pystator/ui/static/documentation/index.html
src/pystator/ui/static/documentation/index.txt
src/pystator/ui/static/entities/__next._full.txt
src/pystator/ui/static/entities/__next._head.txt
src/pystator/ui/static/entities/__next._index.txt
src/pystator/ui/static/entities/__next._tree.txt
src/pystator/ui/static/entities/__next.entities.__PAGE__.txt
src/pystator/ui/static/entities/__next.entities.txt
src/pystator/ui/static/entities/index.html
src/pystator/ui/static/entities/index.txt
src/pystator/ui/static/login/__next._full.txt
src/pystator/ui/static/login/__next._head.txt
src/pystator/ui/static/login/__next._index.txt
src/pystator/ui/static/login/__next._tree.txt
src/pystator/ui/static/login/__next.login.__PAGE__.txt
src/pystator/ui/static/login/__next.login.txt
src/pystator/ui/static/login/index.html
src/pystator/ui/static/login/index.txt
src/pystator/ui/static/machines/__next._full.txt
src/pystator/ui/static/machines/__next._head.txt
src/pystator/ui/static/machines/__next._index.txt
src/pystator/ui/static/machines/__next._tree.txt
src/pystator/ui/static/machines/__next.machines.__PAGE__.txt
src/pystator/ui/static/machines/__next.machines.txt
src/pystator/ui/static/machines/index.html
src/pystator/ui/static/machines/index.txt
src/pystator/ui/static/settings/__next._full.txt
src/pystator/ui/static/settings/__next._head.txt
src/pystator/ui/static/settings/__next._index.txt
src/pystator/ui/static/settings/__next._tree.txt
src/pystator/ui/static/settings/__next.settings.__PAGE__.txt
src/pystator/ui/static/settings/__next.settings.txt
src/pystator/ui/static/settings/index.html
src/pystator/ui/static/settings/index.txt
src/pystator/ui/static/templates/__next._full.txt
src/pystator/ui/static/templates/__next._head.txt
src/pystator/ui/static/templates/__next._index.txt
src/pystator/ui/static/templates/__next._tree.txt
src/pystator/ui/static/templates/__next.templates.__PAGE__.txt
src/pystator/ui/static/templates/__next.templates.txt
src/pystator/ui/static/templates/index.html
src/pystator/ui/static/templates/index.txt
src/pystator/ui/static/visualization/__next._full.txt
src/pystator/ui/static/visualization/__next._head.txt
src/pystator/ui/static/visualization/__next._index.txt
src/pystator/ui/static/visualization/__next._tree.txt
src/pystator/ui/static/visualization/__next.visualization.__PAGE__.txt
src/pystator/ui/static/visualization/__next.visualization.txt
src/pystator/ui/static/visualization/index.html
src/pystator/ui/static/visualization/index.txt
src/pystator/ui/static/workspace/__next._full.txt
src/pystator/ui/static/workspace/__next._head.txt
src/pystator/ui/static/workspace/__next._index.txt
src/pystator/ui/static/workspace/__next._tree.txt
src/pystator/ui/static/workspace/__next.workspace.__PAGE__.txt
src/pystator/ui/static/workspace/__next.workspace.txt
src/pystator/ui/static/workspace/index.html
src/pystator/ui/static/workspace/index.txt
src/pystator/utils/__init__.py
src/pystator/utils/serialization.py
tests/test_version.py