Files
callstack__agent-device/packages/contracts/package.json
Michał Pierzchała 03c3984066 perf(contracts): granularize entry surfaces so hub importers stop evaluating the facade clump (#1969)
* perf(contracts): granularize entry surfaces so hub importers stop evaluating the facade clump

`@agent-device/contracts/platform` unions 32 vocabulary modules and
`/interaction` another 18. A file that value-imports either evaluates the whole
union to reach one function, and because permanent hubs sat behind them —
`command-descriptor/registry.ts`, `core/capabilities.ts`,
`interactors/register-builtins.ts`, `command-descriptor/platform-execution-entry.ts` —
that union rode into roughly half the unit suite's test graphs.

Give every vocabulary module its own entry subpath and move all value-importers
onto the module that owns the symbol. Type-only importers are left alone: `import
type` is erased, so it already evaluated nothing.

Measured with the #1950 eager-import-closure walker over all 974 unit-core test
files, against base e5bfde3d1:

  aggregate eager module evaluations  143,248 -> 129,738  (-9.4%)
  facades/platform.ts   carried by    466 -> 1 test graphs
  facades/interaction.ts carried by   451 -> 0 test graphs

  registry.ts                 105 -> 66
  capabilities.ts             113 -> 76
  register-builtins.ts        111 -> 73
  platform-execution-entry.ts  43 -> 3
  dispatch.ts                 134 -> 100

Three gate adjustments the split forces:

- R11's pinned contracts subpath list grows to the new entries, and the resolver
  test's "must not resolve" example moves to `./clipboard`, since `./gesture-plan`
  is now a real entry.
- R16 anchored the record-runtime join on the literal `contracts/platform`
  specifier. It now accepts any contracts entry — the assertion's provenance is
  what the rule pins, not which subpath carried it.
- `gesture-plan.ts` became an entry target, and the no-bare-star rule rejects the
  `export * from './gesture-plan-types.ts'` it carried. Its one internal consumer
  now imports the owning module directly.

Both facades keep their type re-exports for the ~490 type-only importers, so
every symbol on them now reads as value-unused; one fallow entry records that
and names retiring them as the follow-up.

Closes #1959

* test(contracts): text-filter the facade scan before parsing

The repo-wide scan parsed all ~3000 sources, which the coverage lane's
instrumentation pushed past both the 5s test timeout and the 2.5s slow-test
budget. A file that never names the specifier cannot import it, so filter on the
text first and parse only the ~490 candidates.

Non-vacuity moves with it: instead of counting narrow imports across every file,
require that the surviving type-only importers were seen and classified as
erased — which an empty scan cannot satisfy.
2026-08-22 15:35:38 +02:00

293 lines
9.2 KiB
JSON

{
"name": "@agent-device/contracts",
"version": "0.0.0",
"private": true,
"type": "module",
"description": "Shared agent-device command, snapshot, provider, and platform vocabulary. Internal workspace package bundled into the published agent-device artifact.",
"dependencies": {
"@agent-device/kernel": "workspace:*"
},
"exports": {
"./alert-contract": {
"types": "./src/alert-contract.ts",
"default": "./src/alert-contract.ts"
},
"./android-input-ownership": {
"types": "./src/android-input-ownership.ts",
"default": "./src/android-input-ownership.ts"
},
"./android-snapshot-quality": {
"types": "./src/android-snapshot-quality.ts",
"default": "./src/android-snapshot-quality.ts"
},
"./android-system-chrome": {
"types": "./src/android-system-chrome.ts",
"default": "./src/android-system-chrome.ts"
},
"./app-deployment-runtime": {
"types": "./src/app-deployment-runtime.ts",
"default": "./src/app-deployment-runtime.ts"
},
"./app-deployment-runtime-plan": {
"types": "./src/app-deployment-runtime-plan.ts",
"default": "./src/app-deployment-runtime-plan.ts"
},
"./app-inventory-runtime": {
"types": "./src/app-inventory-runtime.ts",
"default": "./src/app-inventory-runtime.ts"
},
"./app-log-runtime": {
"types": "./src/app-log-runtime.ts",
"default": "./src/app-log-runtime.ts"
},
"./app-state-runtime": {
"types": "./src/app-state-runtime.ts",
"default": "./src/app-state-runtime.ts"
},
"./apple-multitouch-support": {
"types": "./src/apple-multitouch-support.ts",
"default": "./src/apple-multitouch-support.ts"
},
"./application-lifecycle-interaction": {
"types": "./src/application-lifecycle-interaction.ts",
"default": "./src/application-lifecycle-interaction.ts"
},
"./application-lifecycle-runtime": {
"types": "./src/application-lifecycle-runtime.ts",
"default": "./src/application-lifecycle-runtime.ts"
},
"./application-lifecycle-runtime-plan": {
"types": "./src/application-lifecycle-runtime-plan.ts",
"default": "./src/application-lifecycle-runtime-plan.ts"
},
"./async-lifecycle": {
"types": "./src/async-lifecycle.ts",
"default": "./src/async-lifecycle.ts"
},
"./audio-probe-result": {
"types": "./src/audio-probe-result.ts",
"default": "./src/audio-probe-result.ts"
},
"./audio-probe-support": {
"types": "./src/audio-probe-support.ts",
"default": "./src/audio-probe-support.ts"
},
"./back-mode": {
"types": "./src/back-mode.ts",
"default": "./src/back-mode.ts"
},
"./capture": {
"types": "./src/facades/capture.ts",
"default": "./src/facades/capture.ts"
},
"./click-button": {
"types": "./src/click-button.ts",
"default": "./src/click-button.ts"
},
"./client": {
"types": "./src/facades/client.ts",
"default": "./src/facades/client.ts"
},
"./command": {
"types": "./src/facades/command.ts",
"default": "./src/facades/command.ts"
},
"./command-platform-execution": {
"types": "./src/command-platform-execution.ts",
"default": "./src/command-platform-execution.ts"
},
"./device": {
"types": "./src/facades/device.ts",
"default": "./src/facades/device.ts"
},
"./device-readiness-runtime": {
"types": "./src/device-readiness-runtime.ts",
"default": "./src/device-readiness-runtime.ts"
},
"./device-shutdown-runtime": {
"types": "./src/device-shutdown-runtime.ts",
"default": "./src/device-shutdown-runtime.ts"
},
"./divergence": {
"types": "./src/facades/divergence.ts",
"default": "./src/facades/divergence.ts"
},
"./durable-resource": {
"types": "./src/durable-resource.ts",
"default": "./src/durable-resource.ts"
},
"./durable-resource-envelope": {
"types": "./src/durable-resource-envelope.ts",
"default": "./src/durable-resource-envelope.ts"
},
"./element-text-runtime": {
"types": "./src/element-text-runtime.ts",
"default": "./src/element-text-runtime.ts"
},
"./focus-runtime": {
"types": "./src/focus-runtime.ts",
"default": "./src/focus-runtime.ts"
},
"./gesture-input": {
"types": "./src/gesture-input.ts",
"default": "./src/gesture-input.ts"
},
"./gesture-normalization": {
"types": "./src/gesture-normalization.ts",
"default": "./src/gesture-normalization.ts"
},
"./gesture-plan": {
"types": "./src/gesture-plan.ts",
"default": "./src/gesture-plan.ts"
},
"./gesture-plan-types": {
"types": "./src/gesture-plan-types.ts",
"default": "./src/gesture-plan-types.ts"
},
"./interaction": {
"types": "./src/facades/interaction.ts",
"default": "./src/facades/interaction.ts"
},
"./interaction-error": {
"types": "./src/interaction-error.ts",
"default": "./src/interaction-error.ts"
},
"./interaction-guarantees": {
"types": "./src/interaction-guarantees.ts",
"default": "./src/interaction-guarantees.ts"
},
"./interactor-types": {
"types": "./src/interactor-types.ts",
"default": "./src/interactor-types.ts"
},
"./logs-runtime-plan": {
"types": "./src/logs-runtime-plan.ts",
"default": "./src/logs-runtime-plan.ts"
},
"./navigation": {
"types": "./src/navigation.ts",
"default": "./src/navigation.ts"
},
"./network-runtime": {
"types": "./src/network-runtime.ts",
"default": "./src/network-runtime.ts"
},
"./network-runtime-plan": {
"types": "./src/network-runtime-plan.ts",
"default": "./src/network-runtime-plan.ts"
},
"./observability": {
"types": "./src/facades/observability.ts",
"default": "./src/facades/observability.ts"
},
"./platform": {
"types": "./src/facades/platform.ts",
"default": "./src/facades/platform.ts"
},
"./platform-module": {
"types": "./src/platform-module.ts",
"default": "./src/platform-module.ts"
},
"./platform-runtime": {
"types": "./src/platform-runtime.ts",
"default": "./src/platform-runtime.ts"
},
"./platform-runtime-host": {
"types": "./src/platform-runtime-host.ts",
"default": "./src/platform-runtime-host.ts"
},
"./platform-runtime-operations": {
"types": "./src/platform-runtime-operations.ts",
"default": "./src/platform-runtime-operations.ts"
},
"./platform-runtime-unavailable": {
"types": "./src/platform-runtime-unavailable.ts",
"default": "./src/platform-runtime-unavailable.ts"
},
"./progress": {
"types": "./src/facades/progress.ts",
"default": "./src/facades/progress.ts"
},
"./record-runtime-cutover": {
"types": "./src/record-runtime-cutover.ts",
"default": "./src/record-runtime-cutover.ts"
},
"./recording": {
"types": "./src/facades/recording.ts",
"default": "./src/facades/recording.ts"
},
"./remote": {
"types": "./src/facades/remote.ts",
"default": "./src/facades/remote.ts"
},
"./replay": {
"types": "./src/facades/replay.ts",
"default": "./src/facades/replay.ts"
},
"./screen-recording-runtime": {
"types": "./src/screen-recording-runtime.ts",
"default": "./src/screen-recording-runtime.ts"
},
"./screen-recording-runtime-plan": {
"types": "./src/screen-recording-runtime-plan.ts",
"default": "./src/screen-recording-runtime-plan.ts"
},
"./screenshot-runtime": {
"types": "./src/screenshot-runtime.ts",
"default": "./src/screenshot-runtime.ts"
},
"./scroll-command": {
"types": "./src/scroll-command.ts",
"default": "./src/scroll-command.ts"
},
"./scroll-gesture": {
"types": "./src/scroll-gesture.ts",
"default": "./src/scroll-gesture.ts"
},
"./selector-observation-runtime": {
"types": "./src/selector-observation-runtime.ts",
"default": "./src/selector-observation-runtime.ts"
},
"./session": {
"types": "./src/facades/session.ts",
"default": "./src/facades/session.ts"
},
"./settings": {
"types": "./src/settings.ts",
"default": "./src/settings.ts"
},
"./snapshot": {
"types": "./src/facades/snapshot.ts",
"default": "./src/facades/snapshot.ts"
},
"./snapshot-runtime": {
"types": "./src/snapshot-runtime.ts",
"default": "./src/snapshot-runtime.ts"
},
"./startup-recovery-fence": {
"types": "./src/startup-recovery-fence.ts",
"default": "./src/startup-recovery-fence.ts"
},
"./tv-remote": {
"types": "./src/tv-remote.ts",
"default": "./src/tv-remote.ts"
},
"./type-text-runtime": {
"types": "./src/type-text-runtime.ts",
"default": "./src/type-text-runtime.ts"
},
"./viewport-runtime": {
"types": "./src/viewport-runtime.ts",
"default": "./src/viewport-runtime.ts"
},
"./wait": {
"types": "./src/wait.ts",
"default": "./src/wait.ts"
},
"./wait-runtime-plan": {
"types": "./src/wait-runtime-plan.ts",
"default": "./src/wait-runtime-plan.ts"
}
}
}