.gitignore
.pre-commit-config.yaml
.semgrepignore
AGENTS.md
ARCHITECTURE.md
CHANGELOG.md
CLAUDE.md
CODE_OF_CONDUCT.md
CONTRIBUTING.md
LICENSE
Makefile
README.md
SECURITY.md
cliff.toml
mkdocs.optophi.yml
mkdocs.yml
pyproject.toml
setup.py
setup.sh
upload.log
.claude/CLAUDE.md
.claude/commands/branch.md
.claude/skills/config-change/SKILL.md
.claude/skills/onboard/SKILL.md
.claude/skills/plan/SKILL.md
.claude/skills/refactor/SKILL.md
.claude/skills/release/SKILL.md
.claude/skills/ship/SKILL.md
.claude/skills/verify/SKILL.md
.cursor/rules/optophi-project-standards.mdc
.github/dependabot.yml
.github/workflows/ci.yml
.github/workflows/publish.yml
.github/workflows/scorecards.yml
docs/architecture.md
docs/changelog.md
docs/contributing.md
docs/index.md
docs/api/adapter-registry.md
docs/api/comms-controls.md
docs/api/core-controls.md
docs/api/documents-controls.md
docs/api/google-controls.md
docs/api/index.md
docs/api/pygubernator-controls.md
docs/api/pystator-controls.md
docs/api/top-level.md
docs/api/trading-controls.md
docs/assets/favicon.svg
docs/assets/logo.svg
docs/getting-started/installation.md
docs/getting-started/quickstart.md
docs/guides/adding-a-domain.md
docs/guides/bridges.md
docs/guides/domains-overview.md
docs/guides/google-sheets-tasks.md
docs/plans/ui-evolution.md
docs/reference/cli.md
docs/stylesheets/extra.css
scripts/build.sh
scripts/ci.sh
scripts/release.sh
scripts/setup.sh
src/pyactuator/__init__.py
src/pyactuator/_version.py
src/pyactuator/cli.py
src/pyactuator/client.py
src/pyactuator/errors.py
src/pyactuator/py.typed
src/pyactuator/types.py
src/pyactuator.egg-info/PKG-INFO
src/pyactuator.egg-info/SOURCES.txt
src/pyactuator.egg-info/dependency_links.txt
src/pyactuator.egg-info/entry_points.txt
src/pyactuator.egg-info/requires.txt
src/pyactuator.egg-info/top_level.txt
src/pyactuator/adapters/__init__.py
src/pyactuator/adapters/alpaca.py
src/pyactuator/adapters/base.py
src/pyactuator/adapters/mock.py
src/pyactuator/api/__init__.py
src/pyactuator/api/_http_errors.py
src/pyactuator/api/main.py
src/pyactuator/api/dependencies/__init__.py
src/pyactuator/api/dependencies/alpaca_http.py
src/pyactuator/api/dependencies/client.py
src/pyactuator/api/dependencies/comms.py
src/pyactuator/api/dependencies/documents.py
src/pyactuator/api/dependencies/google.py
src/pyactuator/api/models/__init__.py
src/pyactuator/api/models/google_workspace.py
src/pyactuator/api/models/schemas.py
src/pyactuator/api/models/trading_alpaca.py
src/pyactuator/api/routes/__init__.py
src/pyactuator/api/routes/v1/__init__.py
src/pyactuator/api/routes/v1/account.py
src/pyactuator/api/routes/v1/comms.py
src/pyactuator/api/routes/v1/docs.py
src/pyactuator/api/routes/v1/documents.py
src/pyactuator/api/routes/v1/google.py
src/pyactuator/api/routes/v1/orders.py
src/pyactuator/api/routes/v1/positions.py
src/pyactuator/api/routes/v1/settings.py
src/pyactuator/config/__init__.py
src/pyactuator/config/adapter.py
src/pyactuator/config/environment.py
src/pyactuator/config/google_resolution.py
src/pyactuator/core/__init__.py
src/pyactuator/core/audit.py
src/pyactuator/core/envelopes.py
src/pyactuator/core/errors.py
src/pyactuator/core/idempotency.py
src/pyactuator/core/policy.py
src/pyactuator/core/registry.py
src/pyactuator/core/retry.py
src/pyactuator/core/spec.py
src/pyactuator/docs/__init__.py
src/pyactuator/docs/cli.py
src/pyactuator/domains/__init__.py
src/pyactuator/domains/comms/__init__.py
src/pyactuator/domains/comms/errors.py
src/pyactuator/domains/comms/protocols.py
src/pyactuator/domains/comms/types.py
src/pyactuator/domains/comms/adapters/__init__.py
src/pyactuator/domains/comms/adapters/email_sendgrid.py
src/pyactuator/domains/comms/adapters/email_smtp.py
src/pyactuator/domains/comms/adapters/mock.py
src/pyactuator/domains/comms/adapters/slack_api.py
src/pyactuator/domains/comms/adapters/slack_webhook.py
src/pyactuator/domains/documents/__init__.py
src/pyactuator/domains/documents/errors.py
src/pyactuator/domains/documents/protocols.py
src/pyactuator/domains/documents/types.py
src/pyactuator/domains/documents/adapters/__init__.py
src/pyactuator/domains/documents/adapters/markdown_jinja.py
src/pyactuator/domains/documents/adapters/mock.py
src/pyactuator/domains/documents/adapters/pdf_reportlab.py
src/pyactuator/domains/documents/adapters/store.py
src/pyactuator/domains/google/__init__.py
src/pyactuator/domains/google/auth.py
src/pyactuator/domains/google/errors.py
src/pyactuator/domains/google/integration.py
src/pyactuator/domains/google/protocols.py
src/pyactuator/domains/google/types.py
src/pyactuator/domains/google/adapters/__init__.py
src/pyactuator/domains/google/adapters/_httpx_common.py
src/pyactuator/domains/google/adapters/docs_httpx.py
src/pyactuator/domains/google/adapters/drive_httpx.py
src/pyactuator/domains/google/adapters/mock.py
src/pyactuator/domains/google/adapters/sheets_httpx.py
src/pyactuator/domains/trading/__init__.py
src/pyactuator/domains/trading/errors.py
src/pyactuator/domains/trading/idempotency.py
src/pyactuator/domains/trading/integration.py
src/pyactuator/domains/trading/protocols.py
src/pyactuator/domains/trading/retry.py
src/pyactuator/domains/trading/types.py
src/pyactuator/domains/trading/adapters/__init__.py
src/pyactuator/domains/trading/adapters/alpaca.py
src/pyactuator/domains/trading/adapters/base.py
src/pyactuator/domains/trading/adapters/mock.py
src/pyactuator/helpers/__init__.py
src/pyactuator/helpers/idempotency.py
src/pyactuator/helpers/retry.py
src/pyactuator/integrations/__init__.py
src/pyactuator/integrations/pygubernator/__init__.py
src/pyactuator/integrations/pygubernator/_common.py
src/pyactuator/integrations/pygubernator/_registration.py
src/pyactuator/integrations/pygubernator/tools_comms.py
src/pyactuator/integrations/pygubernator/tools_documents.py
src/pyactuator/integrations/pygubernator/tools_google.py
src/pyactuator/integrations/pygubernator/tools_google_extended.py
src/pyactuator/integrations/pygubernator/tools_trading.py
src/pyactuator/integrations/pystator/__init__.py
src/pyactuator/integrations/pystator/_common.py
src/pyactuator/integrations/pystator/_registration.py
src/pyactuator/integrations/pystator/actions_comms.py
src/pyactuator/integrations/pystator/actions_documents.py
src/pyactuator/integrations/pystator/actions_google.py
src/pyactuator/integrations/pystator/actions_google_extended.py
src/pyactuator/integrations/pystator/actions_trading.py
src/pyactuator/ui/.npmrc
src/pyactuator/ui/__init__.py
src/pyactuator/ui/build.py
src/pyactuator/ui/dev.py
src/pyactuator/ui/next-env.d.ts
src/pyactuator/ui/next.config.js
src/pyactuator/ui/package-lock.json
src/pyactuator/ui/package.json
src/pyactuator/ui/postcss.config.js
src/pyactuator/ui/server.py
src/pyactuator/ui/tailwind.config.js
src/pyactuator/ui/tsconfig.json
src/pyactuator/ui/node_modules/flatted/python/flatted.py
src/pyactuator/ui/src/app/globals.css
src/pyactuator/ui/src/app/layout.tsx
src/pyactuator/ui/src/app/page.tsx
src/pyactuator/ui/src/app/account/page.tsx
src/pyactuator/ui/src/app/comms/email/page.tsx
src/pyactuator/ui/src/app/comms/slack/page.tsx
src/pyactuator/ui/src/app/dashboard/page.tsx
src/pyactuator/ui/src/app/documentation/page.tsx
src/pyactuator/ui/src/app/google/page.tsx
src/pyactuator/ui/src/app/google/docs/replace-text/page.tsx
src/pyactuator/ui/src/app/google/drive/download/page.tsx
src/pyactuator/ui/src/app/google/drive/upload/page.tsx
src/pyactuator/ui/src/app/google/sheets/append/page.tsx
src/pyactuator/ui/src/app/obsidian/page.tsx
src/pyactuator/ui/src/app/orders/page.tsx
src/pyactuator/ui/src/app/positions/page.tsx
src/pyactuator/ui/src/app/settings/page.tsx
src/pyactuator/ui/src/app/trade/page.tsx
src/pyactuator/ui/src/components/AppShell.tsx
src/pyactuator/ui/src/components/CopyCommandBlock.tsx
src/pyactuator/ui/src/components/ErrorBoundary.tsx
src/pyactuator/ui/src/components/LoadingSpinner.tsx
src/pyactuator/ui/src/components/Navigation.tsx
src/pyactuator/ui/src/components/OptionalAlpacaAuthFields.tsx
src/pyactuator/ui/src/components/OptionalServiceAccountJsonField.tsx
src/pyactuator/ui/src/components/TradePanel.tsx
src/pyactuator/ui/src/components/documentation/ApiTester.tsx
src/pyactuator/ui/src/components/documentation/DocumentationPlayground.tsx
src/pyactuator/ui/src/components/documentation/index.ts
src/pyactuator/ui/src/components/feedback/AppToaster.tsx
src/pyactuator/ui/src/components/feedback/CommandResultPanel.tsx
src/pyactuator/ui/src/components/google/DocsReplaceForm.tsx
src/pyactuator/ui/src/components/google/DriveDownloadForm.tsx
src/pyactuator/ui/src/components/google/DriveUploadForm.tsx
src/pyactuator/ui/src/components/google/GoogleWorkspaceHub.tsx
src/pyactuator/ui/src/components/google/SheetsAppendForm.tsx
src/pyactuator/ui/src/components/google/workspaceFormProps.ts
src/pyactuator/ui/src/components/layout/HelpMenu.tsx
src/pyactuator/ui/src/components/layout/NotificationsBellStub.tsx
src/pyactuator/ui/src/components/layout/ResizableWorkspaceLayout.tsx
src/pyactuator/ui/src/components/layout/SearchButtonStub.tsx
src/pyactuator/ui/src/components/layout/SidebarPanelToggle.tsx
src/pyactuator/ui/src/components/layout/TopNav.tsx
src/pyactuator/ui/src/components/layout/index.ts
src/pyactuator/ui/src/components/sidebar/CollapsibleSidebar.tsx
src/pyactuator/ui/src/components/tabs/StaticTabStrip.tsx
src/pyactuator/ui/src/components/ui/button.tsx
src/pyactuator/ui/src/components/ui/card.tsx
src/pyactuator/ui/src/components/workspace/SectionsSidebar.tsx
src/pyactuator/ui/src/data/apiMethods.ts
src/pyactuator/ui/src/lib/alpacaAuthHeaders.ts
src/pyactuator/ui/src/lib/api-base.ts
src/pyactuator/ui/src/lib/api.ts
src/pyactuator/ui/src/lib/commandFeedback.ts
src/pyactuator/ui/src/lib/constants.ts
src/pyactuator/ui/src/lib/credentialCommands.ts
src/pyactuator/ui/src/lib/googleFieldUtils.ts
src/pyactuator/ui/src/lib/utils.ts
src/pyactuator/ui/src/lib/api/client.ts
src/pyactuator/ui/src/lib/api/comms.ts
src/pyactuator/ui/src/lib/api/documents.ts
src/pyactuator/ui/src/lib/api/google.ts
src/pyactuator/ui/src/stores/app-config.ts
src/pyactuator/ui/static/404.html
src/pyactuator/ui/static/__next.__PAGE__.txt
src/pyactuator/ui/static/__next._full.txt
src/pyactuator/ui/static/__next._head.txt
src/pyactuator/ui/static/__next._index.txt
src/pyactuator/ui/static/__next._tree.txt
src/pyactuator/ui/static/index.html
src/pyactuator/ui/static/index.txt
src/pyactuator/ui/static/404/index.html
src/pyactuator/ui/static/_next/static/Gj0QJg_o_KFdgDw6WlIOm/_buildManifest.js
src/pyactuator/ui/static/_next/static/Gj0QJg_o_KFdgDw6WlIOm/_clientMiddlewareManifest.js
src/pyactuator/ui/static/_next/static/Gj0QJg_o_KFdgDw6WlIOm/_ssgManifest.js
src/pyactuator/ui/static/_next/static/chunks/01xlw8hd842-c.js
src/pyactuator/ui/static/_next/static/chunks/021vzw2_jogpt.js
src/pyactuator/ui/static/_next/static/chunks/037kldexy4vaa.js
src/pyactuator/ui/static/_next/static/chunks/03nzi21h9_-wt.js
src/pyactuator/ui/static/_next/static/chunks/03~yq9q893hmn.js
src/pyactuator/ui/static/_next/static/chunks/04n-c2eb7.c4q.css
src/pyactuator/ui/static/_next/static/chunks/056ks74768gn_.js
src/pyactuator/ui/static/_next/static/chunks/05pkqzjlmqvqg.js
src/pyactuator/ui/static/_next/static/chunks/07lhk_q6pmm3r.js
src/pyactuator/ui/static/_next/static/chunks/08dypk6wl8mhd.js
src/pyactuator/ui/static/_next/static/chunks/0b5i-yv-ub-pf.js
src/pyactuator/ui/static/_next/static/chunks/0d03zjdr238yb.js
src/pyactuator/ui/static/_next/static/chunks/0d3shmwh5_nmn.js
src/pyactuator/ui/static/_next/static/chunks/0flx~_ghzk2bi.js
src/pyactuator/ui/static/_next/static/chunks/0g5yw9ox_1fp6.js
src/pyactuator/ui/static/_next/static/chunks/0h6r3yyra3-ch.js
src/pyactuator/ui/static/_next/static/chunks/0ju1u8.lbevop.js
src/pyactuator/ui/static/_next/static/chunks/0lsl4e3-s.2i3.js
src/pyactuator/ui/static/_next/static/chunks/0pkuy-mtzyb4r.js
src/pyactuator/ui/static/_next/static/chunks/0pqt~8bl3ukh4.js
src/pyactuator/ui/static/_next/static/chunks/0qo5b.c_fvi-n.js
src/pyactuator/ui/static/_next/static/chunks/0rwc8c7_polew.js
src/pyactuator/ui/static/_next/static/chunks/0v.35dkviqghe.js
src/pyactuator/ui/static/_next/static/chunks/0v2yz6fp7-xlk.js
src/pyactuator/ui/static/_next/static/chunks/0y_2218e92_85.js
src/pyactuator/ui/static/_next/static/chunks/1323hkb7q_vbx.js
src/pyactuator/ui/static/_next/static/chunks/14qs84s~0064d.js
src/pyactuator/ui/static/_next/static/chunks/14s3vm~1w-0mb.js
src/pyactuator/ui/static/_next/static/chunks/turbopack-0hm-5.8g9~ggd.js
src/pyactuator/ui/static/_not-found/__next._full.txt
src/pyactuator/ui/static/_not-found/__next._head.txt
src/pyactuator/ui/static/_not-found/__next._index.txt
src/pyactuator/ui/static/_not-found/__next._not-found.__PAGE__.txt
src/pyactuator/ui/static/_not-found/__next._not-found.txt
src/pyactuator/ui/static/_not-found/__next._tree.txt
src/pyactuator/ui/static/_not-found/index.html
src/pyactuator/ui/static/_not-found/index.txt
src/pyactuator/ui/static/account/__next._full.txt
src/pyactuator/ui/static/account/__next._head.txt
src/pyactuator/ui/static/account/__next._index.txt
src/pyactuator/ui/static/account/__next._tree.txt
src/pyactuator/ui/static/account/__next.account.__PAGE__.txt
src/pyactuator/ui/static/account/__next.account.txt
src/pyactuator/ui/static/account/index.html
src/pyactuator/ui/static/account/index.txt
src/pyactuator/ui/static/comms/email/__next._full.txt
src/pyactuator/ui/static/comms/email/__next._head.txt
src/pyactuator/ui/static/comms/email/__next._index.txt
src/pyactuator/ui/static/comms/email/__next._tree.txt
src/pyactuator/ui/static/comms/email/__next.comms.email.__PAGE__.txt
src/pyactuator/ui/static/comms/email/__next.comms.email.txt
src/pyactuator/ui/static/comms/email/__next.comms.txt
src/pyactuator/ui/static/comms/email/index.html
src/pyactuator/ui/static/comms/email/index.txt
src/pyactuator/ui/static/comms/slack/__next._full.txt
src/pyactuator/ui/static/comms/slack/__next._head.txt
src/pyactuator/ui/static/comms/slack/__next._index.txt
src/pyactuator/ui/static/comms/slack/__next._tree.txt
src/pyactuator/ui/static/comms/slack/__next.comms.slack.__PAGE__.txt
src/pyactuator/ui/static/comms/slack/__next.comms.slack.txt
src/pyactuator/ui/static/comms/slack/__next.comms.txt
src/pyactuator/ui/static/comms/slack/index.html
src/pyactuator/ui/static/comms/slack/index.txt
src/pyactuator/ui/static/dashboard/__next._full.txt
src/pyactuator/ui/static/dashboard/__next._head.txt
src/pyactuator/ui/static/dashboard/__next._index.txt
src/pyactuator/ui/static/dashboard/__next._tree.txt
src/pyactuator/ui/static/dashboard/__next.dashboard.__PAGE__.txt
src/pyactuator/ui/static/dashboard/__next.dashboard.txt
src/pyactuator/ui/static/dashboard/index.html
src/pyactuator/ui/static/dashboard/index.txt
src/pyactuator/ui/static/documentation/__next._full.txt
src/pyactuator/ui/static/documentation/__next._head.txt
src/pyactuator/ui/static/documentation/__next._index.txt
src/pyactuator/ui/static/documentation/__next._tree.txt
src/pyactuator/ui/static/documentation/__next.documentation.__PAGE__.txt
src/pyactuator/ui/static/documentation/__next.documentation.txt
src/pyactuator/ui/static/documentation/index.html
src/pyactuator/ui/static/documentation/index.txt
src/pyactuator/ui/static/google/__next._full.txt
src/pyactuator/ui/static/google/__next._head.txt
src/pyactuator/ui/static/google/__next._index.txt
src/pyactuator/ui/static/google/__next._tree.txt
src/pyactuator/ui/static/google/__next.google.__PAGE__.txt
src/pyactuator/ui/static/google/__next.google.txt
src/pyactuator/ui/static/google/index.html
src/pyactuator/ui/static/google/index.txt
src/pyactuator/ui/static/google/docs/replace-text/__next._full.txt
src/pyactuator/ui/static/google/docs/replace-text/__next._head.txt
src/pyactuator/ui/static/google/docs/replace-text/__next._index.txt
src/pyactuator/ui/static/google/docs/replace-text/__next._tree.txt
src/pyactuator/ui/static/google/docs/replace-text/__next.google.docs.replace-text.__PAGE__.txt
src/pyactuator/ui/static/google/docs/replace-text/__next.google.docs.replace-text.txt
src/pyactuator/ui/static/google/docs/replace-text/__next.google.docs.txt
src/pyactuator/ui/static/google/docs/replace-text/__next.google.txt
src/pyactuator/ui/static/google/docs/replace-text/index.html
src/pyactuator/ui/static/google/docs/replace-text/index.txt
src/pyactuator/ui/static/google/drive/download/__next._full.txt
src/pyactuator/ui/static/google/drive/download/__next._head.txt
src/pyactuator/ui/static/google/drive/download/__next._index.txt
src/pyactuator/ui/static/google/drive/download/__next._tree.txt
src/pyactuator/ui/static/google/drive/download/__next.google.drive.download.__PAGE__.txt
src/pyactuator/ui/static/google/drive/download/__next.google.drive.download.txt
src/pyactuator/ui/static/google/drive/download/__next.google.drive.txt
src/pyactuator/ui/static/google/drive/download/__next.google.txt
src/pyactuator/ui/static/google/drive/download/index.html
src/pyactuator/ui/static/google/drive/download/index.txt
src/pyactuator/ui/static/google/drive/upload/__next._full.txt
src/pyactuator/ui/static/google/drive/upload/__next._head.txt
src/pyactuator/ui/static/google/drive/upload/__next._index.txt
src/pyactuator/ui/static/google/drive/upload/__next._tree.txt
src/pyactuator/ui/static/google/drive/upload/__next.google.drive.txt
src/pyactuator/ui/static/google/drive/upload/__next.google.drive.upload.__PAGE__.txt
src/pyactuator/ui/static/google/drive/upload/__next.google.drive.upload.txt
src/pyactuator/ui/static/google/drive/upload/__next.google.txt
src/pyactuator/ui/static/google/drive/upload/index.html
src/pyactuator/ui/static/google/drive/upload/index.txt
src/pyactuator/ui/static/google/sheets/append/__next._full.txt
src/pyactuator/ui/static/google/sheets/append/__next._head.txt
src/pyactuator/ui/static/google/sheets/append/__next._index.txt
src/pyactuator/ui/static/google/sheets/append/__next._tree.txt
src/pyactuator/ui/static/google/sheets/append/__next.google.sheets.append.__PAGE__.txt
src/pyactuator/ui/static/google/sheets/append/__next.google.sheets.append.txt
src/pyactuator/ui/static/google/sheets/append/__next.google.sheets.txt
src/pyactuator/ui/static/google/sheets/append/__next.google.txt
src/pyactuator/ui/static/google/sheets/append/index.html
src/pyactuator/ui/static/google/sheets/append/index.txt
src/pyactuator/ui/static/obsidian/__next._full.txt
src/pyactuator/ui/static/obsidian/__next._head.txt
src/pyactuator/ui/static/obsidian/__next._index.txt
src/pyactuator/ui/static/obsidian/__next._tree.txt
src/pyactuator/ui/static/obsidian/__next.obsidian.__PAGE__.txt
src/pyactuator/ui/static/obsidian/__next.obsidian.txt
src/pyactuator/ui/static/obsidian/index.html
src/pyactuator/ui/static/obsidian/index.txt
src/pyactuator/ui/static/orders/__next._full.txt
src/pyactuator/ui/static/orders/__next._head.txt
src/pyactuator/ui/static/orders/__next._index.txt
src/pyactuator/ui/static/orders/__next._tree.txt
src/pyactuator/ui/static/orders/__next.orders.__PAGE__.txt
src/pyactuator/ui/static/orders/__next.orders.txt
src/pyactuator/ui/static/orders/index.html
src/pyactuator/ui/static/orders/index.txt
src/pyactuator/ui/static/positions/__next._full.txt
src/pyactuator/ui/static/positions/__next._head.txt
src/pyactuator/ui/static/positions/__next._index.txt
src/pyactuator/ui/static/positions/__next._tree.txt
src/pyactuator/ui/static/positions/__next.positions.__PAGE__.txt
src/pyactuator/ui/static/positions/__next.positions.txt
src/pyactuator/ui/static/positions/index.html
src/pyactuator/ui/static/positions/index.txt
src/pyactuator/ui/static/settings/__next._full.txt
src/pyactuator/ui/static/settings/__next._head.txt
src/pyactuator/ui/static/settings/__next._index.txt
src/pyactuator/ui/static/settings/__next._tree.txt
src/pyactuator/ui/static/settings/__next.settings.__PAGE__.txt
src/pyactuator/ui/static/settings/__next.settings.txt
src/pyactuator/ui/static/settings/index.html
src/pyactuator/ui/static/settings/index.txt
src/pyactuator/ui/static/trade/__next._full.txt
src/pyactuator/ui/static/trade/__next._head.txt
src/pyactuator/ui/static/trade/__next._index.txt
src/pyactuator/ui/static/trade/__next._tree.txt
src/pyactuator/ui/static/trade/__next.trade.__PAGE__.txt
src/pyactuator/ui/static/trade/__next.trade.txt
src/pyactuator/ui/static/trade/index.html
src/pyactuator/ui/static/trade/index.txt
tests/conftest.py
tests/integration/__init__.py
tests/integration/test_alpaca_adapter.py
tests/unit/__init__.py
tests/unit/test_backwards_compat.py
tests/unit/test_errors.py
tests/unit/test_fleet_ui_smoke.py
tests/unit/test_http_errors.py
tests/unit/test_idempotency.py
tests/unit/test_mock_adapter.py
tests/unit/test_order_validation.py
tests/unit/test_orders_route_errors.py
tests/unit/test_retry.py
tests/unit/test_types.py
tests/unit/api/__init__.py
tests/unit/api/test_domain_routes.py
tests/unit/api/test_google_workspace_models.py
tests/unit/api/test_trading_alpaca_models.py
tests/unit/config/test_google_resolution.py
tests/unit/core/__init__.py
tests/unit/core/test_audit.py
tests/unit/core/test_envelopes.py
tests/unit/core/test_idempotency.py
tests/unit/core/test_policy.py
tests/unit/core/test_registry.py
tests/unit/core/test_retry.py
tests/unit/core/test_spec.py
tests/unit/domains/__init__.py
tests/unit/domains/comms/__init__.py
tests/unit/domains/comms/test_email_sendgrid.py
tests/unit/domains/comms/test_email_smtp.py
tests/unit/domains/comms/test_mock_adapters.py
tests/unit/domains/comms/test_slack_api.py
tests/unit/domains/comms/test_slack_webhook.py
tests/unit/domains/comms/test_types.py
tests/unit/domains/documents/__init__.py
tests/unit/domains/documents/test_markdown_jinja.py
tests/unit/domains/documents/test_mock_renderer.py
tests/unit/domains/documents/test_pdf_reportlab.py
tests/unit/domains/documents/test_store.py
tests/unit/domains/documents/test_types.py
tests/unit/domains/google/__init__.py
tests/unit/domains/google/test_auth.py
tests/unit/domains/google/test_errors.py
tests/unit/domains/google/test_google_integration.py
tests/unit/domains/google/test_httpx_adapters.py
tests/unit/domains/google/test_mock_docs.py
tests/unit/domains/google/test_mock_drive.py
tests/unit/domains/google/test_mock_sheets.py
tests/unit/domains/google/test_protocols.py
tests/unit/domains/trading/test_trading_integration.py
tests/unit/integrations/__init__.py
tests/unit/integrations/pygubernator/__init__.py
tests/unit/integrations/pygubernator/conftest.py
tests/unit/integrations/pygubernator/test_execution.py
tests/unit/integrations/pygubernator/test_policy_and_timeout.py
tests/unit/integrations/pygubernator/test_registration.py
tests/unit/integrations/pystator/__init__.py
tests/unit/integrations/pystator/conftest.py
tests/unit/integrations/pystator/test_comms_actions.py
tests/unit/integrations/pystator/test_documents_actions.py
tests/unit/integrations/pystator/test_google_actions.py
tests/unit/integrations/pystator/test_real_pystator.py
tests/unit/integrations/pystator/test_registration.py
tests/unit/integrations/pystator/test_trading_actions.py