refactor(contracts): move telephony input parsing out of device-rotation

Merged
MI
1d ago
+115-116

Summary

Moves the telephony input parsing out of packages/contracts/src/device-rotation.ts into a new packages/contracts/src/telephony-input.ts. That covers TELEPHONY_ACTIONS, TELEPHONY_CALL_ACTIONS, TELEPHONY_USAGE, TelephonyEventInput, and the parsers parseTelephonyEventInput, parseTelephonyPositionals, and telephonyPositionals.

#3724 put this code in device-rotation.ts because a new module would have grown the CLI and session-journal eager closures past scripts/__tests__/eager-closure-budgets.ts. That was true while the code was new. Now that it is on main, the move is a pure split, and the split tolerance in closure-growth-rule.ts accepts it: the closure gains one new module, and the statement weight stays flat. The comment explaining the old placement is removed.

7 files touched. @agent-device/contracts/device exports the same names, so no callers outside contracts change. device-rotation-telephony.test.ts is renamed to telephony-input.test.ts. There is no behavior change.

Validation

Tested SHA 98be21d (same tree as head 959bd6a, which only changes the author).

pnpm check:affected --run --head HEAD: format, lint, typecheck, layering, fallow, and build passed. vitest-related ran 5,239 tests with 3 failures:

  • app-log-session-resource.test.ts › unwritable tombstone plus rejecting cleanup blocks same-process replacement
  • daemon-session-idle-expiry.test.ts › a held-back settle leaves a repair transaction uncommitted…
  • daemon-session-idle-expiry.test.ts › a settle that cannot confirm the claim gone keeps the session record standing

The same 3 fail on base eef1a3f in the same container, which runs as root. eager-closure-budgets.test.ts passed. No device run, because no dispatch, capture, interaction, or console code changed.