claude-ex 1.0.6 → 1.1.0

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.
@@ -80,6 +80,42 @@ function generateClaudeMd(rootDir, db) {
80
80
  }
81
81
  lines.push('');
82
82
  }
83
+ // File map — "where everything lives"
84
+ const fileMap = (0, engine_1.getFileMapCompact)(db);
85
+ if (fileMap) {
86
+ lines.push('## File Map (file → key exports)');
87
+ lines.push('');
88
+ lines.push(fileMap);
89
+ lines.push('');
90
+ }
91
+ lines.push('## Codex MCP Tools — USE THESE');
92
+ lines.push('');
93
+ lines.push('This project has a live code index via MCP. **Always prefer these over grep/ripgrep for structural queries.** They are faster, rank-aware, and understand code relationships.');
94
+ lines.push('');
95
+ lines.push('| Tool | Use for |');
96
+ lines.push('|------|---------|');
97
+ lines.push('| `search_code` | Finding symbols by name or description (PageRank-weighted) |');
98
+ lines.push('| `find_files` | Finding files by name/path pattern (glob-style, e.g. `**/*.test.ts`) |');
99
+ lines.push('| `get_file_map` | Complete project map — every file and its exports (the "memory") |');
100
+ lines.push('| `get_symbol` | Full context for a symbol before modifying it |');
101
+ lines.push('| `get_callers` | Who calls a function — use before renaming/removing |');
102
+ lines.push('| `get_dependents` | What files break if a file changes |');
103
+ lines.push('| `get_dependencies` | What a symbol imports/uses |');
104
+ lines.push('| `get_file_symbols` | All symbols in a file (not just exports) |');
105
+ lines.push('| `find_by_kind` | Find all classes, interfaces, enums, etc. |');
106
+ lines.push('| `get_type_hierarchy` | Who extends/implements a class or interface |');
107
+ lines.push('| `find_dead_exports` | Exported symbols nothing imports (dead code) |');
108
+ lines.push('| `get_pkg_usages` | What files import from a given npm/pip package |');
109
+ lines.push('| `get_architecture` | Project overview, top symbols, module map |');
110
+ lines.push('| `reindex_file` | Re-index a file after major changes |');
111
+ lines.push('');
112
+ lines.push('**Workflow tips:**');
113
+ lines.push('- Before editing a function: `get_symbol` + `get_callers` to understand impact');
114
+ lines.push('- Before refactoring a file: `get_dependents` to know what breaks');
115
+ lines.push('- To find code: `search_code` first (structural), fall back to grep only for literal strings/regex');
116
+ lines.push('- To find files: `find_files` with glob patterns (faster than shell find/ls)');
117
+ lines.push('- After large changes: `reindex_file` to keep the index fresh');
118
+ lines.push('');
83
119
  lines.push('*Auto-generated by claude-ex. Run `claude-ex generate-docs` to regenerate.*');
84
120
  lines.push(MARKER_END);
85
121
  return lines.join('\n');
@@ -1 +1 @@
1
- {"version":3,"file":"claudemd.js","sourceRoot":"","sources":["../../src/claude/claudemd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claudemd.js","sourceRoot":"","sources":["../../src/claude/claudemd.ts"],"names":[],"mappings":"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"}
@@ -1 +1,3 @@
1
- export declare function install(rootDir: string): void;
1
+ export declare function install(rootDir: string, options?: {
2
+ work?: boolean;
3
+ }): void;
@@ -43,8 +43,10 @@ description: >
43
43
  architecture, tracing dependencies, impact analysis, finding callers,
44
44
  understanding what a file/function does in context. Triggers: "what calls",
45
45
  "who uses", "what depends on", "where is", "how does X work", "what breaks if",
46
- "find", "search codebase", "show me", refactoring, architecture questions.
46
+ "find", "search codebase", "show me", "all classes", "all interfaces",
47
+ "dead code", "what imports lodash", "type hierarchy", refactoring, architecture.
47
48
  PREFER these MCP tools over grep/ripgrep for structural queries.
49
+ Also use find_files for finding files by name pattern instead of shell find/ls.
48
50
  ---
49
51
 
50
52
  # claude-ex — Codebase Intelligence (MCP)
@@ -60,10 +62,19 @@ Use these tools via the MCP connection. They answer in <5ms.
60
62
  Find symbols by name, description, or content. Results ranked by structural
61
63
  importance (PageRank). Use for any "find X" or "where is X" question.
62
64
 
65
+ ### find_files
66
+ Find files by path pattern using glob syntax (e.g. "**/*.test.ts",
67
+ "src/components/*", "*.json"). Much faster than shell find or ls commands.
68
+
63
69
  ### get_symbol
64
70
  Full context for a single symbol: its code, what it depends on, what depends
65
71
  on it, what else is in the same file. Use before modifying any symbol.
66
72
 
73
+ ### get_file_map
74
+ Get a complete map of every file and its exports. Use when you need to
75
+ understand the full project layout, or to find where something is defined
76
+ without searching. This is the project's "memory".
77
+
67
78
  ### get_callers
68
79
  Who calls this function/method. Use before renaming, changing signatures,
69
80
  or removing a function.
@@ -80,24 +91,68 @@ modifying it.
80
91
  Project overview: top symbols, module map, language breakdown.
81
92
  Use when you need to understand the overall structure.
82
93
 
94
+ ### get_file_symbols
95
+ All symbols (functions, classes, variables, etc.) in a specific file.
96
+ Shows every definition with kind, line range, signature, and parameters.
97
+
98
+ ### find_by_kind
99
+ Find all symbols of a specific kind (class, function, interface, type,
100
+ enum, method, variable). Results ranked by structural importance.
101
+
102
+ ### get_type_hierarchy
103
+ Who extends or implements a class/interface. Use before changing a base
104
+ class or interface to find all affected subclasses and implementors.
105
+
106
+ ### find_dead_exports
107
+ Exported symbols that nothing imports or references. Useful for dead
108
+ code detection and cleanup.
109
+
110
+ ### get_pkg_usages
111
+ Find all files that import from a given npm/pip/cargo package. Use
112
+ before swapping a library to find every usage point.
113
+
114
+ ### reindex_file
115
+ Re-index a single file immediately after making major changes.
116
+
83
117
  ## When to prefer MCP tools over grep
84
118
  - "What calls processPayment?" → get_callers (not grep — grep misses indirect references)
85
119
  - "What breaks if I change auth.ts?" → get_dependents (not grep — grep can't trace transitive deps)
86
120
  - "Find the main payment handling code" → search_code (PageRank-weighted, finds the important one)
87
121
  - "Show me the PaymentService" → get_symbol (includes dependencies + dependents, not just code)
122
+ - "Find all test files" → find_files with "**/*.test.*" (faster than shell find)
123
+ - "List all JSON configs" → find_files with "*.json"
124
+ - "Where does X happen?" → get_file_map to see the whole project layout at a glance
125
+ - "I need to understand this project" → get_file_map + get_architecture
126
+ - "What's in auth.ts?" → get_file_symbols (every definition with signatures)
127
+ - "Show all interfaces" → find_by_kind with "interface"
128
+ - "What extends BaseService?" → get_type_hierarchy
129
+ - "Any dead exports?" → find_dead_exports
130
+ - "What uses lodash?" → get_pkg_usages with "lodash"
88
131
 
89
132
  ## When to use grep instead
90
133
  - Simple string search: "find all TODOs" → grep
91
134
  - Regex patterns: "find all console.log" → grep
92
- - File listing: "show all test files" → find
93
135
  `;
94
- function install(rootDir) {
95
- // 1. Ensure .codex/ exists and is in .gitignore
96
- const codexDir = path.join(rootDir, '.codex');
97
- if (!fs.existsSync(codexDir)) {
98
- fs.mkdirSync(codexDir, { recursive: true });
136
+ function install(rootDir, options) {
137
+ const work = options?.work ?? false;
138
+ if (work) {
139
+ // Work mode: data goes in .local/.codex/, config stays at root but is gitignored
140
+ const codexDir = path.join(rootDir, '.local', '.codex');
141
+ if (!fs.existsSync(codexDir)) {
142
+ fs.mkdirSync(codexDir, { recursive: true });
143
+ }
144
+ addToGitignore(rootDir, '.local/');
145
+ addToGitignore(rootDir, '.claude/');
146
+ addToGitignore(rootDir, '.mcp.json');
147
+ }
148
+ else {
149
+ // Normal mode: .codex/ at root
150
+ const codexDir = path.join(rootDir, '.codex');
151
+ if (!fs.existsSync(codexDir)) {
152
+ fs.mkdirSync(codexDir, { recursive: true });
153
+ }
154
+ addToGitignore(rootDir, '.codex/');
99
155
  }
100
- addToGitignore(rootDir, '.codex/');
101
156
  // 2. Create/merge .mcp.json
102
157
  installMcpConfig(rootDir);
103
158
  // 3. Create/merge .claude/settings.json
@@ -177,11 +232,11 @@ function installHooks(rootDir) {
177
232
  }],
178
233
  });
179
234
  }
180
- // PreToolUse (Write, Edit, MultiEdit)
235
+ // PreToolUse (Write, Edit, MultiEdit, Read)
181
236
  if (!config.hooks.PreToolUse)
182
237
  config.hooks.PreToolUse = [];
183
238
  if (!hasClaudeEx(config.hooks.PreToolUse)) {
184
- for (const tool of ['Write', 'Edit', 'MultiEdit']) {
239
+ for (const tool of ['Write', 'Edit', 'MultiEdit', 'Read']) {
185
240
  config.hooks.PreToolUse.push({
186
241
  matcher: tool,
187
242
  hooks: [{
@@ -1 +1 @@
1
- {"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/claude/installer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/claude/installer.ts"],"names":[],"mappings":"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"}
@@ -103,6 +103,81 @@ async function runMcpServer() {
103
103
  },
104
104
  },
105
105
  },
106
+ {
107
+ name: 'get_file_map',
108
+ description: 'Get a map of every file in the project with its exported symbols. Use to understand where things live without searching. Returns file paths with their key exports.',
109
+ inputSchema: {
110
+ type: 'object',
111
+ properties: {},
112
+ },
113
+ },
114
+ {
115
+ name: 'find_files',
116
+ description: 'Find files by path pattern using glob syntax (e.g. "**/*.test.ts", "src/components/*", "*.json"). Faster than shell find/ls commands. Searches indexed files only.',
117
+ inputSchema: {
118
+ type: 'object',
119
+ properties: {
120
+ pattern: { type: 'string', description: 'Glob pattern to match file paths (e.g. "**/*.ts", "src/**/*.test.*", "*.json")' },
121
+ limit: { type: 'number', description: 'Max results (default 50)' },
122
+ },
123
+ required: ['pattern'],
124
+ },
125
+ },
126
+ {
127
+ name: 'get_file_symbols',
128
+ description: 'Get all symbols (functions, classes, variables, etc.) in a specific file. Shows every definition with its kind, line range, signature, and parameters.',
129
+ inputSchema: {
130
+ type: 'object',
131
+ properties: {
132
+ file: { type: 'string', description: 'File path relative to project root' },
133
+ },
134
+ required: ['file'],
135
+ },
136
+ },
137
+ {
138
+ name: 'find_by_kind',
139
+ description: 'Find all symbols of a specific kind (class, function, interface, type, enum, method, variable). Ranked by structural importance.',
140
+ inputSchema: {
141
+ type: 'object',
142
+ properties: {
143
+ kind: { type: 'string', description: 'Symbol kind: class, function, interface, type, enum, method, variable, reexport' },
144
+ limit: { type: 'number', description: 'Max results (default 50)' },
145
+ },
146
+ required: ['kind'],
147
+ },
148
+ },
149
+ {
150
+ name: 'get_type_hierarchy',
151
+ description: 'Find all classes that extend or implement a given class/interface. Use before changing a base class or interface to find all affected subclasses/implementors.',
152
+ inputSchema: {
153
+ type: 'object',
154
+ properties: {
155
+ name: { type: 'string', description: 'Class or interface name to find subclasses/implementors of' },
156
+ },
157
+ required: ['name'],
158
+ },
159
+ },
160
+ {
161
+ name: 'find_dead_exports',
162
+ description: 'Find exported symbols that nothing imports or references. Useful for dead code detection and cleanup.',
163
+ inputSchema: {
164
+ type: 'object',
165
+ properties: {
166
+ limit: { type: 'number', description: 'Max results (default 50)' },
167
+ },
168
+ },
169
+ },
170
+ {
171
+ name: 'get_pkg_usages',
172
+ description: 'Find all files that import from a given npm/pip/cargo package. Use before swapping a library to find every usage point. Example: "react", "lodash", "express".',
173
+ inputSchema: {
174
+ type: 'object',
175
+ properties: {
176
+ package: { type: 'string', description: 'Package name (e.g., "react", "lodash", "express")' },
177
+ },
178
+ required: ['package'],
179
+ },
180
+ },
106
181
  {
107
182
  name: 'reindex_file',
108
183
  description: 'Re-index a single file immediately.',
@@ -148,6 +223,27 @@ async function runMcpServer() {
148
223
  modules: (0, engine_1.getModules)(db),
149
224
  };
150
225
  break;
226
+ case 'get_file_map':
227
+ result = (0, engine_1.getFileMap)(db);
228
+ break;
229
+ case 'find_files':
230
+ result = (0, engine_1.findFiles)(db, args.pattern, args.limit);
231
+ break;
232
+ case 'get_file_symbols':
233
+ result = (0, engine_1.getFileSymbols)(db, args.file);
234
+ break;
235
+ case 'find_by_kind':
236
+ result = (0, engine_1.findByKind)(db, args.kind, args.limit);
237
+ break;
238
+ case 'get_type_hierarchy':
239
+ result = (0, engine_1.getTypeHierarchy)(db, args.name);
240
+ break;
241
+ case 'find_dead_exports':
242
+ result = (0, engine_1.findDeadExports)(db, args?.limit);
243
+ break;
244
+ case 'get_pkg_usages':
245
+ result = (0, engine_1.getPkgUsages)(db, args.package);
246
+ break;
151
247
  case 'reindex_file': {
152
248
  const fileStart = performance.now();
153
249
  (0, indexer_1.reindexFile)(rootDir, args.file, db);
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/claude/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/claude/mcp.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import Database from 'better-sqlite3';
2
- export declare function openDatabase(projectRoot: string): Database.Database;
2
+ export declare function openDatabase(projectRoot: string, work?: boolean): Database.Database;
3
3
  export interface FileRecord {
4
4
  id: number;
5
5
  changed: boolean;
6
6
  }
7
- export declare function getOrCreateFile(db: Database.Database, filePath: string, hash: string, language: string | null, lineCount: number): FileRecord;
7
+ export declare function getOrCreateFile(db: Database.Database, filePath: string, hash: string, language: string | null, lineCount: number, lastModified?: number): FileRecord;
8
8
  export declare function clearFileData(db: Database.Database, fileId: number): void;
9
9
  export interface SymbolData {
10
10
  name: string;
@@ -17,9 +17,12 @@ export interface SymbolData {
17
17
  content?: string;
18
18
  contentHash?: string;
19
19
  exported?: boolean;
20
+ parameters?: string;
20
21
  }
21
22
  export declare function insertSymbol(db: Database.Database, fileId: number, sym: SymbolData): number;
22
- export declare function insertEdge(db: Database.Database, fromId: number, toId: number, kind: string): void;
23
+ export declare function insertEdge(db: Database.Database, fromId: number, toId: number, kind: string, line?: number): void;
24
+ export declare function insertPkgDep(db: Database.Database, fileId: number, packageName: string, importedNames: string): void;
25
+ export declare function insertTypeRelation(db: Database.Database, childId: number, parentName: string, kind: string): void;
23
26
  export declare function insertFileDep(db: Database.Database, fromFile: number, toFile: number, kind: string, importName: string): void;
24
27
  export declare function removeStaleFiles(db: Database.Database, validPaths: Set<string>): number;
25
28
  export declare function removeFile(db: Database.Database, filePath: string): void;
package/dist/db/schema.js CHANGED
@@ -41,6 +41,8 @@ exports.getOrCreateFile = getOrCreateFile;
41
41
  exports.clearFileData = clearFileData;
42
42
  exports.insertSymbol = insertSymbol;
43
43
  exports.insertEdge = insertEdge;
44
+ exports.insertPkgDep = insertPkgDep;
45
+ exports.insertTypeRelation = insertTypeRelation;
44
46
  exports.insertFileDep = insertFileDep;
45
47
  exports.removeStaleFiles = removeStaleFiles;
46
48
  exports.removeFile = removeFile;
@@ -77,6 +79,7 @@ CREATE TABLE IF NOT EXISTS edges (
77
79
  from_id INTEGER REFERENCES symbols(id) ON DELETE CASCADE,
78
80
  to_id INTEGER REFERENCES symbols(id) ON DELETE CASCADE,
79
81
  kind TEXT NOT NULL,
82
+ line INTEGER,
80
83
  PRIMARY KEY (from_id, to_id, kind)
81
84
  );
82
85
 
@@ -88,6 +91,20 @@ CREATE TABLE IF NOT EXISTS file_deps (
88
91
  PRIMARY KEY (from_file, to_file, kind, import_name)
89
92
  );
90
93
 
94
+ CREATE TABLE IF NOT EXISTS pkg_deps (
95
+ file_id INTEGER REFERENCES files(id) ON DELETE CASCADE,
96
+ package TEXT NOT NULL,
97
+ imported_names TEXT,
98
+ PRIMARY KEY (file_id, package)
99
+ );
100
+
101
+ CREATE TABLE IF NOT EXISTS type_relations (
102
+ child_id INTEGER REFERENCES symbols(id) ON DELETE CASCADE,
103
+ parent_name TEXT NOT NULL,
104
+ kind TEXT NOT NULL,
105
+ PRIMARY KEY (child_id, parent_name, kind)
106
+ );
107
+
91
108
  CREATE TABLE IF NOT EXISTS rankings (
92
109
  symbol_id INTEGER PRIMARY KEY REFERENCES symbols(id) ON DELETE CASCADE,
93
110
  pagerank REAL DEFAULT 0,
@@ -125,11 +142,16 @@ CREATE INDEX IF NOT EXISTS idx_symbols_file ON symbols(file_id);
125
142
  CREATE INDEX IF NOT EXISTS idx_symbols_name ON symbols(name);
126
143
  CREATE INDEX IF NOT EXISTS idx_symbols_kind ON symbols(kind);
127
144
  CREATE INDEX IF NOT EXISTS idx_symbols_qualified ON symbols(qualified_name);
145
+ CREATE INDEX IF NOT EXISTS idx_symbols_exported ON symbols(exported, file_id);
128
146
  CREATE INDEX IF NOT EXISTS idx_edges_to ON edges(to_id, kind);
129
147
  CREATE INDEX IF NOT EXISTS idx_edges_from ON edges(from_id, kind);
130
148
  CREATE INDEX IF NOT EXISTS idx_files_hash ON files(content_hash);
131
149
  CREATE INDEX IF NOT EXISTS idx_file_deps_to ON file_deps(to_file);
132
150
  CREATE INDEX IF NOT EXISTS idx_file_deps_from ON file_deps(from_file);
151
+ CREATE INDEX IF NOT EXISTS idx_pkg_deps_package ON pkg_deps(package);
152
+ CREATE INDEX IF NOT EXISTS idx_pkg_deps_file ON pkg_deps(file_id);
153
+ CREATE INDEX IF NOT EXISTS idx_type_relations_parent ON type_relations(parent_name);
154
+ CREATE INDEX IF NOT EXISTS idx_type_relations_child ON type_relations(child_id);
133
155
  `;
134
156
  const PRAGMAS = [
135
157
  'PRAGMA journal_mode = WAL',
@@ -139,8 +161,8 @@ const PRAGMAS = [
139
161
  'PRAGMA temp_store = MEMORY',
140
162
  'PRAGMA mmap_size = 268435456',
141
163
  ];
142
- function openDatabase(projectRoot) {
143
- const codexDir = (0, utils_1.ensureCodexDir)(projectRoot);
164
+ function openDatabase(projectRoot, work) {
165
+ const codexDir = work !== undefined ? (0, utils_1.ensureCodexDir)(projectRoot, work) : (0, utils_1.ensureCodexDir)(projectRoot);
144
166
  const dbPath = path.join(codexDir, 'index.db');
145
167
  const db = new better_sqlite3_1.default(dbPath);
146
168
  for (const pragma of PRAGMAS) {
@@ -150,8 +172,23 @@ function openDatabase(projectRoot) {
150
172
  db.exec(FTS_SQL);
151
173
  db.exec(TRIGGERS_SQL);
152
174
  db.exec(INDEXES_SQL);
175
+ // Migrations for existing databases
176
+ migrateSchema(db);
153
177
  return db;
154
178
  }
179
+ function migrateSchema(db) {
180
+ // Add columns that may not exist in older databases
181
+ const migrations = [
182
+ 'ALTER TABLE symbols ADD COLUMN parameters TEXT',
183
+ 'ALTER TABLE edges ADD COLUMN line INTEGER',
184
+ ];
185
+ for (const sql of migrations) {
186
+ try {
187
+ db.exec(sql);
188
+ }
189
+ catch { /* column already exists */ }
190
+ }
191
+ }
155
192
  const getFileStmt = new WeakMap();
156
193
  const insertFileStmt = new WeakMap();
157
194
  const updateFileStmt = new WeakMap();
@@ -163,35 +200,43 @@ function getOrPrepare(map, db, sql) {
163
200
  }
164
201
  return stmt;
165
202
  }
166
- function getOrCreateFile(db, filePath, hash, language, lineCount) {
203
+ function getOrCreateFile(db, filePath, hash, language, lineCount, lastModified) {
167
204
  const get = getOrPrepare(getFileStmt, db, 'SELECT id, content_hash FROM files WHERE path = ?');
168
205
  const existing = get.get(filePath);
169
206
  if (existing) {
170
207
  if (existing.content_hash === hash) {
171
208
  return { id: existing.id, changed: false };
172
209
  }
173
- const update = getOrPrepare(updateFileStmt, db, 'UPDATE files SET content_hash = ?, language = ?, line_count = ?, last_indexed = ? WHERE id = ?');
174
- update.run(hash, language, lineCount, Date.now(), existing.id);
210
+ const update = getOrPrepare(updateFileStmt, db, 'UPDATE files SET content_hash = ?, language = ?, line_count = ?, last_modified = ?, last_indexed = ? WHERE id = ?');
211
+ update.run(hash, language, lineCount, lastModified || Date.now(), Date.now(), existing.id);
175
212
  return { id: existing.id, changed: true };
176
213
  }
177
- const insert = getOrPrepare(insertFileStmt, db, 'INSERT INTO files (path, content_hash, language, line_count, last_indexed) VALUES (?, ?, ?, ?, ?)');
178
- const result = insert.run(filePath, hash, language, lineCount, Date.now());
214
+ const insert = getOrPrepare(insertFileStmt, db, 'INSERT INTO files (path, content_hash, language, line_count, last_modified, last_indexed) VALUES (?, ?, ?, ?, ?, ?)');
215
+ const result = insert.run(filePath, hash, language, lineCount, lastModified || Date.now(), Date.now());
179
216
  return { id: Number(result.lastInsertRowid), changed: true };
180
217
  }
181
218
  function clearFileData(db, fileId) {
182
219
  db.prepare('DELETE FROM rankings WHERE symbol_id IN (SELECT id FROM symbols WHERE file_id = ?)').run(fileId);
220
+ db.prepare('DELETE FROM type_relations WHERE child_id IN (SELECT id FROM symbols WHERE file_id = ?)').run(fileId);
183
221
  db.prepare('DELETE FROM edges WHERE from_id IN (SELECT id FROM symbols WHERE file_id = ?) OR to_id IN (SELECT id FROM symbols WHERE file_id = ?)').run(fileId, fileId);
184
222
  db.prepare('DELETE FROM symbols WHERE file_id = ?').run(fileId);
185
223
  db.prepare('DELETE FROM file_deps WHERE from_file = ?').run(fileId);
224
+ db.prepare('DELETE FROM pkg_deps WHERE file_id = ?').run(fileId);
186
225
  }
187
226
  function insertSymbol(db, fileId, sym) {
188
- const stmt = db.prepare(`INSERT INTO symbols (name, qualified_name, kind, file_id, line_start, line_end, signature, docstring, content, content_hash, exported)
189
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`);
190
- const result = stmt.run(sym.name, sym.qualifiedName || null, sym.kind, fileId, sym.lineStart, sym.lineEnd, sym.signature || null, sym.docstring || null, sym.content || null, sym.contentHash || null, sym.exported ? 1 : 0);
227
+ const stmt = db.prepare(`INSERT INTO symbols (name, qualified_name, kind, file_id, line_start, line_end, signature, docstring, content, content_hash, exported, parameters)
228
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`);
229
+ const result = stmt.run(sym.name, sym.qualifiedName || null, sym.kind, fileId, sym.lineStart, sym.lineEnd, sym.signature || null, sym.docstring || null, sym.content || null, sym.contentHash || null, sym.exported ? 1 : 0, sym.parameters || null);
191
230
  return Number(result.lastInsertRowid);
192
231
  }
193
- function insertEdge(db, fromId, toId, kind) {
194
- db.prepare('INSERT OR IGNORE INTO edges (from_id, to_id, kind) VALUES (?, ?, ?)').run(fromId, toId, kind);
232
+ function insertEdge(db, fromId, toId, kind, line) {
233
+ db.prepare('INSERT OR IGNORE INTO edges (from_id, to_id, kind, line) VALUES (?, ?, ?, ?)').run(fromId, toId, kind, line || null);
234
+ }
235
+ function insertPkgDep(db, fileId, packageName, importedNames) {
236
+ db.prepare('INSERT OR IGNORE INTO pkg_deps (file_id, package, imported_names) VALUES (?, ?, ?)').run(fileId, packageName, importedNames);
237
+ }
238
+ function insertTypeRelation(db, childId, parentName, kind) {
239
+ db.prepare('INSERT OR IGNORE INTO type_relations (child_id, parent_name, kind) VALUES (?, ?, ?)').run(childId, parentName, kind);
195
240
  }
196
241
  function insertFileDep(db, fromFile, toFile, kind, importName) {
197
242
  db.prepare('INSERT OR IGNORE INTO file_deps (from_file, to_file, kind, import_name) VALUES (?, ?, ?, ?)').run(fromFile, toFile, kind, importName);
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -70,21 +70,31 @@ program
70
70
  .command('init')
71
71
  .argument('[path]', 'Project directory')
72
72
  .option('-v, --verbose', 'Verbose output')
73
+ .option('-w, --work', 'Work mode: store data in .local/ and gitignore all config (nothing committed)')
73
74
  .description('Index project + install Claude Code config + generate docs')
74
75
  .action((pathArg, opts) => {
75
76
  const rootDir = resolveRoot(pathArg);
76
77
  const dirname = path.basename(rootDir);
77
- console.log(`Indexing ${dirname}...`);
78
- const stats = (0, indexer_1.indexProject)(rootDir, { verbose: opts.verbose });
78
+ const work = !!opts.work;
79
+ console.log(`Indexing ${dirname}...${work ? ' (work mode — .local/)' : ''}`);
80
+ const stats = (0, indexer_1.indexProject)(rootDir, { verbose: opts.verbose, work });
79
81
  console.log(`Indexed ${stats.indexedFiles} files (${stats.skippedFiles} unchanged) in ${(0, utils_1.formatMs)(stats.timeMs)}`);
80
82
  console.log(` ${stats.symbols} symbols, ${stats.edges} edges`);
81
83
  console.log('Installing Claude Code config...');
82
- (0, installer_1.install)(rootDir);
83
- console.log('Generating CLAUDE.md...');
84
- (0, claudemd_1.writeClaudeMd)(rootDir);
84
+ (0, installer_1.install)(rootDir, { work });
85
+ if (!work) {
86
+ console.log('Generating CLAUDE.md...');
87
+ (0, claudemd_1.writeClaudeMd)(rootDir);
88
+ }
89
+ else {
90
+ console.log('Skipping CLAUDE.md (work mode — use codex MCP tools instead)');
91
+ }
85
92
  console.log('');
86
93
  console.log('Setup complete! MCP server will start automatically when you open Claude Code.');
87
94
  console.log('Hooks installed: SessionStart, PreToolUse (Write/Edit), PostToolUse (Write/Edit)');
95
+ if (work) {
96
+ console.log('Work mode: .local/, .claude/, .mcp.json are gitignored — nothing committed.');
97
+ }
88
98
  });
89
99
  // --- reindex ---
90
100
  program
@@ -268,6 +278,7 @@ program
268
278
  const fs = require('fs');
269
279
  const toRemove = [
270
280
  path.join(rootDir, '.codex'),
281
+ path.join(rootDir, '.local', '.codex'),
271
282
  path.join(rootDir, '.claude', 'skills', 'codex'),
272
283
  ];
273
284
  for (const p of toRemove) {