mirror of
https://github.com/github/spec-kit.git
synced 2026-07-10 01:33:05 +08:00
fix(agent-context): support multiple context files safely (#2969)
* fix(agent-context): support multiple context files safely * fix(agent-context): harden context file validation * fix(agent-context): preserve disabled context target * fix(agent-context): address review follow-ups * fix(agent-context): dedupe PowerShell context files * fix(agent-context): align context file dedupe * fix(agent-context): align bash context file dedupe * fix(agent-context): preserve disabled display target * fix(agent-context): require yaml-capable updater python * fix(agent-context): preserve context files config * fix(agent-context): align context file fallbacks * fix(agent-context): share context file resolution --------- Co-authored-by: AustinZ21 <AustinZ21@users.noreply.github.com>
This commit is contained in:
@@ -277,6 +277,7 @@ def _load_agent_context_config(project_root: Path) -> dict[str, Any]:
|
||||
|
||||
defaults: dict[str, Any] = {
|
||||
"context_file": "",
|
||||
"context_files": [],
|
||||
"context_markers": {
|
||||
"start": IntegrationBase.CONTEXT_MARKER_START,
|
||||
"end": IntegrationBase.CONTEXT_MARKER_END,
|
||||
@@ -308,6 +309,7 @@ def _update_agent_context_config_file(
|
||||
context_file: str | None,
|
||||
*,
|
||||
preserve_markers: bool = True,
|
||||
preserve_context_files: bool = True,
|
||||
) -> None:
|
||||
"""Update the agent-context extension config with *context_file*.
|
||||
|
||||
@@ -315,11 +317,23 @@ def _update_agent_context_config_file(
|
||||
``context_markers`` values are kept unchanged so user customisations
|
||||
survive integration changes and reinit. When False, the default
|
||||
markers are written unconditionally.
|
||||
|
||||
When *preserve_context_files* is True (default), an existing
|
||||
``context_files`` list is kept unchanged, including an empty list. This
|
||||
lets projects opt into updating multiple agent context files while still
|
||||
preserving the legacy singular ``context_file`` value for compatibility.
|
||||
"""
|
||||
from .integrations.base import IntegrationBase
|
||||
|
||||
cfg = _load_agent_context_config(project_root)
|
||||
cfg["context_file"] = context_file or ""
|
||||
existing_context_files = cfg.get("context_files")
|
||||
if preserve_context_files:
|
||||
cfg["context_files"] = (
|
||||
existing_context_files if isinstance(existing_context_files, list) else []
|
||||
)
|
||||
else:
|
||||
cfg.pop("context_files", None)
|
||||
if not preserve_markers or not isinstance(cfg.get("context_markers"), dict):
|
||||
cfg["context_markers"] = {
|
||||
"start": IntegrationBase.CONTEXT_MARKER_START,
|
||||
|
||||
Reference in New Issue
Block a user