mirror of
https://github.com/morluto/rea.git
synced 2026-10-28 02:15:44 +00:00
* feat(environment): render more read tools from the state and describe responses Keep main's environment serving and fold in coverage for non-entity reads, response summaries, and MCP tool annotations. Squashed rebase of #5352 onto main. * fix(environment): keep rendered documents and quoted samples inside their budgets A recorded body of exponential numbers can render past 256 KiB and turn a working read into a state size error, so that document stays a recorded replay. Description samples are measured after JSON quoting, and the replay-fallback catalog check uses a tool count the longer response descriptions still separate. Co-authored-by: morluto <morluto@users.noreply.github.com> * test(environment): pin the replay card this branch serves The replay-only card test pinned main's 11,131-byte card. This branch's descriptions name each tool's recorded responses, so the card it serves is 12,818 bytes; the pin and its name follow. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: morluto <morluto@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
33 lines
2.1 KiB
Markdown
33 lines
2.1 KiB
Markdown
# Implementation plan
|
|
|
|
1. In `environmentStateRules.ts`, parse pointers into tokens and let `at` and
|
|
`replaceAt` read and replace element 0 of a one-element array at the root
|
|
or in one member; extend `locateItem` with those forms after the object
|
|
forms, requiring an identity name there; add `identityCandidates`, the
|
|
identity names then suffix-named fields, and let `locateList` prefer arrays
|
|
identified by name, then arrays of two or more items identified by suffix.
|
|
2. In `EnvironmentStateExtraction.ts`, plan lists with the shared candidates,
|
|
treat an empty recording as unconstraining, accept a suffix-named field only
|
|
once a recording shows it distinct across two or more items, leave reads
|
|
without a list or identity to documents, drop the written-path requirement
|
|
and the `not-entity` fallback, record `path-varies` apart from
|
|
`query-varies`, and keep each entity's earliest sighting;
|
|
`environmentStateMerge.ts` cites records in timeline order. Remove
|
|
`not-entity` from the reason type and result schema, add `path-varies`, and
|
|
describe the new pointer forms and `field-name` basis.
|
|
3. Move the classification of retained bodies (none, base64, cut, JSON, text)
|
|
into `replayedBody` in `environmentSource.ts`, which owns recorded
|
|
exchanges; replay renders from it and tool descriptions read its JSON case.
|
|
4. Make `environmentToolDefinitions` take the `EnvironmentSource`; describe the
|
|
first `2xx` JSON record, else the first JSON record labelled with its status,
|
|
one level deep with the state's list rule and the existing sample budget;
|
|
list the manifest tool's statuses; and charge the whole description and the
|
|
tool's MCP annotations to the catalog reservation. Update the serve and
|
|
bundle callers.
|
|
5. Let the tool definitions own the MCP annotations derived from the method and
|
|
the query-`POST` rule; `serveEnvironment.ts` registers them and the card
|
|
leaves them out.
|
|
6. Cover domain, services, adapters and the compiled MCP boundary; document the
|
|
rules in the capture guide, descriptions and hints in the agent environments
|
|
guide, and the contract text.
|