opencode-rag-plugin 1.3.1 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ReadMe.md +352 -287
- package/dist/cli.js +20 -0
- package/dist/cli.js.map +1 -1
- package/dist/tui.d.ts +5 -0
- package/dist/tui.js +62 -0
- package/dist/tui.js.map +1 -0
- package/package.json +12 -2
package/ReadMe.md
CHANGED
|
@@ -1,229 +1,289 @@
|
|
|
1
1
|
# OpenCodeRAG
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
> A RAG (Retrieval-Augmented Generation) plugin for [OpenCode](https://opencode.ai) that adds **semantic code search** powered by locally-hosted embedding models.
|
|
4
|
+
|
|
5
|
+
**Published on npm: [`opencode-rag-plugin`](https://www.npmjs.com/package/opencode-rag-plugin)**
|
|
6
|
+
|
|
7
|
+
> ⚠️ **Do not confuse with `opencode-rag`** — that is a discontinued project by a different author.
|
|
8
|
+
|
|
9
|
+
OpenCodeRAG reduces token usage by replacing expensive file-read tool calls with targeted, vector-similarity-based chunk retrieval. Large codebases and files on a local dedicated GPU benefit most in terms of performance, but even a modern CPU handles most workloads without a GPU.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Table of Contents
|
|
14
|
+
|
|
15
|
+
- [Features](#features)
|
|
16
|
+
- [Prerequisites](#prerequisites)
|
|
17
|
+
- [Quick Start](#quick-start)
|
|
18
|
+
- [Installation](#installation)
|
|
19
|
+
- [Global Installation (Recommended)](#global-installation-recommended)
|
|
20
|
+
- [Per-Workspace Setup](#per-workspace-setup)
|
|
21
|
+
- [Manual Installation](#manual-installation)
|
|
22
|
+
- [Uninstallation](#uninstallation)
|
|
23
|
+
- [Configuration](#configuration)
|
|
24
|
+
- [Embedding Providers](#embedding-providers)
|
|
25
|
+
- [Logging](#logging)
|
|
26
|
+
- [Usage](#usage)
|
|
27
|
+
- [CLI](#cli)
|
|
28
|
+
- [OpenCode Plugin](#opencode-plugin)
|
|
29
|
+
- [Architecture](#architecture)
|
|
30
|
+
- [Tech Stack](#tech-stack)
|
|
31
|
+
- [Chunking Language Support](#chunking-language-support)
|
|
32
|
+
- [Adding Custom Chunkers](#adding-custom-chunkers)
|
|
33
|
+
- [Data Model](#data-model)
|
|
34
|
+
- [Vector Store](#vector-store)
|
|
35
|
+
- [Development](#development)
|
|
36
|
+
- [Privacy](#privacy)
|
|
37
|
+
|
|
38
|
+
---
|
|
7
39
|
|
|
8
40
|
## Features
|
|
9
41
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
- **Hybrid search** — TF×IDF keyword index combined with vector search (weighted fusion) for improved precision on code identifiers and function names.
|
|
22
|
-
- **Local vector store** — LanceDB with L2 distance scoring, memory mode for
|
|
23
|
-
testing.
|
|
24
|
-
- **CLI** — index, query, clear, status commands.
|
|
25
|
-
- **OpenCode plugin** — exposes a chunk retrieval tool, suggests relevant files after each user message, and auto-injects high-confidence code chunks directly into the message to save tool-call round-trips.
|
|
42
|
+
| Feature | Description |
|
|
43
|
+
|---------|-------------|
|
|
44
|
+
| **AST-aware chunking** | Splits code into functions, classes, and methods via tree-sitter for 16 languages; regex-based for Markdown, Razor, `.sln`, and LaTeX; line-based fallback for everything else |
|
|
45
|
+
| **Incremental indexing** | Skips unchanged files, removes deleted entries, re-indexes only what changed |
|
|
46
|
+
| **Watch mode** | `index --watch` debounces file changes and re-indexes automatically |
|
|
47
|
+
| **Pluggable chunkers** | Add custom language chunkers via config file or programmatic API |
|
|
48
|
+
| **Configurable embeddings** | Ollama (default, fully local) or any OpenAI-compatible provider; configurable batch size |
|
|
49
|
+
| **Hybrid search** | TF×IDF keyword index fused with vector similarity — better precision on identifiers and function names |
|
|
50
|
+
| **Local vector store** | LanceDB with L2 distance scoring; in-memory mode for testing |
|
|
51
|
+
| **CLI** | `index`, `query`, `clear`, `status` commands |
|
|
52
|
+
| **OpenCode integration** | Auto-injects relevant code chunks into each message; suggests related files; exposes a retrieval tool the agent can call directly |
|
|
26
53
|
|
|
27
|
-
|
|
54
|
+
---
|
|
28
55
|
|
|
29
|
-
|
|
30
|
-
Workspace Files
|
|
31
|
-
│
|
|
32
|
-
▼
|
|
33
|
-
┌──────────────┐
|
|
34
|
-
│ Chunker │ AST-based (tree-sitter) or line-based fallback
|
|
35
|
-
└──────┬───────┘
|
|
36
|
-
│ chunks
|
|
37
|
-
▼
|
|
38
|
-
┌──────────────┐
|
|
39
|
-
│ Embedder │ Ollama / OpenAI-compatible API
|
|
40
|
-
└──────┬───────┘
|
|
41
|
-
│ vectors
|
|
42
|
-
▼
|
|
43
|
-
┌──────────────┐
|
|
44
|
-
│ VectorStore │ LanceDB (local files or memory:// for tests)
|
|
45
|
-
└──────┬───────┘
|
|
46
|
-
│ + manifest.json
|
|
47
|
-
▼
|
|
48
|
-
┌──────────────┐
|
|
49
|
-
│ Indexer/Retr.│ incremental index or query/search
|
|
50
|
-
└──────┬───────┘
|
|
51
|
-
│ results
|
|
52
|
-
▼
|
|
53
|
-
LLM Context
|
|
54
|
-
```
|
|
56
|
+
## Prerequisites
|
|
55
57
|
|
|
56
|
-
|
|
58
|
+
- **[OpenCode](https://opencode.ai)** installed and configured
|
|
59
|
+
- **Node.js v22+** (required for native ESM and `fetch`)
|
|
60
|
+
- **[Ollama](https://ollama.ai)** running locally with an embedding model (default: `nomic-embed-text`)
|
|
61
|
+
— or any OpenAI-compatible embedding API
|
|
57
62
|
|
|
58
|
-
|
|
59
|
-
| ----------- | --------------------------------------------------- |
|
|
60
|
-
| Runtime | Node.js v22 + tsx (ESM) |
|
|
61
|
-
| Language | TypeScript 5.8 |
|
|
62
|
-
| Chunking | web-tree-sitter (WASM) + tree-sitter-wasm grammars |
|
|
63
|
-
| Embeddings | Ollama / OpenAI-compatible (native fetch) |
|
|
64
|
-
| Vector DB | LanceDB (`@lancedb/lancedb`) |
|
|
65
|
-
| CLI | commander |
|
|
66
|
-
| Tests | Node built-in test runner (`node --test`) |
|
|
67
|
-
| Package mgr | npm (with `--legacy-peer-deps`) |
|
|
63
|
+
---
|
|
68
64
|
|
|
69
|
-
##
|
|
65
|
+
## Quick Start
|
|
70
66
|
|
|
71
|
-
|
|
67
|
+
```bash
|
|
68
|
+
# 1. Clone the repository
|
|
69
|
+
git clone https://github.com/your-org/OpenCodeRAG.git
|
|
70
|
+
cd OpenCodeRAG
|
|
72
71
|
|
|
73
|
-
|
|
72
|
+
# 2. Run the install script
|
|
73
|
+
./install.sh # Linux/macOS
|
|
74
|
+
.\install.ps1 # Windows
|
|
74
75
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
76
|
+
# 3. Go to your project and initialize
|
|
77
|
+
cd /path/to/your/project
|
|
78
|
+
opencode-rag init
|
|
79
|
+
|
|
80
|
+
# 4. Index the workspace
|
|
81
|
+
opencode-rag index
|
|
82
|
+
|
|
83
|
+
# 5. Restart OpenCode — the plugin is active
|
|
78
84
|
```
|
|
79
85
|
|
|
80
|
-
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Installation
|
|
89
|
+
|
|
90
|
+
### Global Installation (Recommended)
|
|
91
|
+
|
|
92
|
+
Clone the repository and run the platform-specific install script:
|
|
93
|
+
|
|
81
94
|
```bash
|
|
95
|
+
# Linux/macOS
|
|
82
96
|
./install.sh
|
|
97
|
+
|
|
98
|
+
# Windows
|
|
99
|
+
.\install.ps1
|
|
83
100
|
```
|
|
84
101
|
|
|
85
|
-
|
|
102
|
+
The script will:
|
|
86
103
|
1. Build the plugin from source (`npm run build`)
|
|
87
104
|
2. Install it into OpenCode's runtime (`~/.opencode/node_modules/`)
|
|
88
105
|
3. Register it in the global OpenCode config (`~/.config/opencode/opencode.jsonc`)
|
|
89
106
|
|
|
90
|
-
|
|
107
|
+
**Restart OpenCode after installation.**
|
|
108
|
+
|
|
109
|
+
---
|
|
91
110
|
|
|
92
|
-
### Per-
|
|
111
|
+
### Per-Workspace Setup
|
|
93
112
|
|
|
94
113
|
```bash
|
|
95
114
|
cd your-workspace
|
|
96
115
|
opencode-rag init
|
|
97
116
|
```
|
|
98
117
|
|
|
99
|
-
|
|
100
|
-
Add `--skip-install`
|
|
118
|
+
Bootstraps the current directory with all required files and a sample configuration.
|
|
119
|
+
Add `--skip-install` to generate the files only, without installing dependencies.
|
|
101
120
|
|
|
102
|
-
|
|
121
|
+
---
|
|
103
122
|
|
|
104
|
-
|
|
123
|
+
### Manual Installation
|
|
105
124
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
125
|
+
If you prefer to build and install without the script:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
npm run build
|
|
129
|
+
npm pack
|
|
130
|
+
|
|
131
|
+
# Install into OpenCode's runtime
|
|
132
|
+
npm install --prefix ~/.opencode/ opencode-rag-plugin-1.2.0.tgz
|
|
133
|
+
npm install --prefix ~/.config/opencode/ opencode-rag-plugin-1.2.0.tgz
|
|
134
|
+
|
|
135
|
+
# Then add "opencode-rag-plugin" to the plugins array in:
|
|
136
|
+
# ~/.config/opencode/opencode.jsonc
|
|
109
137
|
```
|
|
110
138
|
|
|
111
|
-
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
### Uninstallation
|
|
142
|
+
|
|
112
143
|
```bash
|
|
144
|
+
# Linux/macOS
|
|
113
145
|
./install.sh uninstall
|
|
146
|
+
|
|
147
|
+
# Windows
|
|
148
|
+
.\install.ps1 uninstall
|
|
114
149
|
```
|
|
115
150
|
|
|
116
|
-
|
|
151
|
+
**Restart OpenCode after uninstalling.**
|
|
117
152
|
|
|
118
|
-
|
|
153
|
+
> **Automatic dependencies:** `apache-arrow` (LanceDB peer dependency) and `tree-sitter-wasm` (pre-built WASM grammars) are installed automatically.
|
|
119
154
|
|
|
120
|
-
|
|
121
|
-
- **apache-arrow** — peer dependency for LanceDB (auto-installed)
|
|
122
|
-
- **tree-sitter-wasm** — ships pre-built WASM grammars for all supported languages
|
|
155
|
+
---
|
|
123
156
|
|
|
124
157
|
## Configuration
|
|
125
158
|
|
|
126
|
-
Create `opencode-rag.json` in
|
|
127
|
-
`--config`. The repository's own [`opencode-rag.json`](./opencode-rag.json) serves
|
|
128
|
-
as a complete example with all available options.
|
|
159
|
+
Create `opencode-rag.json` in your project root (auto-detected), or point to it explicitly with `--config ./path/to/config.json`.
|
|
129
160
|
|
|
130
|
-
|
|
131
|
-
|
|
161
|
+
The repository's own [`opencode-rag.json`](./opencode-rag.json) is a complete, annotated example covering all available options.
|
|
162
|
+
|
|
163
|
+
**Partial overrides are supported:** only the keys you set are applied — everything else falls back to defaults. Sections are deep-merged.
|
|
164
|
+
|
|
165
|
+
---
|
|
132
166
|
|
|
133
167
|
### Embedding Providers
|
|
134
168
|
|
|
135
|
-
| Provider | `baseUrl`
|
|
136
|
-
|
|
137
|
-
| ollama
|
|
138
|
-
| openai
|
|
169
|
+
| Provider | `baseUrl` | Notes |
|
|
170
|
+
|----------|-----------|-------|
|
|
171
|
+
| `ollama` | `http://localhost:11434/api` | **Default.** No API key required. |
|
|
172
|
+
| `openai` | `https://api.openai.com/v1` | Requires `apiKey`. Sends all texts in one batch request. |
|
|
173
|
+
|
|
174
|
+
- `embedding.timeoutMs` defaults to `30000` ms. Increase it if your local model has a slow cold start.
|
|
175
|
+
- Ollama sends one request per batch to `/api/embed`. Set `embedding.proxy.url` to route through a standard HTTP proxy.
|
|
139
176
|
|
|
140
|
-
|
|
177
|
+
---
|
|
141
178
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
179
|
+
### Logging
|
|
180
|
+
|
|
181
|
+
```json
|
|
182
|
+
{
|
|
183
|
+
"logging": {
|
|
184
|
+
"level": "info",
|
|
185
|
+
"logFilePath": "./.opencode/opencode-rag.log"
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
| Option | Default | Description |
|
|
191
|
+
|--------|---------|-------------|
|
|
192
|
+
| `level` | `"info"` | `"debug"`, `"info"`, or `"error"` |
|
|
193
|
+
| `logFilePath` | `"./.opencode/opencode-rag.log"` | Relative paths resolve against the workspace root |
|
|
194
|
+
|
|
195
|
+
The `LOG_FILE_PATH` environment variable is a fallback when no config value is set. Config takes precedence over the env var.
|
|
196
|
+
|
|
197
|
+
---
|
|
145
198
|
|
|
146
199
|
## Usage
|
|
147
200
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
201
|
+
OpenCodeRAG provides two interfaces:
|
|
202
|
+
|
|
203
|
+
| Interface | Best for |
|
|
204
|
+
|-----------|----------|
|
|
205
|
+
| **CLI** | Manual indexing, searching, and diagnostics |
|
|
206
|
+
| **OpenCode plugin** | Automatic retrieval and file suggestions while chatting |
|
|
207
|
+
|
|
208
|
+
---
|
|
151
209
|
|
|
152
210
|
### CLI
|
|
153
211
|
|
|
154
212
|
```bash
|
|
155
|
-
# Index the workspace
|
|
213
|
+
# Index the workspace (incremental by default)
|
|
156
214
|
opencode-rag index
|
|
157
215
|
|
|
158
|
-
# Force
|
|
216
|
+
# Force a complete re-index
|
|
159
217
|
opencode-rag index --force
|
|
160
218
|
|
|
161
|
-
# Watch
|
|
219
|
+
# Watch for changes and re-index automatically
|
|
162
220
|
opencode-rag index --watch
|
|
163
221
|
|
|
164
222
|
# Semantic search
|
|
165
223
|
opencode-rag query "How is authentication handled?"
|
|
166
|
-
|
|
167
|
-
# Limit results
|
|
168
224
|
opencode-rag query "error handling" --top-k 5
|
|
169
225
|
|
|
170
|
-
# Show
|
|
226
|
+
# Show index statistics
|
|
171
227
|
opencode-rag status
|
|
172
228
|
|
|
173
|
-
# Example output:
|
|
174
|
-
# Indexed chunks: 1247
|
|
175
|
-
# Store path: /home/user/project/.opencode/rag_db
|
|
176
|
-
# Embedding provider: ollama
|
|
177
|
-
# Embedding model: nomic-embed-text
|
|
178
|
-
# Manifest status: ok
|
|
179
|
-
# Manifest entries: 42
|
|
180
|
-
# Last indexed: 2026-05-28 10:45:02
|
|
181
|
-
# Up-to-date files: 42
|
|
182
|
-
# Pending files: 0
|
|
183
|
-
# Keyword index: enabled (1274 chunks)
|
|
184
|
-
|
|
185
229
|
# Clear all indexed data
|
|
186
230
|
opencode-rag clear
|
|
187
231
|
|
|
188
|
-
# Use custom config
|
|
232
|
+
# Use a custom config file
|
|
189
233
|
opencode-rag index --config ./my-config.json
|
|
190
234
|
```
|
|
191
235
|
|
|
192
|
-
`
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
236
|
+
**Example `status` output:**
|
|
237
|
+
```
|
|
238
|
+
Indexed chunks: 1247
|
|
239
|
+
Store path: /home/user/project/.opencode/rag_db
|
|
240
|
+
Embedding provider: ollama
|
|
241
|
+
Embedding model: nomic-embed-text
|
|
242
|
+
Manifest status: ok
|
|
243
|
+
Manifest entries: 42
|
|
244
|
+
Last indexed: 2026-05-28 10:45:02
|
|
245
|
+
Up-to-date files: 42
|
|
246
|
+
Pending files: 0
|
|
247
|
+
Keyword index: enabled (1274 chunks)
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
#### How Incremental Indexing Works
|
|
251
|
+
|
|
252
|
+
A manifest is stored at `<vectorStore.path>/manifest.json` and tracks file hashes, chunk counts, and the last successful index timestamp.
|
|
197
253
|
|
|
198
|
-
|
|
254
|
+
- Only **changed files** are re-embedded; **deleted files** are removed from the store.
|
|
255
|
+
- If the manifest is missing or corrupt while the store already has data, the next pass **clears and rebuilds** the entire store to prevent duplicates.
|
|
199
256
|
|
|
200
|
-
|
|
257
|
+
#### Watch Mode
|
|
201
258
|
|
|
202
259
|
```bash
|
|
203
260
|
opencode-rag index --watch
|
|
204
261
|
```
|
|
205
262
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
263
|
+
- Runs a full initial index pass, then listens for `add`, `change`, `unlink`, and `unlinkDir` events.
|
|
264
|
+
- Changes are debounced (300 ms) before triggering an incremental pass.
|
|
265
|
+
- If a pass is already running, one follow-up pass is queued and starts immediately after.
|
|
266
|
+
- The watcher ignores excluded directories, the vector store path, and the manifest file itself.
|
|
267
|
+
- Press `Ctrl+C` to stop.
|
|
210
268
|
|
|
211
|
-
|
|
212
|
-
manifest file itself. Press `Ctrl+C` to stop.
|
|
269
|
+
---
|
|
213
270
|
|
|
214
271
|
### OpenCode Plugin
|
|
215
272
|
|
|
216
|
-
|
|
273
|
+
Once installed, the plugin registers two hooks:
|
|
217
274
|
|
|
218
|
-
|
|
219
|
-
|
|
275
|
+
| Hook | What it does |
|
|
276
|
+
|------|-------------|
|
|
277
|
+
| `opencode-rag-context` | A retrieval tool the agent can call directly to fetch code chunks with file paths and line ranges |
|
|
278
|
+
| `chat.message` | After each user message, retrieves relevant files and appends them to the message |
|
|
220
279
|
|
|
221
|
-
####
|
|
280
|
+
#### Auto-Injection
|
|
222
281
|
|
|
223
|
-
After you send
|
|
224
|
-
|
|
282
|
+
After each message you send, the plugin:
|
|
283
|
+
|
|
284
|
+
1. Extracts your message text
|
|
225
285
|
2. Runs semantic retrieval against the indexed workspace
|
|
226
|
-
3. **
|
|
286
|
+
3. **High-confidence results** (relevance ≥ `autoInject.minScore`, default `0.75`): injects the actual code chunks directly into the message — the agent gets context without a tool-call round-trip:
|
|
227
287
|
```
|
|
228
288
|
---
|
|
229
289
|
**Auto-retrieved code context** _(context: 2 chunks, 1 file, relevance 0.88–0.92)_
|
|
@@ -234,82 +294,37 @@ After you send a message, the plugin:
|
|
|
234
294
|
```
|
|
235
295
|
---
|
|
236
296
|
```
|
|
237
|
-
4. **
|
|
297
|
+
4. **No high-confidence results**: falls back to a compact file list (max 10 files):
|
|
238
298
|
```
|
|
239
299
|
src/plugin.ts (typescript, lines 10-42, relevance 0.87)
|
|
240
300
|
src/core/config.ts (typescript, lines 66-145, relevance 0.72)
|
|
241
301
|
```
|
|
242
302
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
**Config:**
|
|
246
|
-
|
|
247
|
-
| Option | Default | Description |
|
|
248
|
-
| ------ | ------- | ----------- |
|
|
249
|
-
| `openCode.readOverride` | `false` | Set to `true` to register a RAG-backed `read` tool that shadows OpenCode's built-in read. When enabled, agent read requests return indexed code chunks instead of full file contents. |
|
|
250
|
-
| `openCode.maxContextChunks` | `5` | Maximum chunks per retrieval (affects `opencode-rag-context` tool output) |
|
|
251
|
-
| `openCode.autoInject.enabled` | `true` | Enable/disable auto-injection of high-confidence chunks |
|
|
252
|
-
| `openCode.autoInject.minScore` | `0.75` | Minimum relevance score for auto-injection (0–1) |
|
|
253
|
-
| `openCode.autoInject.maxChunks` | `3` | Maximum chunks to auto-inject per message |
|
|
254
|
-
| `openCode.autoInject.maxTokens` | `2000` | Token budget for injected content (estimated at ~4 chars/token) |
|
|
255
|
-
| `retrieval.topK` | `10` | Number of chunks fetched per query (controls chat.message file suggestion breadth) |
|
|
256
|
-
| `retrieval.hybridSearch.enabled` | `true` | Enable/disable hybrid search (TF×IDF keyword + vector) |
|
|
257
|
-
| `retrieval.hybridSearch.keywordWeight` | `0.4` | Weight for keyword scores in hybrid fusion (0–1). Higher = more keyword influence. |
|
|
258
|
-
|
|
259
|
-
Errors during retrieval are silently caught — a failed search won't break the
|
|
260
|
-
chat.
|
|
261
|
-
|
|
262
|
-
#### Install from source
|
|
263
|
-
|
|
264
|
-
After cloning and installing dependencies:
|
|
303
|
+
This eliminates a tool-call round-trip for roughly 70% of code-related messages. The agent can still call `opencode-rag-context` for more targeted or additional context.
|
|
265
304
|
|
|
266
|
-
|
|
267
|
-
# Option 1: Install globally via the install script (recommended)
|
|
268
|
-
./install.sh # Linux/macOS
|
|
269
|
-
.\install.ps1 # Windows
|
|
270
|
-
|
|
271
|
-
# Option 2: Build and pack manually, then register globally
|
|
272
|
-
npm run build
|
|
273
|
-
npm pack
|
|
274
|
-
npm install --prefix ~/.opencode/ opencode-rag-plugin-1.2.0.tgz
|
|
275
|
-
npm install --prefix ~/.config/opencode/ opencode-rag-plugin-1.2.0.tgz
|
|
276
|
-
# Add "opencode-rag-plugin" to the plugin array in ~/.config/opencode/opencode.jsonc
|
|
305
|
+
> **Note:** Retrieval errors are silently caught — a failed search will never break the chat.
|
|
277
306
|
|
|
278
|
-
|
|
279
|
-
opencode-rag init
|
|
280
|
-
|
|
281
|
-
# Uninstall (removes all global copies)
|
|
282
|
-
./install.sh uninstall # Linux/macOS
|
|
283
|
-
.\install.ps1 uninstall # Windows
|
|
284
|
-
```
|
|
285
|
-
|
|
286
|
-
The plugin reads its configuration from `opencode-rag.json` in the project root.
|
|
287
|
-
Remember to restart OpenCode after changing plugin files or plugin configuration.
|
|
288
|
-
|
|
289
|
-
### Logging
|
|
307
|
+
---
|
|
290
308
|
|
|
291
|
-
|
|
309
|
+
#### Plugin Configuration Reference
|
|
292
310
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
|
303
|
-
|
|
|
304
|
-
| `level` | `"info"` | Log level: `"debug"`, `"info"`, or `"error"` |
|
|
305
|
-
| `logFilePath` | `"./.opencode/opencode-rag.log"` | Path to the log file (relative paths are resolved against the workspace directory) |
|
|
311
|
+
| Option | Default | Description |
|
|
312
|
+
|--------|---------|-------------|
|
|
313
|
+
| `openCode.readOverride` | `false` | When `true`, registers a RAG-backed `read` tool that shadows OpenCode's built-in file reader — the agent gets indexed chunks instead of full file contents |
|
|
314
|
+
| `openCode.maxContextChunks` | `5` | Maximum chunks returned by `opencode-rag-context` |
|
|
315
|
+
| `openCode.autoInject.enabled` | `true` | Enable or disable auto-injection |
|
|
316
|
+
| `openCode.autoInject.minScore` | `0.75` | Minimum relevance score for auto-injection (0–1) |
|
|
317
|
+
| `openCode.autoInject.maxChunks` | `3` | Maximum chunks to inject per message |
|
|
318
|
+
| `openCode.autoInject.maxTokens` | `2000` | Token budget for injected content (~4 chars/token) |
|
|
319
|
+
| `retrieval.topK` | `10` | Chunks fetched per query (controls file suggestion breadth) |
|
|
320
|
+
| `retrieval.hybridSearch.enabled` | `true` | Enable or disable hybrid TF×IDF + vector search |
|
|
321
|
+
| `retrieval.hybridSearch.keywordWeight` | `0.4` | Keyword weight in hybrid fusion (0–1; higher = more keyword influence) |
|
|
306
322
|
|
|
307
|
-
|
|
323
|
+
---
|
|
308
324
|
|
|
309
|
-
#### AGENTS.md
|
|
325
|
+
#### AGENTS.md Snippet
|
|
310
326
|
|
|
311
|
-
Add
|
|
312
|
-
knows how to use the plugin correctly:
|
|
327
|
+
Add this section to your workspace's `AGENTS.md` so the agent knows how to use the plugin:
|
|
313
328
|
|
|
314
329
|
```markdown
|
|
315
330
|
## OpenCodeRAG Plugin
|
|
@@ -317,98 +332,121 @@ knows how to use the plugin correctly:
|
|
|
317
332
|
This workspace has OpenCodeRAG installed for semantic code retrieval.
|
|
318
333
|
|
|
319
334
|
### `opencode-rag-context` tool
|
|
320
|
-
Before planning, editing, or answering, use this tool to retrieve relevant
|
|
321
|
-
chunks with file paths, line ranges, and surrounding implementation.
|
|
335
|
+
Before planning, editing, or answering questions, use this tool to retrieve relevant
|
|
336
|
+
code chunks with file paths, line ranges, and surrounding implementation.
|
|
322
337
|
- `query` (required) — narrow, specific search, e.g. `"authentication middleware setup"`
|
|
323
338
|
- `pathHints` (optional) — up to 10 path filters, e.g. `["src/auth/"]`
|
|
324
339
|
- `languageHints` (optional) — up to 10 language filters, e.g. `["typescript"]`
|
|
325
|
-
- `topK` (optional) — result count (1
|
|
340
|
+
- `topK` (optional) — result count (1–25, default 10)
|
|
326
341
|
|
|
327
342
|
### File suggestions
|
|
328
343
|
After each user message, a `chat.message` hook appends up to 10 relevant file
|
|
329
|
-
suggestions
|
|
330
|
-
|
|
344
|
+
suggestions. Look for lines like `src/file.ts (typescript, lines 10-42)` at the
|
|
345
|
+
bottom of user input.
|
|
331
346
|
|
|
332
347
|
### Indexing
|
|
333
|
-
-
|
|
334
|
-
- If no results
|
|
335
|
-
run `opencode-rag index` from the terminal (or `npx opencode-rag-plugin`)
|
|
336
|
-
-
|
|
337
|
-
(`node_modules`, `.git`, `.opencode`, `dist`, etc.) are silently skipped
|
|
348
|
+
- Changed files are auto-indexed in the background (debounced 5 s).
|
|
349
|
+
- If searches return no results, the workspace may not be indexed yet —
|
|
350
|
+
run `opencode-rag index` from the terminal (or `npx opencode-rag-plugin`).
|
|
351
|
+
- Files under 1 KB, excluded extensions, and excluded directories
|
|
352
|
+
(`node_modules`, `.git`, `.opencode`, `dist`, etc.) are silently skipped.
|
|
338
353
|
```
|
|
339
354
|
|
|
340
|
-
The plugin
|
|
341
|
-
`experimental.chat.system.transform` hook, so that the opencode agents will see a
|
|
342
|
-
reminder about the `opencode-rag-context` tool in their system instructions.
|
|
355
|
+
The plugin also injects a reminder about `opencode-rag-context` into the agent's system prompt via `experimental.chat.system.transform`.
|
|
343
356
|
|
|
344
|
-
|
|
357
|
+
---
|
|
345
358
|
|
|
346
|
-
|
|
347
|
-
interface Chunk {
|
|
348
|
-
id: string;
|
|
349
|
-
content: string;
|
|
350
|
-
embedding?: number[];
|
|
351
|
-
metadata: {
|
|
352
|
-
filePath: string;
|
|
353
|
-
startLine: number;
|
|
354
|
-
endLine: number;
|
|
355
|
-
language: string;
|
|
356
|
-
};
|
|
357
|
-
}
|
|
359
|
+
## Architecture
|
|
358
360
|
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
361
|
+
```
|
|
362
|
+
Workspace Files
|
|
363
|
+
│
|
|
364
|
+
▼
|
|
365
|
+
┌──────────────┐
|
|
366
|
+
│ Chunker │ AST-based (tree-sitter) or line-based fallback
|
|
367
|
+
└──────┬───────┘
|
|
368
|
+
│ chunks
|
|
369
|
+
▼
|
|
370
|
+
┌──────────────┐
|
|
371
|
+
│ Embedder │ Ollama / OpenAI-compatible API
|
|
372
|
+
└──────┬───────┘
|
|
373
|
+
│ vectors
|
|
374
|
+
▼
|
|
375
|
+
┌──────────────┐
|
|
376
|
+
│ VectorStore │ LanceDB (local files or memory:// for tests)
|
|
377
|
+
└──────┬───────┘
|
|
378
|
+
│ + manifest.json
|
|
379
|
+
▼
|
|
380
|
+
┌──────────────┐
|
|
381
|
+
│ Indexer/Retr.│ incremental index or query/search
|
|
382
|
+
└──────┬───────┘
|
|
383
|
+
│ results
|
|
384
|
+
▼
|
|
385
|
+
LLM Context
|
|
363
386
|
```
|
|
364
387
|
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
|
370
|
-
|
|
371
|
-
|
|
|
372
|
-
|
|
|
373
|
-
|
|
|
374
|
-
|
|
|
375
|
-
|
|
|
376
|
-
|
|
|
377
|
-
|
|
|
378
|
-
|
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
|
385
|
-
|
|
386
|
-
|
|
|
387
|
-
|
|
|
388
|
-
|
|
|
389
|
-
|
|
|
390
|
-
|
|
|
391
|
-
|
|
|
392
|
-
|
|
|
393
|
-
|
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
388
|
+
---
|
|
389
|
+
|
|
390
|
+
## Tech Stack
|
|
391
|
+
|
|
392
|
+
| Layer | Technology |
|
|
393
|
+
|-------|------------|
|
|
394
|
+
| Runtime | Node.js v22 + tsx (ESM) |
|
|
395
|
+
| Language | TypeScript 5.8 |
|
|
396
|
+
| Chunking | web-tree-sitter (WASM) + tree-sitter-wasm grammars |
|
|
397
|
+
| Embeddings | Ollama / OpenAI-compatible (native fetch) |
|
|
398
|
+
| Vector DB | LanceDB (`@lancedb/lancedb`) |
|
|
399
|
+
| CLI | commander |
|
|
400
|
+
| Tests | Node built-in test runner (`node --test`) |
|
|
401
|
+
| Package manager | npm (with `--legacy-peer-deps`) |
|
|
402
|
+
|
|
403
|
+
---
|
|
404
|
+
|
|
405
|
+
## Chunking Language Support
|
|
406
|
+
|
|
407
|
+
| Language | Strategy | Captures |
|
|
408
|
+
|----------|----------|---------|
|
|
409
|
+
| TypeScript | AST (tree-sitter) | functions, methods, classes, interfaces |
|
|
410
|
+
| JavaScript | AST (tree-sitter) | functions, classes, arrow functions, exports |
|
|
411
|
+
| Python | AST (tree-sitter) | functions, classes, decorated definitions |
|
|
412
|
+
| Java | AST (tree-sitter) | methods, classes, interfaces, enums |
|
|
413
|
+
| Go | AST (tree-sitter) | functions, methods, type declarations |
|
|
414
|
+
| Rust | AST (tree-sitter) | functions, structs, enums, traits, impl blocks, modules, types |
|
|
415
|
+
| C | AST (tree-sitter) | functions, structs, enums, unions, typedefs |
|
|
416
|
+
| C++ | AST (tree-sitter) | functions, classes, structs, enums, namespaces, templates |
|
|
417
|
+
| C# | AST (tree-sitter) | classes, interfaces, structs, enums, methods, namespaces, records |
|
|
418
|
+
| Ruby | AST (tree-sitter) | methods, classes, modules, singleton methods |
|
|
419
|
+
| Kotlin | AST (tree-sitter) | functions, classes, interfaces, objects, properties |
|
|
420
|
+
| Swift | AST (tree-sitter) | functions, classes, structs, enums, protocols, extensions, variables |
|
|
421
|
+
| JSON | AST (tree-sitter) | key-value pairs |
|
|
422
|
+
| XML | AST (tree-sitter) | elements (1 chunk per root element) |
|
|
423
|
+
| HTML | AST (tree-sitter) | `<script>` / `<style>` blocks |
|
|
424
|
+
| CSS | AST (tree-sitter) | rule sets, at-rules, media, keyframes |
|
|
425
|
+
| Razor | Regex (brace matching) | `@code` / `@functions` blocks, template regions |
|
|
426
|
+
| Markdown | Regex heading split | h1/h2 sections + trailing content |
|
|
427
|
+
| Solution (`.sln`) | Regex (section boundary) | project entries and global sections |
|
|
428
|
+
| LaTeX | Regex section split | chapter/section/subsection/subsubsection boundaries |
|
|
429
|
+
| PDF | Paragraph-based | groups small paragraphs, splits oversized ones |
|
|
430
|
+
| Word (`.docx`) | Paragraph-based | extracts via mammoth; groups small paragraphs, splits oversized |
|
|
431
|
+
| Word (`.doc`) | Paragraph-based | extracts via word-extractor; groups small paragraphs, splits oversized |
|
|
432
|
+
| Excel (`.xls`/`.xlsx`) | Row-batch | extracts CSV per sheet via `@e965/xlsx`; splits by sheet, then by row batch |
|
|
433
|
+
| *(other)* | Line-based (100 lines/chunk) | raw text blocks |
|
|
434
|
+
|
|
435
|
+
### Adding Custom Chunkers
|
|
436
|
+
|
|
437
|
+
Custom chunkers can be registered without modifying the project source.
|
|
438
|
+
|
|
439
|
+
**Via config file** — add to `opencode-rag.json`:
|
|
401
440
|
|
|
402
441
|
```json
|
|
403
442
|
{
|
|
404
443
|
"chunkers": [
|
|
405
|
-
{ "module": "./path/to/
|
|
444
|
+
{ "module": "./path/to/my-chunker.js", "extensions": [".xyz"] }
|
|
406
445
|
]
|
|
407
446
|
}
|
|
408
447
|
```
|
|
409
448
|
|
|
410
|
-
The module path is resolved relative to the config file. The
|
|
411
|
-
export (as default or named) an object implementing the `Chunker` interface:
|
|
449
|
+
The module path is resolved relative to the config file. The module must export (as default or named) an object implementing the `Chunker` interface:
|
|
412
450
|
|
|
413
451
|
```typescript
|
|
414
452
|
interface Chunker {
|
|
@@ -418,29 +456,56 @@ interface Chunker {
|
|
|
418
456
|
}
|
|
419
457
|
```
|
|
420
458
|
|
|
421
|
-
|
|
459
|
+
**Via programmatic API:**
|
|
422
460
|
|
|
423
461
|
```typescript
|
|
424
462
|
import { registerChunker } from "opencode-rag-plugin/library";
|
|
425
|
-
registerChunker(myChunker, [".
|
|
463
|
+
registerChunker(myChunker, [".xyz"]); // second arg overrides fileExtensions
|
|
426
464
|
```
|
|
427
465
|
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
466
|
+
> If a built-in chunker already handles the requested extension, the new registration is skipped and a warning is emitted.
|
|
467
|
+
|
|
468
|
+
---
|
|
469
|
+
|
|
470
|
+
## Data Model
|
|
471
|
+
|
|
472
|
+
```typescript
|
|
473
|
+
interface Chunk {
|
|
474
|
+
id: string;
|
|
475
|
+
content: string;
|
|
476
|
+
embedding?: number[];
|
|
477
|
+
metadata: {
|
|
478
|
+
filePath: string;
|
|
479
|
+
startLine: number;
|
|
480
|
+
endLine: number;
|
|
481
|
+
language: string;
|
|
482
|
+
};
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
interface SearchResult {
|
|
486
|
+
chunk: Chunk;
|
|
487
|
+
score: number; // 1 / (1 + L2_distance), range [0, 1]
|
|
488
|
+
}
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
---
|
|
431
492
|
|
|
432
493
|
## Vector Store
|
|
433
494
|
|
|
434
|
-
LanceDB stores chunks in a `chunks` table with columns: `id`, `content`,
|
|
435
|
-
|
|
495
|
+
LanceDB stores chunks in a `chunks` table with columns: `id`, `content`, `embedding` (vector), `filePath`, `startLine`, `endLine`, `language`.
|
|
496
|
+
|
|
497
|
+
| Mode | Description |
|
|
498
|
+
|------|-------------|
|
|
499
|
+
| **Disk** | Files written to `vectorStore.path` (default: `.opencode/rag_db`) |
|
|
500
|
+
| **Memory** | `memory://` URI — for tests only; data is lost when the process exits |
|
|
436
501
|
|
|
437
|
-
|
|
438
|
-
- **Memory mode**: `memory://` URI — for tests only, data lost on close
|
|
439
|
-
- **Manifest sidecar**: `manifest.json` in the store directory tracks indexed
|
|
440
|
-
files for incremental updates
|
|
502
|
+
Additional details:
|
|
441
503
|
- Schema is auto-inferred from a seed row on first table creation
|
|
442
|
-
- L2 distance search
|
|
443
|
-
-
|
|
504
|
+
- L2 distance search; score = `1 / (1 + distance)`
|
|
505
|
+
- File paths are normalized to absolute forward-slash paths
|
|
506
|
+
- `manifest.json` in the store directory tracks indexed files for incremental updates
|
|
507
|
+
|
|
508
|
+
---
|
|
444
509
|
|
|
445
510
|
## Development
|
|
446
511
|
|
|
@@ -451,14 +516,14 @@ npm run typecheck
|
|
|
451
516
|
# Run all tests
|
|
452
517
|
npm test
|
|
453
518
|
|
|
454
|
-
# Run specific test file
|
|
519
|
+
# Run a specific test file
|
|
455
520
|
node --import tsx --test src/__tests__/chunker/fallback.test.ts
|
|
456
521
|
```
|
|
457
522
|
|
|
458
|
-
|
|
459
|
-
|
|
523
|
+
Tests use Node's built-in runner (`node:test`) with `tsx` for TypeScript imports. No external test library is required.
|
|
524
|
+
|
|
525
|
+
---
|
|
460
526
|
|
|
461
527
|
## Privacy
|
|
462
528
|
|
|
463
|
-
All processing
|
|
464
|
-
No data leaves the machine unless configured to use a remote embedding API.
|
|
529
|
+
All processing runs locally. By default, embeddings are generated by Ollama on your own machine. **No data leaves your machine** unless you configure a remote embedding API.
|
package/dist/cli.js
CHANGED
|
@@ -158,6 +158,12 @@ function generateWorkspacePluginFile(packageName) {
|
|
|
158
158
|
"",
|
|
159
159
|
].join("\n");
|
|
160
160
|
}
|
|
161
|
+
function generateWorkspaceTuiPluginFile(packageName) {
|
|
162
|
+
return [
|
|
163
|
+
`export { default } from "../node_modules/${packageName}/dist/tui.js";`,
|
|
164
|
+
"",
|
|
165
|
+
].join("\n");
|
|
166
|
+
}
|
|
161
167
|
function mergeGitignoreContent(existingContent) {
|
|
162
168
|
const lines = existingContent ? existingContent.split(/\r?\n/) : [];
|
|
163
169
|
const trimmed = new Set(lines.map((line) => line.trim()));
|
|
@@ -499,6 +505,7 @@ program
|
|
|
499
505
|
const opencodeConfigPath = path.join(opencodeDir, "opencode.json");
|
|
500
506
|
const pluginsDir = path.join(opencodeDir, "plugins");
|
|
501
507
|
const pluginEntryPath = path.join(pluginsDir, "rag-plugin.js");
|
|
508
|
+
const tuiPluginEntryPath = path.join(pluginsDir, "rag-tui.js");
|
|
502
509
|
const opencodePackagePath = path.join(opencodeDir, "package.json");
|
|
503
510
|
console.log("Initializing OpenCodeRAG in workspace...\n");
|
|
504
511
|
if (!existsSync(opencodeDir)) {
|
|
@@ -550,6 +557,19 @@ program
|
|
|
550
557
|
else {
|
|
551
558
|
console.log(" Exists: .opencode/plugins/rag-plugin.js");
|
|
552
559
|
}
|
|
560
|
+
const tuiPluginEntryExists = existsSync(tuiPluginEntryPath);
|
|
561
|
+
const tuiPluginEntryContent = generateWorkspaceTuiPluginFile(packageMetadata.name);
|
|
562
|
+
if (!tuiPluginEntryExists || options.force) {
|
|
563
|
+
writeFileSync(tuiPluginEntryPath, tuiPluginEntryContent, "utf-8");
|
|
564
|
+
console.log(` ${tuiPluginEntryExists ? "Updated" : "Created"}: .opencode/plugins/rag-tui.js`);
|
|
565
|
+
}
|
|
566
|
+
else if (readFileSync(tuiPluginEntryPath, "utf-8") !== tuiPluginEntryContent) {
|
|
567
|
+
writeFileSync(tuiPluginEntryPath, tuiPluginEntryContent, "utf-8");
|
|
568
|
+
console.log(" Updated: .opencode/plugins/rag-tui.js");
|
|
569
|
+
}
|
|
570
|
+
else {
|
|
571
|
+
console.log(" Exists: .opencode/plugins/rag-tui.js");
|
|
572
|
+
}
|
|
553
573
|
const workspacePackageExists = existsSync(opencodePackagePath);
|
|
554
574
|
const nextWorkspacePackage = buildWorkspacePackageJson(readJsonObject(opencodePackagePath), packageMetadata, opencodeDir);
|
|
555
575
|
if (!workspacePackageExists || options.force) {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC3F,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAkB,MAAM,kBAAkB,CAAC;AAEhG,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,GAEb,MAAM,cAAc,CAAC;AAqBtB,SAAS,WAAW,CAAC,WAAmB,EAAE,KAAa,EAAE,OAAe,EAAE,KAAc;IACtF,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACvB,yDAAyD;AAC3D,CAAC;AAED,SAAS,UAAU,CAAC,WAAmB,EAAE,KAAa,EAAE,OAAe;IACrE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrB,kDAAkD;AACpD,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,GAAe,EAAE,WAAmB;IAC/D,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;YACnC,MAAM,sBAAsB,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;YAC5D,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,UAAU,EAAE,CAAC,CAAC;YAC3D,OAAO,gBAAgB,CAAC,WAAW,EAAC,GAAG,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,WAAW,EAAE,QAAQ,EAAE,8BAA8B,GAAG,CAAC,MAAM,kBAAkB,EAAE,GAAG,CAAC,CAAC;YACpG,OAAO,CAAC,KAAK,CAAC,8BAA8B,GAAG,CAAC,MAAM,kBAAkB,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE,6BAA6B,EAAE,oBAAoB,CAAC,EAAE,CAAC;QAC7F,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;YACnC,MAAM,sBAAsB,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;YAC5D,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,UAAU,EAAE,CAAC,CAAC;YAC3D,OAAO,gBAAgB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,WAAW,EAAE,QAAQ,EAAE,8BAA8B,UAAU,EAAE,EAAE,GAAG,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IACD,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,qDAAqD,CAAC,CAAC;IACzF,OAAO,gBAAgB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;AACvD,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,SAAiB,EAAE,WAAmB;IACvE,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;IACtE,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjD,UAAU,CAAC,WAAW,EAAE,eAAe,EAAE,yBAAyB,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC3F,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,UAAU,CAAC,WAAW,EAAE,eAAe,EAAE,wBAAwB,CAAC,CAAC;QACnE,OAAO,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,WAAmB,EAAE,MAAiB;IAC9D,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,yBAAyB,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;IACxF,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,yBAAyB,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;IACrF,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,yBAAyB,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IACtF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,SAAkB;IACzC,IAAI,CAAC,SAAS;QAAE,OAAO,OAAO,CAAC;IAC/B,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,CAAC;AAC9C,CAAC;AAED,SAAS,eAAe,CAAC,WAAmB,EAAE,KAAoB;IAChE,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,uBAAuB,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1E,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,uBAAuB,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;IAC/E,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,uBAAuB,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;IAChF,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,uBAAuB,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9E,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,uBAAuB,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9E,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,uBAAuB,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACnF,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,uBAAuB,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACnF,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,uBAAuB,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,cAAc,CAAC,EAAU;IAChC,MAAM,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACvC,IAAI,EAAE,GAAG,KAAK;QAAE,OAAO,GAAG,OAAO,GAAG,CAAC;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9C,OAAO,GAAG,OAAO,KAAK,IAAI,GAAG,CAAC;AAChC,CAAC;AAED,SAAS,cAAc;IACrB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,kBAAkB;IACzB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,cAAc,CAAC,CAAC;IACpE,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAoB,CAAC;AAC/E,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAA6B,EAAE,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CACjG,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB;IACtC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAA4B,CAAC;AAChF,CAAC;AAED,SAAS,aAAa,CAAC,QAAgB,EAAE,KAA8B;IACrE,aAAa,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,gCAAgC,CAAC,WAAmB,EAAE,WAAmB,EAAE,OAAe;IACjG,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACjE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAE9D,IAAI,aAAa,KAAK,UAAU,EAAE,CAAC;QACjC,OAAO,QAAQ,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;IACxE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,yBAAyB,CAChC,QAA6C,EAC7C,eAAgC,EAChC,WAAmB;IAEnB,MAAM,oBAAoB,GAAG,eAAe,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACrE,MAAM,aAAa,GACjB,oBAAoB,CAAC,qBAAqB,CAAC;QAC3C,eAAe,CAAC,eAAe,EAAE,CAAC,qBAAqB,CAAC;QACxD,eAAe,CAAC,gBAAgB,EAAE,CAAC,qBAAqB,CAAC;QACzD,SAAS,CAAC;IAEZ,OAAO;QACL,GAAG,QAAQ;QACX,IAAI,EAAE,OAAO,QAAQ,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW;QACtE,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE;YACZ,GAAG,oBAAoB;YACvB,qBAAqB,EAAE,aAAa;YACpC,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,gCAAgC,CAAC,WAAW,EAAE,cAAc,EAAE,EAAE,eAAe,CAAC,OAAO,CAAC;SACjH;KACF,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,QAA6C;IACxE,MAAM,IAAI,GAAG,EAAE,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;IACrC,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,iCAAiC,CAAC;IACnD,CAAC;IACD,uEAAuE;IACvE,oEAAoE;IACpE,qEAAqE;IACrE,2EAA2E;IAC3E,OAAO,IAAI,CAAC,MAAM,CAAC;IACnB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,2BAA2B,CAAC,WAAmB;IACtD,OAAO;QACL,wDAAwD,WAAW,yBAAyB;QAC5F,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,qBAAqB,CAAC,eAAwB;IACrD,MAAM,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1D,MAAM,eAAe,GAAG,CAAC,eAAe,EAAE,mBAAmB,EAAE,SAAS,EAAE,kBAAkB,CAAC,CAAC;IAC9F,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAEvE,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO;YACL,8CAA8C;YAC9C,eAAe;YACf,mBAAmB;YACnB,EAAE;YACF,iDAAiD;YACjD,SAAS;YACT,EAAE;YACF,eAAe;YACf,kBAAkB;YAClB,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,IAAI,CAAC;IACnF,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5E,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC,CAAC;IAC7D,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,4BAA4B,CAAC,WAAmB;IACvD,MAAM,WAAW,GAAG,CAAC,KAAa,EAAU,EAAE,CAC5C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IAElE,MAAM,QAAQ,GAAG;QACf;YACE,IAAI,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,mBAAmB,CAAC;YAClD,KAAK,EAAE,KAAK;SACb;QACD;YACE,IAAI,EAAE;gBACJ,SAAS;gBACT,UAAU;gBACV,mBAAmB;gBACnB,kBAAkB;gBAClB,eAAe;aAChB;YACD,KAAK,EAAE,IAAI;SACZ;KACF,CAAC;IAEF,IAAI,SAA4B,CAAC;IAEjC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,MAAM,GACV,OAAO,CAAC,QAAQ,KAAK,OAAO;YAC1B,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;gBAChH,GAAG,EAAE,WAAW;gBAChB,KAAK,EAAE,SAAS;gBAChB,GAAG,EAAE,OAAO,CAAC,GAAG;aACjB,CAAC;YACJ,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE;gBAC7B,GAAG,EAAE,WAAW;gBAChB,KAAK,EAAE,SAAS;gBAChB,GAAG,EAAE,OAAO,CAAC,GAAG;aACjB,CAAC,CAAC;QAET,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QAED,SAAS,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,gCAAgC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED,MAAM,SAAS,IAAI,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,cAAc,CAAC;KACpB,WAAW,CAAC,sCAAsC,CAAC;KACnD,OAAO,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,CAAC;AAEzC,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,uBAAuB,CAAC;KACpC,MAAM,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;KACpD,MAAM,CAAC,aAAa,EAAE,qBAAqB,CAAC;KAC5C,MAAM,CAAC,aAAa,EAAE,uDAAuD,CAAC;KAC9E,MAAM,CAAC,KAAK,EAAE,OAAmB,EAAE,EAAE;IACpC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE3B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACzD,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC;QAEtE,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,yBAAyB,CAAC,CAAC;QAE5D,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QAExC,gDAAgD;QAChD,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACxD,IAAI,eAAe,GAAG,GAAG,CAAC;QAC1B,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YAChF,eAAe,GAAI,KAAK,CAAC,CAAC,CAAc,CAAC,MAAM,CAAC;QAClD,CAAC;QACD,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,yBAAyB,eAAe,EAAE,CAAC,CAAC;QAE7E,MAAM,KAAK,GAAG,IAAI,YAAY,CAC5B,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAC1C,eAAe,CAChB,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;QAExG,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,aAAa,GAAG,EAAE,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,KAAK,EAAE,iBAA0B,KAAK,EAAiB,EAAE;YACvE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC;gBAC/B,GAAG;gBACH,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;gBACrD,MAAM;gBACN,KAAK;gBACL,QAAQ;gBACR,YAAY;gBACZ,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC;gBAChD,MAAM,EAAE;oBACN,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC;oBAC5D,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;iBACzC;aACF,CAAC,CAAC;YAEH,eAAe,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACpC,UAAU,CACR,WAAW,EACX,OAAO,EACP,wBAAwB,KAAK,CAAC,UAAU,mBAAmB,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,IAAI,CACxG,CAAC;QACJ,CAAC,CAAC;QAEF,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;QAErB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,2BAA2B,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,wBAAwB,CACxC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EACnB,CAAC,KAAK,EAAE,EAAE;YACR,MAAM,OAAO,GAAI,KAAe,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1D,WAAW,CAAC,WAAW,EAAE,OAAO,EAAE,yBAAyB,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;YAC7E,OAAO,CAAC,KAAK,CAAC,2BAA2B,OAAO,EAAE,CAAC,CAAC;QACtD,CAAC,EACD,GAAG,CACJ,CAAC;QAEF,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE;YAClC,OAAO,EAAE,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACnF,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;QACpD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAChC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACnC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACnC,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QACtC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACnC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC5B,WAAW,CAAC,WAAW,EAAE,OAAO,EAAE,kBAAmB,KAAe,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;YACvF,OAAO,CAAC,KAAK,CAAC,oBAAqB,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;YAC1B,SAAS,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;QAE/C,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC;QACtD,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,kBAAkB,QAAQ,kCAAkC,CAAC,CAAC;IACjG,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAI,GAAa,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;QACjF,WAAW,CAAC,WAAW,EAAE,OAAO,EAAE,oBAAoB,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;QACtE,OAAO,CAAC,KAAK,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;QAC/C,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAC9F,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,6BAA6B,CAAC;KAC1C,QAAQ,CAAC,SAAS,EAAE,wBAAwB,CAAC;KAC7C,MAAM,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;KACpD,MAAM,CAAC,sBAAsB,EAAE,mBAAmB,EAAE,IAAI,CAAC;KACzD,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,OAAmB,EAAE,EAAE;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE3B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACzD,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC;QAEtE,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,gBAAgB,KAAK,GAAG,CAAC,CAAC;QAC3D,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAEjF,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAE3E,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QACzC,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,0DAA0D,CAAC,CAAC;YAC7F,OAAO;QACT,CAAC;QACD,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,aAAa,YAAY,oBAAoB,CAAC,CAAC;QAEhF,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC3C,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;QACxG,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC;QAElI,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC;QACtD,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,MAAM,iBAAiB,QAAQ,KAAK,CAAC,CAAC;QAEpF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7H,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACnE,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAI,GAAa,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;QACjF,WAAW,CAAC,WAAW,EAAE,OAAO,EAAE,iBAAiB,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;QACnE,OAAO,CAAC,KAAK,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAC;QAC5C,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAC9F,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;KACpD,MAAM,CAAC,KAAK,EAAE,OAAmB,EAAE,EAAE;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACzD,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC;QAEtE,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3E,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QAEtC,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;YACpB,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,2BAA2B,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,SAAS,oBAAoB,CAAC,CAAC;QAC5E,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QACpB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;QACtE,MAAM,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QACzE,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,SAAS,yCAAyC,CAAC,CAAC;IAChG,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAI,GAAa,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;QACjF,WAAW,CAAC,WAAW,EAAE,OAAO,EAAE,iBAAiB,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;QACnE,OAAO,CAAC,KAAK,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;KACpD,MAAM,CAAC,KAAK,EAAE,OAAmB,EAAE,EAAE;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACzD,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC;QAEtE,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3E,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,MAAM,qBAAqB,CACzC,GAAG,EACH,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAC1C,MAAM,EACN,KAAK,CACN,CAAC;QAEF,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,wBAAwB,KAAK,EAAE,CAAC,CAAC;QACnE,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,sBAAsB,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtG,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,uBAAuB,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtF,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,sBAAsB,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;QAClF,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,sBAAsB,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxG,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,sBAAsB,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClG,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,sBAAsB,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QACjF,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,sBAAsB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QACnF,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,sBAAsB,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QAClF,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,sBAAsB,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;QACnF,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,sBAAsB,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAClG,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,sBAAsB,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;QACjF,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,sBAAsB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QAChF,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,wBAAwB,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO;YACpD,CAAC,CAAC,CAAC,MAAM,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC;YACpG,CAAC,CAAC,CAAC,CAAC;QACN,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,sBAAsB,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,KAAK,OAAO,UAAU,CAAC,CAAC;QAC/I,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAC5B,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,mDAAmD,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAI,GAAa,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;QACjF,WAAW,CAAC,WAAW,EAAE,QAAQ,EAAE,wBAAwB,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;QAC3E,OAAO,CAAC,KAAK,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,SAAS,yBAAyB;IAChC,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,OAAO,EAAE,mFAAmF;QAC5F,SAAS,EAAE;YACT,QAAQ,EAAE,cAAc,CAAC,SAAS,CAAC,QAAQ;YAC3C,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,OAAO;YACzC,KAAK,EAAE,cAAc,CAAC,SAAS,CAAC,KAAK;YACrC,SAAS,EAAE,cAAc,CAAC,SAAS,CAAC,SAAS;SAC9C;QACD,QAAQ,EAAE;YACR,iBAAiB,EAAE,cAAc,CAAC,QAAQ,CAAC,iBAAiB;YAC5D,WAAW,EAAE,cAAc,CAAC,QAAQ,CAAC,WAAW;YAChD,YAAY,EAAE,cAAc,CAAC,QAAQ,CAAC,YAAY;YAClD,gBAAgB,EAAE,cAAc,CAAC,QAAQ,CAAC,gBAAgB;SAC3D;QACD,WAAW,EAAE;YACX,IAAI,EAAE,cAAc,CAAC,WAAW,CAAC,IAAI;SACtC;QACD,SAAS,EAAE;YACT,IAAI,EAAE,cAAc,CAAC,SAAS,CAAC,IAAI;YACnC,QAAQ,EAAE,cAAc,CAAC,SAAS,CAAC,QAAQ;SAC5C;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,OAAO;YACxC,gBAAgB,EAAE,cAAc,CAAC,QAAQ,CAAC,gBAAgB;YAC1D,YAAY,EAAE,cAAc,CAAC,QAAQ,CAAC,YAAY;YAClD,SAAS,EAAE;gBACT,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,SAAU,CAAC,OAAO;gBACnD,UAAU,EAAE,cAAc,CAAC,QAAQ,CAAC,SAAU,CAAC,UAAU;gBACzD,UAAU,EAAE,cAAc,CAAC,QAAQ,CAAC,SAAU,CAAC,UAAU;aAC1D;SACF;QACD,OAAO,EAAE;YACP,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK;YACnC,WAAW,EAAE,cAAc,CAAC,OAAO,CAAC,WAAW;SAChD;KACF,EACD,IAAI,EACJ,CAAC,CACF,GAAG,IAAI,CAAC;AACX,CAAC;AAED,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,iDAAiD,CAAC;KAC9D,MAAM,CAAC,aAAa,EAAE,0BAA0B,CAAC;KACjD,MAAM,CAAC,gBAAgB,EAAE,qDAAqD,CAAC;KAC/E,MAAM,CAAC,KAAK,EAAE,OAAoB,EAAE,EAAE;IACrC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;IAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAC3D,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACrD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAC/D,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAEnE,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAE1D,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,eAAe,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IAClD,MAAM,oBAAoB,GAAG,qBAAqB,CAChD,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CACnE,CAAC;IACF,IAAI,CAAC,eAAe,IAAI,OAAO,CAAC,KAAK,IAAI,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,KAAK,oBAAoB,EAAE,CAAC;QACvG,aAAa,CAAC,aAAa,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,wBAAwB,CAAC,CAAC;IACpF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,oBAAoB,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAC5D,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACnF,IAAI,CAAC,oBAAoB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAC3C,aAAa,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,KAAK,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,2BAA2B,CAAC,CAAC;IAC5F,CAAC;SAAM,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACrG,aAAa,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,iBAAiB,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;IACtD,MAAM,kBAAkB,GAAG,2BAA2B,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAC7E,IAAI,CAAC,iBAAiB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACxC,aAAa,CAAC,eAAe,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,mCAAmC,CAAC,CAAC;IACjG,CAAC;SAAM,IAAI,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,KAAK,kBAAkB,EAAE,CAAC;QACzE,aAAa,CAAC,eAAe,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;IAC7D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,sBAAsB,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAC/D,MAAM,oBAAoB,GAAG,yBAAyB,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;IAC1H,IAAI,CAAC,sBAAsB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAC7C,aAAa,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,KAAK,sBAAsB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,0BAA0B,CAAC,CAAC;IAC7F,CAAC;SAAM,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACxG,aAAa,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IACpD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,YAAY,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAC5C,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACnC,aAAa,CAAC,UAAU,EAAE,yBAAyB,EAAE,EAAE,OAAO,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,qBAAqB,CAAC,CAAC;IAC9E,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;QACrE,4BAA4B,CAAC,WAAW,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACtD,yEAAyE;QACzE,uEAAuE;QACvE,oEAAoE;QACpE,mCAAmC;QACnC,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAC;YACtF,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC;YACxC,qDAAqD;YACrD,IAAI,iBAAiB,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,KAAK,GACT,OAAO,CAAC,QAAQ,KAAK,OAAO;oBAC1B,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,oBAAoB,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;oBACjH,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACrE,IAAI,KAAK,IAAK,KAAa,CAAC,KAAK,EAAE,CAAC;oBAClC,iBAAiB,GAAG,KAAK,CAAC;gBAC5B,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,iBAAiB,GAAG,KAAK,CAAC;YAC5B,CAAC;YAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;YACjF,CAAC;iBAAM,CAAC;gBACN,MAAM,SAAS,GACb,OAAO,CAAC,QAAQ,KAAK,OAAO;oBAC1B,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,mBAAmB,UAAU,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;oBAC/I,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;gBAEjG,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACxC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;gBAClD,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,gFAAgF,CAAC,CAAC;gBAChG,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,gDAAgD,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,6FAA6F,CAAC,CAAC;AAC7G,CAAC,CAAC,CAAC;AAEL;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB,EAAE,KAAc;IAChE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC7D,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACpD,OAAO,aAAa,KAAK,UAAU,YAAY,EAAE,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,YAAY,EAAE,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC1I,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,IAAI,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,KAAK,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;KAAM,CAAC;IACN,6GAA6G;IAC7G,kEAAkE;IAClE,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QAC3E,KAAK,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAiB,OAAO,CAAC,IAAI;IACxD,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/tui.d.ts
ADDED
package/dist/tui.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { createElement, insert, setProp } from "@opentui/solid";
|
|
2
|
+
const PLUGIN_NAME = "opencode-rag-plugin";
|
|
3
|
+
function element(tag, props, children = []) {
|
|
4
|
+
const node = createElement(tag);
|
|
5
|
+
for (const [key, value] of Object.entries(props)) {
|
|
6
|
+
if (value !== undefined)
|
|
7
|
+
setProp(node, key, value);
|
|
8
|
+
}
|
|
9
|
+
for (const child of children) {
|
|
10
|
+
if (child === null || child === undefined || child === false)
|
|
11
|
+
continue;
|
|
12
|
+
insert(node, child);
|
|
13
|
+
}
|
|
14
|
+
return node;
|
|
15
|
+
}
|
|
16
|
+
function text(props, children = []) {
|
|
17
|
+
return element("text", props, children);
|
|
18
|
+
}
|
|
19
|
+
function box(props, children = []) {
|
|
20
|
+
return element("box", props, children);
|
|
21
|
+
}
|
|
22
|
+
function renderSidebar(theme) {
|
|
23
|
+
return box({
|
|
24
|
+
width: "100%",
|
|
25
|
+
flexDirection: "column",
|
|
26
|
+
border: { type: "single" },
|
|
27
|
+
borderColor: theme.accent,
|
|
28
|
+
paddingTop: 1,
|
|
29
|
+
paddingBottom: 1,
|
|
30
|
+
paddingLeft: 1,
|
|
31
|
+
paddingRight: 1,
|
|
32
|
+
}, [
|
|
33
|
+
box({
|
|
34
|
+
width: "100%",
|
|
35
|
+
flexDirection: "row",
|
|
36
|
+
justifyContent: "space-between",
|
|
37
|
+
alignItems: "center",
|
|
38
|
+
}, [
|
|
39
|
+
box({ paddingLeft: 1, paddingRight: 1, backgroundColor: theme.accent }, [
|
|
40
|
+
text({ fg: "#000000" }, ["OpenCodeRAG"]),
|
|
41
|
+
]),
|
|
42
|
+
]),
|
|
43
|
+
box({ width: "100%", marginTop: 1 }, [
|
|
44
|
+
text({ fg: theme.text }, ["Hello World"]),
|
|
45
|
+
]),
|
|
46
|
+
]);
|
|
47
|
+
}
|
|
48
|
+
const plugin = {
|
|
49
|
+
id: `${PLUGIN_NAME}:tui`,
|
|
50
|
+
tui: async (api) => {
|
|
51
|
+
api.slots.register({
|
|
52
|
+
order: 900,
|
|
53
|
+
slots: {
|
|
54
|
+
sidebar_content() {
|
|
55
|
+
return renderSidebar(api.theme.current);
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
export default plugin;
|
|
62
|
+
//# sourceMappingURL=tui.js.map
|
package/dist/tui.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAIhE,MAAM,WAAW,GAAG,qBAAqB,CAAC;AAE1C,SAAS,OAAO,CACd,GAAW,EACX,KAA8B,EAC9B,WAAoB,EAAE;IAEtB,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAEhC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK;YAAE,SAAS;QACvE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACtB,CAAC;IAED,OAAO,IAA8B,CAAC;AACxC,CAAC;AAED,SAAS,IAAI,CAAC,KAA8B,EAAE,WAAoB,EAAE;IAClE,OAAO,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,GAAG,CAAC,KAA8B,EAAE,WAAoB,EAAE;IACjE,OAAO,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,aAAa,CAAC,KAItB;IACC,OAAO,GAAG,CACR;QACE,KAAK,EAAE,MAAM;QACb,aAAa,EAAE,QAAQ;QACvB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC1B,WAAW,EAAE,KAAK,CAAC,MAAM;QACzB,UAAU,EAAE,CAAC;QACb,aAAa,EAAE,CAAC;QAChB,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,CAAC;KAChB,EACD;QACE,GAAG,CACD;YACE,KAAK,EAAE,MAAM;YACb,aAAa,EAAE,KAAK;YACpB,cAAc,EAAE,eAAe;YAC/B,UAAU,EAAE,QAAQ;SACrB,EACD;YACE,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE;gBACtE,IAAI,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC;aACzC,CAAC;SACH,CACF;QACD,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE;YACnC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC;SAC1C,CAAC;KACH,CACF,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAqC;IAC/C,EAAE,EAAE,GAAG,WAAW,MAAM;IACxB,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACjB,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;YACjB,KAAK,EAAE,GAAG;YACV,KAAK,EAAE;gBACL,eAAe;oBACb,OAAO,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC1C,CAAC;aACF;SACF,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-rag-plugin",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.2",
|
|
4
4
|
"description": "OpenCode plugin for local-first RAG-based semantic code search",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/plugin-entry.js",
|
|
@@ -21,6 +21,10 @@
|
|
|
21
21
|
"import": "./dist/index.js",
|
|
22
22
|
"require": "./dist/index.js",
|
|
23
23
|
"types": "./dist/index.d.ts"
|
|
24
|
+
},
|
|
25
|
+
"./tui": {
|
|
26
|
+
"import": "./dist/tui.js",
|
|
27
|
+
"types": "./dist/tui.d.ts"
|
|
24
28
|
}
|
|
25
29
|
},
|
|
26
30
|
"files": [
|
|
@@ -79,12 +83,18 @@
|
|
|
79
83
|
},
|
|
80
84
|
"devDependencies": {
|
|
81
85
|
"@opencode-ai/plugin": "1.15.5",
|
|
86
|
+
"@opentui/core": "^0.4.0",
|
|
87
|
+
"@opentui/keymap": "^0.4.0",
|
|
88
|
+
"@opentui/solid": "^0.4.0",
|
|
82
89
|
"@types/node": "^22.15.0",
|
|
90
|
+
"@types/react": "^19.2.17",
|
|
83
91
|
"@types/word-extractor": "^1.0.6",
|
|
92
|
+
"solid-js": "^1.9.12",
|
|
84
93
|
"tsx": "^4.19.4",
|
|
85
94
|
"typescript": "^5.8.3"
|
|
86
95
|
},
|
|
87
96
|
"overrides": {
|
|
88
|
-
"uuid": "^11.1.1"
|
|
97
|
+
"uuid": "^11.1.1",
|
|
98
|
+
"web-tree-sitter": "$web-tree-sitter"
|
|
89
99
|
}
|
|
90
100
|
}
|