flowseeker 0.1.7 → 0.1.9

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.
Files changed (50) hide show
  1. package/.env.example +7 -0
  2. package/CHANGELOG.md +143 -108
  3. package/README.md +288 -221
  4. package/dist/chat/nativeChatParticipant.js +1 -1
  5. package/dist/cli/flowCommand.js +175 -0
  6. package/dist/cli/main.js +1810 -0
  7. package/dist/cli/mcpServer.js +7 -1
  8. package/dist/cli/runEvaluation.js +281 -2
  9. package/dist/config/defaultConfig.js +11 -1
  10. package/dist/config/env.js +118 -0
  11. package/dist/config/loadConfig.js +18 -1
  12. package/dist/config/loadConfigFromPath.js +3 -1
  13. package/dist/eval/accuracyV2.js +483 -0
  14. package/dist/eval/goldenTask.js +192 -0
  15. package/dist/extension.js +23 -0
  16. package/dist/framework/laravel.js +177 -0
  17. package/dist/gateway/embeddingProviders.js +852 -0
  18. package/dist/index/cacheStore.js +43 -0
  19. package/dist/index/configRouteDiscoveryProbe.js +288 -0
  20. package/dist/index/embeddingIndex.js +193 -0
  21. package/dist/index/graphIndex.js +460 -0
  22. package/dist/index/indexWatcher.js +86 -0
  23. package/dist/index/semanticChunkIndex.js +388 -0
  24. package/dist/index/structuredExtractor.js +303 -12
  25. package/dist/index/treeSitterExtractor.js +264 -0
  26. package/dist/index/vectorStore.js +41 -0
  27. package/dist/index/workspaceIndex.js +901 -26
  28. package/dist/mcp/mcpTools.js +1678 -2
  29. package/dist/pipeline/contextBlueprint.js +15 -2
  30. package/dist/pipeline/contextPack.js +3 -3
  31. package/dist/pipeline/deterministicReranker.js +358 -0
  32. package/dist/pipeline/evaluationMetrics.js +14 -2
  33. package/dist/pipeline/fileGroups.js +7 -1
  34. package/dist/pipeline/fileScanner.js +209 -12
  35. package/dist/pipeline/fusionTrace.js +149 -0
  36. package/dist/pipeline/llmReranker.js +151 -0
  37. package/dist/pipeline/nodeScan.js +102 -12
  38. package/dist/pipeline/ranker.js +875 -16
  39. package/dist/pipeline/retrievalFusion.js +41 -0
  40. package/dist/pipeline/roleRefinement.js +62 -0
  41. package/dist/pipeline/runHeadless.js +60 -5
  42. package/dist/pipeline/runPipeline.js +2 -2
  43. package/dist/pipeline/solvePacket.js +656 -43
  44. package/dist/pipeline/subsystem.js +21 -0
  45. package/dist/pipeline/taskUnderstanding.js +2 -2
  46. package/dist/ui/chatViewProvider.js +1 -1
  47. package/docs/demo-screenshot-checklist.md +86 -0
  48. package/docs/marketplace-copy.md +92 -0
  49. package/docs/mcp-onboarding.md +191 -0
  50. package/package.json +633 -561
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  # FlowSeeker
4
4
 
5
- **Find the files that matter for your task — *before* an AI starts reasoning.**
5
+ **Give AI coding agents the right files before they start guessing.**
6
6
 
7
7
  [![VS Marketplace](https://img.shields.io/visual-studio-marketplace/v/everestt2806.flowseeker?label=VS%20Marketplace&color=1E63F1)](https://marketplace.visualstudio.com/items?itemName=everestt2806.flowseeker)
8
8
  [![Open VSX](https://img.shields.io/open-vsx/v/everestt2806/flowseeker?label=Open%20VSX&color=19D7F0)](https://open-vsx.org/extension/everestt2806/flowseeker)
@@ -11,365 +11,432 @@
11
11
 
12
12
  </div>
13
13
 
14
- FlowSeeker retrieves relevant codebase context **before** an AI starts reasoning. Describe the problem, get a ranked list of relevant files with reasons, and send a compact **Solve Packet** to the AI &mdash; not the entire repo.
14
+ FlowSeeker is a context-prep layer for AI coding workflows. Describe a task, and FlowSeeker scans the codebase, ranks the relevant files, explains why they matter, and returns a compact **Solve Packet** for Claude Code, Codex, VS Code Chat, Cursor, Windsurf, Antigravity, or any MCP-compatible client.
15
15
 
16
- ---
17
-
18
- ## Choose Your Path
16
+ It does not try to replace your coding agent. It gives the agent a cleaner starting point: what to read, what may need editing, what is probably noise, what is missing, and which checks are worth running.
19
17
 
20
- > **I want the VS Code extension** &rarr; Install from the Marketplace/Open VSX and use Native VS Code Chat or the FlowSeeker sidebar.
21
- >
22
- > **I want MCP only** &rarr; Install the npm package and connect `flowseeker-mcp` to Cursor, Antigravity, Windsurf, Claude Desktop, VS Code/Copilot, or another MCP client.
23
- >
24
- > **I want both** &rarr; Install the extension. It includes the sidebar experience and a bundled FlowSeeker MCP server where the host supports MCP providers.
18
+ ```text
19
+ Task: Fix grade export to Excel
20
+
21
+ FlowSeeker returns:
22
+ - likely edit files
23
+ - read-only context files
24
+ - routes/controllers/services/schema slots
25
+ - missing links if the flow is incomplete
26
+ - verification commands
27
+ - token-savings proof
28
+ - guardrails so the agent does not edit random files
29
+ ```
25
30
 
26
31
  ---
27
32
 
28
- ## What FlowSeeker Does
33
+ ## Why This Exists
29
34
 
30
- You have a large project. You need to fix a bug, add a feature, or investigate a problem. You ask an AI agent. The AI reads the wrong files, hallucinates, or runs out of context.
35
+ AI coding agents are powerful, but on large repos they often spend the first part of a task doing blind exploration:
31
36
 
32
- FlowSeeker fixes this by doing the retrieval first:
37
+ - reading unrelated files
38
+ - grepping broad keywords
39
+ - mixing stale context from another project
40
+ - filling gaps with guesses
41
+ - burning tokens before reaching the real edit location
33
42
 
34
- - Finds every file that's **likely relevant** &mdash; not just code, but configs, migrations, templates, tests, docs
35
- - Explains **why** each file was selected &mdash; path match, content match, framework edge, dependency
36
- - Separates **edit candidates** from **read-only context** and **verification targets**
37
- - Reports **measured token savings** so you can see how much context the AI avoided loading
38
- - Reports **context coverage** so token savings are judged alongside whether required flow slots were found
43
+ FlowSeeker handles that retrieval step first. The goal is simple: turn a vague code task into a small, evidence-backed context packet that an AI agent can act on.
39
44
 
40
45
  ---
41
46
 
42
- ## Quick Start
47
+ ## Use It Your Way
43
48
 
44
- ### If you installed the VS Code extension
49
+ | Workflow | Best entry point |
50
+ |---|---|
51
+ | VS Code user | FlowSeeker sidebar or `@flowseeker /guide` |
52
+ | Claude Code / Codex CLI user | `flowseeker guide`, `flowseeker auto`, `flowseeker files` |
53
+ | MCP-first user | `flowseeker mcp`, `flowseeker-mcp`, or `fs-mcp` |
54
+ | Marketplace/OpenVSX user | Install the extension |
55
+ | Automation/eval user | Headless CLI and reproducible benchmark scripts |
45
56
 
46
- Open VS Code Chat (`Ctrl+Shift+I` or `Cmd+Shift+I`) and type:
57
+ ---
58
+
59
+ ## 30-Second Start
60
+
61
+ ### VS Code Chat
47
62
 
48
63
  ```text
49
- @flowseeker /guide The payment confirmation email is not being sent after checkout
64
+ @flowseeker /guide The payment confirmation email is not sent after checkout
50
65
  ```
51
66
 
52
- FlowSeeker scans your project and returns a ranked results tree. The AI then explains what to look at, why, and what to change.
67
+ FlowSeeker retrieves the relevant context and returns an agent-ready Solve Packet.
53
68
 
54
69
  ```text
55
70
  @flowseeker /auto Add SMS notification when payment fails
56
71
  ```
57
72
 
58
- Same scan, but the AI produces a **reviewable plan only**. No files are changed. After you review and approve, structured edits are generated and applied with one click.
73
+ `/auto` starts from the same retrieval step, but asks the AI for a reviewable plan before edits.
59
74
 
60
- ### If you installed the MCP server
75
+ ### Claude Code / Codex CLI
61
76
 
62
- Run the server and connect your IDE:
77
+ Install from npm, then run FlowSeeker from the target repo:
63
78
 
64
79
  ```bash
65
- npx -p flowseeker flowseeker-mcp --workspace /path/to/your/repo
66
- ```
80
+ npm i -g flowseeker
67
81
 
68
- Then configure your IDE to connect to it — see [MCP Server](#mcp-server-cross-ide-integration) below for per-IDE setup.
82
+ cd /path/to/your/repo
83
+ flowseeker guide "Fix checkout webhook retry"
84
+ flowseeker auto "Add CSV export with tests"
85
+ flowseeker files "Find the auth middleware"
86
+ flowseeker retrieve "Debug login session expiry"
87
+ ```
69
88
 
70
- ---
89
+ FlowSeeker works immediately without embeddings. No API key, model, runtime, or setup is required for the default deterministic retrieval path.
71
90
 
72
- ## MCP Server (Cross-IDE Native Chat)
91
+ FlowSeeker core does not bundle the local embedding runtime/model in the npm or VSIX package; install `flowseeker-local` only when you want local embeddings.
73
92
 
74
- FlowSeeker ships a standalone **MCP server** for IDEs and AI clients that support the Model Context Protocol: Cursor, Antigravity, Windsurf, Claude Desktop, VS Code/Copilot, and others.
93
+ Optional local embeddings with no API key:
75
94
 
76
- Use this path when you want FlowSeeker inside an IDE's Native Chat without installing the VS Code extension. The IDE's own model reasons over the Solve Packet, so FlowSeeker does not need a separate provider key.
95
+ ```bash
96
+ npm i -g flowseeker-local
97
+ flowseeker semantic init --local
98
+ flowseeker semantic check --test
99
+ ```
77
100
 
78
- ### Install
101
+ If the ready local package is not available in your environment, use explicit project-level setup:
79
102
 
80
103
  ```bash
81
- # Run on demand, no global install
82
- npx -p flowseeker flowseeker-mcp --help
83
- npx -p flowseeker flowseeker-mcp --version
84
-
85
- # Or install globally
86
- npm i -g flowseeker
87
- flowseeker-mcp --help
88
- flowseeker-mcp --check-updates
104
+ flowseeker semantic local setup --yes # install @huggingface/transformers
105
+ flowseeker semantic local download --yes # fetch/cache model files
106
+ flowseeker semantic check --test
89
107
  ```
90
108
 
91
- FlowSeeker 0.1.7 and newer also check for extension updates once per day and show a non-modal notice when a newer npm package is available. The MCP CLI never checks for updates during normal stdio server startup; use `flowseeker-mcp --check-updates` when you want an explicit check.
109
+ Offline mode (pre-cached model, no network): `flowseeker semantic local download --yes --offline`
92
110
 
93
- ### MCP Tools and Prompts
111
+ Hosted embeddings are also supported through provider-neutral OpenAI-compatible config:
94
112
 
95
- | Tool | Purpose |
96
- |------|---------|
97
- | `flowseeker_retrieve` | Return a full Solve Packet with ranked evidence, context coverage, and token savings |
98
- | `flowseeker_guide` | Return an agent guidance prompt with relevant files, edit candidates, and verification steps |
99
- | `flowseeker_files` | Return a lightweight top-ranked file list |
100
-
101
- FlowSeeker also exposes short MCP prompts for clients that surface prompt suggestions:
113
+ ```bash
114
+ flowseeker semantic init --openai-compatible
115
+ # set semanticModel / semanticBaseUrl in .flowseeker/config.json
116
+ # put your API key in .env as FLOWSEEKER_EMBEDDING_API_KEY
117
+ flowseeker semantic check --test
118
+ ```
102
119
 
103
- | Prompt | Maps to |
104
- |--------|---------|
105
- | `retrieve` | `flowseeker_retrieve` |
106
- | `guide` | `flowseeker_guide` |
107
- | `files` | `flowseeker_files` |
120
+ **Deterministic/no-embedding mode** works without setup and is the default. No API key, no runtime, no model - just code-structure analysis.
108
121
 
109
- Autocomplete behavior is controlled by the host IDE. Some clients show tools/prompts after selecting the MCP server; others only insert a server mention such as `@mcp:flowseeker:`. In those clients, use natural language or type the tool name directly.
122
+ **Local evidence report:** Verify your local embedding setup produces valid vectors. The command is report-only - no install, no download, no network by default.
110
123
 
111
- ### Native Chat Examples
124
+ ```bash
125
+ # Structured JSON report (preferred):
126
+ flowseeker semantic local evidence --json
127
+ flowseeker semantic local evidence --report .flowseeker/local-evidence.json
112
128
 
113
- ```text
114
- Use FlowSeeker to find relevant files for: fix payment confirmation email after checkout
129
+ # Setup and download are explicit separate commands:
130
+ flowseeker semantic local setup --yes
131
+ flowseeker semantic local download --yes
115
132
  ```
116
133
 
117
- ```text
118
- flowseeker_retrieve task: find where MCP server prompts/list is implemented
134
+ The report includes: workspace, runtime/model status, readiness, provider, model ID, dimensions, vector count, finite check, embed latency, classification, and next action. Classifications: `runtime_missing`, `model_missing`, `model_invalid`, `pass`, `runtime_api_mismatch`, `embedding_shape_invalid`, `unknown_error`.
135
+
136
+ **Developer/manual opt-in script** (source-repo only, requires env flags):
137
+ ```bash
138
+ set FLOWSEEKER_RUN_REAL_LOCAL_RUNTIME_TEST=1
139
+ set FLOWSEEKER_LOCAL_TEST_WORKSPACE=<path>
140
+ node scripts/smoke-local-real-runtime-manual.js
141
+ # Optional: allow install/download via FLOWSEEKER_ALLOW_RUNTIME_INSTALL=1 etc.
119
142
  ```
120
143
 
121
- In Antigravity, current builds may insert this prefix without showing a second-level command menu:
144
+ Recommended terminal flow:
122
145
 
123
- ```text
124
- @mcp:flowseeker: Use FlowSeeker to find relevant files for: fix MCP config loading
146
+ ```bash
147
+ flowseeker auto "Fix payment retry idempotency" --out .flowseeker/agent-prompt.md
125
148
  ```
126
149
 
127
- That is a host UI limitation. FlowSeeker still works as long as the MCP server is connected.
150
+ Then paste the generated prompt into Claude Code, Codex CLI, or your preferred agent.
128
151
 
129
- ### IDE Configuration
152
+ Short aliases are also available:
130
153
 
131
- #### Cursor
154
+ ```bash
155
+ fs-guide "Fix checkout webhook retry"
156
+ fs-auto "Add CSV export with tests"
157
+ fs-files "Find the auth middleware"
158
+ ```
132
159
 
133
- Global config:
160
+ ### Claude Code MCP
134
161
 
135
- - macOS: `~/.cursor/mcp.json`
136
- - Windows: `%USERPROFILE%\.cursor\mcp.json`
162
+ After global install, run the one-command setup from your project:
137
163
 
138
- Project config:
164
+ ```bash
165
+ # One-command setup (preview first, then apply):
166
+ flowseeker setup claude --no-exec
167
+ flowseeker setup claude --yes
139
168
 
140
- - `.cursor/mcp.json` in your project root
169
+ # Optional: add ready local embeddings (no API key needed)
170
+ npm i -g flowseeker-local
141
171
 
142
- ```json
143
- {
144
- "mcpServers": {
145
- "flowseeker": {
146
- "command": "npx",
147
- "args": ["-p", "flowseeker", "flowseeker-mcp", "--workspace", "."]
148
- }
149
- }
150
- }
172
+ # Verify everything:
173
+ flowseeker doctor --mcp
174
+ flowseeker semantic check --test
151
175
  ```
152
176
 
153
- #### Antigravity
177
+ Also available: `flowseeker setup codex`, `flowseeker setup cursor`, `flowseeker setup vscode`. Then ask Claude Code to use FlowSeeker for the task. The MCP server exposes `flowseeker_guide`, `flowseeker_auto`, `flowseeker_retrieve`, and `flowseeker_files`.
154
178
 
155
- Config file:
179
+ ### MCP Server
156
180
 
157
- - macOS: `~/.gemini/antigravity/mcp_config.json`
158
- - Windows: `%USERPROFILE%\.gemini\antigravity\mcp_config.json`
159
-
160
- ```json
161
- {
162
- "mcpServers": {
163
- "flowseeker": {
164
- "command": "npx",
165
- "args": ["-p", "flowseeker", "flowseeker-mcp", "--workspace", "."]
166
- }
167
- }
168
- }
181
+ ```bash
182
+ npx -p flowseeker flowseeker-mcp --workspace /path/to/your/repo
169
183
  ```
170
184
 
171
- Testing a local build before npm publish:
185
+ Short alias after install:
172
186
 
173
- ```json
174
- {
175
- "mcpServers": {
176
- "flowseeker": {
177
- "command": "node",
178
- "args": [
179
- "D:\\Developing\\FlowSeeker\\dist\\cli\\mcpServer.js",
180
- "--workspace",
181
- "D:\\Developing\\FlowSeeker"
182
- ]
183
- }
184
- }
185
- }
187
+ ```bash
188
+ flowseeker mcp --workspace /path/to/your/repo
189
+ fs-mcp --workspace /path/to/your/repo
186
190
  ```
187
191
 
188
- #### Windsurf
192
+ For Cursor, Antigravity, Windsurf, Claude Desktop, and VS Code/Copilot config snippets, see [docs/mcp-onboarding.md](docs/mcp-onboarding.md).
189
193
 
190
- Config file:
194
+ ---
191
195
 
192
- - macOS: `~/.codeium/windsurf/mcp_config.json`
193
- - Windows: `%USERPROFILE%\.codeium\windsurf\mcp_config.json`
196
+ ## What A Solve Packet Contains
194
197
 
195
- ```json
196
- {
197
- "mcpServers": {
198
- "flowseeker": {
199
- "command": "npx",
200
- "args": ["-p", "flowseeker", "flowseeker-mcp", "--workspace", "."]
201
- }
202
- }
203
- }
204
- ```
198
+ FlowSeeker separates context by role so the agent can act without treating every file as an edit target.
205
199
 
206
- #### VS Code / GitHub Copilot
200
+ | Section | Purpose |
201
+ |---|---|
202
+ | **Primary edit candidates** | Files most likely to need changes |
203
+ | **Read-only context** | Files that explain behavior but should not be edited by default |
204
+ | **Candidate Flow** | Route/controller/service/schema/test style flow slots |
205
+ | **Missing Links** | Required context that was not found, with search hints |
206
+ | **Noise Risk** | Files that matched keywords but may be irrelevant |
207
+ | **Verification** | Focused checks and test targets |
208
+ | **Token proof** | Solve Packet size compared with scanned/indexed workspace text |
207
209
 
208
- VS Code uses `.vscode/mcp.json` and root key `servers`:
210
+ This is the core idea: the agent starts with a map, not a pile of files.
209
211
 
210
- ```json
211
- {
212
- "servers": {
213
- "flowseeker": {
214
- "command": "npx",
215
- "args": ["-p", "flowseeker", "flowseeker-mcp", "--workspace", "."]
216
- }
217
- }
218
- }
219
- ```
212
+ ---
220
213
 
221
- #### Claude Desktop
214
+ ## Features
222
215
 
223
- Add to `claude_desktop_config.json`:
216
+ - **Task-aware retrieval**: understands the task shape, extracts keywords, and checks required context slots.
217
+ - **Evidence-ranked files**: every selected file includes score, role, slot, confidence, and reasons.
218
+ - **Solve Packet 3.0**: compact markdown packet designed for AI coding agents.
219
+ - **CLI-first workflow**: `fs-guide`, `fs-auto`, `fs-files`, `fs-retrieve`, and `fs-mcp`.
220
+ - **One-command install path**: `npm i -g flowseeker`, then `flowseeker guide`, `flowseeker auto`, or `flowseeker mcp`.
221
+ - **MCP support**: exposes retrieval tools and prompts through a standalone stdio server.
222
+ - **VS Code integration**: sidebar, result tree, Native Chat participant, and bundled MCP provider where supported.
223
+ - **Structured extraction**: structured-regex parser for 13 languages.
224
+ - **Semantic retrieval setup**: optional local or hosted embeddings configured via `.flowseeker/config.json`, verified with `flowseeker semantic check --test`.
225
+ - **Cache safety**: atomic cache writes, corrupt-cache recovery, and delete cleanup checks.
226
+ - **Honest fallbacks**: if context is incomplete, FlowSeeker reports missing links instead of pretending it knows.
227
+
228
+ ---
229
+
230
+ ## MCP Tools
231
+
232
+ FlowSeeker exposes these MCP tools:
233
+
234
+ | Tool | Use |
235
+ |---|---|
236
+ | `flowseeker_retrieve` | Return the full Solve Packet |
237
+ | `flowseeker_guide` | Return an agent guidance prompt |
238
+ | `flowseeker_auto` | Return a reviewable implementation-plan prompt |
239
+ | `flowseeker_files` | Return top ranked files only |
240
+
241
+ Example MCP config:
224
242
 
225
243
  ```json
226
244
  {
227
245
  "mcpServers": {
228
246
  "flowseeker": {
229
247
  "command": "npx",
230
- "args": ["-p", "flowseeker", "flowseeker-mcp", "--workspace", "/path/to/repo"]
248
+ "args": ["-p", "flowseeker", "flowseeker-mcp", "--workspace", "."]
231
249
  }
232
250
  }
233
251
  }
234
252
  ```
235
253
 
236
- ### How It Works
237
-
238
- 1. Your IDE sends a tool call to the FlowSeeker MCP server.
239
- 2. FlowSeeker runs the headless pipeline: scan workspace, rank evidence, build Solve Packet.
240
- 3. The compact result returns to your IDE's model.
241
- 4. The model answers in your native chat with focused context instead of reading the whole repository.
254
+ VS Code/Copilot `.vscode/mcp.json` uses `servers` instead of `mcpServers`.
242
255
 
243
256
  ---
244
257
 
245
- ## Token Measurement
258
+ ## Evidence-Backed Capabilities
246
259
 
247
- FlowSeeker measures token reduction from the actual text it prepares, then evaluates retrieval quality and context coverage separately. That keeps the claim grounded: fewer tokens only matter if the expected files and required flow slots still appear.
260
+ FlowSeeker avoids inflated claims. The public claims below are tied to reproducible local checks.
248
261
 
249
- FlowSeeker uses three measurement levels:
262
+ | Capability | Evidence |
263
+ |---|---|
264
+ | Cold scan under 2s (153 files) / 5s (149 files) for benchmarked workspaces | Generated by `scripts/smoke-phase06-warm-query-performance.js` |
265
+ | Warm reuse with zero churn on unchanged workspace | Phase 06 warm query report |
266
+ | Solve Packet 3.0 with 5 role sections | Phase 07 packet gate report |
267
+ | Candidate Flow with numbered execution steps | Packet gate report and Solve Packet output |
268
+ | Actionable Missing Links with slot-specific search hints | Packet gate report and Solve Packet output |
269
+ | Runnable verification commands with separate metadata | Packet gate report |
270
+ | Structured-regex parser for 13 languages | `src/index/structuredExtractor.ts` |
271
+ | Delete safety and corrupt-cache recovery | Phase 06 smoke scripts |
272
+ | VS Code extension, MCP stdio, and headless CLI | `src/extension.ts`, `src/mcp/mcpTools.ts`, `src/cli/*` |
273
+ | 9 smoke tests passing on clean compile | `npm.cmd run test:smoke` |
250
274
 
251
- | Level | When used | What it means |
252
- |-------|-----------|---------------|
253
- | `local_bpe` / `cl100k_base` | Default headless, sidebar, and report path | Workspace text and Solve Packet text are counted with the same BPE tokenizer |
254
- | VS Code model `countTokens()` | Native VS Code Chat when the selected model exposes token counting | The exact prompt sent to the selected chat model is counted by that model provider |
255
- | `heuristic` / `chars_per_4` | Fallback only if local tokenization fails | Conservative compatibility fallback, marked as heuristic |
275
+ ### Reproduce The Proof
256
276
 
257
- The baseline is not a guess from file count. FlowSeeker tokenizes eligible workspace text during indexing, stores per-file token counts, and compares that against the final Solve Packet text sent to the AI workflow.
277
+ ```bash
278
+ npm.cmd run compile --silent
279
+ npm.cmd run test:manifest
280
+ npm.cmd run test:smoke
258
281
 
259
- FlowSeeker shows these metrics directly after each retrieval:
282
+ node scripts/analyze-phase08-public-proof.js --out-md .flowseeker/reports/phase08-8a-public-proof.md --out-json .flowseeker/reports/phase08-8a-public-proof.json
283
+ node scripts/smoke-phase06-warm-query-performance.js --out-md .flowseeker/reports/phase06-6g-warm-query-performance.md --out-json .flowseeker/reports/phase06-6g-warm-query-performance.json
284
+ ```
260
285
 
261
- | Metric | Meaning |
262
- |--------|---------|
263
- | Solve Packet tokens | Tokens in the FlowSeeker packet prepared for the AI |
264
- | Workspace tokens | Tokens in eligible workspace text files, counted during indexing |
265
- | Reduction | Context reduction from workspace text to Solve Packet |
266
- | Context coverage | Required slots found for the task shape, such as entry, handler, data, validation, permissions, side effects, or tests |
286
+ Generated reports are written under `.flowseeker/reports/`.
267
287
 
268
288
  ---
269
289
 
270
- ## How to Use (VS Code Extension)
290
+ ## Supported Languages
271
291
 
272
- ### Chat Commands
292
+ Structured-regex extraction currently supports:
273
293
 
274
- | Command | What it does |
275
- |---------|--------------|
276
- | `@flowseeker /guide <task>` | Retrieve context, get explanation and guidance |
277
- | `@flowseeker /auto <task>` | Retrieve context, get a reviewable plan before any edits |
278
- | `@flowseeker /apply <planId>` | After approving a plan, generate structured edits |
294
+ TypeScript, JavaScript, Python, PHP, Dart, Java, Go, Ruby, C#, Swift, Kotlin, Rust, and Scala.
279
295
 
280
- ### Agent Workflow
296
+ Tree-sitter support is available for TypeScript/JavaScript but is not part of the default public benchmark claim.
281
297
 
282
- FlowSeeker intentionally separates retrieval, planning, editing, and verification:
298
+ ---
283
299
 
284
- 1. Retrieve a Solve Packet from the workspace.
285
- 2. Ask the AI for a reviewable plan in the user's language.
286
- 3. Disable approval if the AI only asks for more context instead of returning a real plan.
287
- 4. After approval, ask for structured JSON edits only.
288
- 5. Show a diff before applying edits, unless auto-apply is explicitly enabled.
289
- 6. Run focused verification commands when requested or allowed by your approval policy.
300
+ ## Optional Semantic Retrieval
290
301
 
291
- If the AI says the packet is incomplete, FlowSeeker reads a small bounded set of candidate files and retries the plan or edit request.
302
+ FlowSeeker works without embeddings by default. Semantic retrieval only runs when you explicitly enable it.
292
303
 
293
- ### Command Palette
304
+ Default mode needs no setup:
294
305
 
295
- | Command | Action |
296
- |---------|--------|
297
- | `FlowSeeker: Find Relevant Context` | Run retrieval from the command palette |
298
- | `FlowSeeker: Copy Context Pack` | Copy evidence as markdown for external AI tools |
299
- | `FlowSeeker: Check Host Compatibility` | Inspect Native Chat, Language Model, and MCP support in the current editor |
306
+ ```bash
307
+ flowseeker guide "Find the checkout retry logic"
308
+ ```
300
309
 
301
- ### If You Don't Have Native Chat
310
+ Optional local embeddings with no API key:
302
311
 
303
- VS Code-compatible editors vary in how much of the VS Code Chat and Language Model APIs they expose. If `@flowseeker` is unavailable, use the **FlowSeeker sidebar** when the extension host supports it, or use the **MCP server** above to integrate FlowSeeker with your IDE's native chat.
312
+ ```bash
313
+ npm i -g flowseeker-local
314
+ flowseeker semantic init --local
315
+ flowseeker semantic check --test
316
+ ```
304
317
 
305
- ---
318
+ Optional hosted embeddings:
306
319
 
307
- ## Configuration
320
+ ```bash
321
+ flowseeker semantic init --openai-compatible
322
+ # Edit .flowseeker/config.json:
323
+ # semanticModel = the embedding model exposed by your provider
324
+ # semanticBaseUrl = provider endpoint if needed
325
+ # Add the key to .env:
326
+ # FLOWSEEKER_EMBEDDING_API_KEY=your_key_here
327
+ flowseeker semantic check --test
328
+ ```
308
329
 
309
- Add `.flowseeker/config.json` to your project root:
330
+ Non-secret settings (provider, model, base URL, cache, limits) are written to `.flowseeker/config.json`. Only `FLOWSEEKER_EMBEDDING_API_KEY` goes into `.env`.
310
331
 
311
- ```json
312
- {
313
- "project": {
314
- "include": ["src", "app", "lib", "tests"],
315
- "exclude": ["node_modules", "vendor", "dist", "build"]
316
- },
317
- "synonyms": {
318
- "mail": ["email", "smtp", "notification"],
319
- "payment": ["billing", "invoice", "checkout", "transaction"]
320
- }
321
- }
332
+ Expected result:
333
+
334
+ ```text
335
+ Result: active
336
+ Provider test: passed
337
+ ```
338
+
339
+ **Generic OpenAI-compatible path:**
340
+
341
+ ```bash
342
+ flowseeker semantic init --openai-compatible
343
+ # edit .flowseeker/config.json to set semanticModel before --test
344
+ # set semanticBaseUrl if your provider needs a custom endpoint
345
+ # fill FLOWSEEKER_EMBEDDING_API_KEY in .env
346
+ flowseeker semantic check --test
322
347
  ```
323
348
 
324
- `include` / `exclude` control which folders are indexed; `synonyms` expand task keywords during retrieval.
349
+ Config keys in `.flowseeker/config.json`:
350
+ - `semanticProvider` (e.g. `openaiCompatible`)
351
+ - `semanticBaseUrl` (provider endpoint)
352
+ - `semanticModel` (embedding model name from your provider)
353
+ - `semanticApiKeyEnv` (env var name for the key)
354
+
355
+ If token usage does not change on your provider dashboard, check `flowseeker semantic check` first. Most cases mean semantic is still disabled, the key is missing from the target repo's `.env`, or cached embeddings are being reused.
356
+
357
+ **Embedding modes**: FlowSeeker works without embeddings by default.
358
+
359
+ - **Deterministic (default)**: No setup, no API key, no runtime, no model. Code-structure analysis only.
360
+ - **Local (no API key)**: Install the optional `flowseeker-local` package, run `flowseeker semantic init --local`, then `flowseeker semantic check --test`. If needed, use project-level `semantic local setup/download`.
361
+ - **Hosted**: Bring your own embedding endpoint, model, and API key. Use `flowseeker semantic init --openai-compatible`, set the model/base URL, put the key in `.env`, then run `flowseeker semantic check --test`.
362
+
363
+ Use `flowseeker semantic check` or `flowseeker doctor` to confirm your status.
364
+
365
+ **Hosted provider note**: `--openai-compatible` initializes a provider-neutral config. Before `--test`, set `semanticModel` to the embedding model exposed by your provider. Set `semanticBaseUrl` if your provider needs a custom endpoint. The API key goes in `.env`. The model must match the provider and base URL.
325
366
 
326
367
  ---
327
368
 
328
369
  ## Install
329
370
 
330
- ### VS Code Extension
371
+ ### VS Code / OpenVSX
331
372
 
332
- Search **FlowSeeker** in VS Code Extensions (`Ctrl+Shift+X`), or:
373
+ Search **FlowSeeker** in VS Code Extensions, or run:
333
374
 
334
- ```
375
+ ```text
335
376
  ext install everestt2806.flowseeker
336
377
  ```
337
378
 
338
- FlowSeeker is also available on Open VSX for editors such as VSCodium and Eclipse Theia:
339
-
340
- ```
341
- open-vsx.org/extension/everestt2806/flowseeker
342
- ```
379
+ Also available on Open VSX for VSCodium and Eclipse Theia-compatible hosts.
343
380
 
344
- ### MCP Server (npm)
381
+ ### npm / MCP / CLI
345
382
 
346
383
  ```bash
347
- # Run on demand (no install needed)
348
384
  npx -p flowseeker flowseeker-mcp --help
349
-
350
- # Or install globally
351
385
  npm i -g flowseeker
386
+ flowseeker --help
387
+ fs-guide --help
388
+ flowseeker mcp --help
389
+ flowseeker semantic check
352
390
  ```
353
391
 
354
392
  ---
355
393
 
356
- ## Requirements
394
+ ## Current Limits
395
+
396
+ These are intentionally explicit so users know what is proven today:
357
397
 
358
- - **For the VS Code extension:** VS Code 1.90 or later, plus a VS Code language model, a configured AI provider, or an external AI chat tool.
359
- - **For the MCP server:** Node.js 18 or later and any MCP-compliant client (Cursor, Antigravity, Windsurf, Claude Desktop, VS Code/Copilot, etc.).
398
+ - No sub-second cold-scan guarantee.
399
+ - AI/LLM-based reranking exists experimentally but is disabled by default.
400
+ - Semantic/embedding retrieval is configurable but disabled by default.
401
+ - Tree-sitter parser support exists, but public proof uses structured-regex extraction.
402
+ - Graph expansion is not a production default.
403
+ - Monorepo, git-history, and LSP integrations are not public guarantees yet.
360
404
 
361
405
  ---
362
406
 
363
- ## Supported Languages & Frameworks
407
+ ## Roadmap
364
408
 
365
- | Level | What | Coverage |
366
- |-------|------|----------|
367
- | **Universal** | Path/content/chunk search | Every text file |
368
- | **Structured** | Symbol, call, string, comment extraction | TypeScript, JavaScript, Python, PHP, Java, Go, C#, Ruby, Rust, Kotlin |
369
- | **Framework-aware** | Route -> controller -> service -> model -> test edges | Laravel, NestJS, Express |
409
+ - Real-repo demo screenshots and short videos.
410
+ - More public benchmark fixtures across larger repo shapes.
411
+ - Cleaner first-run onboarding for MCP hosts.
412
+ - Bundled extension packaging to reduce VSIX size and startup overhead.
413
+ - Optional semantic retrieval profiles with provider-specific setup checks.
414
+
415
+ ---
370
416
 
371
417
  ---
372
418
 
419
+ ## Rollback / Disable Semantic Retrieval
420
+
421
+ FlowSeeker works without embeddings. To return to deterministic/no-embedding mode:
422
+
423
+ ```bash
424
+ # Disable semantic retrieval
425
+ flowseeker semantic check --workspace . # confirm current status
426
+ # Edit .flowseeker/config.json: set "semanticEnabled": false
427
+ # Or remove the "index" block's semantic keys entirely
428
+ flowseeker benchmark # verify: deterministic_no_embedding = first_class
429
+ flowseeker semantic check # should show Result: disabled
430
+ ```
431
+
432
+ Safe to remove from `.flowseeker/config.json`:
433
+ - `semanticEnabled`, `semanticProvider`, `semanticBaseUrl`, `semanticModel`, `semanticApiKeyEnv`, `semanticCache`, `semanticMaxFilesPerRun`, `semanticTimeoutMs`, `semanticLocalModelPath`, `semanticLocalModelId`, `semanticDimensions`, `semanticRuntime`
434
+
435
+ Safe to remove from `.env`:
436
+ - `FLOWSEEKER_EMBEDDING_API_KEY`
437
+
438
+ No models are bundled or auto-downloaded. Removing the config keys above returns FlowSeeker to its default deterministic retrieval mode. Use `flowseeker benchmark` anytime to confirm what is active.
439
+
373
440
  ## License
374
441
 
375
442
  MIT