Skip to main content

TypeScript SDK Parity Reference

This reference table shows the feature parity status between the Python SDK (stable) and the TypeScript SDK (beta) as of Phase 2 Sprint 3.

Status legend:

  • Stable — shipped and fully tested
  • Beta — shipped, may have rough edges
  • Partial — partially implemented; specific gaps noted
  • Planned — on the roadmap, not yet shipped
  • N/A — not applicable to this runtime

Bootstrap and Configuration

FeaturePython SDKTypeScript SDKNotes
secure() / bootstrap() one-linerStableBetaBoth accept a config object and env vars
Environment variable config (PAVRI_*)StableBetaSame variable names
Explicit PavriConfig objectStableBetaTypeScript uses typed interface
fail_open semanticsStableBetaDefaults to true in both SDKs
enforcement_mode optionStableBetaactive, shadow, audit supported
Governance metadata attachmentStableBetametadata dict / object at bootstrap
Multi-org org_id supportStableBetaPassed at bootstrap

Agent Registration

FeaturePython SDKTypeScript SDKNotes
Agent fingerprintingStableBetaDeterministic fingerprint based on agent name, tools, and model
Auto-registration on first runStableBeta
Re-registration on fingerprint driftStableBetaEmits a drift_detected lifecycle event
Registration lifecycle eventStableBetaVisible in Sessions timeline
Team and environment labellingStableBetaPassed at bootstrap

Telemetry and Events

FeaturePython SDKTypeScript SDKNotes
Session start/end eventsStableBeta
Tool call eventsStableBeta
Model invocation eventsStableBeta
Policy evaluation eventsStableBeta
Token counting (session-level)StableBeta
Token counting (streaming / incremental)StablePlannedTypeScript SDK reports tokens at session end only
Cost estimationStablePlanned
Latency measurementStableBeta

Policy Sync and Enforcement

FeaturePython SDKTypeScript SDKNotes
Policy snapshot fetch on startupStableBeta
Local policy cacheStableBeta
Policy re-sync on cache expiryStableBetaConfigurable TTL
Active enforcement modeStableBetaThrows PolicyDeniedError
Shadow modeStableBetaRecords decisions without blocking
Audit modeStableBetaEmits compliance events
PolicyDeniedError with structured fieldsStableBetaSame error shape in both SDKs
Attribute-based policy targeting (metadata)StableBeta

Runtime Log Forwarding

FeaturePython SDKTypeScript SDKNotes
Structured log forwarding to Pavri backendStableBeta
Log severity levels (trace/debug/info/warn/error)StableBeta
Plugin scope taggingStableBeta
Error code and kind taggingStableBeta
Context fields on log recordsStableBeta

FeaturePython SDKTypeScript SDKNotes
Provider trace link captureStableBeta
Datadog APM link supportStableBeta
OpenTelemetry trace propagationStablePlanned
Custom trace link providersStablePlanned

Governance Metadata

FeaturePython SDKTypeScript SDKNotes
Arbitrary key-value metadata at bootstrapStableBeta
Metadata visible in dashboardStableBeta
Metadata available to policy rulesStableBetaAttribute-based access control
Metadata in audit exportsStableBeta
Metadata update after bootstrapPlannedPlannedRuntime metadata updates are a future feature

Framework Adapters

FrameworkPython SDKTypeScript SDKNotes
LangGraphStablePlannedTypeScript adapter targeted for P2-S4
LangChainStablePlanned
AutoGenStablePlanned
CrewAIStablePlanned
Generic object wrap (secure())StableBetaWorks for any agent object today
Vercel AI SDK adapterN/APlannedTypeScript-only, targeted for P2-S4

MCP Integration

FeaturePython SDKTypeScript SDKNotes
MCP server scanningStablePlannedTypeScript MCP connector not yet shipped
MCP tool inventory in fingerprintStablePlanned
MCP scope guard policy supportStablePlanned

Notes

  • The TypeScript SDK uses the same backend API and wire format as the Python SDK. Any feature that is marked Beta is functional but may receive breaking changes before the final stable release.
  • The Python SDK remains the primary SDK for production governance. Teams adopting the TypeScript SDK beta should pin to a specific version and monitor the changelog.
  • Framework adapter gaps in the TypeScript SDK are the primary remaining parity gap. Generic secure() wrapping is available today for teams who cannot wait.