When a visible shared file became a content duplicate, reconciliation emitted a removal notice and discarded its metadata. Its durable state then remained remove, while the metadata fast path accepted only candidates without any previous record. Every subsequent unchanged pass therefore reread the file, even after a later read had populated the cache. This also affected the path where an edited earlier winner made an unchanged later file a duplicate. Retain the still-present duplicate's metadata with the removal's deferred version update. Pass the already-cached state when removal follows an unchanged metadata probe, and the newly read state when the duplicate's content changed. Apply this metadata only when the associated removal survives rendering, using the existing exact-transition filter; confirmed absence still clears metadata. Allow both never-rendered candidates and previous removals to skip content reads when unchanged provider metadata and an earlier kept digest identify the file as a duplicate. Continue probing metadata. Once the winner changes or disappears, read and promote the shared file normally, then suppress unchanged follow-ups. Document the metadata guarantee in the local cache types and bilingual README. Model-visible messages, source records, ordering, and byte budgets stay the same. Add four production-plugin regressions covering duplication after either file changes, then promotion after the winner is edited or deleted. They inspect the provider's actual content reads across two unchanged passes and require exactly one shared read for promotion, rather than trusting the context's self-report. Validation: - All four new cases failed before the fix because each unchanged pass reread the shared file despite unchanged metadata. - pnpm exec vitest run packages/context/agent-instructions/tests/agent-instructions.spec.ts -t 'caches a removed duplicate': 4 passed after the fix. - README pairing was rerecorded; git diff --check passed. - The removal regression narrows its source kind and compares the change as a plain typed value; no matcher carrying any is assigned into an expected record. - Type-aware Oxlint passed for the three affected packages and the new metadata-failure fixture; focused cache regressions passed again after the assertion correction.
description, kind
| description | kind |
|---|---|
| The context group map: request-context plugins that add durable, model-visible context without defining tools, for users and maintainers navigating the group. | package-group |
context/ — Request-context plugins
English | 中文
Summary
The context group provides plugins that add model-visible context to each request without defining any tool: workspace instruction files become guidance, @file mentions offer path completion, other sessions can be referenced as bounded snapshots, and the model can see the current time and the agent's tmux location. Only agent-instructions (dsh-base) ships mounted by default; the rest are opt-in. Context is durable: injected instructions and references enter session history as user-role messages, so they persist, replay, and compact like other conversation content. This page maps the group; each package README owns the per-package contract.
Table of Contents
Packages
| Package | Role | ctx key |
|---|---|---|
agent-instructions/ |
Loads AGENTS.md/CLAUDE.md workspace instructions into context and refreshes them after file edits |
— |
session-reference/ |
References other sessions: mention one and its bounded read-only snapshot becomes context | ctx.sessionReferenceResolver |
file-reference/ |
@file mention discovery and the shared mention grammar for host-backed UIs |
ctx.fileReferences |
file-reference-local/ |
Local-workspace completion provider for @file mentions |
— |
time-context/ |
Current time, browser zone, and elapsed time per step | — |
tmux-context/ |
The agent's tmux session, window, and pane location | — |
Related documentation
- Session-reference subsystem — canonical mention URIs, snapshot semantics, and the stable error taxonomy.
- Workspace-context decision record — why instruction context is per-agent/per-session and durably logged.
- Generated configuration catalog — every config field the group's packages accept.
Dev Note
Working context for maintainers — click to expand
None.