indexer-cli 0.2.9 → 0.2.12
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 +39 -34
- package/dist/cli/commands/search.js +2 -2
- package/dist/cli/commands/search.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# indexer-cli
|
|
2
2
|
|
|
3
|
-
Project indexer that installs a repo-discovery skill for coding agents and helps them spend fewer tokens finding the
|
|
3
|
+
Project indexer that installs a repo-discovery skill for coding agents and helps them spend fewer tokens finding the
|
|
4
|
+
right code.
|
|
4
5
|
|
|
5
6
|
## Overview
|
|
6
7
|
|
|
@@ -16,7 +17,8 @@ search, repo structure snapshots, and low-friction incremental reindexing withou
|
|
|
16
17
|
## Features
|
|
17
18
|
|
|
18
19
|
- **Code-agent repo skill**: `init` installs a project-local `repo-discovery` skill for Claude and OpenCode workflows
|
|
19
|
-
- **Token savings for agents**: Pushes agents toward indexed discovery instead of expensive blind search and repeated
|
|
20
|
+
- **Token savings for agents**: Pushes agents toward indexed discovery instead of expensive blind search and repeated
|
|
21
|
+
context loading
|
|
20
22
|
- **Multi-language support**: TypeScript/JavaScript, Python, C#, GDScript, Ruby
|
|
21
23
|
- **Semantic code search**: Natural language queries over your entire codebase
|
|
22
24
|
- **Incremental indexing**: Uses `git diff` to re-index only changed files, bulk-copies unchanged vectors
|
|
@@ -28,7 +30,8 @@ search, repo structure snapshots, and low-friction incremental reindexing withou
|
|
|
28
30
|
|
|
29
31
|
## Prerequisites
|
|
30
32
|
|
|
31
|
-
- [Ollama](https://ollama.ai) installed manually. `npx indexer-cli setup` will verify it, start the daemon if needed,
|
|
33
|
+
- [Ollama](https://ollama.ai) installed manually. `npx indexer-cli setup` will verify it, start the daemon if needed,
|
|
34
|
+
and prepare the `jina-8k` model.
|
|
32
35
|
- Node.js 18+ and build tools (python3, make, C++ compiler) for native dependencies.
|
|
33
36
|
|
|
34
37
|
## Quick Start
|
|
@@ -45,7 +48,7 @@ npx indexer-cli init
|
|
|
45
48
|
npx indexer-cli index
|
|
46
49
|
|
|
47
50
|
# 4. Search semantically yourself
|
|
48
|
-
npx indexer-cli search "authentication middleware"
|
|
51
|
+
npx indexer-cli search "authentication middleware" --txt
|
|
49
52
|
```
|
|
50
53
|
|
|
51
54
|
After `init`, the repo also contains `.claude/skills/repo-discovery/SKILL.md`, so coding agents can be steered toward
|
|
@@ -89,7 +92,8 @@ usage during repo discovery.
|
|
|
89
92
|
|
|
90
93
|
### `npx indexer-cli setup`
|
|
91
94
|
|
|
92
|
-
Check system prerequisites and prepare the Ollama embedding model. `setup` can install some system tools where
|
|
95
|
+
Check system prerequisites and prepare the Ollama embedding model. `setup` can install some system tools where
|
|
96
|
+
appropriate, but Ollama itself must be installed manually first. Works on macOS and Linux.
|
|
93
97
|
|
|
94
98
|
### `npx indexer-cli init`
|
|
95
99
|
|
|
@@ -101,12 +105,12 @@ to `.gitignore` in the current working directory. Also writes the project-local
|
|
|
101
105
|
|
|
102
106
|
Index all supported source files in the current working directory.
|
|
103
107
|
|
|
104
|
-
| Option | Description
|
|
105
|
-
|
|
106
|
-
| `--full` | Force a full reindex instead of incremental
|
|
107
|
-
| `--dry-run` | Preview what would be indexed without writing anything
|
|
108
|
-
| `--status` | Show indexing status for the current project
|
|
109
|
-
| `--tree` | Show indexed file tree (use with `--status`)
|
|
108
|
+
| Option | Description |
|
|
109
|
+
|-------------|------------------------------------------------------------|
|
|
110
|
+
| `--full` | Force a full reindex instead of incremental |
|
|
111
|
+
| `--dry-run` | Preview what would be indexed without writing anything |
|
|
112
|
+
| `--status` | Show indexing status for the current project |
|
|
113
|
+
| `--tree` | Show indexed file tree (use with `--status`) |
|
|
110
114
|
| `--txt` | Output status as human-readable text (use with `--status`) |
|
|
111
115
|
|
|
112
116
|
### `npx indexer-cli search <query>`
|
|
@@ -115,16 +119,17 @@ Run a semantic search against the indexed codebase. Automatically re-indexes cha
|
|
|
115
119
|
|
|
116
120
|
| Option | Default | Description |
|
|
117
121
|
|--------------------------|---------|--------------------------------------------------------------------------------------------------------------|
|
|
118
|
-
| `--
|
|
122
|
+
| `--max-files <number>` | 3 | Number of results to return |
|
|
119
123
|
| `--path-prefix <string>` | — | Limit results to files under this path |
|
|
120
124
|
| `--chunk-types <string>` | — | Comma-separated filter: `full_file`, `imports`, `preamble`, `declaration`, `module_section`, `impl`, `types` |
|
|
121
125
|
| `--fields <list>` | — | Comma-separated output fields: `filePath`, `startLine`, `endLine`, `score`, `primarySymbol`, `content` |
|
|
122
126
|
| `--min-score <number>` | — | Filter out results below this score (0..1) |
|
|
123
|
-
| `--omit-content` |
|
|
124
|
-
| `--include-content` | — | Include `content` in JSON output
|
|
127
|
+
| `--omit-content` | + | Explicitly exclude content from results (default behavior in JSON mode) |
|
|
128
|
+
| `--include-content` | — | Include `content` in JSON output |
|
|
125
129
|
| `--txt` | — | Output results as human-readable text |
|
|
126
130
|
|
|
127
|
-
`search` returns JSON by default. In JSON mode, `content` is omitted unless you pass `--include-content`; use `--txt`
|
|
131
|
+
`search` returns JSON by default. In JSON mode, `content` is omitted unless you pass `--include-content`; use `--txt`
|
|
132
|
+
for the older human-readable layout.
|
|
128
133
|
|
|
129
134
|
### `npx indexer-cli structure`
|
|
130
135
|
|
|
@@ -144,43 +149,43 @@ files if needed.
|
|
|
144
149
|
Print an architecture snapshot for the current working directory: file statistics, detected entry points, and a
|
|
145
150
|
dependency graph.
|
|
146
151
|
|
|
147
|
-
| Option | Description
|
|
148
|
-
|
|
149
|
-
| `--path-prefix <string>` | Limit output to files under this path
|
|
150
|
-
| `--include-fixtures` | Include fixture/vendor paths in output
|
|
151
|
-
| `--txt` | Output as human-readable text
|
|
152
|
+
| Option | Description |
|
|
153
|
+
|--------------------------|----------------------------------------|
|
|
154
|
+
| `--path-prefix <string>` | Limit output to files under this path |
|
|
155
|
+
| `--include-fixtures` | Include fixture/vendor paths in output |
|
|
156
|
+
| `--txt` | Output as human-readable text |
|
|
152
157
|
|
|
153
158
|
### `npx indexer-cli context`
|
|
154
159
|
|
|
155
160
|
Output dense project context aggregated from the index. Useful for getting a concise overview of a codebase area
|
|
156
161
|
without pulling in entire files.
|
|
157
162
|
|
|
158
|
-
| Option | Default | Description
|
|
159
|
-
|
|
160
|
-
| `--txt` | — | Output results as human-readable text
|
|
161
|
-
| `--scope <scope>` | all | `all`, `changed` (uncommitted changes), or `relevant-to:<path>`
|
|
162
|
-
| `--max-deps <number>` | 30 | Maximum number of dependency edges to output
|
|
163
|
-
| `--include-fixtures` | — | Include fixture/vendor paths in output
|
|
163
|
+
| Option | Default | Description |
|
|
164
|
+
|-----------------------|---------|-----------------------------------------------------------------|
|
|
165
|
+
| `--txt` | — | Output results as human-readable text |
|
|
166
|
+
| `--scope <scope>` | all | `all`, `changed` (uncommitted changes), or `relevant-to:<path>` |
|
|
167
|
+
| `--max-deps <number>` | 30 | Maximum number of dependency edges to output |
|
|
168
|
+
| `--include-fixtures` | — | Include fixture/vendor paths in output |
|
|
164
169
|
|
|
165
170
|
### `npx indexer-cli explain <symbol>`
|
|
166
171
|
|
|
167
172
|
Show context for a symbol: its signature, callers, and containing module. Use this to quickly understand what a
|
|
168
173
|
specific function, class, or type does and how it is used.
|
|
169
174
|
|
|
170
|
-
| Option
|
|
171
|
-
|
|
172
|
-
| `--txt`
|
|
175
|
+
| Option | Description |
|
|
176
|
+
|---------|-------------------------------|
|
|
177
|
+
| `--txt` | Output as human-readable text |
|
|
173
178
|
|
|
174
179
|
### `npx indexer-cli deps <path>`
|
|
175
180
|
|
|
176
181
|
Show callers (who imports this) and callees (what this imports) for a module or symbol. Useful for tracing impact
|
|
177
182
|
of changes and understanding dependency chains.
|
|
178
183
|
|
|
179
|
-
| Option | Default | Description
|
|
180
|
-
|
|
181
|
-
| `--direction <dir>` | both | `callers`, `callees`, or `both`
|
|
182
|
-
| `--depth <n>` | 1 | Traversal depth
|
|
183
|
-
| `--txt` | — | Output as human-readable text
|
|
184
|
+
| Option | Default | Description |
|
|
185
|
+
|---------------------|---------|---------------------------------|
|
|
186
|
+
| `--direction <dir>` | both | `callers`, `callees`, or `both` |
|
|
187
|
+
| `--depth <n>` | 1 | Traversal depth |
|
|
188
|
+
| `--txt` | — | Output as human-readable text |
|
|
184
189
|
|
|
185
190
|
### `npx indexer-cli uninstall`
|
|
186
191
|
|
|
@@ -84,7 +84,7 @@ function resolveOutputFields(rawFields, options) {
|
|
|
84
84
|
if (options.isJson &&
|
|
85
85
|
rawFields.includes("content") &&
|
|
86
86
|
!options.includeContent) {
|
|
87
|
-
|
|
87
|
+
return rawFields.filter((field) => field !== "content");
|
|
88
88
|
}
|
|
89
89
|
return rawFields;
|
|
90
90
|
}
|
|
@@ -119,7 +119,7 @@ function registerSearchCommand(program) {
|
|
|
119
119
|
.command("search <query>")
|
|
120
120
|
.description("Search indexed code semantically")
|
|
121
121
|
.addHelpText("after", `\n${help_text_js_1.PROJECT_ROOT_COMMAND_HELP}\n`)
|
|
122
|
-
.option("--
|
|
122
|
+
.option("--max-files <number>", "number of results to return", "3")
|
|
123
123
|
.option("--path-prefix <string>", "limit search to files under a path prefix")
|
|
124
124
|
.option("--chunk-types <string>", "comma-separated chunk types to include")
|
|
125
125
|
.option("--fields <list>", `comma-separated output fields: ${SEARCH_FIELDS.join(", ")}`)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/cli/commands/search.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/cli/commands/search.ts"],"names":[],"mappings":"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"}
|