Skip to content
This repository was archived by the owner on Jun 3, 2026. It is now read-only.
This repository was archived by the owner on Jun 3, 2026. It is now read-only.

Create list of missing features that are in the python SDK (sdk-python) but not in this typescript SDK (sdk-typescript) #91

Description

@afarntrog

Task: Create Comprehensive Feature Gap Analysis

Original Request

Analyze the Python SDK (https://github.com/strands-agents/sdk-python) codebase and create a comprehensive list of features and functionality that exists in the Python SDK but is not yet present in this TypeScript SDK (https://github.com/strands-agents/sdk-typescript). Sort the list from largest to smallest feature.


Implementation Requirements

Overview

This task requires a thorough comparison between the mature Python SDK and the TypeScript SDK currently under development. The analysis should identify missing features, estimate their complexity, and provide context for future implementation planning.

Deliverables

A comprehensive markdown document or issue comment containing:

  1. Feature Gap List: All missing features sorted from largest to smallest

  2. Feature Descriptions: For each missing feature, include:

    • Size/complexity estimate
    • Description of what it does in the Python SDK
    • What it enables for users
    • TypeScript-specific implementation considerations
    • Relevant file references from Python SDK
  3. Priority Recommendations: Suggested implementation order based on:

    • Dependencies between features
    • Impact on developer experience
    • Production readiness requirements

Research Completed

Python SDK Structure (Analyzed)

The Python SDK is a mature, production-ready framework with the following major components:

Core Components:

  • agent/ - Agent implementation with invoke/stream methods, conversation management, state management, and interruption handling
  • event_loop/ - Event loop orchestration system
  • models/ - 12 model provider implementations (Bedrock, OpenAI, Anthropic, Gemini, Cohere, LiteLLM, llama.cpp, LlamaAPI, Mistral, Ollama, SageMaker, Writer)
  • tools/ - Comprehensive tool system with decorators, hot-reloading, MCP integration, executors, and structured output
  • hooks/ - Lifecycle event system for extensibility
  • session/ - Session persistence with file, S3, and repository pattern support
  • multiagent/ - Multi-agent systems (Graph, Swarm, A2A protocol)
  • telemetry/ - Full OpenTelemetry tracing and metrics
  • handlers/ - Callback handler system
  • experimental/ - Experimental features (config-based agents, new patterns)

TypeScript SDK Current State (Analyzed)

The TypeScript SDK is in early development with basic building blocks:

Implemented:

  • ✅ Base Model interface
  • ✅ BedrockModel provider
  • ✅ OpenAI model provider
  • ✅ Streaming event types
  • ✅ Tool interface and FunctionTool
  • ✅ ToolRegistry
  • ✅ Message and JSON type definitions
  • ✅ Basic error handling (ContextWindowOverflowError)

Missing:

  • ❌ Agent class (core functionality)
  • ❌ Event loop
  • ❌ Conversation manager
  • ❌ Hooks system
  • ❌ Session management
  • ❌ Multi-agent support
  • ❌ Telemetry/observability
  • ❌ 10 additional model providers
  • ❌ Advanced tool features (decorators, hot-reloading, MCP)
  • ❌ Handlers system
  • ❌ Interruption system
  • ❌ Experimental features

Complete Missing Features List

(Sorted from Largest to Smallest)

1. 🔴 CORE AGENT SYSTEM

Size: Very Large (~50KB+ code, ~2-3 weeks)

Python SDK Files:

  • src/strands/agent/agent.py (41KB) - Main Agent class
  • src/strands/agent/agent_result.py (3KB) - Result types
  • src/strands/event_loop/ - Event loop orchestration
  • src/strands/agent/state.py (3KB) - State management
  • src/strands/agent/interrupt.py (2KB) - Interruption handling

Description:
The Agent class is the core of the entire framework. It orchestrates:

  • Synchronous and streaming agent execution
  • Built-in event loop for multi-turn conversations
  • Automatic tool calling and execution
  • Integration with models, tools, hooks, and telemetry
  • State management across turns
  • Interrupt capabilities for human-in-the-loop

Enables:

const agent = new Agent({ tools: [myTool], model: bedrockModel })
const response = await agent.invoke("What is 2+2?")
// OR
for await (const event of agent.stream("message")) {
  console.log(event)
}

TypeScript Considerations:

  • Async/await patterns for all operations
  • Event emitter for streaming
  • Browser and Node.js compatibility
  • Type-safe configuration
  • Generator functions for streaming

2. 🔴 MULTI-AGENT SYSTEMS

Size: Very Large (~70KB code, ~2-3 weeks)

Python SDK Files:

  • src/strands/multiagent/graph.py (31KB) - DAG-based orchestration
  • src/strands/multiagent/swarm.py (30KB) - Swarm pattern
  • src/strands/multiagent/base.py (9KB) - Base functionality
  • src/strands/multiagent/a2a/ - A2A protocol integration

Description:
Complete multi-agent orchestration capabilities:

  • Graph: DAG-based agent workflows with conditional routing
  • Swarm: OpenAI Swarm-like pattern for dynamic agent handoffs
  • A2A Protocol: Agent-to-Agent communication protocol
  • State sharing between agents
  • Conditional routing and delegation

Enables:

// Graph pattern
const graph = new Graph()
graph.addNode("agent1", agent1)
graph.addNode("agent2", agent2)
graph.addEdge("agent1", "agent2", (result) => result.shouldContinue)

// Swarm pattern
const swarm = new Swarm({ agents: [agent1, agent2] })
const result = await swarm.run("complex task")

TypeScript Considerations:

  • Graph data structures and algorithms
  • Promise-based coordination
  • Type-safe agent communication interfaces
  • Dependency resolution

3. 🔴 TELEMETRY & OBSERVABILITY

Size: Very Large (~60KB code, ~2 weeks)

Python SDK Files:

  • src/strands/telemetry/tracer.py (30KB) - OpenTelemetry tracing
  • src/strands/telemetry/metrics.py (21KB) - Metrics collection
  • src/strands/telemetry/config.py (8KB) - Configuration
  • src/strands/telemetry/metrics_constants.py (1KB) - Constants

Description:
Production-grade observability with OpenTelemetry:

  • Distributed tracing with spans and attributes
  • Automatic instrumentation of agent operations
  • Token usage and cost tracking
  • Latency and performance metrics
  • Integration with OTLP exporters
  • Custom metrics and spans

Enables:

  • Automatic tracing of all agent invocations
  • Token usage tracking per model call
  • Cost estimation and monitoring
  • Performance profiling
  • Production debugging
  • Integration with DataDog, Honeycomb, AWS X-Ray, etc.

TypeScript Considerations:

  • @opentelemetry/api and @opentelemetry/sdk-node
  • Browser vs Node.js instrumentation differences
  • Performance overhead optimization
  • Async context propagation

4. 🟠 ADDITIONAL MODEL PROVIDERS

Size: Large (~176KB code, ~1-2 weeks)

Python SDK Files:

  • src/strands/models/anthropic.py (18KB)
  • src/strands/models/gemini.py (18KB)
  • src/strands/models/litellm.py (13KB)
  • src/strands/models/llamaapi.py (17KB)
  • src/strands/models/llamacpp.py (30KB)
  • src/strands/models/mistral.py (21KB)
  • src/strands/models/ollama.py (14KB)
  • src/strands/models/sagemaker.py (27KB)
  • src/strands/models/writer.py (18KB)

Description:
9 additional production-ready model providers:

  • Anthropic - Direct Claude API
  • Gemini - Google's Gemini models
  • LiteLLM - Universal gateway (100+ models)
  • LlamaAPI - Hosted Llama models
  • llama.cpp - Local llama.cpp server
  • Mistral - Mistral AI models
  • Ollama - Local Ollama server
  • SageMaker - AWS SageMaker endpoints
  • Writer - Writer AI platform

Each with full streaming, tool calling, and provider-specific features.

TypeScript Considerations:

  • Provider SDK availability in npm
  • Browser compatibility (some Node-only)
  • Different authentication patterns
  • API client variations

5. 🟠 SESSION MANAGEMENT & PERSISTENCE

Size: Large (~35KB code, ~1 week)

Python SDK Files:

  • src/strands/session/session_manager.py (3KB) - Base interface
  • src/strands/session/file_session_manager.py (10KB) - File storage
  • src/strands/session/s3_session_manager.py (13KB) - S3 storage
  • src/strands/session/repository_session_manager.py (7KB) - Repository pattern
  • src/strands/session/session_repository.py (2KB) - Repository interface

Description:
Complete session persistence system:

  • Abstract SessionManager interface
  • File-based persistence for development
  • S3-based persistence for production
  • Repository pattern for custom backends
  • Automatic conversation history management
  • Session restoration across invocations

Enables:

const agent = new Agent({
  sessionManager: new S3SessionManager({ bucket: "my-bucket" }),
  sessionId: "user-123"
})
// Conversation automatically persisted and restored

TypeScript Considerations:

  • localStorage for browser
  • File system APIs for Node.js
  • AWS SDK v3 for S3
  • IndexedDB for browser persistence

6. 🟠 HOOKS SYSTEM

Size: Large (~17KB code, ~5-7 days)

Python SDK Files:

  • src/strands/hooks/events.py (7KB) - Event definitions
  • src/strands/hooks/registry.py (10KB) - Registry management

Description:
Comprehensive lifecycle hook system:

  • Pre/post agent invocation hooks
  • Pre/post tool execution hooks
  • Pre/post model call hooks
  • Error handling hooks
  • Custom event hooks
  • Priority and ordering
  • Async hook execution

Enables:

hooks.on("before_tool_execute", (event) => {
  console.log(`Executing: ${event.toolName}`)
})

const agent = new Agent({ hooks })

TypeScript Considerations:

  • Event emitter patterns
  • TypeScript decorators (experimental)
  • Type-safe hook definitions
  • Async hook execution with Promise.all

7. 🟠 ADVANCED TOOL FEATURES

Size: Large (~45KB+ code, ~1 week)

Python SDK Files:

  • src/strands/tools/decorator.py (26KB) - @tool decorator
  • src/strands/tools/loader.py (13KB) - Dynamic loading
  • src/strands/tools/watcher.py (6KB) - Hot-reloading
  • src/strands/tools/executors/ - Execution strategies
  • src/strands/tools/mcp/ - MCP integration
  • src/strands/tools/structured_output/ - Output validation

Description:
Advanced tool capabilities:

  • Decorator pattern for tool creation
  • Dynamic loading from filesystem directory
  • Hot-reloading with file watching
  • MCP (Model Context Protocol) tool integration
  • Multiple execution strategies
  • Structured output with validation
  • Input/output schema validation

Enables:

// Decorator pattern
@tool()
function myTool(x: number): string {
  return x.toString()
}

// Hot-reloading
const agent = new Agent({ loadToolsFromDirectory: true })

// MCP integration
const mcpClient = new MCPClient(...)
const agent = new Agent({ tools: await mcpClient.listTools() })

TypeScript Considerations:

  • TypeScript decorators (experimental)
  • chokidar for file watching
  • MCP TypeScript SDK integration
  • zod for schema validation

8. 🟡 MCP (MODEL CONTEXT PROTOCOL) SUPPORT

Size: Medium-Large (~1 week)

Python SDK Files:

  • src/strands/tools/mcp/ (multiple files)

Description:
Full Model Context Protocol support:

  • MCP client implementation
  • MCP server discovery
  • Tool listing and execution
  • Stdio and HTTP transports
  • Access to thousands of pre-built tools

Enables:

const client = new MCPClient({
  transport: new StdioTransport({
    command: "npx",
    args: ["@modelcontextprotocol/server-name"]
  })
})
const tools = await client.listTools()
const agent = new Agent({ tools })

TypeScript Considerations:

  • MCP TypeScript SDK already exists
  • Child process management
  • Browser limitations (needs proxy)
  • Transport implementations

9. 🟡 CONVERSATION MANAGER

Size: Medium (~5-7 days)

Python SDK Files:

  • src/strands/agent/conversation_manager/ (directory)

Description:
Sophisticated context window management:

  • Automatic message truncation strategies
  • Summarization when context overflows
  • Sliding window algorithms
  • Token counting
  • Context overflow handling
  • Configurable strategies

Enables:

  • Automatic handling when conversation exceeds model limits
  • Configurable strategies (truncate, summarize, error)
  • Token-aware message management
  • Long-running conversations

TypeScript Considerations:

  • Token counting (tiktoken or @anthropic-ai/tokenizer)
  • Summarization strategies
  • Model-specific context limits

10. 🟡 HANDLERS SYSTEM

Size: Medium (~2KB code, ~2-3 days)

Python SDK Files:

  • src/strands/handlers/callback_handler.py (2KB)

Description:
Callback handler system:

  • Streaming event callbacks
  • Tool execution callbacks
  • Error callbacks
  • Custom handler registration
  • Handler chaining

TypeScript Considerations:

  • Event emitter or callback patterns
  • Type-safe handler interfaces
  • Promise-based async handlers

11. 🟡 EXPERIMENTAL FEATURES

Size: Medium (~5KB+ code, ~3-5 days)

Python SDK Files:

  • src/strands/experimental/agent_config.py (5KB)
  • src/strands/experimental/hooks/
  • src/strands/experimental/tools/

Description:
Experimental features in testing:

  • Configuration-based agent creation (YAML/JSON)
  • Experimental hooks
  • Experimental tools
  • New patterns being developed

Enables:

// Config-based agents
const agent = Agent.fromConfig("agent-config.yaml")

TypeScript Considerations:

  • YAML parsing (yaml package)
  • JSON schema validation
  • Configuration validation

12. 🟢 AGENT INTERRUPTION SYSTEM

Size: Small-Medium (~3KB code, ~2-3 days)

Python SDK Files:

  • src/strands/interrupt.py (1KB)
  • src/strands/agent/interrupt.py (2KB)

Description:
Human-in-the-loop interruption:

  • Interrupt agent execution at checkpoints
  • Request human approval before actions
  • Resume from interruption point
  • Interrupt state management
  • Approval workflows

Enables:

agent.on("tool_execute", async (event) => {
  if (event.toolName === "delete_file") {
    const approved = await askUser("Delete file?")
    if (!approved) throw new InterruptError()
  }
})

TypeScript Considerations:

  • AbortController for cancellation
  • Promise cancellation patterns
  • State preservation across interrupts

13. 🟢 ADDITIONAL UTILITIES

Size: Small (~3KB code, ~1-2 days)

Python SDK Files:

  • src/strands/_async.py (1KB) - Async utilities
  • src/strands/_exception_notes.py (1KB) - Error enhancement
  • src/strands/_identifier.py (1KB) - ID generation

Description:
Various utility functions:

  • Async/await helpers
  • Enhanced error messages with context
  • Unique ID generation
  • Internal utilities

TypeScript Considerations:

  • Native async/await (no helpers needed)
  • uuid for ID generation
  • Error stack enhancement

Recommended Implementation Priority

Based on dependencies, impact, and production readiness:

  1. Core Agent System ← Foundation for everything
  2. Conversation Manager ← Essential for production
  3. Hooks System ← Enables extensibility
  4. Session Management ← Required for stateful apps
  5. Advanced Tool Features ← Developer experience
  6. Telemetry ← Production monitoring
  7. Additional Model Providers ← Ecosystem compatibility
  8. MCP Support ← Tool ecosystem access
  9. Multi-agent Systems ← Advanced patterns
  10. Handlers System ← Event processing
  11. Agent Interruption ← Human-in-the-loop
  12. Experimental Features ← Innovation
  13. Additional Utilities ← Nice-to-haves

Acceptance Criteria

  • Comprehensive list of missing features created
  • Features sorted from largest to smallest by implementation size
  • Each feature includes description, impact, and TS considerations
  • Python SDK file references provided for each feature
  • Implementation priority recommendations included
  • TypeScript-specific considerations documented
  • Size estimates provided (code size, time estimate)

Notes

  • This analysis is based on exploration of both repositories as of the analysis date
  • Size estimates are approximate and based on Python SDK file sizes and complexity
  • TypeScript implementations may differ in size due to language differences
  • Some features may need to be adapted for TypeScript/JavaScript ecosystem patterns
  • Browser compatibility considerations noted where relevant
  • The Python SDK is production-ready while TypeScript SDK is in early development

Repository Documentation Improvements

To clarify expectations for future contributors:

  • Consider adding a ROADMAP.md documenting planned features and their priority
  • Update README.md with "What's Implemented" and "What's Coming" sections
  • Create GitHub Projects or Milestones to track feature implementation progress
  • Consider creating a feature parity tracking document

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Language

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions