Skip to main content
Some TypeScript SDK options are accepted for Python-SDK parity but are not yet acted on; when you pass one, the SDK tells you so it’s never silently dropped.

Quick Start

1

See the notice fire

As of PR #4841 every Agent constructor and Agent.chat option is honoured — see the Agent page — and PR #4836 honoured all eight Handoff options. The notice above now fires only for the surfaces still in the queue below.
2

Silence the notices

Set PRAISONAI_PARITY_SILENT=1 for the process (useful in tests) to mute every parity notice.

How It Works

Each surface consults the UNHONOURED_OPTIONS ledger when it is constructed, and warns once per (surface, option) pair if you pass a listed option with a non-default value.

The Remaining Surfaces

These options are accepted for Python-SDK parity but not yet acted on. Pass any with a non-default value and the SDK emits a notice. Plus partial options that work for some inputs and announce themselves for the rest:
Counts current as of PR #4836 (2026-09-06), which honoured all eight Handoff options (contextPolicy, maxContextTokens, maxContextMessages, preserveSystem, timeoutSeconds, maxConcurrent, detectCycles, maxDepth), dropping the total 48 → 40 and removing the Handoff surface entirely — see Handoffs. PR #4841 (2026-09-05) honoured all 21 Agent options (Agent.__init__ 15 → 0, Agent.chat 6 → 0, total 69 → 48). Those options now do what they promise — and some of them throw on a typo. See Agent for examples and the exact error strings. PR #4837 honoured seven AgentTeam options (AgentTeam.__init__ 15 → 8, total 76 → 69). PR #4838 landed the Task engine implementing 28 of the 32 Task.__init__ options, but the ledger above is unchanged: the engine has no call sites yet, so the options still emit notices until a future PR wires the team runner in. The four that stay open on merit — autonomy, web, reflection, planning — have no reference behaviour in Python to port. The list is a downward ratchet, so it will shrink over time. The live list is BEHAVIOUR_PARITY.md; the ledger is parity-notice.ts. PR #4880 hardened the parity checkers so a green report now requires the checker to have actually evaluated the row — see the changelog note below.
runOn on AgentTeam is not just unhonoured — it throws a TypeError at construction. This differs from the silent-notice pattern above: runOn hands one agent’s whole loop to a managed runtime, and a team orchestrates several agents locally, so there is no single loop to hand over. Put runOn on an individual Agent instead.

Different defaults, same option

The same Agent(output=…) code is silent in Python and verbose in TypeScript because the two SDKs resolve different defaults for an option that both honour. The option is honoured on both sides, so this is not a “not yet honoured” surface — only the default differs when you leave it unset.
To make TypeScript behave like Python’s silent default, set the three fields explicitly:
The defaults are intentionally left as-is. In the words of the parity work that surfaced this: aligning defaults is a product decision, not a quiet edit — so the split is stable until a product-level decision changes it.

Best Practices

It’s accepted for API compatibility with the Python SDK, but the TypeScript behaviour behind it hasn’t been implemented yet. Watch the console for a [praisonai] … not yet honoured notice at startup.
Set the environment variable PRAISONAI_PARITY_SILENT=1 (or PRAISONAI_PARITY_SILENT=true) for the process. This is what test suites use to keep output clean.
Pass it. If you see no notice at startup, it’s honoured. Otherwise check BEHAVIOUR_PARITY.md on main for the current list.
Implement the behaviour, delete the option’s entry from the ledger, add a test that proves the option changes what the code does, and regenerate. See _dev/parity/README.md in the SDK repo.If you add a waiver in signatures/waivers.yaml, scope it with a kinds: list (e.g. kinds: [default]). A waiver is keyed by parameter, so an unscoped one waiving a default difference also silenced a required-ness change on the same parameter — waivers now take an optional kinds, and required-ness is never covered implicitly.A green checker report is no longer proof on its own. The checkers previously had eleven blind spots — flattened parameters that were matched but not checked, unrecognised TypeScript default forms silently matching Python’s None, and ts_only required members that were rendered but not evaluated — and PR #4880 closed them, so a clean run now genuinely means the row was inspected. Do not treat pre-#4880 green results as evidence.

Agent

TypeScript Agent class — Agent.__init__ and Agent.chat options.

Agent Team

Multi-agent teams — AgentTeam.__init__ options.

Handoffs

Agent handoffs — Handoff options.

Tasks

Task definitions — Task.__init__ options.