agentos-nano 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. agentos_nano-0.2.0/.github/workflows/ci.yml +40 -0
  2. agentos_nano-0.2.0/.gitignore +219 -0
  3. agentos_nano-0.2.0/.python-version +1 -0
  4. agentos_nano-0.2.0/PKG-INFO +212 -0
  5. agentos_nano-0.2.0/README.md +179 -0
  6. agentos_nano-0.2.0/docs/blog-post-draft.md +76 -0
  7. agentos_nano-0.2.0/docs/quickstart.md +72 -0
  8. agentos_nano-0.2.0/docs/security.md +140 -0
  9. agentos_nano-0.2.0/examples/data_pipeline.yaml +10 -0
  10. agentos_nano-0.2.0/examples/research_agent.yaml +10 -0
  11. agentos_nano-0.2.0/examples/summarizer.yaml +14 -0
  12. agentos_nano-0.2.0/examples/support_triage.yaml +15 -0
  13. agentos_nano-0.2.0/examples/tool_workflow.yaml +10 -0
  14. agentos_nano-0.2.0/pyproject.toml +107 -0
  15. agentos_nano-0.2.0/src/agentos_nano/__init__.py +5 -0
  16. agentos_nano-0.2.0/src/agentos_nano/__main__.py +4 -0
  17. agentos_nano-0.2.0/src/agentos_nano/checkpoint.py +106 -0
  18. agentos_nano-0.2.0/src/agentos_nano/cli.py +910 -0
  19. agentos_nano-0.2.0/src/agentos_nano/config.py +243 -0
  20. agentos_nano-0.2.0/src/agentos_nano/context.py +46 -0
  21. agentos_nano-0.2.0/src/agentos_nano/crash.py +225 -0
  22. agentos_nano-0.2.0/src/agentos_nano/dsl.py +203 -0
  23. agentos_nano-0.2.0/src/agentos_nano/error_context.py +183 -0
  24. agentos_nano-0.2.0/src/agentos_nano/event_store.py +997 -0
  25. agentos_nano-0.2.0/src/agentos_nano/events.py +193 -0
  26. agentos_nano-0.2.0/src/agentos_nano/executor.py +305 -0
  27. agentos_nano-0.2.0/src/agentos_nano/handlers.py +105 -0
  28. agentos_nano-0.2.0/src/agentos_nano/llm.py +248 -0
  29. agentos_nano-0.2.0/src/agentos_nano/metrics.py +146 -0
  30. agentos_nano-0.2.0/src/agentos_nano/recovery.py +104 -0
  31. agentos_nano-0.2.0/src/agentos_nano/replay.py +897 -0
  32. agentos_nano-0.2.0/src/agentos_nano/runtime.py +126 -0
  33. agentos_nano-0.2.0/src/agentos_nano/security.py +241 -0
  34. agentos_nano-0.2.0/src/agentos_nano/state.py +286 -0
  35. agentos_nano-0.2.0/src/agentos_nano/tools.py +130 -0
  36. agentos_nano-0.2.0/src/agentos_nano/workflow.py +584 -0
  37. agentos_nano-0.2.0/test_imports.py +18 -0
  38. agentos_nano-0.2.0/tests/test_aos_004_event_store_reconstruction.py +76 -0
  39. agentos_nano-0.2.0/tests/test_cli.py +1172 -0
  40. agentos_nano-0.2.0/tests/test_config.py +233 -0
  41. agentos_nano-0.2.0/tests/test_context.py +94 -0
  42. agentos_nano-0.2.0/tests/test_crash.py +174 -0
  43. agentos_nano-0.2.0/tests/test_crash_recovery_integration.py +104 -0
  44. agentos_nano-0.2.0/tests/test_dsl.py +336 -0
  45. agentos_nano-0.2.0/tests/test_error_context.py +247 -0
  46. agentos_nano-0.2.0/tests/test_event_store.py +1154 -0
  47. agentos_nano-0.2.0/tests/test_events.py +200 -0
  48. agentos_nano-0.2.0/tests/test_example_workflows.py +17 -0
  49. agentos_nano-0.2.0/tests/test_executor.py +541 -0
  50. agentos_nano-0.2.0/tests/test_handlers.py +183 -0
  51. agentos_nano-0.2.0/tests/test_llm.py +346 -0
  52. agentos_nano-0.2.0/tests/test_main.py +17 -0
  53. agentos_nano-0.2.0/tests/test_metrics.py +135 -0
  54. agentos_nano-0.2.0/tests/test_recovery.py +107 -0
  55. agentos_nano-0.2.0/tests/test_release_phase1.py +65 -0
  56. agentos_nano-0.2.0/tests/test_replay.py +987 -0
  57. agentos_nano-0.2.0/tests/test_runtime.py +111 -0
  58. agentos_nano-0.2.0/tests/test_security.py +287 -0
  59. agentos_nano-0.2.0/tests/test_state.py +259 -0
  60. agentos_nano-0.2.0/tests/test_tools.py +161 -0
  61. agentos_nano-0.2.0/tests/test_workflow.py +560 -0
  62. agentos_nano-0.2.0/uv.lock +1267 -0
@@ -0,0 +1,40 @@
1
+ name: CI
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ branches: ["main"]
7
+
8
+ jobs:
9
+ quality:
10
+ name: Lint, test, and scan
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ fail-fast: false
14
+ matrix:
15
+ python-version: ["3.10", "3.11", "3.12", "3.13"]
16
+
17
+ steps:
18
+ - name: Check out repository
19
+ uses: actions/checkout@v5
20
+
21
+ - name: Install uv
22
+ uses: astral-sh/setup-uv@v7
23
+
24
+ - name: Install Python
25
+ run: uv python install ${{ matrix.python-version }}
26
+
27
+ - name: Install dependencies
28
+ run: uv sync --dev --locked
29
+
30
+ - name: Lint
31
+ run: uv run ruff check .
32
+
33
+ - name: Type check
34
+ run: uv run mypy
35
+
36
+ - name: Test with coverage
37
+ run: uv run pytest -n auto --cov=src
38
+
39
+ - name: Security scan
40
+ run: uv run bandit -c pyproject.toml -r src
@@ -0,0 +1,219 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[codz]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py.cover
50
+ .hypothesis/
51
+ .pytest_cache/
52
+ cover/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ .pybuilder/
76
+ target/
77
+
78
+ # Jupyter Notebook
79
+ .ipynb_checkpoints
80
+
81
+ # IPython
82
+ profile_default/
83
+ ipython_config.py
84
+
85
+ # pyenv
86
+ # For a library or package, you might want to ignore these files since the code is
87
+ # intended to run in multiple environments; otherwise, check them in:
88
+ # .python-version
89
+
90
+ # pipenv
91
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
93
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
94
+ # install all needed dependencies.
95
+ # Pipfile.lock
96
+
97
+ # UV
98
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
99
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
100
+ # commonly ignored for libraries.
101
+ # uv.lock
102
+
103
+ # poetry
104
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
105
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
106
+ # commonly ignored for libraries.
107
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
108
+ # poetry.lock
109
+ # poetry.toml
110
+
111
+ # pdm
112
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
113
+ # pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
114
+ # https://pdm-project.org/en/latest/usage/project/#working-with-version-control
115
+ # pdm.lock
116
+ # pdm.toml
117
+ .pdm-python
118
+ .pdm-build/
119
+
120
+ # pixi
121
+ # Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
122
+ # pixi.lock
123
+ # Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
124
+ # in the .venv directory. It is recommended not to include this directory in version control.
125
+ .pixi
126
+
127
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
128
+ __pypackages__/
129
+
130
+ # Celery stuff
131
+ celerybeat-schedule
132
+ celerybeat.pid
133
+
134
+ # Redis
135
+ *.rdb
136
+ *.aof
137
+ *.pid
138
+
139
+ # RabbitMQ
140
+ mnesia/
141
+ rabbitmq/
142
+ rabbitmq-data/
143
+
144
+ # ActiveMQ
145
+ activemq-data/
146
+
147
+ # SageMath parsed files
148
+ *.sage.py
149
+
150
+ # Environments
151
+ .env
152
+ .envrc
153
+ .venv
154
+ env/
155
+ venv/
156
+ ENV/
157
+ env.bak/
158
+ venv.bak/
159
+
160
+ # Spyder project settings
161
+ .spyderproject
162
+ .spyproject
163
+
164
+ # Rope project settings
165
+ .ropeproject
166
+
167
+ # mkdocs documentation
168
+ /site
169
+
170
+ # mypy
171
+ .mypy_cache/
172
+ .dmypy.json
173
+ dmypy.json
174
+
175
+ # Pyre type checker
176
+ .pyre/
177
+
178
+ # pytype static type analyzer
179
+ .pytype/
180
+
181
+ # Cython debug symbols
182
+ cython_debug/
183
+
184
+ # PyCharm
185
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
186
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
187
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
188
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
189
+ # .idea/
190
+
191
+ # Abstra
192
+ # Abstra is an AI-powered process automation framework.
193
+ # Ignore directories containing user credentials, local state, and settings.
194
+ # Learn more at https://abstra.io/docs
195
+ .abstra/
196
+
197
+ # Visual Studio Code
198
+ # Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
199
+ # that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
200
+ # and can be added to the global gitignore or merged into this file. However, if you prefer,
201
+ # you could uncomment the following to ignore the entire vscode folder
202
+ # .vscode/
203
+ # Temporary file for partial code execution
204
+ tempCodeRunnerFile.py
205
+
206
+ # Ruff stuff:
207
+ .ruff_cache/
208
+
209
+ # PyPI configuration file
210
+ .pypirc
211
+
212
+ # Marimo
213
+ marimo/_static/
214
+ marimo/_lsp/
215
+ __marimo__/
216
+
217
+ # Streamlit
218
+ .streamlit/secrets.toml
219
+ demo.db
@@ -0,0 +1 @@
1
+ 3.14
@@ -0,0 +1,212 @@
1
+ Metadata-Version: 2.4
2
+ Name: agentos-nano
3
+ Version: 0.2.0
4
+ Summary: A lightweight framework for building and deploying AI agents with minimal boilerplate code.
5
+ Project-URL: Homepage, https://github.com/jabbala10-bit/agentos-nano
6
+ Project-URL: Issues, https://github.com/jabbala10-bit/agentos-nano/issues
7
+ Project-URL: Source, https://github.com/jabbala10-bit/agentos-nano
8
+ Author-email: AgentOS Labs <jabbala10@gmail.com>
9
+ Keywords: agents,ai,cli,llm,workflow
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Environment :: Console
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Natural Language :: English
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3 :: Only
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Programming Language :: Python :: 3.14
22
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
23
+ Classifier: Topic :: Utilities
24
+ Requires-Python: >=3.10
25
+ Requires-Dist: jsonschema>=4.0.0
26
+ Requires-Dist: openai>=1.109.0
27
+ Requires-Dist: pydantic<3,>=2.10.6
28
+ Requires-Dist: python-dotenv<2,>=1.0.1
29
+ Requires-Dist: pyyaml>=6.0.1
30
+ Requires-Dist: rich>=14.1.0
31
+ Requires-Dist: typer>=0.17.4
32
+ Description-Content-Type: text/markdown
33
+
34
+ # agentos-nano
35
+
36
+ `agentos-nano` is a small crash-resilient workflow runner for demonstrating the core AgentOS runtime.
37
+ Phase 1 focuses on a believable local demo: install the CLI, run a YAML workflow, simulate a crash,
38
+ resume automatically, and replay the trace.
39
+
40
+ ## What Phase 1 Can Do
41
+
42
+ - Parse a simple YAML workflow DSL with line-aware validation errors.
43
+ - Execute local workflow steps from YAML with terminal status output.
44
+ - Simulate a runtime crash after a chosen completed step and resume cleanly.
45
+ - Replay any stored workflow execution to the terminal or JSON.
46
+ - Build and install as a Python package with an `agentos` CLI entry point.
47
+
48
+ ## Requirements
49
+
50
+ - Python `3.10` or newer
51
+ - `uv` for the local developer flow
52
+
53
+ An OpenAI API key is only needed for the optional `ask` command. The Phase 1 workflow demo works
54
+ without external credentials.
55
+
56
+ Useful runtime overrides can live in `.env`:
57
+
58
+ ```dotenv
59
+ AGENTOS_DEFAULT_DB=agentos.db
60
+ AGENTOS_DEMO_DB=demo.db
61
+ AGENTOS_DEMO_CRASH_STEP=3
62
+ AGENTOS_DEMO_RESTART_DELAY_SECONDS=1
63
+ AGENTOS_LOG_VERBOSITY=normal
64
+ AGENTOS_REDACTION_ENABLED=true
65
+ AGENTOS_SENSITIVE_FIELDS=api_key,authorization,cookie,cvv,email,password,phone,secret,session,ssn,token
66
+ # AGENTOS_EVENT_RETENTION_DAYS=30
67
+ ```
68
+
69
+ By default, CLI output and replay traces redact common sensitive fields such as `api_key`,
70
+ `token`, `password`, `email`, and `phone`. Use `--verbosity quiet|normal|debug` on `run`,
71
+ `demo`, and `replay` to control how much execution detail is shown.
72
+
73
+ For the full Phase 2 behavior, including checkpoint display protection, persistence defaults,
74
+ and retention semantics, see [docs/security.md](docs/security.md).
75
+
76
+ ## Quickstart
77
+
78
+ 1. Install dependencies:
79
+
80
+ ```powershell
81
+ uv sync --dev
82
+ ```
83
+
84
+ 2. Run the example workflow:
85
+
86
+ ```powershell
87
+ uv run agentos run examples/data_pipeline.yaml --db demo.db
88
+ ```
89
+
90
+ 3. Run the crash demo:
91
+
92
+ ```powershell
93
+ uv run agentos demo examples/data_pipeline.yaml --crash-at-step 2 --db demo.db
94
+ ```
95
+
96
+ Expected outcome:
97
+
98
+ - the workflow runs until step 2 completes
99
+ - the process is intentionally killed
100
+ - the runtime restarts after 1 second
101
+ - execution resumes from step 3 with `0 steps repeated`
102
+
103
+ 4. Replay the execution:
104
+
105
+ ```powershell
106
+ uv run agentos replay demo-<workflow-id> --db demo.db
107
+ ```
108
+
109
+ The `demo` command prints the generated workflow ID in the terminal panels and final summary. For a
110
+ full walkthrough, see [docs/quickstart.md](docs/quickstart.md).
111
+
112
+ ## Example Workflows
113
+
114
+ - [examples/data_pipeline.yaml](examples/data_pipeline.yaml)
115
+ - [examples/research_agent.yaml](examples/research_agent.yaml)
116
+ - [examples/summarizer.yaml](examples/summarizer.yaml)
117
+ - [examples/support_triage.yaml](examples/support_triage.yaml)
118
+
119
+ These ship with simple local handlers in [src/agentos_nano/handlers.py](src/agentos_nano/handlers.py)
120
+ so the demo stays self-contained.
121
+
122
+ ## CLI Commands
123
+
124
+ Show help:
125
+
126
+ ```powershell
127
+ uv run agentos --help
128
+ ```
129
+
130
+ Show version:
131
+
132
+ ```powershell
133
+ uv run agentos --version
134
+ ```
135
+
136
+ Run a workflow:
137
+
138
+ ```powershell
139
+ uv run agentos run examples/data_pipeline.yaml --db agentos.db
140
+ ```
141
+
142
+ Run the crash demo:
143
+
144
+ ```powershell
145
+ uv run agentos demo examples/data_pipeline.yaml --crash-at-step 2 --db demo.db
146
+ ```
147
+
148
+ Replay a workflow:
149
+
150
+ ```powershell
151
+ uv run agentos replay <workflow-id> --db demo.db
152
+ ```
153
+
154
+ Export replay JSON:
155
+
156
+ ```powershell
157
+ uv run agentos replay <workflow-id> --db demo.db --json replay.json
158
+ ```
159
+
160
+ Show current config for the optional LLM command path:
161
+
162
+ ```powershell
163
+ uv run agentos config
164
+ ```
165
+
166
+ Inspect or apply event retention:
167
+
168
+ ```powershell
169
+ uv run agentos retention
170
+ uv run agentos retention --days 30 --apply
171
+ ```
172
+
173
+ ## Security Notes
174
+
175
+ - `run`, `demo`, and `replay` mask common sensitive fields by default
176
+ - `quiet`, `normal`, and `debug` change output detail, not the basic masking contract
177
+ - replay JSON export is policy-aware and masked by default
178
+ - retention is manual by default and prunes whole workflow histories by age
179
+
180
+ Operational details live in [docs/security.md](docs/security.md).
181
+
182
+ ## Packaging
183
+
184
+ Build a distributable package:
185
+
186
+ ```powershell
187
+ uv build
188
+ ```
189
+
190
+ Install the built wheel into a fresh environment:
191
+
192
+ ```powershell
193
+ python -m venv .venv-release
194
+ .venv-release\Scripts\python -m pip install dist\agentos_nano-0.1.0-py3-none-any.whl
195
+ .venv-release\Scripts\agentos --help
196
+ ```
197
+
198
+ Package metadata lives in [pyproject.toml](pyproject.toml).
199
+
200
+ ## Development Checks
201
+
202
+ ```powershell
203
+ uv run ruff check .
204
+ uv run mypy
205
+ uv run pytest
206
+ uv run bandit -c pyproject.toml -r src
207
+ ```
208
+
209
+ ## Current Scope
210
+
211
+ Phase 1 is meant to be workable and demonstrable, not final-product complete. The strongest path
212
+ today is the local trust demo built around `run`, `demo`, and `replay`.
@@ -0,0 +1,179 @@
1
+ # agentos-nano
2
+
3
+ `agentos-nano` is a small crash-resilient workflow runner for demonstrating the core AgentOS runtime.
4
+ Phase 1 focuses on a believable local demo: install the CLI, run a YAML workflow, simulate a crash,
5
+ resume automatically, and replay the trace.
6
+
7
+ ## What Phase 1 Can Do
8
+
9
+ - Parse a simple YAML workflow DSL with line-aware validation errors.
10
+ - Execute local workflow steps from YAML with terminal status output.
11
+ - Simulate a runtime crash after a chosen completed step and resume cleanly.
12
+ - Replay any stored workflow execution to the terminal or JSON.
13
+ - Build and install as a Python package with an `agentos` CLI entry point.
14
+
15
+ ## Requirements
16
+
17
+ - Python `3.10` or newer
18
+ - `uv` for the local developer flow
19
+
20
+ An OpenAI API key is only needed for the optional `ask` command. The Phase 1 workflow demo works
21
+ without external credentials.
22
+
23
+ Useful runtime overrides can live in `.env`:
24
+
25
+ ```dotenv
26
+ AGENTOS_DEFAULT_DB=agentos.db
27
+ AGENTOS_DEMO_DB=demo.db
28
+ AGENTOS_DEMO_CRASH_STEP=3
29
+ AGENTOS_DEMO_RESTART_DELAY_SECONDS=1
30
+ AGENTOS_LOG_VERBOSITY=normal
31
+ AGENTOS_REDACTION_ENABLED=true
32
+ AGENTOS_SENSITIVE_FIELDS=api_key,authorization,cookie,cvv,email,password,phone,secret,session,ssn,token
33
+ # AGENTOS_EVENT_RETENTION_DAYS=30
34
+ ```
35
+
36
+ By default, CLI output and replay traces redact common sensitive fields such as `api_key`,
37
+ `token`, `password`, `email`, and `phone`. Use `--verbosity quiet|normal|debug` on `run`,
38
+ `demo`, and `replay` to control how much execution detail is shown.
39
+
40
+ For the full Phase 2 behavior, including checkpoint display protection, persistence defaults,
41
+ and retention semantics, see [docs/security.md](docs/security.md).
42
+
43
+ ## Quickstart
44
+
45
+ 1. Install dependencies:
46
+
47
+ ```powershell
48
+ uv sync --dev
49
+ ```
50
+
51
+ 2. Run the example workflow:
52
+
53
+ ```powershell
54
+ uv run agentos run examples/data_pipeline.yaml --db demo.db
55
+ ```
56
+
57
+ 3. Run the crash demo:
58
+
59
+ ```powershell
60
+ uv run agentos demo examples/data_pipeline.yaml --crash-at-step 2 --db demo.db
61
+ ```
62
+
63
+ Expected outcome:
64
+
65
+ - the workflow runs until step 2 completes
66
+ - the process is intentionally killed
67
+ - the runtime restarts after 1 second
68
+ - execution resumes from step 3 with `0 steps repeated`
69
+
70
+ 4. Replay the execution:
71
+
72
+ ```powershell
73
+ uv run agentos replay demo-<workflow-id> --db demo.db
74
+ ```
75
+
76
+ The `demo` command prints the generated workflow ID in the terminal panels and final summary. For a
77
+ full walkthrough, see [docs/quickstart.md](docs/quickstart.md).
78
+
79
+ ## Example Workflows
80
+
81
+ - [examples/data_pipeline.yaml](examples/data_pipeline.yaml)
82
+ - [examples/research_agent.yaml](examples/research_agent.yaml)
83
+ - [examples/summarizer.yaml](examples/summarizer.yaml)
84
+ - [examples/support_triage.yaml](examples/support_triage.yaml)
85
+
86
+ These ship with simple local handlers in [src/agentos_nano/handlers.py](src/agentos_nano/handlers.py)
87
+ so the demo stays self-contained.
88
+
89
+ ## CLI Commands
90
+
91
+ Show help:
92
+
93
+ ```powershell
94
+ uv run agentos --help
95
+ ```
96
+
97
+ Show version:
98
+
99
+ ```powershell
100
+ uv run agentos --version
101
+ ```
102
+
103
+ Run a workflow:
104
+
105
+ ```powershell
106
+ uv run agentos run examples/data_pipeline.yaml --db agentos.db
107
+ ```
108
+
109
+ Run the crash demo:
110
+
111
+ ```powershell
112
+ uv run agentos demo examples/data_pipeline.yaml --crash-at-step 2 --db demo.db
113
+ ```
114
+
115
+ Replay a workflow:
116
+
117
+ ```powershell
118
+ uv run agentos replay <workflow-id> --db demo.db
119
+ ```
120
+
121
+ Export replay JSON:
122
+
123
+ ```powershell
124
+ uv run agentos replay <workflow-id> --db demo.db --json replay.json
125
+ ```
126
+
127
+ Show current config for the optional LLM command path:
128
+
129
+ ```powershell
130
+ uv run agentos config
131
+ ```
132
+
133
+ Inspect or apply event retention:
134
+
135
+ ```powershell
136
+ uv run agentos retention
137
+ uv run agentos retention --days 30 --apply
138
+ ```
139
+
140
+ ## Security Notes
141
+
142
+ - `run`, `demo`, and `replay` mask common sensitive fields by default
143
+ - `quiet`, `normal`, and `debug` change output detail, not the basic masking contract
144
+ - replay JSON export is policy-aware and masked by default
145
+ - retention is manual by default and prunes whole workflow histories by age
146
+
147
+ Operational details live in [docs/security.md](docs/security.md).
148
+
149
+ ## Packaging
150
+
151
+ Build a distributable package:
152
+
153
+ ```powershell
154
+ uv build
155
+ ```
156
+
157
+ Install the built wheel into a fresh environment:
158
+
159
+ ```powershell
160
+ python -m venv .venv-release
161
+ .venv-release\Scripts\python -m pip install dist\agentos_nano-0.1.0-py3-none-any.whl
162
+ .venv-release\Scripts\agentos --help
163
+ ```
164
+
165
+ Package metadata lives in [pyproject.toml](pyproject.toml).
166
+
167
+ ## Development Checks
168
+
169
+ ```powershell
170
+ uv run ruff check .
171
+ uv run mypy
172
+ uv run pytest
173
+ uv run bandit -c pyproject.toml -r src
174
+ ```
175
+
176
+ ## Current Scope
177
+
178
+ Phase 1 is meant to be workable and demonstrable, not final-product complete. The strongest path
179
+ today is the local trust demo built around `run`, `demo`, and `replay`.