Skip to content

Next major: scheduled breaking cleanups (legacy batch-step shape, deprecated rotate client surface, client-types narrowing) #1370

Description

@thymikee

Tracking issue collecting the breaking cleanups deliberately deferred to the next major version, so they ship together instead of scattering. All three were audited and verified in the July 2026 overengineering audit (#1367 arc).

1. Remove the legacy batch-step {command, positionals, flags} shape

src/cli/batch-steps.ts: ~90 of ~140 lines exist solely to translate the deprecated shape into the current {command, input} shape (readLegacyCliBatchStep, assertLegacyBatchStepKeys, readLegacyPositionals, readLegacyFlags, legacyStepToStructuredStep, cliFlagsFromBatchStep). A runtime deprecation warning ("deprecated and will be removed in the next major version") has been live since the structured shape became primary, and cli-help documents the boundary. Removal leaves readCliBatchStepsJson as a thin JSON-array validate + parseBatchStepRuntime map.

2. Remove the deprecated rotate SDK client surface

The runtime-layer duplicate was already removed in #1367 (the CLI alias in #1277). What remains is the published back-compat surface, annotated "Retained until the next major":

  • agent-device-client.ts rotate wrapper (independent one-line delegation to orientation with an action: 'rotate' relabel)
  • client-types.ts RotateCommandOptions / RotateCommandResult / DeprecatedCommandClient

3. Client-types narrowing (Record<string, unknown> → typed command results)

The largest remaining simplification (~−550 lines by earlier estimate), and the reason this needs a major: it narrows public client return types, which is API-changing for SDK consumers even though it strictly increases type information. The command-descriptor foundation it builds on (#905#911) is merged. Needs a design pass on migration/compat notes before implementation — it is a typed-results migration, not a mechanical dedup.

Non-goals

Deprecated --session-locked / --session-lock-conflicts and replay export --format were already removed in #1367 (pre-1.0 breaking, CHANGELOG'd) and are not part of this bundle.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions