> ## Documentation Index
> Fetch the complete documentation index at: https://vietbui.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Context Window

> A context window is the maximum number of tokens an LLM can process in a single request — both input and generated output combined. It is the model's 'workin…

# Context Window

A **context window** is the maximum number of tokens an LLM can process in a single request — both input and generated output combined. It is the model's "working memory": everything the model can attend to at once.

**Key formula**: `input_tokens + output_tokens ≤ context_window_size`

## Why Context Windows Are Bounded

Three hardware/architectural constraints create the limit:

1. **O(n²) attention complexity** — every token attends to every other; n tokens → n² pairwise relationships. Doubling context quadruples computation. At 10K tokens: 100M comparisons. At 100K tokens: 10B.

2. **KV cache memory growth** — each new generated token appends to the KV cache in GPU VRAM. As the cache fills, inference shifts data from fast SRAM → slow HBM (the memory bandwidth bottleneck). At some point, VRAM is exhausted and inference crawls.

3. **Training distribution** — models are trained on data distributions where shorter sequences dominate. Position encoding (e.g., RoPE) breaks down on sequences longer than what was seen during training without extension techniques.

## Context Rot

More context is not automatically better. As token count grows:

* Accuracy and recall degrade — called **context rot**
* **Lost-in-the-middle effect**: LLMs weight beginning and end of context more heavily (primacy and recency bias); middle content gets underweighted
* Most long-context models show sharp performance drops past \~32K tokens regardless of advertised context size

**Implication**: curating *what* is in context matters as much as *how much* fits. See [Context Engineering](/concepts/context-engineering).

## Current Model Sizes (as of 2026)

| Model                        | Context Window |
| ---------------------------- | -------------- |
| Gemini 2.5 Pro               | 2M tokens      |
| Claude Sonnet 4.6 / Opus 4.7 | 1M tokens      |
| GPT-4o                       | 128K tokens    |
| Llama 3.1                    | 128K tokens    |

## Extended Thinking

When extended thinking is enabled, thinking tokens count toward the context window *during generation* but are **automatically stripped** from subsequent turns by the API. You don't pay for thinking tokens in future turns; the effective calculation becomes:
`context_window = input_tokens - previous_thinking_tokens + current_turn_tokens`

**Exception**: during tool use, the thinking block accompanying a tool request **must** be returned with tool results (cryptographic signature verification). The API strips it automatically on the next non-tool turn.

## Context Awareness (Claude Sonnet 4.6+)

Newer Claude models receive an explicit token budget at the start of each conversation:

```
<budget:token_budget>1000000</budget:token_budget>
```

And after each tool call:

```
<system_warning>Token usage: 35000/1000000; 965000 remaining</system_warning>
```

This enables models to self-pace on long-horizon tasks rather than guessing when they'll run out.

## Validation Behavior (Claude Sonnet 3.7+)

Newer models return a **validation error** when prompt + output tokens exceed the window rather than silently truncating. Use the token counting API to pre-check before sending large requests.

## Product vs. API Context Window

The **claude.ai product** (chat, Claude Code) enforces a separate, lower limit than the raw API:

* claude.ai paid plans (Pro, Max, Team): **200K tokens**
* Enterprise (some models): **500K tokens**
* API access (Sonnet/Opus): **1M tokens**

This means the same model has different effective context depending on how you access it. For agent workflows hitting the API directly, the 1M limit applies. For workflows using claude.ai UI or Claude Code, 200K is the ceiling.

See Claude Usage Limits for the full product-level limit model.

## MCP Server Context Cost

In Claude Code, each enabled MCP server contributes its tool descriptions to the system prompt, consuming tokens from the context window. ECC reports that running too many MCP servers can reduce the effective 200K window to approximately 70K tokens (claimed, unverified — no independent methodology cited).

Practical limits recommended by ECC:

* Keep under 10 MCP servers enabled per project
* Keep under 80 active tools total

Disable unused MCP servers via `/mcp` in Claude Code — these choices persist in `~/.claude.json`, not `settings.json` (which is not a reliable toggle for already-loaded servers).

This is a practical instance of [Context Engineering](/concepts/context-engineering): curating what's in context includes curating which tools are loaded, not just what content you send.

***

## Six Management Techniques

| Technique                  | Mechanism                                                   | Pros                    | Cons                                |
| -------------------------- | ----------------------------------------------------------- | ----------------------- | ----------------------------------- |
| Truncation                 | Cut tokens once limit reached; prioritize must-have content | Simple, low overhead    | May cut critical info               |
| Model routing              | Route large inputs to higher-context models (LiteLLM)       | No data loss            | Higher cost                         |
| Memory buffering           | Summarize every N messages; preserve key entities           | Adaptive, customizable  | Short-term only                     |
| Hierarchical summarization | Chunk → summarize → re-summarize (pyramid)                  | Scalable, flexible      | Cumulative error risk               |
| Context compression        | Remove redundancy; 40-60% token reduction                   | Maintains continuity    | Quality-dependent                   |
| RAG                        | Retrieve only relevant chunks at query time                 | Scales to large corpora | Retrieval latency, setup complexity |

**Decision guide:**

* Sourced Q\&A → RAG
* Multi-session chat → memory buffering
* Long documents (books, legal) → hierarchical summarization
* High token cost → context compression
* Sensitive/regulated content → RAG with exact retrieval (no summarization)

***

## Related Pages

* [Context Engineering](/concepts/context-engineering) — engineering discipline for curating what's in context
* [Context Degradation Patterns](/concepts/context-degradation) — five named failure modes when context fills up
* [Context Compression Strategies](/concepts/context-compression) — strategies for compressing context to extend effective window
* [Agentic Memory Tool](/concepts/agentic-memory-tool) — API primitives for managing long-running agent context
* [Everything Claude Code (ECC)](/entities/everything-claude-code) — ECC's MCP count recommendations and token optimization settings

<iframe
  srcDoc="<!doctype html><html><head><meta charset=&#x22;utf-8&#x22;><style>
html,body{margin:0;height:100%;background:#0f1117;overflow:hidden;font-family:ui-sans-serif,system-ui,-apple-system,sans-serif}
#g{width:100%;height:100%}
#hd{position:absolute;top:0;left:0;right:30px;height:22px;display:flex;align-items:center;gap:6px;padding:0 10px;color:#aeb3c2;font-size:10px;letter-spacing:.08em;text-transform:uppercase;z-index:6;cursor:move;user-select:none;touch-action:none;background:linear-gradient(#0f1117cc,#0f111700)}
#gear{position:absolute;top:5px;right:7px;z-index:7;cursor:pointer;color:#aeb3c2;background:#1b1e27;border:1px solid #2b2f3a;border-radius:6px;width:22px;height:22px;display:flex;align-items:center;justify-content:center;font-size:12px;user-select:none}
#panel{position:absolute;top:31px;right:7px;z-index:7;background:rgba(22,25,34,.96);border:1px solid #2b2f3a;border-radius:8px;padding:6px 9px 9px;display:none;width:150px;color:#c9cdd8;font-size:10px}
#panel.open{display:block}
#panel label{display:flex;justify-content:space-between;margin:7px 0 1px;color:#9aa0b0}
#panel input[type=range]{width:100%;margin:0}
#panel .row{display:flex;align-items:center;gap:6px;margin-top:8px;color:#c9cdd8}
</style><script src=&#x22;https://cdn.jsdelivr.net/npm/force-graph@1.51.4/dist/force-graph.min.js&#x22; integrity=&#x22;sha384-Hm6GpQcTNI5VqGgGS7lLxTGtEFcxu/kOVV0B7ozIZRu9blWVvigv5httJQZ2qZmY&#x22; crossorigin=&#x22;anonymous&#x22;></script></head>
<body><div id=&#x22;hd&#x22;>Graph</div><div id=&#x22;gear&#x22;>⚙</div>
<div id=&#x22;panel&#x22;>
<label>Node size<span id=&#x22;vns&#x22;></span></label><input id=&#x22;ns&#x22; type=&#x22;range&#x22; min=&#x22;0.6&#x22; max=&#x22;6&#x22; step=&#x22;0.2&#x22;>
<label>Link width<span id=&#x22;vlw&#x22;></span></label><input id=&#x22;lw&#x22; type=&#x22;range&#x22; min=&#x22;0&#x22; max=&#x22;3&#x22; step=&#x22;0.1&#x22;>
<label>Label size<span id=&#x22;vts&#x22;></span></label><input id=&#x22;ts&#x22; type=&#x22;range&#x22; min=&#x22;0&#x22; max=&#x22;8&#x22; step=&#x22;0.5&#x22;>
<label>Label opacity<span id=&#x22;vto&#x22;></span></label><input id=&#x22;to&#x22; type=&#x22;range&#x22; min=&#x22;0&#x22; max=&#x22;1&#x22; step=&#x22;0.05&#x22;>
<div id=&#x22;depthRow&#x22;><label>Depth<span id=&#x22;vd&#x22;></span></label><input id=&#x22;dp&#x22; type=&#x22;range&#x22; min=&#x22;1&#x22; max=&#x22;5&#x22; step=&#x22;1&#x22;></div>
<div class=&#x22;row&#x22;><input id=&#x22;ar&#x22; type=&#x22;checkbox&#x22;><span>Directional arrows</span></div>
</div>
<div id=&#x22;g&#x22;></div>
<script>
const NODES=[{&#x22;id&#x22;:&#x22;concepts/context-window&#x22;,&#x22;label&#x22;:&#x22;Context Window&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:3.23606797749979},{&#x22;id&#x22;:&#x22;concepts/context-compression&#x22;,&#x22;label&#x22;:&#x22;Context Compression Strategies&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:6.0990195135927845},{&#x22;id&#x22;:&#x22;concepts/context-degradation&#x22;,&#x22;label&#x22;:&#x22;Context Degradation Patterns&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:4.60555127546399},{&#x22;id&#x22;:&#x22;concepts/context-engineering&#x22;,&#x22;label&#x22;:&#x22;Context Engineering&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:4.464101615137754},{&#x22;id&#x22;:&#x22;concepts/agentic-memory-tool&#x22;,&#x22;label&#x22;:&#x22;Agentic Memory Tool&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:4},{&#x22;id&#x22;:&#x22;entities/everything-claude-code&#x22;,&#x22;label&#x22;:&#x22;Everything Claude Code (ECC)&#x22;,&#x22;group&#x22;:&#x22;entities&#x22;,&#x22;val&#x22;:3.449489742783178},{&#x22;id&#x22;:&#x22;concepts/agent-harness&#x22;,&#x22;label&#x22;:&#x22;Agent Harness&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:7.48074069840786},{&#x22;id&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;,&#x22;label&#x22;:&#x22;Lean Agentic Coding Workflow&#x22;,&#x22;group&#x22;:&#x22;syntheses&#x22;,&#x22;val&#x22;:5.795831523312719},{&#x22;id&#x22;:&#x22;concepts/agent-self-correction&#x22;,&#x22;label&#x22;:&#x22;Agent Self-Correction&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:5.358898943540674},{&#x22;id&#x22;:&#x22;entities/opencode&#x22;,&#x22;label&#x22;:&#x22;OpenCode&#x22;,&#x22;group&#x22;:&#x22;entities&#x22;,&#x22;val&#x22;:5.358898943540674},{&#x22;id&#x22;:&#x22;concepts/ralph-loop&#x22;,&#x22;label&#x22;:&#x22;Ralph Loop&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:4.872983346207417},{&#x22;id&#x22;:&#x22;concepts/agent-subagents&#x22;,&#x22;label&#x22;:&#x22;Agent Subagents&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:4.741657386773941},{&#x22;id&#x22;:&#x22;concepts/worktree-isolation&#x22;,&#x22;label&#x22;:&#x22;Worktree Isolation&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:4.60555127546399},{&#x22;id&#x22;:&#x22;systems/ai-ml&#x22;,&#x22;label&#x22;:&#x22;AI and ML Engineering&#x22;,&#x22;group&#x22;:&#x22;systems&#x22;,&#x22;val&#x22;:4.3166247903554},{&#x22;id&#x22;:&#x22;comparisons/spec-driven-frameworks-vs-native&#x22;,&#x22;label&#x22;:&#x22;Spec-Driven Frameworks vs Native Claude Code&#x22;,&#x22;group&#x22;:&#x22;comparisons&#x22;,&#x22;val&#x22;:4.3166247903554},{&#x22;id&#x22;:&#x22;concepts/indirect-prompt-injection&#x22;,&#x22;label&#x22;:&#x22;Indirect Prompt Injection&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:4.16227766016838},{&#x22;id&#x22;:&#x22;concepts/tool-design-for-agents&#x22;,&#x22;label&#x22;:&#x22;Tool Design for Agents&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:4.16227766016838},{&#x22;id&#x22;:&#x22;concepts/agent-teams&#x22;,&#x22;label&#x22;:&#x22;Agent Teams&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:4.16227766016838},{&#x22;id&#x22;:&#x22;comparisons/cc-to-cross-platform-migration&#x22;,&#x22;label&#x22;:&#x22;Claude Code → Cross-Platform Migration Matrix&#x22;,&#x22;group&#x22;:&#x22;comparisons&#x22;,&#x22;val&#x22;:4.16227766016838},{&#x22;id&#x22;:&#x22;concepts/memory-bank-pattern&#x22;,&#x22;label&#x22;:&#x22;Memory Bank Pattern&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:4},{&#x22;id&#x22;:&#x22;concepts/nurture-first-development&#x22;,&#x22;label&#x22;:&#x22;Nurture-First Development (NFD)&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:4},{&#x22;id&#x22;:&#x22;comparisons/claude-code-vs-opencode-plugins&#x22;,&#x22;label&#x22;:&#x22;Claude Code vs OpenCode Plugin Systems&#x22;,&#x22;group&#x22;:&#x22;comparisons&#x22;,&#x22;val&#x22;:3.8284271247461903},{&#x22;id&#x22;:&#x22;concepts/tiered-knowledge-delivery&#x22;,&#x22;label&#x22;:&#x22;Tiered Knowledge Delivery (Push / Hook / Pull)&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:3.8284271247461903},{&#x22;id&#x22;:&#x22;concepts/instinct-clustering&#x22;,&#x22;label&#x22;:&#x22;Instinct Clustering (Homunculus Pattern)&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:3.6457513110645907},{&#x22;id&#x22;:&#x22;entities/mnemory&#x22;,&#x22;label&#x22;:&#x22;Mnemory&#x22;,&#x22;group&#x22;:&#x22;entities&#x22;,&#x22;val&#x22;:3.449489742783178},{&#x22;id&#x22;:&#x22;concepts/knowledge-crystallization-cycle&#x22;,&#x22;label&#x22;:&#x22;Knowledge Crystallization Cycle (KCC)&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:3.449489742783178},{&#x22;id&#x22;:&#x22;concepts/dynamic-context-pruning&#x22;,&#x22;label&#x22;:&#x22;Dynamic Context Pruning (DCP)&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:3.23606797749979},{&#x22;id&#x22;:&#x22;entities/codegraphcontext&#x22;,&#x22;label&#x22;:&#x22;CodeGraphContext&#x22;,&#x22;group&#x22;:&#x22;entities&#x22;,&#x22;val&#x22;:3.23606797749979},{&#x22;id&#x22;:&#x22;entities/headroom&#x22;,&#x22;label&#x22;:&#x22;Headroom&#x22;,&#x22;group&#x22;:&#x22;entities&#x22;,&#x22;val&#x22;:3.23606797749979},{&#x22;id&#x22;:&#x22;entities/lean-session&#x22;,&#x22;label&#x22;:&#x22;lean-session plugin&#x22;,&#x22;group&#x22;:&#x22;entities&#x22;,&#x22;val&#x22;:3.23606797749979},{&#x22;id&#x22;:&#x22;entities/agentshield&#x22;,&#x22;label&#x22;:&#x22;AgentShield&#x22;,&#x22;group&#x22;:&#x22;entities&#x22;,&#x22;val&#x22;:3.23606797749979},{&#x22;id&#x22;:&#x22;entities/dspy&#x22;,&#x22;label&#x22;:&#x22;DSPy&#x22;,&#x22;group&#x22;:&#x22;entities&#x22;,&#x22;val&#x22;:3},{&#x22;id&#x22;:&#x22;concepts/llm-observability&#x22;,&#x22;label&#x22;:&#x22;LLM Observability&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:3},{&#x22;id&#x22;:&#x22;concepts/slash-commands&#x22;,&#x22;label&#x22;:&#x22;Claude Code Slash Commands&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:3},{&#x22;id&#x22;:&#x22;entities/opentelemetry&#x22;,&#x22;label&#x22;:&#x22;OpenTelemetry&#x22;,&#x22;group&#x22;:&#x22;entities&#x22;,&#x22;val&#x22;:3},{&#x22;id&#x22;:&#x22;concepts/domain-glossary&#x22;,&#x22;label&#x22;:&#x22;Domain Glossary (CONTEXT.md)&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:3},{&#x22;id&#x22;:&#x22;entities/pentagi&#x22;,&#x22;label&#x22;:&#x22;PentAGI&#x22;,&#x22;group&#x22;:&#x22;entities&#x22;,&#x22;val&#x22;:2.732050807568877},{&#x22;id&#x22;:&#x22;entities/rtk&#x22;,&#x22;label&#x22;:&#x22;rtk (Rust Token Killer)&#x22;,&#x22;group&#x22;:&#x22;entities&#x22;,&#x22;val&#x22;:2.732050807568877},{&#x22;id&#x22;:&#x22;concepts/evolution-strategies&#x22;,&#x22;label&#x22;:&#x22;Evolution Strategies (ES)&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:2.414213562373095},{&#x22;id&#x22;:&#x22;concepts/llm-serialization-formats&#x22;,&#x22;label&#x22;:&#x22;LLM Serialization Formats&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:2},{&#x22;id&#x22;:&#x22;concepts/agent-skills&#x22;,&#x22;label&#x22;:&#x22;Agent Skills&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:5.795831523312719},{&#x22;id&#x22;:&#x22;concepts/verification-pipeline&#x22;,&#x22;label&#x22;:&#x22;Verification Pipeline&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:5.358898943540674},{&#x22;id&#x22;:&#x22;entities/pi-agent&#x22;,&#x22;label&#x22;:&#x22;Pi Agent (pi-mono)&#x22;,&#x22;group&#x22;:&#x22;entities&#x22;,&#x22;val&#x22;:5.123105625617661},{&#x22;id&#x22;:&#x22;concepts/agent-context-instructions&#x22;,&#x22;label&#x22;:&#x22;Agent Context Instructions&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:4.872983346207417}],LINKS=[{&#x22;source&#x22;:&#x22;concepts/agent-context-instructions&#x22;,&#x22;target&#x22;:&#x22;concepts/memory-bank-pattern&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-harness&#x22;,&#x22;target&#x22;:&#x22;concepts/ralph-loop&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-harness&#x22;,&#x22;target&#x22;:&#x22;concepts/context-degradation&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-harness&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-harness&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-context-instructions&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-harness&#x22;,&#x22;target&#x22;:&#x22;concepts/tool-design-for-agents&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-self-correction&#x22;,&#x22;target&#x22;:&#x22;concepts/instinct-clustering&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-self-correction&#x22;,&#x22;target&#x22;:&#x22;concepts/verification-pipeline&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-self-correction&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-self-correction&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-self-correction&#x22;,&#x22;target&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-self-correction&#x22;,&#x22;target&#x22;:&#x22;entities/opencode&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-self-correction&#x22;,&#x22;target&#x22;:&#x22;concepts/context-engineering&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-skills&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-skills&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-subagents&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-skills&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-teams&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-skills&#x22;,&#x22;target&#x22;:&#x22;concepts/indirect-prompt-injection&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-subagents&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-teams&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-subagents&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-skills&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-subagents&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-subagents&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-subagents&#x22;,&#x22;target&#x22;:&#x22;concepts/context-degradation&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-teams&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-subagents&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-teams&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-teams&#x22;,&#x22;target&#x22;:&#x22;concepts/context-degradation&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-teams&#x22;,&#x22;target&#x22;:&#x22;concepts/worktree-isolation&#x22;},{&#x22;source&#x22;:&#x22;concepts/agentic-memory-tool&#x22;,&#x22;target&#x22;:&#x22;concepts/indirect-prompt-injection&#x22;},{&#x22;source&#x22;:&#x22;concepts/agentic-memory-tool&#x22;,&#x22;target&#x22;:&#x22;entities/mnemory&#x22;},{&#x22;source&#x22;:&#x22;concepts/agentic-memory-tool&#x22;,&#x22;target&#x22;:&#x22;concepts/context-engineering&#x22;},{&#x22;source&#x22;:&#x22;concepts/agentic-memory-tool&#x22;,&#x22;target&#x22;:&#x22;concepts/context-window&#x22;},{&#x22;source&#x22;:&#x22;concepts/agentic-memory-tool&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;concepts/context-compression&#x22;,&#x22;target&#x22;:&#x22;entities/headroom&#x22;},{&#x22;source&#x22;:&#x22;concepts/context-compression&#x22;,&#x22;target&#x22;:&#x22;comparisons/claude-code-vs-opencode-plugins&#x22;},{&#x22;source&#x22;:&#x22;concepts/context-compression&#x22;,&#x22;target&#x22;:&#x22;entities/everything-claude-code&#x22;},{&#x22;source&#x22;:&#x22;concepts/context-compression&#x22;,&#x22;target&#x22;:&#x22;concepts/llm-serialization-formats&#x22;},{&#x22;source&#x22;:&#x22;concepts/context-compression&#x22;,&#x22;target&#x22;:&#x22;concepts/context-degradation&#x22;},{&#x22;source&#x22;:&#x22;concepts/context-compression&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;concepts/context-compression&#x22;,&#x22;target&#x22;:&#x22;concepts/ralph-loop&#x22;},{&#x22;source&#x22;:&#x22;concepts/context-compression&#x22;,&#x22;target&#x22;:&#x22;concepts/dynamic-context-pruning&#x22;},{&#x22;source&#x22;:&#x22;concepts/context-degradation&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;concepts/context-degradation&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;concepts/context-degradation&#x22;,&#x22;target&#x22;:&#x22;concepts/ralph-loop&#x22;},{&#x22;source&#x22;:&#x22;concepts/context-engineering&#x22;,&#x22;target&#x22;:&#x22;concepts/tool-design-for-agents&#x22;},{&#x22;source&#x22;:&#x22;concepts/context-engineering&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-subagents&#x22;},{&#x22;source&#x22;:&#x22;concepts/context-engineering&#x22;,&#x22;target&#x22;:&#x22;concepts/agentic-memory-tool&#x22;},{&#x22;source&#x22;:&#x22;concepts/context-engineering&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;concepts/context-engineering&#x22;,&#x22;target&#x22;:&#x22;concepts/context-window&#x22;},{&#x22;source&#x22;:&#x22;concepts/context-engineering&#x22;,&#x22;target&#x22;:&#x22;concepts/context-degradation&#x22;},{&#x22;source&#x22;:&#x22;concepts/context-engineering&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;concepts/context-window&#x22;,&#x22;target&#x22;:&#x22;concepts/context-engineering&#x22;},{&#x22;source&#x22;:&#x22;concepts/context-window&#x22;,&#x22;target&#x22;:&#x22;concepts/context-degradation&#x22;},{&#x22;source&#x22;:&#x22;concepts/context-window&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;concepts/context-window&#x22;,&#x22;target&#x22;:&#x22;concepts/agentic-memory-tool&#x22;},{&#x22;source&#x22;:&#x22;concepts/context-window&#x22;,&#x22;target&#x22;:&#x22;entities/everything-claude-code&#x22;},{&#x22;source&#x22;:&#x22;concepts/domain-glossary&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;concepts/domain-glossary&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-context-instructions&#x22;},{&#x22;source&#x22;:&#x22;concepts/dynamic-context-pruning&#x22;,&#x22;target&#x22;:&#x22;entities/opencode&#x22;},{&#x22;source&#x22;:&#x22;concepts/dynamic-context-pruning&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;concepts/dynamic-context-pruning&#x22;,&#x22;target&#x22;:&#x22;concepts/context-degradation&#x22;},{&#x22;source&#x22;:&#x22;concepts/dynamic-context-pruning&#x22;,&#x22;target&#x22;:&#x22;comparisons/claude-code-vs-opencode-plugins&#x22;},{&#x22;source&#x22;:&#x22;concepts/evolution-strategies&#x22;,&#x22;target&#x22;:&#x22;concepts/context-engineering&#x22;},{&#x22;source&#x22;:&#x22;concepts/indirect-prompt-injection&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-context-instructions&#x22;},{&#x22;source&#x22;:&#x22;concepts/instinct-clustering&#x22;,&#x22;target&#x22;:&#x22;concepts/agentic-memory-tool&#x22;},{&#x22;source&#x22;:&#x22;concepts/instinct-clustering&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-self-correction&#x22;},{&#x22;source&#x22;:&#x22;concepts/instinct-clustering&#x22;,&#x22;target&#x22;:&#x22;entities/mnemory&#x22;},{&#x22;source&#x22;:&#x22;concepts/instinct-clustering&#x22;,&#x22;target&#x22;:&#x22;entities/everything-claude-code&#x22;},{&#x22;source&#x22;:&#x22;concepts/instinct-clustering&#x22;,&#x22;target&#x22;:&#x22;entities/opencode&#x22;},{&#x22;source&#x22;:&#x22;concepts/instinct-clustering&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;concepts/knowledge-crystallization-cycle&#x22;,&#x22;target&#x22;:&#x22;concepts/nurture-first-development&#x22;},{&#x22;source&#x22;:&#x22;concepts/knowledge-crystallization-cycle&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-self-correction&#x22;},{&#x22;source&#x22;:&#x22;concepts/knowledge-crystallization-cycle&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-skills&#x22;},{&#x22;source&#x22;:&#x22;concepts/knowledge-crystallization-cycle&#x22;,&#x22;target&#x22;:&#x22;concepts/agentic-memory-tool&#x22;},{&#x22;source&#x22;:&#x22;concepts/llm-observability&#x22;,&#x22;target&#x22;:&#x22;entities/opentelemetry&#x22;},{&#x22;source&#x22;:&#x22;concepts/llm-observability&#x22;,&#x22;target&#x22;:&#x22;concepts/context-degradation&#x22;},{&#x22;source&#x22;:&#x22;concepts/llm-observability&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;concepts/llm-serialization-formats&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;concepts/memory-bank-pattern&#x22;,&#x22;target&#x22;:&#x22;concepts/agentic-memory-tool&#x22;},{&#x22;source&#x22;:&#x22;concepts/memory-bank-pattern&#x22;,&#x22;target&#x22;:&#x22;entities/mnemory&#x22;},{&#x22;source&#x22;:&#x22;concepts/memory-bank-pattern&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;concepts/memory-bank-pattern&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-context-instructions&#x22;},{&#x22;source&#x22;:&#x22;concepts/nurture-first-development&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-skills&#x22;},{&#x22;source&#x22;:&#x22;concepts/nurture-first-development&#x22;,&#x22;target&#x22;:&#x22;concepts/memory-bank-pattern&#x22;},{&#x22;source&#x22;:&#x22;concepts/nurture-first-development&#x22;,&#x22;target&#x22;:&#x22;concepts/agentic-memory-tool&#x22;},{&#x22;source&#x22;:&#x22;concepts/nurture-first-development&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;concepts/ralph-loop&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;concepts/slash-commands&#x22;,&#x22;target&#x22;:&#x22;concepts/ralph-loop&#x22;},{&#x22;source&#x22;:&#x22;concepts/slash-commands&#x22;,&#x22;target&#x22;:&#x22;concepts/context-degradation&#x22;},{&#x22;source&#x22;:&#x22;concepts/tiered-knowledge-delivery&#x22;,&#x22;target&#x22;:&#x22;concepts/knowledge-crystallization-cycle&#x22;},{&#x22;source&#x22;:&#x22;concepts/tiered-knowledge-delivery&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;concepts/tiered-knowledge-delivery&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-self-correction&#x22;},{&#x22;source&#x22;:&#x22;concepts/tiered-knowledge-delivery&#x22;,&#x22;target&#x22;:&#x22;concepts/instinct-clustering&#x22;},{&#x22;source&#x22;:&#x22;concepts/tiered-knowledge-delivery&#x22;,&#x22;target&#x22;:&#x22;concepts/nurture-first-development&#x22;},{&#x22;source&#x22;:&#x22;concepts/tool-design-for-agents&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;concepts/verification-pipeline&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;concepts/verification-pipeline&#x22;,&#x22;target&#x22;:&#x22;concepts/ralph-loop&#x22;},{&#x22;source&#x22;:&#x22;concepts/worktree-isolation&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;concepts/worktree-isolation&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-subagents&#x22;},{&#x22;source&#x22;:&#x22;systems/ai-ml&#x22;,&#x22;target&#x22;:&#x22;concepts/context-engineering&#x22;},{&#x22;source&#x22;:&#x22;systems/ai-ml&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;systems/ai-ml&#x22;,&#x22;target&#x22;:&#x22;concepts/ralph-loop&#x22;},{&#x22;source&#x22;:&#x22;systems/ai-ml&#x22;,&#x22;target&#x22;:&#x22;concepts/context-degradation&#x22;},{&#x22;source&#x22;:&#x22;systems/ai-ml&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-skills&#x22;},{&#x22;source&#x22;:&#x22;systems/ai-ml&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-subagents&#x22;},{&#x22;source&#x22;:&#x22;systems/ai-ml&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-teams&#x22;},{&#x22;source&#x22;:&#x22;systems/ai-ml&#x22;,&#x22;target&#x22;:&#x22;concepts/verification-pipeline&#x22;},{&#x22;source&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;,&#x22;target&#x22;:&#x22;concepts/verification-pipeline&#x22;},{&#x22;source&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-skills&#x22;},{&#x22;source&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;,&#x22;target&#x22;:&#x22;comparisons/spec-driven-frameworks-vs-native&#x22;},{&#x22;source&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;,&#x22;target&#x22;:&#x22;concepts/worktree-isolation&#x22;},{&#x22;source&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;,&#x22;target&#x22;:&#x22;entities/lean-session&#x22;},{&#x22;source&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;,&#x22;target&#x22;:&#x22;entities/opencode&#x22;},{&#x22;source&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-self-correction&#x22;},{&#x22;source&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;,&#x22;target&#x22;:&#x22;concepts/memory-bank-pattern&#x22;},{&#x22;source&#x22;:&#x22;comparisons/cc-to-cross-platform-migration&#x22;,&#x22;target&#x22;:&#x22;entities/opencode&#x22;},{&#x22;source&#x22;:&#x22;comparisons/cc-to-cross-platform-migration&#x22;,&#x22;target&#x22;:&#x22;entities/everything-claude-code&#x22;},{&#x22;source&#x22;:&#x22;comparisons/cc-to-cross-platform-migration&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-context-instructions&#x22;},{&#x22;source&#x22;:&#x22;comparisons/cc-to-cross-platform-migration&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-skills&#x22;},{&#x22;source&#x22;:&#x22;comparisons/cc-to-cross-platform-migration&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-subagents&#x22;},{&#x22;source&#x22;:&#x22;comparisons/claude-code-vs-opencode-plugins&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;comparisons/claude-code-vs-opencode-plugins&#x22;,&#x22;target&#x22;:&#x22;entities/opencode&#x22;},{&#x22;source&#x22;:&#x22;comparisons/claude-code-vs-opencode-plugins&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;comparisons/spec-driven-frameworks-vs-native&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;comparisons/spec-driven-frameworks-vs-native&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;comparisons/spec-driven-frameworks-vs-native&#x22;,&#x22;target&#x22;:&#x22;concepts/memory-bank-pattern&#x22;},{&#x22;source&#x22;:&#x22;entities/agentshield&#x22;,&#x22;target&#x22;:&#x22;entities/everything-claude-code&#x22;},{&#x22;source&#x22;:&#x22;entities/agentshield&#x22;,&#x22;target&#x22;:&#x22;concepts/indirect-prompt-injection&#x22;},{&#x22;source&#x22;:&#x22;entities/codegraphcontext&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;entities/codegraphcontext&#x22;,&#x22;target&#x22;:&#x22;concepts/context-degradation&#x22;},{&#x22;source&#x22;:&#x22;entities/codegraphcontext&#x22;,&#x22;target&#x22;:&#x22;concepts/tool-design-for-agents&#x22;},{&#x22;source&#x22;:&#x22;entities/dspy&#x22;,&#x22;target&#x22;:&#x22;concepts/context-engineering&#x22;},{&#x22;source&#x22;:&#x22;entities/dspy&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;entities/everything-claude-code&#x22;,&#x22;target&#x22;:&#x22;entities/agentshield&#x22;},{&#x22;source&#x22;:&#x22;entities/everything-claude-code&#x22;,&#x22;target&#x22;:&#x22;concepts/instinct-clustering&#x22;},{&#x22;source&#x22;:&#x22;entities/everything-claude-code&#x22;,&#x22;target&#x22;:&#x22;comparisons/cc-to-cross-platform-migration&#x22;},{&#x22;source&#x22;:&#x22;entities/everything-claude-code&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;entities/everything-claude-code&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;entities/headroom&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;entities/headroom&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;entities/lean-session&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;entities/lean-session&#x22;,&#x22;target&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;},{&#x22;source&#x22;:&#x22;entities/lean-session&#x22;,&#x22;target&#x22;:&#x22;entities/opencode&#x22;},{&#x22;source&#x22;:&#x22;entities/lean-session&#x22;,&#x22;target&#x22;:&#x22;concepts/ralph-loop&#x22;},{&#x22;source&#x22;:&#x22;entities/mnemory&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;entities/mnemory&#x22;,&#x22;target&#x22;:&#x22;concepts/agentic-memory-tool&#x22;},{&#x22;source&#x22;:&#x22;entities/mnemory&#x22;,&#x22;target&#x22;:&#x22;concepts/context-engineering&#x22;},{&#x22;source&#x22;:&#x22;entities/mnemory&#x22;,&#x22;target&#x22;:&#x22;concepts/indirect-prompt-injection&#x22;},{&#x22;source&#x22;:&#x22;entities/opencode&#x22;,&#x22;target&#x22;:&#x22;comparisons/claude-code-vs-opencode-plugins&#x22;},{&#x22;source&#x22;:&#x22;entities/opencode&#x22;,&#x22;target&#x22;:&#x22;concepts/instinct-clustering&#x22;},{&#x22;source&#x22;:&#x22;entities/opencode&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;entities/opencode&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;entities/opentelemetry&#x22;,&#x22;target&#x22;:&#x22;concepts/llm-observability&#x22;},{&#x22;source&#x22;:&#x22;entities/opentelemetry&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;entities/opentelemetry&#x22;,&#x22;target&#x22;:&#x22;concepts/context-degradation&#x22;},{&#x22;source&#x22;:&#x22;entities/pentagi&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;entities/pentagi&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;entities/pi-agent&#x22;,&#x22;target&#x22;:&#x22;comparisons/claude-code-vs-opencode-plugins&#x22;},{&#x22;source&#x22;:&#x22;entities/pi-agent&#x22;,&#x22;target&#x22;:&#x22;entities/opencode&#x22;},{&#x22;source&#x22;:&#x22;entities/pi-agent&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-self-correction&#x22;},{&#x22;source&#x22;:&#x22;entities/rtk&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;entities/rtk&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;}],CUR=&#x22;concepts/context-window&#x22;,MAXD=3;
const C={concepts:'#8B7CF6',patterns:'#0D9373',systems:'#E0567C',syntheses:'#E2A03F',comparisons:'#3B82F6',entities:'#14B8A6',guides:'#9CA3AF'};
function lid(x){return (x&&x.id!==undefined)?x.id:x;}
const ADJ=new Map(NODES.map(function(n){return [n.id,new Set()];}));
LINKS.forEach(function(l){var s=lid(l.source),t=lid(l.target);if(ADJ.has(s)&&ADJ.has(t)){ADJ.get(s).add(t);ADJ.get(t).add(s);}});
var opt={ns:1.8,lw:0.6,ts:3.5,to:0.75,dp:2,ar:false};
function visible(){
if(!CUR)return {nodes:NODES,links:LINKS};
var dist=new Map([[CUR,0]]),fr=[CUR];
for(var d=1;d<=opt.dp;d++){var nx=[];fr.forEach(function(u){(ADJ.get(u)||[]).forEach(function(v){if(!dist.has(v)){dist.set(v,d);nx.push(v);}});});fr=nx;}
var keep=new Set(dist.keys());
return {nodes:NODES.filter(function(n){return keep.has(n.id);}),links:LINKS.filter(function(l){return keep.has(lid(l.source))&&keep.has(lid(l.target));})};
}
var el=document.getElementById('g');
var G=ForceGraph()(el).backgroundColor('#0f1117').nodeId('id')
.warmupTicks(24).cooldownTicks(70).autoPauseRedraw(true)
.nodeColor(function(n){return C[n.group]||'#9CA3AF';}).nodeLabel('label').nodeVal(function(n){return n.val;})
.linkColor(function(){return 'rgba(255,255,255,0.12)';})
.nodeRelSize(opt.ns).linkWidth(opt.lw)
.linkDirectionalArrowLength(0).linkDirectionalArrowRelPos(1).linkDirectionalArrowColor(function(){return 'rgba(255,255,255,0.4)';})
.nodeCanvasObjectMode(function(){return 'after';})
.nodeCanvasObject(function(n,ctx,scale){var r=opt.ns*Math.sqrt(n.val||1);
if(n.id===CUR){ctx.beginPath();ctx.arc(n.x,n.y,r+1.6,0,6.283);ctx.strokeStyle='#fff';ctx.lineWidth=1.2/scale;ctx.stroke();}
if(opt.to>0&&opt.ts>0){var t=n.label.length>28?n.label.slice(0,26)+'…':n.label;ctx.globalAlpha=opt.to;ctx.font=((n.id===CUR?opt.ts+1:opt.ts))+'px ui-sans-serif,sans-serif';ctx.fillStyle=(n.id===CUR)?'#ffffff':'#aab0c0';ctx.textAlign='center';ctx.textBaseline='top';ctx.fillText(t,n.x,n.y+r+1.5);ctx.globalAlpha=1;}})
.onNodeClick(function(n){if(window.top){window.top.location.href='/'+n.id;}});
G.graphData(visible());G.d3VelocityDecay(0.4);
function fit(){G.zoomToFit(400,20);}
setTimeout(fit,350);setTimeout(fit,1100);
// Stop the render/sim loop while idle so the fixed widget never repaints during
// parent-page scroll; resume only while the pointer is over the widget.
var pt;function pause(){G.pauseAnimation();}function resume(){G.resumeAnimation();}
function idle(ms){clearTimeout(pt);pt=setTimeout(pause,ms);}
document.body.addEventListener('pointerenter',function(){clearTimeout(pt);resume();});
document.body.addEventListener('pointerleave',function(){idle(250);});
addEventListener('resize',function(){resume();G.zoomToFit(0,20);idle(700);});
idle(2000);
function apply(re){resume();G.nodeRelSize(opt.ns).linkWidth(opt.lw).linkDirectionalArrowLength(opt.ar?2.6:0);if(re){G.graphData(visible());setTimeout(fit,450);}idle(re?2200:1400);}
function bind(id,key,fmt,re){var e=document.getElementById(id),o=document.getElementById('v'+id);e.value=opt[key];if(o)o.textContent=fmt(opt[key]);e.addEventListener('input',function(){opt[key]=parseFloat(e.value);if(o)o.textContent=fmt(opt[key]);apply(re);});}
bind('ns','ns',function(v){return v.toFixed(1);},false);
bind('lw','lw',function(v){return v.toFixed(1);},false);
bind('ts','ts',function(v){return v.toFixed(1);},false);
bind('to','to',function(v){return v.toFixed(2);},false);
var dE=document.getElementById('dp'),dO=document.getElementById('vd');dE.max=MAXD;dE.value=opt.dp;dO.textContent=opt.dp;dE.addEventListener('input',function(){opt.dp=parseInt(dE.value,10);dO.textContent=opt.dp;apply(true);});
if(!CUR)document.getElementById('depthRow').style.display='none';
var aE=document.getElementById('ar');aE.checked=opt.ar;aE.addEventListener('change',function(){opt.ar=aE.checked;apply(false);});
document.getElementById('gear').addEventListener('click',function(){document.getElementById('panel').classList.toggle('open');});
var hd=document.getElementById('hd');hd.textContent='⠿  '+(CUR?'Local graph':'Knowledge graph');
// free-form placement: drag by the header. Default is bottom-right (inline style);
// a moved position is saved per parent-origin and restored on every page.
function clampPos(fe,l,t){var TW=(window.top||window),r=fe.getBoundingClientRect();return [Math.min(Math.max(0,l),Math.max(0,TW.innerWidth-r.width)),Math.min(Math.max(0,t),Math.max(0,TW.innerHeight-r.height))];}
function place(fe,l,t){var p=clampPos(fe,l,t);fe.style.left=p[0]+'px';fe.style.top=p[1]+'px';fe.style.right='auto';fe.style.bottom='auto';}
try{var sp=JSON.parse(localStorage.getItem('llmwiki_graph_pos'));if(sp&&window.frameElement)place(window.frameElement,sp.l,sp.t);}catch(e){if(window.console)console.debug('graph: saved position unavailable',e);}
hd.addEventListener('pointerdown',function(e){var fe=window.frameElement;if(!fe)return;var rect=fe.getBoundingClientRect();var sx=e.screenX,sy=e.screenY,L=rect.left,T=rect.top;place(fe,L,T);hd.setPointerCapture(e.pointerId);
function mv(ev){place(fe,L+ev.screenX-sx,T+ev.screenY-sy);}
function up(){if(hd.hasPointerCapture(e.pointerId))hd.releasePointerCapture(e.pointerId);hd.removeEventListener('pointermove',mv);hd.removeEventListener('pointerup',up);try{localStorage.setItem('llmwiki_graph_pos',JSON.stringify({l:parseFloat(fe.style.left),t:parseFloat(fe.style.top)}));}catch(e2){if(window.console)console.debug('graph: could not persist position',e2);}}
hd.addEventListener('pointermove',mv);hd.addEventListener('pointerup',up);e.preventDefault();});
</script></body></html>"
  title="Knowledge graph"
  loading="lazy"
  style={{position:"fixed",right:"18px",bottom:"18px",width:"320px",height:"340px",border:0,borderRadius:"14px",boxShadow:"0 6px 28px rgba(0,0,0,0.38)",zIndex:50,background:"#0f1117"}}
/>
