Skip to content

release: 5.10.0 — adapters, tools, crew ownership, telemetry, CLI DevX - #95

Draft
abhishekmishragithub wants to merge 12 commits into
mainfrom
release/5.10.0
Draft

release: 5.10.0 — adapters, tools, crew ownership, telemetry, CLI DevX#95
abhishekmishragithub wants to merge 12 commits into
mainfrom
release/5.10.0

Conversation

@abhishekmishragithub

Copy link
Copy Markdown
Collaborator

Consolidated feature release. Supersedes #90, #91, #92, #93, #94 (one review, one version bump instead of five).

Included

  • Framework adapterssmallestai.integrations.pipecat / .livekit, lazy re-exports; extras smallestai[pipecat] / [livekit].
  • Tools frameworksmallestai.tools + ExaSearchTool; extra smallestai[exa]; one-line crew registration.
  • Crew ownershipagent-crew init prints the crew-vs-platform boundary; new agent-crew doctor; deprecated the dead override event.
  • Telemetry — anonymous, opt-out usage telemetry via PostHog (no PII/secrets; SMALLESTAI_TELEMETRY=0 / DO_NOT_TRACK=1).
  • CLI DevX — welcome banner on bare smallestai (no more "Missing command"); new smallestai mcp (config / run / setup).

Design guarantees

  • Third-party libraries (pipecat, livekit, exa) are optional extras, lazy-imported; core deps unchanged. Missing extra → clear install error.
  • All new files are .fernignore'd (survive regen). Namespace-independent, so this carries into 6.0.

Verification (on the consolidated branch)

  • pytest tests/custom117 passed, 1 skipped (all five features' tests together + existing).
  • mypy — clean on all new files.
  • Extras parse to {pipecat, livekit, exa}; bare smallestai shows the banner (exit 0); doctor + mcp present.

Draft — merging bumps 5.10.0 and auto-publishes. Hold for your review.

Fast follows (separate): richer telemetry events (crew_deploy, errors), pagination helper, --debug request logging.

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.
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.
…ests

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.
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.
- .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'.
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.
@abhishekmishragithub

Copy link
Copy Markdown
Collaborator Author

Added dev quality + security tooling into this release (per request, shipping in 5.10):

  • .pre-commit-config.yaml — ruff (lint+format) + gitleaks.
  • CI: lint job (ruff check + format) and security job (gitleaks secret scan + pip-audit), both wired into publish needs.
  • .gitleaks.toml allowlists the write-only PostHog phc_ key; .deepsource.toml scoped to hand-written code (ready if the DeepSource app is enabled).
  • Ran ruff across the hand-written tree (72 files) so it conforms to the new gate.

All 5 CI jobs green (compile/test/lint/security pass; publish skips until merge). Note: pip-audit is report-only for now — it surfaces a pre-existing CVE backlog in pinned transitive deps (pytest/requests/urllib3/starlette/setuptools/python-dotenv); bump those in a follow-up, then flip it to blocking.

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.
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.
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.
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.
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.
CI lint runs ruff 0.16.1, which formats python code blocks inside markdown; the
spliced example block needed reformatting.
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