clast-ai 0.1.2 → 0.2.1
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/.claude-plugin/marketplace.json +14 -0
- package/.claude-plugin/plugin.json +11 -9
- package/README.md +468 -398
- package/bench/ab/onair-concept.json +22 -0
- package/bench/ab/onair-deadcode.json +7 -0
- package/bench/ab/onair-hard.json +32 -0
- package/bench/ab/onair-impact.json +17 -0
- package/bench/ab/onair-refactors.json +18 -0
- package/bench/ab/onair-survey.json +17 -0
- package/bench/ab/onair-tasks.json +20 -0
- package/bench/ab/onair.json +52 -0
- package/bench/ab/vscode-concept.json +22 -0
- package/bench/ab/vscode-hard.json +32 -0
- package/bench/ab/vscode-impact.json +17 -0
- package/bench/ab/vscode-refactors.json +18 -0
- package/bench/ab/vscode-tasks.json +20 -0
- package/bench/ab/vscode.json +52 -0
- package/bench/ab.mjs +213 -0
- package/bench/bench.mjs +98 -0
- package/bench/resolution.mjs +75 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +266 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/defaults.d.ts +12 -2
- package/dist/config/defaults.js +38 -31
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.js +26 -14
- package/dist/config/index.js.map +1 -1
- package/dist/db/index.d.ts +73 -13
- package/dist/db/index.js +481 -39
- package/dist/db/index.js.map +1 -1
- package/dist/engine.d.ts +15 -0
- package/dist/engine.js +28 -0
- package/dist/engine.js.map +1 -0
- package/dist/indexer/imports.d.ts +6 -0
- package/dist/indexer/imports.js +254 -0
- package/dist/indexer/imports.js.map +1 -0
- package/dist/indexer/index.d.ts +63 -0
- package/dist/indexer/index.js +360 -0
- package/dist/indexer/index.js.map +1 -0
- package/dist/indexer/process.d.ts +22 -0
- package/dist/indexer/process.js +42 -0
- package/dist/indexer/process.js.map +1 -0
- package/dist/indexer/scan.d.ts +43 -0
- package/dist/indexer/scan.js +223 -0
- package/dist/indexer/scan.js.map +1 -0
- package/dist/indexer/worker.d.ts +1 -0
- package/dist/indexer/worker.js +23 -0
- package/dist/indexer/worker.js.map +1 -0
- package/dist/llm/comment-generator.d.ts +17 -19
- package/dist/llm/comment-generator.js +46 -80
- package/dist/llm/comment-generator.js.map +1 -1
- package/dist/llm/index.d.ts +0 -1
- package/dist/llm/index.js.map +1 -1
- package/dist/llm/prompts.d.ts +0 -1
- package/dist/llm/prompts.js +16 -16
- package/dist/migrate.d.ts +35 -0
- package/dist/migrate.js +194 -0
- package/dist/migrate.js.map +1 -0
- package/dist/parser/extractor.d.ts +21 -16
- package/dist/parser/extractor.js +700 -228
- package/dist/parser/extractor.js.map +1 -1
- package/dist/parser/index.d.ts +17 -21
- package/dist/parser/index.js +115 -171
- package/dist/parser/index.js.map +1 -1
- package/dist/parser/langs/c.d.ts +3 -0
- package/dist/parser/langs/c.js +879 -0
- package/dist/parser/langs/c.js.map +1 -0
- package/dist/parser/langs/csharp.d.ts +2 -0
- package/dist/parser/langs/csharp.js +548 -0
- package/dist/parser/langs/csharp.js.map +1 -0
- package/dist/parser/langs/dart.d.ts +2 -0
- package/dist/parser/langs/dart.js +893 -0
- package/dist/parser/langs/dart.js.map +1 -0
- package/dist/parser/langs/go.d.ts +2 -0
- package/dist/parser/langs/go.js +455 -0
- package/dist/parser/langs/go.js.map +1 -0
- package/dist/parser/langs/java.d.ts +2 -0
- package/dist/parser/langs/java.js +390 -0
- package/dist/parser/langs/java.js.map +1 -0
- package/dist/parser/langs/php.d.ts +2 -0
- package/dist/parser/langs/php.js +486 -0
- package/dist/parser/langs/php.js.map +1 -0
- package/dist/parser/langs/python.d.ts +2 -0
- package/dist/parser/langs/python.js +216 -0
- package/dist/parser/langs/python.js.map +1 -0
- package/dist/parser/langs/ruby.d.ts +2 -0
- package/dist/parser/langs/ruby.js +602 -0
- package/dist/parser/langs/ruby.js.map +1 -0
- package/dist/parser/langs/rust.d.ts +2 -0
- package/dist/parser/langs/rust.js +931 -0
- package/dist/parser/langs/rust.js.map +1 -0
- package/dist/parser/langs/swift.d.ts +2 -0
- package/dist/parser/langs/swift.js +616 -0
- package/dist/parser/langs/swift.js.map +1 -0
- package/dist/parser/langs/typescript.d.ts +4 -0
- package/dist/parser/langs/typescript.js +535 -0
- package/dist/parser/langs/typescript.js.map +1 -0
- package/dist/parser/registry.d.ts +16 -0
- package/dist/parser/registry.js +87 -0
- package/dist/parser/registry.js.map +1 -0
- package/dist/parser/returns.d.ts +9 -0
- package/dist/parser/returns.js +152 -0
- package/dist/parser/returns.js.map +1 -0
- package/dist/parser/spec.d.ts +165 -0
- package/dist/parser/spec.js +188 -0
- package/dist/parser/spec.js.map +1 -0
- package/dist/query/arity.d.ts +27 -0
- package/dist/query/arity.js +187 -0
- package/dist/query/arity.js.map +1 -0
- package/dist/query/callgraph.d.ts +113 -0
- package/dist/query/callgraph.js +332 -0
- package/dist/query/callgraph.js.map +1 -0
- package/dist/query/format.d.ts +36 -0
- package/dist/query/format.js +136 -0
- package/dist/query/format.js.map +1 -0
- package/dist/query/hierarchy.d.ts +44 -0
- package/dist/query/hierarchy.js +441 -0
- package/dist/query/hierarchy.js.map +1 -0
- package/dist/query/resolve.d.ts +265 -0
- package/dist/query/resolve.js +1957 -0
- package/dist/query/resolve.js.map +1 -0
- package/dist/query/search.d.ts +35 -0
- package/dist/query/search.js +379 -0
- package/dist/query/search.js.map +1 -0
- package/dist/query/words.d.ts +30 -0
- package/dist/query/words.js +201 -0
- package/dist/query/words.js.map +1 -0
- package/dist/server/index.d.ts +1 -3
- package/dist/server/index.js +313 -73
- package/dist/server/index.js.map +1 -1
- package/dist/tools/context.d.ts +35 -0
- package/dist/tools/context.js +79 -0
- package/dist/tools/context.js.map +1 -0
- package/dist/tools/explore.d.ts +51 -0
- package/dist/tools/explore.js +779 -0
- package/dist/tools/explore.js.map +1 -0
- package/dist/tools/impact.d.ts +21 -0
- package/dist/tools/impact.js +743 -0
- package/dist/tools/impact.js.map +1 -0
- package/dist/tools/search.d.ts +59 -0
- package/dist/tools/search.js +843 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/stats.d.ts +26 -0
- package/dist/tools/stats.js +604 -0
- package/dist/tools/stats.js.map +1 -0
- package/dist/types.d.ts +95 -40
- package/dist/types.js +9 -1
- package/dist/types.js.map +1 -1
- package/dist/version.d.ts +2 -0
- package/dist/version.js +3 -0
- package/dist/version.js.map +1 -0
- package/dist/watcher/index.d.ts +18 -16
- package/dist/watcher/index.js +94 -77
- package/dist/watcher/index.js.map +1 -1
- package/package.json +21 -24
- package/plugin/server.mjs +72 -0
- package/skills/audit/SKILL.md +37 -0
- package/skills/deadcode/SKILL.md +33 -0
- package/skills/explore/SKILL.md +54 -0
- package/skills/impact/SKILL.md +24 -0
- package/skills/status/SKILL.md +11 -0
- package/src/cli.ts +265 -0
- package/src/config/defaults.ts +50 -32
- package/src/config/index.ts +23 -14
- package/src/db/index.ts +540 -43
- package/src/engine.ts +30 -0
- package/src/indexer/imports.ts +241 -0
- package/src/indexer/index.ts +369 -0
- package/src/indexer/process.ts +63 -0
- package/src/indexer/scan.ts +226 -0
- package/src/indexer/worker.ts +24 -0
- package/src/llm/comment-generator.ts +52 -103
- package/src/llm/index.ts +80 -80
- package/src/llm/prompts.ts +95 -95
- package/src/migrate.ts +213 -0
- package/src/parser/extractor.ts +643 -256
- package/src/parser/index.ts +105 -205
- package/src/parser/langs/c.ts +860 -0
- package/src/parser/langs/csharp.ts +519 -0
- package/src/parser/langs/dart.ts +820 -0
- package/src/parser/langs/go.ts +437 -0
- package/src/parser/langs/java.ts +361 -0
- package/src/parser/langs/php.ts +450 -0
- package/src/parser/langs/python.ts +206 -0
- package/src/parser/langs/ruby.ts +554 -0
- package/src/parser/langs/rust.ts +904 -0
- package/src/parser/langs/swift.ts +590 -0
- package/src/parser/langs/typescript.ts +499 -0
- package/src/parser/registry.ts +88 -0
- package/src/parser/returns.ts +137 -0
- package/src/parser/spec.ts +309 -0
- package/src/query/arity.ts +173 -0
- package/src/query/callgraph.ts +473 -0
- package/src/query/format.ts +136 -0
- package/src/query/hierarchy.ts +447 -0
- package/src/query/resolve.ts +1972 -0
- package/src/query/search.ts +430 -0
- package/src/query/words.ts +183 -0
- package/src/server/index.ts +390 -79
- package/src/tools/context.ts +82 -0
- package/src/tools/explore.ts +860 -0
- package/src/tools/impact.ts +748 -0
- package/src/tools/search.ts +886 -0
- package/src/tools/stats.ts +633 -0
- package/src/types.ts +113 -45
- package/src/version.ts +2 -0
- package/src/watcher/index.ts +82 -88
- package/tsconfig.json +6 -3
- package/.mcp.json +0 -8
- package/commands/clast-status.md +0 -9
- package/dist/config/defaults.d.ts.map +0 -1
- package/dist/config/index.d.ts.map +0 -1
- package/dist/db/index.d.ts.map +0 -1
- package/dist/db/queries.d.ts +0 -44
- package/dist/db/queries.d.ts.map +0 -1
- package/dist/db/queries.js +0 -251
- package/dist/db/queries.js.map +0 -1
- package/dist/db/schema.d.ts +0 -3
- package/dist/db/schema.d.ts.map +0 -1
- package/dist/db/schema.js +0 -94
- package/dist/db/schema.js.map +0 -1
- package/dist/db/types.d.ts +0 -44
- package/dist/db/types.d.ts.map +0 -1
- package/dist/db/types.js +0 -2
- package/dist/db/types.js.map +0 -1
- package/dist/llm/comment-generator.d.ts.map +0 -1
- package/dist/llm/index.d.ts.map +0 -1
- package/dist/llm/prompts.d.ts.map +0 -1
- package/dist/parser/call-resolver.d.ts +0 -15
- package/dist/parser/call-resolver.d.ts.map +0 -1
- package/dist/parser/call-resolver.js +0 -16
- package/dist/parser/call-resolver.js.map +0 -1
- package/dist/parser/extractor.d.ts.map +0 -1
- package/dist/parser/index.d.ts.map +0 -1
- package/dist/parser/languages.d.ts +0 -11
- package/dist/parser/languages.d.ts.map +0 -1
- package/dist/parser/languages.js +0 -74
- package/dist/parser/languages.js.map +0 -1
- package/dist/server/index.d.ts.map +0 -1
- package/dist/server/register-tools.d.ts +0 -7
- package/dist/server/register-tools.d.ts.map +0 -1
- package/dist/server/register-tools.js +0 -17
- package/dist/server/register-tools.js.map +0 -1
- package/dist/server/tools/clast-call-graph.d.ts +0 -4
- package/dist/server/tools/clast-call-graph.d.ts.map +0 -1
- package/dist/server/tools/clast-call-graph.js +0 -70
- package/dist/server/tools/clast-call-graph.js.map +0 -1
- package/dist/server/tools/clast-comment.d.ts +0 -5
- package/dist/server/tools/clast-comment.d.ts.map +0 -1
- package/dist/server/tools/clast-comment.js +0 -64
- package/dist/server/tools/clast-comment.js.map +0 -1
- package/dist/server/tools/clast-file-summary.d.ts +0 -4
- package/dist/server/tools/clast-file-summary.d.ts.map +0 -1
- package/dist/server/tools/clast-file-summary.js +0 -42
- package/dist/server/tools/clast-file-summary.js.map +0 -1
- package/dist/server/tools/clast-get-context.d.ts +0 -4
- package/dist/server/tools/clast-get-context.d.ts.map +0 -1
- package/dist/server/tools/clast-get-context.js +0 -80
- package/dist/server/tools/clast-get-context.js.map +0 -1
- package/dist/server/tools/clast-reindex.d.ts +0 -5
- package/dist/server/tools/clast-reindex.d.ts.map +0 -1
- package/dist/server/tools/clast-reindex.js +0 -36
- package/dist/server/tools/clast-reindex.js.map +0 -1
- package/dist/server/tools/clast-search.d.ts +0 -4
- package/dist/server/tools/clast-search.d.ts.map +0 -1
- package/dist/server/tools/clast-search.js +0 -29
- package/dist/server/tools/clast-search.js.map +0 -1
- package/dist/server/tools/clast-status.d.ts +0 -5
- package/dist/server/tools/clast-status.d.ts.map +0 -1
- package/dist/server/tools/clast-status.js +0 -23
- package/dist/server/tools/clast-status.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/watcher/gitignore.d.ts +0 -9
- package/dist/watcher/gitignore.d.ts.map +0 -1
- package/dist/watcher/gitignore.js +0 -38
- package/dist/watcher/gitignore.js.map +0 -1
- package/dist/watcher/index.d.ts.map +0 -1
- package/skills/clast-explore/SKILL.md +0 -41
- package/src/db/queries.ts +0 -332
- package/src/db/schema.ts +0 -106
- package/src/db/types.ts +0 -47
- package/src/parser/call-resolver.ts +0 -17
- package/src/parser/languages.ts +0 -86
- package/src/server/register-tools.ts +0 -30
- package/src/server/tools/clast-call-graph.ts +0 -82
- package/src/server/tools/clast-comment.ts +0 -76
- package/src/server/tools/clast-file-summary.ts +0 -59
- package/src/server/tools/clast-get-context.ts +0 -97
- package/src/server/tools/clast-reindex.ts +0 -52
- package/src/server/tools/clast-search.ts +0 -38
- package/src/server/tools/clast-status.ts +0 -37
- package/src/watcher/gitignore.ts +0 -42
package/dist/server/index.js
CHANGED
|
@@ -1,88 +1,328 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
1
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
2
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
3
|
import { resolve } from 'node:path';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
4
|
+
import { pathToFileURL } from 'node:url';
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
import { Clast } from '../engine.js';
|
|
8
7
|
import { FileWatcher } from '../watcher/index.js';
|
|
9
|
-
import { LlmClient } from '../llm/index.js';
|
|
10
8
|
import { CommentGenerator } from '../llm/comment-generator.js';
|
|
11
|
-
import {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
9
|
+
import { SYMBOL_KINDS } from '../types.js';
|
|
10
|
+
import { findSymbols } from '../query/resolve.js';
|
|
11
|
+
import { symLine } from '../query/format.js';
|
|
12
|
+
import { ToolContext } from '../tools/context.js';
|
|
13
|
+
import { callGraph, getContext, hierarchy, search } from '../tools/search.js';
|
|
14
|
+
import { changes, fileSummary, grep, overview, references, reindex, status } from '../tools/explore.js';
|
|
15
|
+
import { impact, unused } from '../tools/impact.js';
|
|
16
|
+
import { stats } from '../tools/stats.js';
|
|
17
|
+
import { VERSION } from '../version.js';
|
|
18
|
+
const INSTRUCTIONS = `Clast is a pre-built, always-fresh code index for this repository. One call answers what otherwise takes several grep + read round trips, with exact file:line locations. Use it first for code navigation:
|
|
19
|
+
- Unfamiliar repo or directory -> clast_overview, then clast_file_summary.
|
|
20
|
+
- Where is X / what is it called -> clast_search (names, partial names, Class.method, or words describing behaviour).
|
|
21
|
+
- Show me X, or before editing X -> clast_get_context (source of that symbol plus callers and callees).
|
|
22
|
+
- Who calls X -> clast_call_graph (depth N), clast_references (every use, including types and imports).
|
|
23
|
+
- Before changing or deleting X: what else must change, and which tests to run -> clast_impact.
|
|
24
|
+
- Dead code, cleanup after a refactor -> clast_unused.
|
|
25
|
+
- What implements / extends / overrides X, which base class to extend -> clast_hierarchy.
|
|
26
|
+
- How many X, how big, what is it made of -> clast_stats (exact totals; do not count search results by hand).
|
|
27
|
+
- Strings, comments, config keys -> clast_grep. After a change -> clast_changes (touched symbols, affected callers, tests).
|
|
28
|
+
|
|
29
|
+
When implementing a change: find the sibling implementations with clast_hierarchy or clast_search, read one with clast_get_context, and list every caller or switch you must update with clast_call_graph / clast_references before editing.
|
|
30
|
+
Most tools take several names at once (arrays). Symbols: name, Container.name, or path/to/file.ext:name. "?" marks a name-based guess. The index follows file changes, including your own edits.`;
|
|
31
|
+
const text = (t) => ({ content: [{ type: 'text', text: t }] });
|
|
32
|
+
const READ_ONLY = { readOnlyHint: true, idempotentHint: true, openWorldHint: false };
|
|
33
|
+
// Claude Code defers MCP tools behind its tool search by default. Measured on vscode and OnAir
|
|
34
|
+
// (bench/ab.mjs): with the tools deferred the agent answered every question with Grep and never
|
|
35
|
+
// called clast (0 of 60 sessions); loaded up front it used clast in 8 of 10. This asks the client
|
|
36
|
+
// to keep the navigation tools loaded.
|
|
37
|
+
const ALWAYS_LOAD = { 'anthropic/alwaysLoad': true };
|
|
38
|
+
export async function startServer() {
|
|
39
|
+
const projectRoot = resolve(process.env.CLAST_PROJECT_DIR ?? process.env.CLAUDE_PROJECT_DIR ?? process.cwd());
|
|
40
|
+
const log = (msg) => {
|
|
41
|
+
console.error(`[clast] ${msg}`);
|
|
42
|
+
};
|
|
43
|
+
log(`v${VERSION} project root: ${projectRoot}`);
|
|
44
|
+
const clast = new Clast(projectRoot);
|
|
45
|
+
const ctx = new ToolContext(clast);
|
|
46
|
+
const watcher = new FileWatcher(clast.indexer, clast.config.watch.debounceMs);
|
|
47
|
+
const commentGen = new CommentGenerator(clast.db, clast.config, ctx.lines);
|
|
48
|
+
const server = new McpServer({ name: 'clast', version: VERSION }, { instructions: INSTRUCTIONS });
|
|
49
|
+
const names = z.union([z.string(), z.array(z.string()).max(20)]);
|
|
50
|
+
const guard = (fn, gated = true) => async (args) => {
|
|
51
|
+
try {
|
|
52
|
+
if (gated) {
|
|
53
|
+
const building = await ctx.gate();
|
|
54
|
+
if (building)
|
|
55
|
+
return text(building);
|
|
56
|
+
}
|
|
57
|
+
return text(await fn(args));
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
log(`tool error: ${err instanceof Error ? err.stack ?? err.message : err}`);
|
|
61
|
+
return { ...text(`error: ${err instanceof Error ? err.message : String(err)}`), isError: true };
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
server.registerTool('clast_search', {
|
|
65
|
+
title: 'Search symbols',
|
|
66
|
+
description: 'Ranked symbol search. Query by exact, partial or abbreviated name ("parseConf", "pcfg"), typo, "Class.method", or plain words describing behaviour (matched against names, signatures, docs and the identifiers used in function bodies). Returns kind, qualified name, file:line, signature and doc summary. Prefer over grep for finding definitions. Array = several searches.',
|
|
67
|
+
inputSchema: {
|
|
68
|
+
query: names.describe('Name, partial name, Container.name, or descriptive words. Array = several searches.'),
|
|
69
|
+
kind: z.enum(SYMBOL_KINDS).optional().describe('Only this kind of symbol'),
|
|
70
|
+
path: z.string().optional().describe('Only symbols in files under / matching this path (e.g. "src/db" or "parser.ts")'),
|
|
71
|
+
lang: z.string().optional().describe('Only this language id (typescript, python, go, ...)'),
|
|
72
|
+
exported: z.boolean().optional().describe('Only exported / public symbols'),
|
|
73
|
+
limit: z.number().int().min(1).max(100).default(10).describe('Max results per query'),
|
|
74
|
+
},
|
|
75
|
+
annotations: READ_ONLY,
|
|
76
|
+
_meta: ALWAYS_LOAD,
|
|
77
|
+
}, guard(args => search(ctx, args)));
|
|
78
|
+
server.registerTool('clast_get_context', {
|
|
79
|
+
title: 'Symbol source and context',
|
|
80
|
+
description: 'One symbol in one call: its exact source with line numbers plus callers, callees, overloads, overrides and, for classes, members and sub/supertypes. Use INSTEAD of reading a whole file, and before editing a symbol. Address as "name", "Class.method", "path/file.ext:name" or "path/file.ext:<line>". Array = several symbols.',
|
|
81
|
+
inputSchema: {
|
|
82
|
+
name: names.describe('Symbol name, Container.name, or path:name. Array = several symbols.'),
|
|
83
|
+
path: z.string().optional().describe('Disambiguate by file or directory path'),
|
|
84
|
+
includeBody: z.boolean().default(true).describe('Include source code (false = signature + docs only)'),
|
|
85
|
+
maxLines: z.number().int().min(5).max(2000).default(120).describe('Max source lines per symbol; large classes fall back to a member outline'),
|
|
86
|
+
includeCalls: z.boolean().default(true).describe('Include callers and callees'),
|
|
87
|
+
},
|
|
88
|
+
annotations: READ_ONLY,
|
|
89
|
+
_meta: ALWAYS_LOAD,
|
|
90
|
+
}, guard(args => getContext(ctx, args)));
|
|
91
|
+
server.registerTool('clast_call_graph', {
|
|
92
|
+
title: 'Call graph',
|
|
93
|
+
description: 'Callers and/or callees as a tree with file:line per edge; depth > 1 follows the chain. Use for the blast radius before a change (every caller to update) or to trace a path. Resolved by receiver type, imports and inheritance; "?" marks name-only matches. Test callers are summarised. Library names list their call sites.',
|
|
94
|
+
inputSchema: {
|
|
95
|
+
name: z.string().describe('Symbol name, Container.name, or path:name'),
|
|
96
|
+
path: z.string().optional().describe('Disambiguate by file or directory path'),
|
|
97
|
+
direction: z.enum(['callers', 'callees', 'both']).default('both'),
|
|
98
|
+
depth: z.number().int().min(1).max(6).default(1).describe('Levels to traverse (1 = direct only; 2-3 to follow a chain)'),
|
|
99
|
+
limit: z.number().int().min(1).max(2000).default(50).describe('Max nodes per direction'),
|
|
100
|
+
includeTests: z.boolean().optional().describe('true = list test callers in full, false = drop them; default: one summary line naming the test files'),
|
|
101
|
+
within: z.string().optional().describe('Only callers located under this path (e.g. "src/server")'),
|
|
102
|
+
uncertain: z.boolean().default(false).describe('List every unconfirmed caller instead of a short summary'),
|
|
103
|
+
},
|
|
104
|
+
annotations: READ_ONLY,
|
|
105
|
+
_meta: ALWAYS_LOAD,
|
|
106
|
+
}, guard(args => callGraph(ctx, args)));
|
|
107
|
+
server.registerTool('clast_hierarchy', {
|
|
108
|
+
title: 'Type hierarchy',
|
|
109
|
+
description: 'Supertypes and all direct and indirect subtypes of a class, interface, struct or trait as a tree (including Go interface satisfaction). For a method: the same method on related types (declaration, overrides, implementations). Use for "what implements X", "which classes override Y", "which base class do the others extend".',
|
|
110
|
+
inputSchema: {
|
|
111
|
+
name: z.string().describe('Type or method: name, Container.name, or path:name'),
|
|
112
|
+
path: z.string().optional().describe('Disambiguate by file or directory path'),
|
|
113
|
+
direction: z.enum(['supertypes', 'subtypes', 'both']).default('both'),
|
|
114
|
+
depth: z.number().int().min(1).max(8).default(3).describe('Levels to expand'),
|
|
115
|
+
limit: z.number().int().min(1).max(1000).default(80).describe('Max lines per direction'),
|
|
116
|
+
within: z.string().optional().describe('Only subtypes / overrides located under this path'),
|
|
117
|
+
},
|
|
118
|
+
annotations: READ_ONLY,
|
|
119
|
+
_meta: ALWAYS_LOAD,
|
|
120
|
+
}, guard(args => hierarchy(ctx, args)));
|
|
121
|
+
server.registerTool('clast_references', {
|
|
122
|
+
title: 'Find references',
|
|
123
|
+
description: 'Every use of an identifier (calls, type annotations, imports, assignments) grouped by file, each line with its enclosing function/class. Matches real identifiers only, not substrings, strings or comments. Use for variables, types, fields, constants and enum members, or when clast_call_graph is too narrow.',
|
|
124
|
+
inputSchema: {
|
|
125
|
+
name: z.string().describe('Identifier (or Container.name; matching is by the last name segment)'),
|
|
126
|
+
path: z.string().optional().describe('Only references in files under / matching this path'),
|
|
127
|
+
limit: z.number().int().min(1).max(500).default(40).describe('Max reference lines'),
|
|
128
|
+
includeTests: z.boolean().default(true),
|
|
129
|
+
},
|
|
130
|
+
annotations: READ_ONLY,
|
|
131
|
+
_meta: ALWAYS_LOAD,
|
|
132
|
+
}, guard(args => references(ctx, args)));
|
|
133
|
+
server.registerTool('clast_file_summary', {
|
|
134
|
+
title: 'File or directory outline',
|
|
135
|
+
description: 'Outline of a file: symbols as a tree of signatures with line ranges and doc summaries, plus its imports and importers. Use INSTEAD of reading a file to learn its structure. For a directory: its files with main symbols and sub-directories with sizes. Partial paths work ("db/queries").',
|
|
136
|
+
inputSchema: {
|
|
137
|
+
path: z.string().describe('File or directory path (relative; partial paths are matched)'),
|
|
138
|
+
members: z
|
|
139
|
+
.enum(['auto', 'all', 'callable'])
|
|
140
|
+
.default('auto')
|
|
141
|
+
.describe('Whether to list fields/properties/constants inside classes (auto hides them in very large files)'),
|
|
142
|
+
limit: z.number().int().min(20).max(5000).default(300).describe('Max outline lines for a file'),
|
|
143
|
+
},
|
|
144
|
+
annotations: READ_ONLY,
|
|
145
|
+
_meta: ALWAYS_LOAD,
|
|
146
|
+
}, guard(args => fileSummary(ctx, args)));
|
|
147
|
+
server.registerTool('clast_overview', {
|
|
148
|
+
title: 'Repository map',
|
|
149
|
+
description: 'Map of the repository or a sub-directory: languages, layout with sizes, most referenced classes/functions, hub files, entry points. Call first in an unfamiliar codebase.',
|
|
150
|
+
inputSchema: {
|
|
151
|
+
path: z.string().optional().describe('Sub-directory to map (default: whole repository)'),
|
|
152
|
+
},
|
|
153
|
+
annotations: READ_ONLY,
|
|
154
|
+
_meta: ALWAYS_LOAD,
|
|
155
|
+
}, guard(args => overview(ctx, args)));
|
|
156
|
+
server.registerTool('clast_grep', {
|
|
157
|
+
title: 'Text search with symbol context',
|
|
158
|
+
description: 'Text search over all text files (literal or regex, smart-case); each hit is labelled with its enclosing function/class. Use for strings, comments, error messages and config keys; for identifiers prefer clast_search / clast_references.',
|
|
159
|
+
inputSchema: {
|
|
160
|
+
pattern: z.string().describe('Text to find (literal unless regex=true)'),
|
|
161
|
+
regex: z.boolean().default(false).describe('Interpret pattern as a JavaScript regular expression'),
|
|
162
|
+
path: z.string().optional().describe('Only files under / matching this path'),
|
|
163
|
+
lang: z.string().optional().describe('Only this language id'),
|
|
164
|
+
caseSensitive: z.boolean().optional().describe('Default: case-insensitive unless the pattern contains uppercase'),
|
|
165
|
+
limit: z.number().int().min(1).max(500).default(50).describe('Max matching lines'),
|
|
166
|
+
includeTests: z.boolean().default(true),
|
|
167
|
+
},
|
|
168
|
+
annotations: READ_ONLY,
|
|
169
|
+
_meta: ALWAYS_LOAD,
|
|
170
|
+
}, guard(args => grep(ctx, args)));
|
|
171
|
+
server.registerTool('clast_stats', {
|
|
172
|
+
title: 'Count and aggregate',
|
|
173
|
+
description: 'Exact counts for "how many ..." questions, grouped by directory, file, kind or name; do not tally search results by hand. what = inventory (size, languages, production vs tests, symbols by kind, longest functions), symbols (name pattern "*Receiver|*Service" and/or kind), subtypes (direct and indirect subclasses / implementers), calls (call sites of "query|execute", optionally on a receiver), text (regex), imports (external dependencies), endpoints (route declarations of common web frameworks), database (SQL, schema, ORM models, query calls; heuristic).',
|
|
174
|
+
inputSchema: {
|
|
175
|
+
what: z.enum(['inventory', 'symbols', 'subtypes', 'calls', 'text', 'imports', 'endpoints', 'database']).optional()
|
|
176
|
+
.describe('What to count (default inventory, or symbols when name is given)'),
|
|
177
|
+
name: z.string().optional().describe('symbols: name pattern with * and | ; subtypes: base type; calls: called name(s); text: regular expression'),
|
|
178
|
+
kind: z.string().optional().describe('symbols: only these kinds, comma separated (class, interface, function, method, ...)'),
|
|
179
|
+
on: z.string().optional().describe('calls: only on receivers / receiver types matching this pattern'),
|
|
180
|
+
path: z.string().optional().describe('Only files under / matching this path'),
|
|
181
|
+
lang: z.string().optional().describe('Only this language id'),
|
|
182
|
+
groupBy: z.enum(['dir', 'file', 'kind', 'lang', 'name', 'container', 'callee', 'caller', 'receiver', 'match']).optional()
|
|
183
|
+
.describe('Grouping of the main table (default dir)'),
|
|
184
|
+
depth: z.number().int().min(1).max(12).optional().describe('Directory depth for groupBy=dir (default 2)'),
|
|
185
|
+
limit: z.number().int().min(1).max(500).optional().describe('Rows per table (default 25)'),
|
|
186
|
+
includeTests: z.boolean().optional().describe('Include tests/examples in the tables (default: counted separately)'),
|
|
187
|
+
},
|
|
188
|
+
annotations: READ_ONLY,
|
|
189
|
+
_meta: ALWAYS_LOAD,
|
|
190
|
+
}, guard(args => stats(ctx, args)));
|
|
191
|
+
server.registerTool('clast_impact', {
|
|
192
|
+
title: 'Impact of changing a symbol',
|
|
193
|
+
description: 'Before changing a signature, behaviour or deleting a symbol: one answer with the declarations / overrides / implementations that must change together, every direct caller by file and line, how far the change reaches through indirect callers, and the test files to run (those that call it directly or through its callers).',
|
|
194
|
+
inputSchema: {
|
|
195
|
+
name: z.string().describe('Symbol: name, Container.name, or path:name'),
|
|
196
|
+
path: z.string().optional().describe('Disambiguate by file or directory path'),
|
|
197
|
+
depth: z.number().int().min(1).max(6).optional().describe('Caller levels to follow (default 3)'),
|
|
198
|
+
limit: z.number().int().min(1).max(500).optional().describe('Max lines per section (default 30)'),
|
|
199
|
+
},
|
|
200
|
+
annotations: READ_ONLY,
|
|
201
|
+
_meta: ALWAYS_LOAD,
|
|
202
|
+
}, guard(args => impact(ctx, args)));
|
|
203
|
+
server.registerTool('clast_unused', {
|
|
204
|
+
title: 'Unused code',
|
|
205
|
+
description: 'Dead code: functions, methods and types that nothing references (or that only other unused code references), grouped by file with line ranges; plus code used only by tests, and names that only appear in strings or comments. Entry points, decorated / attribute-marked symbols and overrides of library types are left out. Use after a refactor or to clean up a directory.',
|
|
206
|
+
inputSchema: {
|
|
207
|
+
path: z.string().optional().describe('Only judge symbols under / matching this path'),
|
|
208
|
+
lang: z.string().optional().describe('Only this language id'),
|
|
209
|
+
kind: z.string().optional().describe('Kinds to judge, comma separated (default function, method, class, struct, interface, trait, enum, type)'),
|
|
210
|
+
exported: z.boolean().optional().describe('false: leave out exported / public symbols'),
|
|
211
|
+
limit: z.number().int().min(1).max(1000).optional().describe('Max symbols listed (default 60)'),
|
|
212
|
+
},
|
|
213
|
+
annotations: READ_ONLY,
|
|
214
|
+
_meta: ALWAYS_LOAD,
|
|
215
|
+
}, guard(args => unused(ctx, args)));
|
|
216
|
+
server.registerTool('clast_changes', {
|
|
217
|
+
title: 'Changed symbols and impact',
|
|
218
|
+
description: 'Map the current git diff to code structure: which functions/classes were touched (uncommitted changes by default, or relative to a base ref such as "main"), which callers outside the change may be affected, and which test files exercise the changed symbols. Use when reviewing a change, before committing, or to decide which tests to run.',
|
|
219
|
+
inputSchema: {
|
|
220
|
+
base: z.string().optional().describe('Git ref to diff against (default HEAD = uncommitted changes; e.g. "main", "HEAD~3")'),
|
|
221
|
+
},
|
|
222
|
+
annotations: { readOnlyHint: true, openWorldHint: false },
|
|
223
|
+
}, guard(args => changes(ctx, args)));
|
|
224
|
+
server.registerTool('clast_status', {
|
|
225
|
+
title: 'Index status',
|
|
226
|
+
description: 'Index statistics and health: files, symbols, languages, whether indexing is in progress, watcher state.',
|
|
227
|
+
inputSchema: {},
|
|
228
|
+
annotations: READ_ONLY,
|
|
229
|
+
}, guard(() => status(ctx, watcher), false));
|
|
230
|
+
server.registerTool('clast_reindex', {
|
|
231
|
+
title: 'Re-index',
|
|
232
|
+
description: 'Re-scan the repository (incremental: only changed files are re-parsed) or force re-index one file. Rarely needed - the index follows file changes automatically and re-checks files when they are queried. Use force=true to rebuild from scratch.',
|
|
233
|
+
inputSchema: {
|
|
234
|
+
path: z.string().optional().describe('Single file to re-index (default: whole repository)'),
|
|
235
|
+
force: z.boolean().default(false).describe('Re-parse every file even if unchanged'),
|
|
236
|
+
},
|
|
237
|
+
annotations: { readOnlyHint: false, idempotentHint: true, openWorldHint: false },
|
|
238
|
+
}, guard(args => reindex(ctx, args), false));
|
|
239
|
+
server.registerTool('clast_comment', {
|
|
240
|
+
title: 'Get or generate documentation',
|
|
241
|
+
description: 'Return the documentation comment of a symbol. With generate=true and a local LLM configured (llm.model in clast.config.json), generates and stores a doc comment for undocumented symbols.',
|
|
242
|
+
inputSchema: {
|
|
243
|
+
name: z.string().describe('Symbol name, Container.name, or path:name'),
|
|
244
|
+
generate: z.boolean().default(false).describe('Generate with the configured LLM if no comment exists'),
|
|
245
|
+
},
|
|
246
|
+
annotations: { readOnlyHint: false, openWorldHint: true },
|
|
247
|
+
}, guard(async ({ name, generate }) => {
|
|
248
|
+
await ctx.ready();
|
|
249
|
+
const matches = findSymbols(ctx.db, name);
|
|
250
|
+
if (matches.length === 0)
|
|
251
|
+
return `"${name}": no symbol with this name.`;
|
|
252
|
+
const out = [];
|
|
253
|
+
for (const sym of matches.slice(0, 5)) {
|
|
254
|
+
out.push(symLine(sym));
|
|
255
|
+
const stored = commentGen.stored(sym);
|
|
256
|
+
if (sym.doc)
|
|
257
|
+
out.push(sym.doc);
|
|
258
|
+
else if (stored)
|
|
259
|
+
out.push(`[generated] ${stored}`);
|
|
260
|
+
else if (generate) {
|
|
261
|
+
if (!commentGen.isAvailable)
|
|
262
|
+
out.push('(no comment; LLM not configured - set llm.model in clast.config.json)');
|
|
263
|
+
else
|
|
264
|
+
out.push((await commentGen.generate(sym)) ?? '(generation failed; see server log)');
|
|
265
|
+
}
|
|
266
|
+
else
|
|
267
|
+
out.push('(no comment)');
|
|
268
|
+
}
|
|
269
|
+
return out.join('\n');
|
|
270
|
+
}));
|
|
271
|
+
// Connect first so the client never waits on indexing; the index builds
|
|
272
|
+
// (or revalidates) in the background and tools report progress meanwhile.
|
|
273
|
+
const transport = new StdioServerTransport();
|
|
274
|
+
await server.connect(transport);
|
|
275
|
+
log('MCP server running on stdio');
|
|
276
|
+
clast.indexer
|
|
277
|
+
.indexAll()
|
|
278
|
+
.then(r => {
|
|
279
|
+
const s = clast.db.stats();
|
|
280
|
+
log(`index ready: scanned ${r.scanned}, parsed ${r.parsed}, removed ${r.removed} in ${r.durationMs}ms ` +
|
|
281
|
+
`(${s.files} files, ${s.symbols} symbols)`);
|
|
282
|
+
})
|
|
283
|
+
.catch(err => log(`indexing failed: ${err instanceof Error ? err.stack : err}`))
|
|
284
|
+
.finally(() => {
|
|
285
|
+
if (clast.config.watch.enabled) {
|
|
286
|
+
try {
|
|
287
|
+
watcher.start();
|
|
288
|
+
log('file watcher active');
|
|
289
|
+
}
|
|
290
|
+
catch (err) {
|
|
291
|
+
log(`watcher failed to start: ${err instanceof Error ? err.message : err}`);
|
|
292
|
+
}
|
|
51
293
|
}
|
|
52
|
-
});
|
|
53
|
-
console.error(`[clast] Index complete: ${indexResult.filesProcessed} files, ` +
|
|
54
|
-
`${indexResult.nodesFound} nodes, ${indexResult.edgesResolved} edges resolved ` +
|
|
55
|
-
`(${indexResult.durationMs}ms)`);
|
|
56
|
-
// Start file watcher
|
|
57
|
-
watcher.start();
|
|
58
|
-
watcher.on('indexed', ({ filePath, nodesFound }) => {
|
|
59
|
-
console.error(`[clast] Updated: ${filePath} (${nodesFound} nodes)`);
|
|
60
|
-
});
|
|
61
|
-
watcher.on('deleted', ({ filePath }) => {
|
|
62
|
-
console.error(`[clast] Removed: ${filePath}`);
|
|
63
294
|
});
|
|
64
295
|
watcher.on('error', ({ filePath, error }) => {
|
|
65
|
-
|
|
296
|
+
log(`watch error ${filePath}: ${error.message}`);
|
|
66
297
|
});
|
|
67
|
-
|
|
68
|
-
console.error('[clast] File watcher active');
|
|
69
|
-
}
|
|
70
|
-
// Connect to stdio transport
|
|
71
|
-
const transport = new StdioServerTransport();
|
|
72
|
-
await server.connect(transport);
|
|
73
|
-
console.error('[clast] MCP server running on stdio');
|
|
74
|
-
// Graceful shutdown
|
|
298
|
+
let closing = false;
|
|
75
299
|
const shutdown = () => {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
300
|
+
if (closing)
|
|
301
|
+
return;
|
|
302
|
+
closing = true;
|
|
303
|
+
watcher
|
|
304
|
+
.stop()
|
|
305
|
+
.catch(() => undefined)
|
|
306
|
+
.finally(() => {
|
|
307
|
+
try {
|
|
308
|
+
clast.close();
|
|
309
|
+
}
|
|
310
|
+
catch { /* already closed */ }
|
|
311
|
+
process.exit(0);
|
|
312
|
+
});
|
|
80
313
|
};
|
|
81
314
|
process.on('SIGINT', shutdown);
|
|
82
315
|
process.on('SIGTERM', shutdown);
|
|
316
|
+
// The client closing stdin is the normal way an MCP server is stopped.
|
|
317
|
+
process.stdin.on('close', shutdown);
|
|
318
|
+
}
|
|
319
|
+
// Backwards compatibility: configurations written for 0.1.x launch this file
|
|
320
|
+
// directly (`node dist/server/index.js`). Keep that working.
|
|
321
|
+
const invoked = process.argv[1] ? pathToFileURL(process.argv[1]).href : '';
|
|
322
|
+
if (invoked === import.meta.url) {
|
|
323
|
+
startServer().catch(err => {
|
|
324
|
+
console.error('[clast] Fatal error:', err);
|
|
325
|
+
process.exit(1);
|
|
326
|
+
});
|
|
83
327
|
}
|
|
84
|
-
main().catch((err) => {
|
|
85
|
-
console.error('[clast] Fatal error:', err);
|
|
86
|
-
process.exit(1);
|
|
87
|
-
});
|
|
88
328
|
//# sourceMappingURL=index.js.map
|
package/dist/server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Clast } from '../engine.js';
|
|
2
|
+
import { LineCache } from '../query/format.js';
|
|
3
|
+
import { Resolver } from '../query/resolve.js';
|
|
4
|
+
/**
|
|
5
|
+
* Per-engine state shared by all tool implementations.
|
|
6
|
+
*/
|
|
7
|
+
export declare class ToolContext {
|
|
8
|
+
readonly clast: Clast;
|
|
9
|
+
readonly lines: LineCache;
|
|
10
|
+
private resolverGen;
|
|
11
|
+
private resolverCache;
|
|
12
|
+
/** How long a query waits for an in-flight bulk index before answering from a partial index. */
|
|
13
|
+
waitMs: number;
|
|
14
|
+
constructor(clast: Clast);
|
|
15
|
+
get db(): import("../db/index.js").ClastDb;
|
|
16
|
+
get indexer(): import("../indexer/index.js").Indexer;
|
|
17
|
+
/** Resolver whose caches are valid for the current database generation. */
|
|
18
|
+
get resolver(): Resolver;
|
|
19
|
+
/**
|
|
20
|
+
* Called at the start of every query tool. Waits briefly for a running
|
|
21
|
+
* bulk index; returns a note to prepend when results may be incomplete.
|
|
22
|
+
*/
|
|
23
|
+
ready(): Promise<string>;
|
|
24
|
+
/**
|
|
25
|
+
* Gate for query tools: waits briefly for a running index. If a FIRST-TIME
|
|
26
|
+
* build is still going after that, returns a message to send instead of
|
|
27
|
+
* running the query (the half-loaded index has no lookup indexes yet, so a
|
|
28
|
+
* query would be slow and incomplete). Otherwise returns null.
|
|
29
|
+
*/
|
|
30
|
+
gate(): Promise<string | null>;
|
|
31
|
+
/** Re-index any of these files that changed on disk since they were indexed. */
|
|
32
|
+
fresh(paths: Iterable<string>): Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
/** Accept `"a"`, `["a", "b"]` or `"a, b"` for batched lookups. */
|
|
35
|
+
export declare function toList(value: string | string[] | undefined, splitCommas?: boolean): string[];
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { LineCache } from '../query/format.js';
|
|
2
|
+
import { Resolver } from '../query/resolve.js';
|
|
3
|
+
/**
|
|
4
|
+
* Per-engine state shared by all tool implementations.
|
|
5
|
+
*/
|
|
6
|
+
export class ToolContext {
|
|
7
|
+
clast;
|
|
8
|
+
lines;
|
|
9
|
+
resolverGen = -1;
|
|
10
|
+
resolverCache = null;
|
|
11
|
+
/** How long a query waits for an in-flight bulk index before answering from a partial index. */
|
|
12
|
+
waitMs = 8000;
|
|
13
|
+
constructor(clast) {
|
|
14
|
+
this.clast = clast;
|
|
15
|
+
this.lines = new LineCache(clast.root);
|
|
16
|
+
}
|
|
17
|
+
get db() {
|
|
18
|
+
return this.clast.db;
|
|
19
|
+
}
|
|
20
|
+
get indexer() {
|
|
21
|
+
return this.clast.indexer;
|
|
22
|
+
}
|
|
23
|
+
/** Resolver whose caches are valid for the current database generation. */
|
|
24
|
+
get resolver() {
|
|
25
|
+
if (!this.resolverCache || this.resolverGen !== this.db.generation) {
|
|
26
|
+
this.resolverCache = new Resolver(this.db);
|
|
27
|
+
this.resolverGen = this.db.generation;
|
|
28
|
+
}
|
|
29
|
+
return this.resolverCache;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Called at the start of every query tool. Waits briefly for a running
|
|
33
|
+
* bulk index; returns a note to prepend when results may be incomplete.
|
|
34
|
+
*/
|
|
35
|
+
async ready() {
|
|
36
|
+
if (!this.indexer.isIndexing)
|
|
37
|
+
return '';
|
|
38
|
+
const done = await this.indexer.whenIdle(this.waitMs);
|
|
39
|
+
if (done)
|
|
40
|
+
return '';
|
|
41
|
+
const p = this.indexer.progress;
|
|
42
|
+
return `note: index is still being built (${p.done}/${p.total} files parsed) - results may be incomplete; retry shortly.\n\n`;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Gate for query tools: waits briefly for a running index. If a FIRST-TIME
|
|
46
|
+
* build is still going after that, returns a message to send instead of
|
|
47
|
+
* running the query (the half-loaded index has no lookup indexes yet, so a
|
|
48
|
+
* query would be slow and incomplete). Otherwise returns null.
|
|
49
|
+
*/
|
|
50
|
+
async gate() {
|
|
51
|
+
if (!this.indexer.isIndexing)
|
|
52
|
+
return null;
|
|
53
|
+
const done = await this.indexer.whenIdle(this.waitMs);
|
|
54
|
+
if (done || !this.indexer.coldBuild)
|
|
55
|
+
return null;
|
|
56
|
+
const p = this.indexer.progress;
|
|
57
|
+
const pct = p.total ? Math.floor((100 * p.done) / p.total) : 0;
|
|
58
|
+
return (`clast is building its index for the first time (${p.done}/${p.total} files, ${pct}%). ` +
|
|
59
|
+
`This takes seconds to about half a minute depending on repository size; call again shortly. ` +
|
|
60
|
+
`(Later sessions start from the saved index and are ready immediately.)`);
|
|
61
|
+
}
|
|
62
|
+
/** Re-index any of these files that changed on disk since they were indexed. */
|
|
63
|
+
async fresh(paths) {
|
|
64
|
+
const list = [...paths];
|
|
65
|
+
const updated = await this.indexer.ensureFresh(list);
|
|
66
|
+
if (updated > 0) {
|
|
67
|
+
for (const p of list)
|
|
68
|
+
this.lines.invalidate(p);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/** Accept `"a"`, `["a", "b"]` or `"a, b"` for batched lookups. */
|
|
73
|
+
export function toList(value, splitCommas = false) {
|
|
74
|
+
if (value === undefined)
|
|
75
|
+
return [];
|
|
76
|
+
const arr = Array.isArray(value) ? value : splitCommas ? value.split(',') : [value];
|
|
77
|
+
return arr.map(s => s.trim()).filter(Boolean);
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/tools/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { ToolContext } from './context.js';
|
|
2
|
+
export interface ReferencesArgs {
|
|
3
|
+
name: string;
|
|
4
|
+
/** Restrict to files under / matching this path. */
|
|
5
|
+
path?: string;
|
|
6
|
+
/** Max reference lines to print. Default 40. */
|
|
7
|
+
limit?: number;
|
|
8
|
+
includeTests?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function references(ctx: ToolContext, args: ReferencesArgs): Promise<string>;
|
|
11
|
+
export interface FileSummaryArgs {
|
|
12
|
+
/** File or directory path (partial paths are resolved). */
|
|
13
|
+
path: string;
|
|
14
|
+
/** Include fields / properties / constants inside containers. Default: auto. */
|
|
15
|
+
members?: 'all' | 'callable' | 'auto';
|
|
16
|
+
/** Max outline lines for a file. Default 300. */
|
|
17
|
+
limit?: number;
|
|
18
|
+
}
|
|
19
|
+
export declare function fileSummary(ctx: ToolContext, args: FileSummaryArgs): Promise<string>;
|
|
20
|
+
export interface OverviewArgs {
|
|
21
|
+
/** Limit the overview to a subdirectory. */
|
|
22
|
+
path?: string;
|
|
23
|
+
}
|
|
24
|
+
export declare function overview(ctx: ToolContext, args?: OverviewArgs): Promise<string>;
|
|
25
|
+
export interface GrepArgs {
|
|
26
|
+
pattern: string;
|
|
27
|
+
/** Treat pattern as a JavaScript regular expression. Default false (literal). */
|
|
28
|
+
regex?: boolean;
|
|
29
|
+
path?: string;
|
|
30
|
+
lang?: string;
|
|
31
|
+
/** Default: smart case (case-insensitive unless the pattern has uppercase). */
|
|
32
|
+
caseSensitive?: boolean;
|
|
33
|
+
/** Max matching lines. Default 50. */
|
|
34
|
+
limit?: number;
|
|
35
|
+
includeTests?: boolean;
|
|
36
|
+
}
|
|
37
|
+
export declare function otherTextFiles(ctx: ToolContext): string[];
|
|
38
|
+
export declare function grep(ctx: ToolContext, args: GrepArgs): Promise<string>;
|
|
39
|
+
export interface ChangesArgs {
|
|
40
|
+
/** Git ref to diff against. Default HEAD (uncommitted changes). */
|
|
41
|
+
base?: string;
|
|
42
|
+
}
|
|
43
|
+
export declare function changes(ctx: ToolContext, args?: ChangesArgs): Promise<string>;
|
|
44
|
+
export declare function status(ctx: ToolContext, watcher?: {
|
|
45
|
+
isActive: boolean;
|
|
46
|
+
pendingCount: number;
|
|
47
|
+
}): Promise<string>;
|
|
48
|
+
export declare function reindex(ctx: ToolContext, args?: {
|
|
49
|
+
path?: string;
|
|
50
|
+
force?: boolean;
|
|
51
|
+
}): Promise<string>;
|