Files
callstack__agent-device/packages/contracts/package.json
Michał Pierzchała bcaa106845 refactor: extract snapshot and replay identity semantics (#1582)
* refactor: extract snapshot and replay identity semantics

* refactor: move pure rect primitives from contracts to kernel/rect

containsPoint, pickLargestRect, and isRectVisibleInViewport are raw
rectangle arithmetic with no snapshot awareness, so they belong beside
rectContains/rectArea in @agent-device/kernel/rect rather than in the
snapshot-semantics vocabulary. The node-aware resolveViewportRect folds
into contracts/snapshot-visibility.ts, retiring snapshot-geometry.ts;
after this split, everything behavioral in @agent-device/contracts/snapshot
is policy that interprets the snapshot model.

* refactor: restore ADR-0012 rationale docs and dedupe replay identity shapes

The #1478/#1581 extraction moved the identity/structural helpers but
compressed their invariant documentation to one-liners; the deliberate
no-ancestry-exclusion rule on idMatchCountInTree, the fail-closed guard
comparison, and the who-throws/who-detects contracts on the two
divergence reason markers now travel with their definitions again.

LocalIdentity and NodeStructuralDenotation move to
contracts/target-annotation.ts (beside TargetAncestryEntry, which
WaitLandmarkMismatchEvidence now references directly), so the guard
shapes in contracts/replay.ts are nominal instead of hand-rolled
structural twins; ad-script re-exports the vocabulary beside the
readers that produce it. Also inlines the demoteNonUniqueId
pass-through wrapper in session-target-evidence.ts.

* style: fix oxfmt formatting in snapshot-visibility

* refactor: move findSnapshotAncestor into contracts/snapshot-tree

The last root value import from src/selectors: predicates.ts reached
src/snapshot/snapshot-processing.ts for the ancestor walker. The walker
is index-based tree traversal with no presentation policy, so it joins
buildSnapshotNodeMap in contracts/snapshot-tree.ts; both consumers
repoint to the façade and the non-contiguous-index/cycle coverage moves
to the package test. src/selectors now has zero value imports from root
src in production files.
2026-08-04 15:08:51 +02:00

73 lines
2.0 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": {
"./client": {
"types": "./src/facades/client.ts",
"default": "./src/facades/client.ts"
},
"./command": {
"types": "./src/facades/command.ts",
"default": "./src/facades/command.ts"
},
"./device": {
"types": "./src/facades/device.ts",
"default": "./src/facades/device.ts"
},
"./interaction": {
"types": "./src/facades/interaction.ts",
"default": "./src/facades/interaction.ts"
},
"./capture": {
"types": "./src/facades/capture.ts",
"default": "./src/facades/capture.ts"
},
"./platform": {
"types": "./src/facades/platform.ts",
"default": "./src/facades/platform.ts"
},
"./settings": {
"types": "./src/settings.ts",
"default": "./src/settings.ts"
},
"./session": {
"types": "./src/facades/session.ts",
"default": "./src/facades/session.ts"
},
"./recording": {
"types": "./src/facades/recording.ts",
"default": "./src/facades/recording.ts"
},
"./observability": {
"types": "./src/facades/observability.ts",
"default": "./src/facades/observability.ts"
},
"./remote": {
"types": "./src/facades/remote.ts",
"default": "./src/facades/remote.ts"
},
"./replay": {
"types": "./src/facades/replay.ts",
"default": "./src/facades/replay.ts"
},
"./snapshot": {
"types": "./src/facades/snapshot.ts",
"default": "./src/facades/snapshot.ts"
},
"./divergence": {
"types": "./src/facades/divergence.ts",
"default": "./src/facades/divergence.ts"
},
"./progress": {
"types": "./src/facades/progress.ts",
"default": "./src/facades/progress.ts"
}
}
}