Maniac Docs
Migration

Parity matrix

Python versus TypeScript feature parity for @maniac-ai/agents, adapted from the internal parity matrix.

Parity matrix

This page summarizes packages/agents/docs/parity-matrix.md for documentation readers. Serialized payloads use Python-compatible snake_case field names in both runtimes.

Legend: Alpha = ported with fixture/mock coverage; behavior should match Python for the listed surface.

Core runtime

AreaTS statusNotes
Public entry points (Maniac, runAgent, streams, resume)AlphaTS method names; Python-compatible payloads
Agent schemas (AgentBudget, TraceEvent, checkpoints)AlphaZod validation; tool_call_arguments_delta wire shape matches byte-for-byte
Step hooks (prepare_step, stop_when, predicates)AlphacamelCase method names; same lifecycle firing points
Inference + adapters (OpenAI, OpenRouter, Vercel, Anthropic)AlphaStreaming, tool deltas, reasoning chunks
Tool loop (permissions, guardrails, middleware, budgets)AlphaTS requires explicit inputSchema on every tool
Partial-turn persistence on errorAlphapersistPartialOnError opt-out on both sides

Tools and permissions

AreaTS statusNotes
tool(), BaseToolset, delegated agentsAlphaNo Python signature introspection
Permissions + batched HITLAlphaArgConstraint quantifiers, sub_actions / sub_decisions, checkpoint schema v2
Guardrail require_approvalAlphaRoutes through same HITL path as policy
SessionPermissionCacheAlphaTTL-aware caching + remember() for "always allow this turn"
Builtin remember(note)AlphaAuto-injected when working-memory runner + enable_update_tool
Builtin set_planAlphaPlan primitive + ACP session/update emissions

Memory

AreaTS statusNotes
Core Memory protocol + scopesAlphaIn-memory, vector wrapper, Honcho adapter
Conversation / observation / checkpoint storesAlphaSame abstraction as agent memory
WorkingMemoryStore + runnerAlphaMastra-style mutable doc tier
SqliteMemoryTS onlySchema-compatible with Python Postgres reference
PostgresMemoryPython onlyNot ported to TypeScript
Memory relevance filterAlphaManiac({ memoryRelevanceFilter }) flag-style config
RuntimeMemoryAccess per chat turnAlpha"off" | "read" | "write" per observational/working tier

Python execution

AreaTS statusNotes
PythonSandboxClient + worker protocolAlphaTop-level await, namespace, stdout/stderr, injected RPC
REPL loop (python_exec)AlphaTool/namespace/memory injection conformance tests

Background tasks

AreaTS statusNotes
BackgroundTaskDispatcherAlphaWhole-runAgent dispatch; concurrency caps; runStreamUntilIdle
LM bg_* control toolsAlphaAuto-inject when dispatcher + background-eligible tool present
bg_wait multi-taskAlphatask_ids: string[] + mode: "all" | "any"; legacy task_id fallback
getActiveAbortSignal()AlphaCooperative cancellation for tool authors

Observability and ACP

AreaTS statusNotes
Tracer + correlation IDsAlphaturn_id, message_id, block_id, thread_id
OTelTracerAlphaOptional @opentelemetry/* peers
ACP server + TraceTranslatorAlphaserveAcpStdio, plan primitive, capability-gated fs/terminal tools
maniac-agents-acp CLIAlphaserve + client subcommands
acp_agent_as_toolPython onlyNo TS twin yet
serve_acp_websocketPython onlyTS ships stdio server

Channels (chat platforms)

AreaTS statusNotes
serveChannels + ChatToolsetTS onlySlack/Discord/Telegram/Teams/WhatsApp via Chat SDK
Inbound multimodalTS onlyContentPart[] through to model
Approval cards + checkpoint resumeTS onlyrequireApproval + resumeCheckpointStream
Webhook hardeningTS onlySigning verification, idempotency, body caps

Python parity is tracked but blocked on a Python Chat SDK adapter ecosystem.

Fixtures

FixturePurpose
fixtures/schema_roundtrip.jsonMessages, inference, agent result round-trips
fixtures/trace_checkpoint.jsonTrace sequences, HITL checkpoint, streaming tool-call chunks

Replace or extend these with Python-generated golden traces as live integration coverage expands.

Release path (from alpha notes)

  1. Replace alpha fixtures with Python-generated golden traces from high-value integration tests
  2. Expand live provider integration coverage behind OPENAI_API_KEY, OPENROUTER_API_KEY, etc.
  3. Package the Python worker as an optional peer artifact or separate process image
  4. Complete async background dispatch/re-entry orchestration on the durable task store

On this page