LICENSE
README.md
pyproject.toml
setup.py
src/pystator/__init__.py
src/pystator/_engine.py
src/pystator/_hierarchy.py
src/pystator/_parallel.py
src/pystator/_types.py
src/pystator/actions.py
src/pystator/builtins.py
src/pystator/checks.py
src/pystator/cli.py
src/pystator/context.py
src/pystator/effects.py
src/pystator/errors.py
src/pystator/event.py
src/pystator/guards.py
src/pystator/hooks.py
src/pystator/instance.py
src/pystator/invoke.py
src/pystator/lint.py
src/pystator/machine.py
src/pystator/orchestrator.py
src/pystator/py.typed
src/pystator/sinks.py
src/pystator/state_parsing.py
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/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/docs.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/_raw_parser.py
src/pystator/config/_shared.py
src/pystator/config/_submachine.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/ui.py
src/pystator/config/validator.py
src/pystator/contrib/__init__.py
src/pystator/contrib/trading/__init__.py
src/pystator/contrib/trading/actions.py
src/pystator/contrib/trading/guards.py
src/pystator/contrib/trading/registry.py
src/pystator/data/seed/enhancements_examples.yaml
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/optimization_cycle.yaml
src/pystator/data/templates/fsm/order_management.yaml
src/pystator/data/templates/fsm/portfolio_lifecycle.yaml
src/pystator/data/templates/fsm/portfolio_optimization.yaml
src/pystator/db/__init__.py
src/pystator/db/base.py
src/pystator/db/cli.py
src/pystator/db/config.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/20260216000000_add_worker_events.py
src/pystator/db/migrations/versions/20260219000000_add_worker_events_result_json.py
src/pystator/db/migrations/versions/20260223100000_change_duration_ms_to_integer.py
src/pystator/db/migrations/versions/20260223110000_add_entity_states_version.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/db/models/worker_event.py
src/pystator/docs/__init__.py
src/pystator/docs/cli.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/shared/__init__.py
src/pystator/shared/name_validator.py
src/pystator/stores/__init__.py
src/pystator/stores/_sqlalchemy_base.py
src/pystator/stores/base.py
src/pystator/stores/mongodb.py
src/pystator/stores/postgres.py
src/pystator/stores/redis.py
src/pystator/stores/sqlite.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/a5fu2jF5OgxxytSCOuhQt/_buildManifest.js
src/pystator/ui/out/_next/static/a5fu2jF5OgxxytSCOuhQt/_clientMiddlewareManifest.json
src/pystator/ui/out/_next/static/a5fu2jF5OgxxytSCOuhQt/_ssgManifest.js
src/pystator/ui/out/_next/static/chunks/1a4bc517b9ab7f0e.js
src/pystator/ui/out/_next/static/chunks/1a85e1d4f4e7fe6b.js
src/pystator/ui/out/_next/static/chunks/1ab7da49f5177e68.css
src/pystator/ui/out/_next/static/chunks/244155a5b032cefa.js
src/pystator/ui/out/_next/static/chunks/28bb5cfc64a89064.js
src/pystator/ui/out/_next/static/chunks/30566116d6973901.js
src/pystator/ui/out/_next/static/chunks/3add0960bc5b420e.js
src/pystator/ui/out/_next/static/chunks/4d348ff2302e5aac.js
src/pystator/ui/out/_next/static/chunks/631bb70be9bc7854.js
src/pystator/ui/out/_next/static/chunks/70af2de7ab53e817.js
src/pystator/ui/out/_next/static/chunks/7cfdea1aa93e32c3.js
src/pystator/ui/out/_next/static/chunks/804393fe99543ecd.js
src/pystator/ui/out/_next/static/chunks/82abf2d65f5428ae.js
src/pystator/ui/out/_next/static/chunks/864854d76d481272.js
src/pystator/ui/out/_next/static/chunks/9417cf25fa8de5bb.js
src/pystator/ui/out/_next/static/chunks/98c33f8d1f1cda17.js
src/pystator/ui/out/_next/static/chunks/9dade5f85bbef6c5.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/aba3bade8b8556f7.js
src/pystator/ui/out/_next/static/chunks/afafbe33954249fe.css
src/pystator/ui/out/_next/static/chunks/c841f26c845c1e01.js
src/pystator/ui/out/_next/static/chunks/d7b5b90c55808835.js
src/pystator/ui/out/_next/static/chunks/db2992c55ac4068d.js
src/pystator/ui/out/_next/static/chunks/e67292c2e7e1b80e.js
src/pystator/ui/out/_next/static/chunks/f2f58a7e93290fbb.js
src/pystator/ui/out/_next/static/chunks/ff1a16fafef87110.js
src/pystator/ui/out/_next/static/chunks/turbopack-0b8914fa06e99f87.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/table-editor/__next._full.txt
src/pystator/ui/out/table-editor/__next._head.txt
src/pystator/ui/out/table-editor/__next._index.txt
src/pystator/ui/out/table-editor/__next._tree.txt
src/pystator/ui/out/table-editor/__next.table-editor.__PAGE__.txt
src/pystator/ui/out/table-editor/__next.table-editor.txt
src/pystator/ui/out/table-editor/index.html
src/pystator/ui/out/table-editor/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/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/a5fu2jF5OgxxytSCOuhQt/_buildManifest.js
src/pystator/ui/static/_next/static/a5fu2jF5OgxxytSCOuhQt/_clientMiddlewareManifest.json
src/pystator/ui/static/_next/static/a5fu2jF5OgxxytSCOuhQt/_ssgManifest.js
src/pystator/ui/static/_next/static/chunks/1a4bc517b9ab7f0e.js
src/pystator/ui/static/_next/static/chunks/1a85e1d4f4e7fe6b.js
src/pystator/ui/static/_next/static/chunks/1ab7da49f5177e68.css
src/pystator/ui/static/_next/static/chunks/244155a5b032cefa.js
src/pystator/ui/static/_next/static/chunks/28bb5cfc64a89064.js
src/pystator/ui/static/_next/static/chunks/30566116d6973901.js
src/pystator/ui/static/_next/static/chunks/3add0960bc5b420e.js
src/pystator/ui/static/_next/static/chunks/4d348ff2302e5aac.js
src/pystator/ui/static/_next/static/chunks/631bb70be9bc7854.js
src/pystator/ui/static/_next/static/chunks/70af2de7ab53e817.js
src/pystator/ui/static/_next/static/chunks/7cfdea1aa93e32c3.js
src/pystator/ui/static/_next/static/chunks/804393fe99543ecd.js
src/pystator/ui/static/_next/static/chunks/82abf2d65f5428ae.js
src/pystator/ui/static/_next/static/chunks/864854d76d481272.js
src/pystator/ui/static/_next/static/chunks/9417cf25fa8de5bb.js
src/pystator/ui/static/_next/static/chunks/98c33f8d1f1cda17.js
src/pystator/ui/static/_next/static/chunks/9dade5f85bbef6c5.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/aba3bade8b8556f7.js
src/pystator/ui/static/_next/static/chunks/afafbe33954249fe.css
src/pystator/ui/static/_next/static/chunks/c841f26c845c1e01.js
src/pystator/ui/static/_next/static/chunks/d7b5b90c55808835.js
src/pystator/ui/static/_next/static/chunks/db2992c55ac4068d.js
src/pystator/ui/static/_next/static/chunks/e67292c2e7e1b80e.js
src/pystator/ui/static/_next/static/chunks/f2f58a7e93290fbb.js
src/pystator/ui/static/_next/static/chunks/ff1a16fafef87110.js
src/pystator/ui/static/_next/static/chunks/turbopack-0b8914fa06e99f87.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/table-editor/__next._full.txt
src/pystator/ui/static/table-editor/__next._head.txt
src/pystator/ui/static/table-editor/__next._index.txt
src/pystator/ui/static/table-editor/__next._tree.txt
src/pystator/ui/static/table-editor/__next.table-editor.__PAGE__.txt
src/pystator/ui/static/table-editor/__next.table-editor.txt
src/pystator/ui/static/table-editor/index.html
src/pystator/ui/static/table-editor/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/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/worker/__init__.py
src/pystator/worker/config.py
src/pystator/worker/health.py
src/pystator/worker/models.py
src/pystator/worker/processor.py
src/pystator/worker/registry.py
src/pystator/worker/runner.py
src/pystator/worker/event_sources/__init__.py
src/pystator/worker/event_sources/base.py
src/pystator/worker/event_sources/database.py
tests/test_version.py