Skip to content

chore: add DeepSource config scoped to hand-written code - #96

Merged
abhishekmishragithub merged 1 commit into
mainfrom
chore/deepsource-config
Aug 9, 2026
Merged

chore: add DeepSource config scoped to hand-written code#96
abhishekmishragithub merged 1 commit into
mainfrom
chore/deepsource-config

Conversation

@abhishekmishragithub

Copy link
Copy Markdown
Collaborator

Adds .deepsource.toml so DeepSource analysis activates on the repo (the GitHub app is already configured).

The SDK is mostly Fern-generated, so generated surfaces are excluded to keep findings on hand-written code (crew, cli, helpers, tools, telemetry):

  • raw_client.py, client.py, socket_client.py, types/**, errors/**, core/**, environment.py, package __init__.py

Analyzers (reference):

  • pythontype_checker = mypy, max_line_length = 120 (matches ruff)
  • secrets
  • test-coverage

Standalone so DeepSource starts reading main immediately, rather than waiting for the 5.10 release. Will be removed from the 5.10 release branch to avoid a duplicate add.

abhishekmishragithub added a commit that referenced this pull request Aug 8, 2026
The .deepsource.toml is added directly to main in #96 so analysis activates
without waiting for this release. Removed here to avoid a duplicate add.
Enables DeepSource analysis on the repo. The SDK is mostly Fern-generated, so
generated surfaces (raw_client, client, socket_client, types, errors, core,
environment, package __init__) are excluded so findings focus on hand-written
code: crew, cli, helpers, tools, telemetry.

Python analyzer with mypy type checking (line length 120 to match ruff), plus
the secrets and test-coverage analyzers.
@abhishekmishragithub
abhishekmishragithub merged commit 306f601 into main Aug 9, 2026
3 checks passed
abhishekmishragithub added a commit that referenced this pull request Aug 9, 2026
#95)

* release: 5.10.0 — adapters, tools, crew ownership, telemetry, CLI DevX

Consolidated feature release (previously split across feat/framework-adapters,
feat/crew-config-ownership, feat/tools-framework, feat/telemetry, feat/cli-devx):

- integrations: optional pipecat + livekit adapters (smallestai[pipecat]/[livekit]),
  lazy re-exports of the framework-native plugins.
- tools: smallestai.tools framework + ExaSearchTool (smallestai[exa]); plugs into a
  crew ToolRegistry in one line.
- cli: agent-crew init prints crew-vs-platform ownership; new agent-crew doctor;
  SDKSystemUpdateOutputAgentSettingsEvent deprecated.
- telemetry: anonymous, opt-out usage telemetry via PostHog (no PII/secrets,
  SMALLESTAI_TELEMETRY=0 / DO_NOT_TRACK=1).
- cli: welcome banner on bare `smallestai` (no more "Missing command" error) + new
  `smallestai mcp` command for the MCP server.

Third-party libraries are optional extras, lazy-imported; core deps unchanged.
Version 5.10.0. Full custom test suite green; mypy clean on new files.

* fix(deps): scope optional framework deps by python + regen lock

CI (poetry) failed to resolve the optional extras: pipecat-ai requires Python
>=3.11 and livekit-plugins-smallestai >=3.10, but the SDK supports python ^3.9,
so `version = "*"` had no match across the range. Add python markers so poetry
only resolves them on compatible interpreters, drop the nonexistent
pipecat-ai[smallest] extra, and regenerate poetry.lock to match pyproject.

* fix(tests): type: ignore optional-framework imports in adapter/tool tests

The compile CI step is `mypy .`. The adapter/tool tests import pipecat/livekit/exa
in their 'if installed' branches; those aren't installed in CI, so mypy flagged
import-not-found. Mark them type: ignore[import-not-found], matching the source
modules. Verified with mypy 1.13.0 (the CI-pinned version): 0 errors, 1021 files.

* style: ruff lint + format across hand-written files

Apply ruff --fix (unused imports, import sorting) and ruff format to the
hand-written code (examples, tests, scripts, cli/crew/helpers/tools/integrations).
Generated Fern output was already ruff-formatted and is untouched. Makes the tree
conform to the new ruff CI gate + pre-commit hooks.

* chore(dev): pre-commit hooks + CI lint/security gates

- .pre-commit-config.yaml: ruff (lint+format) + gitleaks.
- CI: new lint job (ruff check + ruff format --check) and security job (gitleaks
  secret scan + pip-audit dependency CVEs); both gate publish.
- .gitleaks.toml allowlists the write-only PostHog phc_ key.
- .deepsource.toml (scoped to hand-written code) ready if the DeepSource app is enabled.

Verified locally: ruff clean, gitleaks 'no leaks found', pip-audit 'no known
vulnerabilities'.

* ci: make pip-audit report-only (pre-existing transitive CVE backlog)

pip-audit flags advisories in pinned transitive deps (pytest, requests, urllib3,
starlette, setuptools, python-dotenv) that predate this branch. Keep it surfacing
CVEs in CI but non-blocking (continue-on-error) so it doesn't gate the release on
pre-existing debt; gitleaks + ruff remain hard gates. Bump the deps in a follow-up,
then flip pip-audit to blocking.

* fix(cli): correct MCP server package + env var in `smallestai mcp`

The published MCP server is @developer-smallestai/smallest-mcp-server (npm), not
@smallest-ai/mcp-server (which 404s), and it reads ATOMS_API_KEY (not
SMALLEST_API_KEY). Aligned the command, config snippet, and claude-mcp-add lines to
the published package + the docs. `mcp run` bridges ATOMS_API_KEY from SMALLEST_API_KEY
if only the latter is set. Caught while writing the public docs.

* docs(integrations): livekit adapter exposes both STT and TTS

The published livekit-plugins-smallestai (livekit/agents repo) exports STT + TTS.
Updated the adapter docstring example to import both, and the test to assert both
forward. No code change (the adapter is a passthrough); pipecat STT+TTS already correct.

* revert(integrations): drop pipecat/livekit adapters from 5.10

The docs already have canonical LiveKit + Pipecat integration pages using the native
packages (livekit-plugins-smallestai, pipecat-ai[smallest], both STT + TTS). A
smallestai.integrations re-export is a redundant second path, so remove it: the module,
its test, the [pipecat]/[livekit] extras, and the fernignore entry. Kept the tools
framework (Exa) - it has no canonical equivalent. Consolidated the changelog into a
single accurate 5.10.0 entry and fixed the MCP package name there too.

* chore: move DeepSource config to its own PR (#96)

The .deepsource.toml is added directly to main in #96 so analysis activates
without waiting for this release. Removed here to avoid a duplicate add.

* feat(api): add user.get_subscription; remove dead atoms.organization

Regenerated from the updated atoms OpenAPI (generator 5.12.12):

- add `client.atoms.user.get_subscription()` -> GetSubscriptionUserResponse
  (plan id, credits, per-plan limits, feature flags)
- remove `client.atoms.organization` — the underlying GET /organization
  returned 404 on the public API and was never functional

Isolated to the subscription + organization delta (two-pass regen diff, so no
unrelated spec drift is pulled in). Verified: mypy clean (1011 files), custom
tests pass, and the user wire tests (incl. subscription) pass.

* chore: ruff-format the get_subscription example in reference.md

CI lint runs ruff 0.16.1, which formats python code blocks inside markdown; the
spliced example block needed reformatting.

* feat(api): add remaining Voice Agents + Speech endpoints (5.10 completeness)

Regenerated from the combined atoms + waves specs (generator 5.12.12), applied
as a delta so the branch's existing waves streaming-TTS layer is untouched.

Voice Agents (atoms):
- account.get_account_details, account.update_organization_name
- web_call.start_web_chat_conversation, web_call.start_web_call_conversation
- campaigns.export_campaign_logs, campaigns.export_campaign_results_by_audience_member

Speech (waves):
- post_call_analysis.analyze, post_call_analysis.generate
- voices.get_all_voice_models
- analytics.* (ASR/TTS logs, usage/credits/concurrency/ws timeseries, webhook logs)
- ops.get_waves_health

Verified: mypy clean (1076 files), ruff check + format clean (0.16.1), full
pytest 354 passed / 4 skipped (incl. wire tests for every new endpoint).
reference.md is left for the next canonical regen; the SDK code and the
docs-site API reference cover the full surface.

* chore(security): allowlist generated wire-test fixtures in gitleaks

wiremock/wiremock-mappings.json is generated test data; its web-call stub
responses carry example (non-real) LiveKit JWTs that gitleaks flags. Allowlist
the fixture path so the secret scan stays green.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant