mincut-context 1.1.0 → 1.2.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.
- package/README.md +8 -3
- package/dist/adapters/cli/bin.js +1 -1
- package/dist/adapters/mcp/index.js +1 -1
- package/dist/index/builder.d.ts.map +1 -1
- package/dist/index/builder.js +8 -0
- package/dist/index/builder.js.map +1 -1
- package/dist/index/walker.d.ts.map +1 -1
- package/dist/index/walker.js +6 -1
- package/dist/index/walker.js.map +1 -1
- package/dist/parsers/php.d.ts +3 -0
- package/dist/parsers/php.d.ts.map +1 -0
- package/dist/parsers/php.js +186 -0
- package/dist/parsers/php.js.map +1 -0
- package/dist/parsers/vue.d.ts +17 -0
- package/dist/parsers/vue.d.ts.map +1 -0
- package/dist/parsers/vue.js +52 -0
- package/dist/parsers/vue.js.map +1 -0
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -245,7 +245,9 @@ That's exactly the analytics slice — no UI noise, no test fixtures, no unrelat
|
|
|
245
245
|
|---|---|---|
|
|
246
246
|
| TypeScript / JavaScript | ✅ v1.0 | `.ts .tsx .js .jsx .mjs .cjs` |
|
|
247
247
|
| Python | ✅ v1.0 | `.py .pyi`, relative imports, decorators, methods |
|
|
248
|
-
|
|
|
248
|
+
| **PHP** | ✅ **v1.2** | `.php`, namespaces, traits, `use` (incl. grouped + aliased), `$this->`, `Foo::bar()` |
|
|
249
|
+
| **Vue SFC** | ✅ **v1.2** | `.vue`, `<script>` Options API + `<script setup>` Composition API, `lang="ts"` honored |
|
|
250
|
+
| Rust, Go, Svelte, … | community welcome | tree-sitter grammar + symbol queries |
|
|
249
251
|
|
|
250
252
|
Adding a language is one parser file implementing `LanguageParser` + one line in `parseForExt`. See [`src/parsers/py.ts`](./src/parsers/py.ts) as a template.
|
|
251
253
|
|
|
@@ -312,8 +314,11 @@ mcx --version print the installed version
|
|
|
312
314
|
- [x] Ink TUI **(v1.0)**
|
|
313
315
|
- [x] Persistent on-disk parse cache (incremental reindex) **(v1.1)** — 5.2× warm-run speedup
|
|
314
316
|
- [x] Louvain community boost **(v1.1)**
|
|
315
|
-
- [
|
|
316
|
-
- [
|
|
317
|
+
- [x] **PHP parser** **(v1.2)**
|
|
318
|
+
- [x] **Vue SFC parser** **(v1.2)**
|
|
319
|
+
- [ ] Svelte / Rust / Go parsers
|
|
320
|
+
- [ ] Sub-symbol AST-block chunking
|
|
321
|
+
- [ ] Parallel parsing (worker pool)
|
|
317
322
|
- [ ] LSP-backed type-aware call resolution
|
|
318
323
|
|
|
319
324
|
---
|
package/dist/adapters/cli/bin.js
CHANGED
|
@@ -30,7 +30,7 @@ const program = new Command();
|
|
|
30
30
|
program
|
|
31
31
|
.name('mcx')
|
|
32
32
|
.description('mincut-context — token-minimal context selection for AI coding agents')
|
|
33
|
-
.version('1.
|
|
33
|
+
.version('1.2.0');
|
|
34
34
|
program
|
|
35
35
|
.command('pack <task...>')
|
|
36
36
|
.description('Pack a token-minimal context window for the given task')
|
|
@@ -7,7 +7,7 @@ import { handleMcpCall, TOOLS } from './handler.js';
|
|
|
7
7
|
* All business logic lives in the handler — this file only does transport.
|
|
8
8
|
*/
|
|
9
9
|
export async function runMcpServer() {
|
|
10
|
-
const server = new Server({ name: 'mincut-context', version: '1.
|
|
10
|
+
const server = new Server({ name: 'mincut-context', version: '1.2.0' }, { capabilities: { tools: {} } });
|
|
11
11
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
12
12
|
tools: TOOLS.map((t) => ({
|
|
13
13
|
name: t.name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/index/builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/index/builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAM/C,OAAO,EAAQ,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAiBrD,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,8EAA8E;IAC9E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,eAAe,EAAE,MAAM,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,WAAW,CA6G/E"}
|
package/dist/index/builder.js
CHANGED
|
@@ -2,16 +2,24 @@ import path from 'node:path';
|
|
|
2
2
|
import { SymbolGraph } from '../core/graph.js';
|
|
3
3
|
import { parseTypeScript } from '../parsers/ts.js';
|
|
4
4
|
import { parsePython } from '../parsers/py.js';
|
|
5
|
+
import { parsePhp } from '../parsers/php.js';
|
|
6
|
+
import { parseVueSfc } from '../parsers/vue.js';
|
|
5
7
|
import { walk } from './walker.js';
|
|
6
8
|
import { ParseCache, fileFingerprint } from './cache.js';
|
|
7
9
|
const TS_EXT = new Set(['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs']);
|
|
8
10
|
const PY_EXT = new Set(['.py', '.pyi']);
|
|
11
|
+
const PHP_EXT = new Set(['.php']);
|
|
12
|
+
const VUE_EXT = new Set(['.vue']);
|
|
9
13
|
function parseForExt(file, source) {
|
|
10
14
|
const ext = path.extname(file);
|
|
11
15
|
if (TS_EXT.has(ext))
|
|
12
16
|
return parseTypeScript(file, source);
|
|
13
17
|
if (PY_EXT.has(ext))
|
|
14
18
|
return parsePython(file, source);
|
|
19
|
+
if (PHP_EXT.has(ext))
|
|
20
|
+
return parsePhp(file, source);
|
|
21
|
+
if (VUE_EXT.has(ext))
|
|
22
|
+
return parseVueSfc(file, source);
|
|
15
23
|
return null;
|
|
16
24
|
}
|
|
17
25
|
export function indexRepo(root, options = {}) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/index/builder.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/index/builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walker.d.ts","sourceRoot":"","sources":["../../src/index/walker.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,2FAA2F;IAC3F,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;
|
|
1
|
+
{"version":3,"file":"walker.d.ts","sourceRoot":"","sources":["../../src/index/walker.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,2FAA2F;IAC3F,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AA+BD,wBAAiB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,gBAAgB,CAAC,UAAU,CAAC,CA2C3F"}
|
package/dist/index/walker.js
CHANGED
|
@@ -22,7 +22,12 @@ const DEFAULT_EXCLUDES = [
|
|
|
22
22
|
'*.map',
|
|
23
23
|
'*.log',
|
|
24
24
|
];
|
|
25
|
-
const SUPPORTED_EXT = new Set([
|
|
25
|
+
const SUPPORTED_EXT = new Set([
|
|
26
|
+
'.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs',
|
|
27
|
+
'.py', '.pyi',
|
|
28
|
+
'.php',
|
|
29
|
+
'.vue',
|
|
30
|
+
]);
|
|
26
31
|
export function* walk(root, options = {}) {
|
|
27
32
|
const maxBytes = options.maxBytes ?? 256 * 1024;
|
|
28
33
|
const ig = buildIgnore(root, options.exclude);
|
package/dist/index/walker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walker.js","sourceRoot":"","sources":["../../src/index/walker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAuB,MAAM,QAAQ,CAAC;AAiB7C,MAAM,gBAAgB,GAAG;IACvB,OAAO;IACP,eAAe;IACf,OAAO;IACP,QAAQ;IACR,WAAW;IACX,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,SAAS;IACT,gBAAgB;IAChB,cAAc;IACd,cAAc;IACd,QAAQ;IACR,UAAU;IACV,WAAW;IACX,UAAU;IACV,WAAW;IACX,OAAO;IACP,OAAO;CACR,CAAC;AAEF,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"walker.js","sourceRoot":"","sources":["../../src/index/walker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"php.d.ts","sourceRoot":"","sources":["../../src/parsers/php.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAQrB,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CAmBlE"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import Parser from 'tree-sitter';
|
|
2
|
+
import { createRequire } from 'node:module';
|
|
3
|
+
import { approxTokens, } from './parser.js';
|
|
4
|
+
const require_ = createRequire(import.meta.url);
|
|
5
|
+
const Php = require_('tree-sitter-php');
|
|
6
|
+
const phpParser = new Parser();
|
|
7
|
+
phpParser.setLanguage(Php.php);
|
|
8
|
+
export function parsePhp(file, source) {
|
|
9
|
+
let tree;
|
|
10
|
+
try {
|
|
11
|
+
tree = phpParser.parse(source);
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return { symbols: [], imports: [], calls: [] };
|
|
15
|
+
}
|
|
16
|
+
const ctx = {
|
|
17
|
+
file,
|
|
18
|
+
source,
|
|
19
|
+
symbols: [],
|
|
20
|
+
imports: [],
|
|
21
|
+
calls: [],
|
|
22
|
+
classStack: [],
|
|
23
|
+
callerStack: [],
|
|
24
|
+
};
|
|
25
|
+
visit(tree.rootNode, ctx);
|
|
26
|
+
return { symbols: ctx.symbols, imports: ctx.imports, calls: ctx.calls };
|
|
27
|
+
}
|
|
28
|
+
function visit(node, ctx) {
|
|
29
|
+
switch (node.type) {
|
|
30
|
+
case 'function_definition': {
|
|
31
|
+
const name = node.childForFieldName('name')?.text;
|
|
32
|
+
if (name) {
|
|
33
|
+
const sym = mk(ctx, node, name, name, 'function');
|
|
34
|
+
ctx.symbols.push(sym);
|
|
35
|
+
ctx.callerStack.push(sym.id);
|
|
36
|
+
const body = node.childForFieldName('body');
|
|
37
|
+
if (body)
|
|
38
|
+
visit(body, ctx);
|
|
39
|
+
ctx.callerStack.pop();
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
case 'class_declaration':
|
|
45
|
+
case 'trait_declaration': {
|
|
46
|
+
const name = node.childForFieldName('name')?.text;
|
|
47
|
+
if (!name)
|
|
48
|
+
break;
|
|
49
|
+
ctx.symbols.push(mk(ctx, node, name, name, 'class'));
|
|
50
|
+
ctx.classStack.push(name);
|
|
51
|
+
const body = node.childForFieldName('body');
|
|
52
|
+
if (body)
|
|
53
|
+
visit(body, ctx);
|
|
54
|
+
ctx.classStack.pop();
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
case 'interface_declaration': {
|
|
58
|
+
const name = node.childForFieldName('name')?.text;
|
|
59
|
+
if (!name)
|
|
60
|
+
break;
|
|
61
|
+
ctx.symbols.push(mk(ctx, node, name, name, 'interface'));
|
|
62
|
+
return; // interface bodies are signatures only
|
|
63
|
+
}
|
|
64
|
+
case 'method_declaration': {
|
|
65
|
+
const name = node.childForFieldName('name')?.text;
|
|
66
|
+
if (!name)
|
|
67
|
+
break;
|
|
68
|
+
const cls = ctx.classStack[ctx.classStack.length - 1];
|
|
69
|
+
const qualified = cls ? `${cls}.${name}` : name;
|
|
70
|
+
const sym = mk(ctx, node, name, qualified, 'method');
|
|
71
|
+
ctx.symbols.push(sym);
|
|
72
|
+
ctx.callerStack.push(sym.id);
|
|
73
|
+
const body = node.childForFieldName('body');
|
|
74
|
+
if (body)
|
|
75
|
+
visit(body, ctx);
|
|
76
|
+
ctx.callerStack.pop();
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
case 'namespace_use_declaration': {
|
|
80
|
+
collectUses(node, ctx);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
case 'function_call_expression':
|
|
84
|
+
case 'member_call_expression':
|
|
85
|
+
case 'scoped_call_expression': {
|
|
86
|
+
const name = callTargetName(node);
|
|
87
|
+
if (name && ctx.callerStack.length > 0) {
|
|
88
|
+
ctx.calls.push({
|
|
89
|
+
from: ctx.callerStack[ctx.callerStack.length - 1],
|
|
90
|
+
toName: name,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
visitChildren(node, ctx);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
visitChildren(node, ctx);
|
|
98
|
+
}
|
|
99
|
+
function visitChildren(node, ctx) {
|
|
100
|
+
for (let i = 0; i < node.namedChildCount; i++) {
|
|
101
|
+
const c = node.namedChild(i);
|
|
102
|
+
if (c)
|
|
103
|
+
visit(c, ctx);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
function mk(ctx, node, bare, qualified, kind) {
|
|
107
|
+
const text = ctx.source.slice(node.startIndex, node.endIndex);
|
|
108
|
+
return {
|
|
109
|
+
id: `${ctx.file}:${qualified}`,
|
|
110
|
+
name: bare,
|
|
111
|
+
file: ctx.file,
|
|
112
|
+
kind,
|
|
113
|
+
startLine: node.startPosition.row + 1,
|
|
114
|
+
endLine: node.endPosition.row + 1,
|
|
115
|
+
tokens: approxTokens(text),
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
function callTargetName(node) {
|
|
119
|
+
// function_call_expression: function: <expr>
|
|
120
|
+
// member_call_expression: name: <name>
|
|
121
|
+
// scoped_call_expression: name: <name>
|
|
122
|
+
if (node.type === 'function_call_expression') {
|
|
123
|
+
const fn = node.childForFieldName('function');
|
|
124
|
+
if (!fn)
|
|
125
|
+
return null;
|
|
126
|
+
if (fn.type === 'name' || fn.type === 'qualified_name')
|
|
127
|
+
return fn.text.split('\\').pop() ?? null;
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
const nameNode = node.childForFieldName('name');
|
|
131
|
+
if (nameNode)
|
|
132
|
+
return nameNode.text;
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
function collectUses(node, ctx) {
|
|
136
|
+
// `use App\Foo;` / `use App\Foo as Bar;`
|
|
137
|
+
// `use App\{Foo, Bar as B, Baz};` (group)
|
|
138
|
+
// Walk children, find namespace_use_clause and namespace_use_group nodes.
|
|
139
|
+
for (let i = 0; i < node.namedChildCount; i++) {
|
|
140
|
+
const c = node.namedChild(i);
|
|
141
|
+
if (!c)
|
|
142
|
+
continue;
|
|
143
|
+
if (c.type === 'namespace_use_clause') {
|
|
144
|
+
pushUseClause(c, '', ctx);
|
|
145
|
+
}
|
|
146
|
+
else if (c.type === 'namespace_use_group') {
|
|
147
|
+
// Prefix is the first qualified_name before `{` — tree-sitter exposes it
|
|
148
|
+
// as a child node of type `namespace_name` or `qualified_name`.
|
|
149
|
+
let prefix = '';
|
|
150
|
+
for (let j = 0; j < c.namedChildCount; j++) {
|
|
151
|
+
const sub = c.namedChild(j);
|
|
152
|
+
if (!sub)
|
|
153
|
+
continue;
|
|
154
|
+
if (sub.type === 'namespace_name' || sub.type === 'qualified_name') {
|
|
155
|
+
prefix = sub.text + '\\';
|
|
156
|
+
}
|
|
157
|
+
else if (sub.type === 'namespace_use_clause' || sub.type === 'namespace_use_group_clause') {
|
|
158
|
+
pushUseClause(sub, prefix, ctx);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
function pushUseClause(node, prefix, ctx) {
|
|
165
|
+
// tree-sitter-php field names vary slightly between versions; do a tolerant
|
|
166
|
+
// walk: collect the first dotted/qualified name and an optional alias.
|
|
167
|
+
let source = '';
|
|
168
|
+
let alias;
|
|
169
|
+
for (let i = 0; i < node.namedChildCount; i++) {
|
|
170
|
+
const c = node.namedChild(i);
|
|
171
|
+
if (!c)
|
|
172
|
+
continue;
|
|
173
|
+
if (c.type === 'qualified_name' || c.type === 'namespace_name' || c.type === 'name') {
|
|
174
|
+
if (!source)
|
|
175
|
+
source = c.text;
|
|
176
|
+
else
|
|
177
|
+
alias = c.text; // a second name child is the alias
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
if (!source)
|
|
181
|
+
return;
|
|
182
|
+
const full = prefix + source;
|
|
183
|
+
const bare = full.split('\\').pop() ?? source;
|
|
184
|
+
ctx.imports.push({ source: full, names: [alias ?? bare], namespace: alias });
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=php.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"php.js","sourceRoot":"","sources":["../../src/parsers/php.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ParseResult } from './parser.js';
|
|
2
|
+
/**
|
|
3
|
+
* Vue Single-File Component parser.
|
|
4
|
+
*
|
|
5
|
+
* Vue SFCs are not really a "language" — they wrap HTML, script(s), and CSS.
|
|
6
|
+
* We only need the <script> / <script setup> blocks (where logic lives) and
|
|
7
|
+
* forward them to the TypeScript parser.
|
|
8
|
+
*
|
|
9
|
+
* Why regex instead of an HTML parser? v1.0 of @vue/compiler-sfc is ~30 MB
|
|
10
|
+
* of dependencies for what amounts to "find the script tag". Vue's grammar
|
|
11
|
+
* for SFC blocks is intentionally simple — closing tags are unambiguous,
|
|
12
|
+
* there's no nesting, tag names are fixed. Regex handles >99% of files;
|
|
13
|
+
* pathological edge cases fall back to "no symbols", which the rest of the
|
|
14
|
+
* pipeline tolerates gracefully.
|
|
15
|
+
*/
|
|
16
|
+
export declare function parseVueSfc(file: string, source: string): ParseResult;
|
|
17
|
+
//# sourceMappingURL=vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vue.d.ts","sourceRoot":"","sources":["../../src/parsers/vue.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CA2BrE"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { parseTypeScript } from './ts.js';
|
|
2
|
+
/**
|
|
3
|
+
* Vue Single-File Component parser.
|
|
4
|
+
*
|
|
5
|
+
* Vue SFCs are not really a "language" — they wrap HTML, script(s), and CSS.
|
|
6
|
+
* We only need the <script> / <script setup> blocks (where logic lives) and
|
|
7
|
+
* forward them to the TypeScript parser.
|
|
8
|
+
*
|
|
9
|
+
* Why regex instead of an HTML parser? v1.0 of @vue/compiler-sfc is ~30 MB
|
|
10
|
+
* of dependencies for what amounts to "find the script tag". Vue's grammar
|
|
11
|
+
* for SFC blocks is intentionally simple — closing tags are unambiguous,
|
|
12
|
+
* there's no nesting, tag names are fixed. Regex handles >99% of files;
|
|
13
|
+
* pathological edge cases fall back to "no symbols", which the rest of the
|
|
14
|
+
* pipeline tolerates gracefully.
|
|
15
|
+
*/
|
|
16
|
+
export function parseVueSfc(file, source) {
|
|
17
|
+
const blocks = extractScriptBlocks(source);
|
|
18
|
+
if (blocks.length === 0) {
|
|
19
|
+
return { symbols: [], imports: [], calls: [] };
|
|
20
|
+
}
|
|
21
|
+
const merged = { symbols: [], imports: [], calls: [] };
|
|
22
|
+
for (const block of blocks) {
|
|
23
|
+
// Parse each block as TS regardless of lang. tree-sitter-typescript handles
|
|
24
|
+
// plain JS just fine, so we don't bother dispatching here.
|
|
25
|
+
const inner = parseTypeScript(file, block.content);
|
|
26
|
+
// Shift line numbers from script-local back to SFC-global.
|
|
27
|
+
const offset = block.startLine - 1;
|
|
28
|
+
for (const sym of inner.symbols) {
|
|
29
|
+
merged.symbols.push({
|
|
30
|
+
...sym,
|
|
31
|
+
startLine: sym.startLine + offset,
|
|
32
|
+
endLine: sym.endLine + offset,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
merged.imports.push(...inner.imports);
|
|
36
|
+
merged.calls.push(...inner.calls);
|
|
37
|
+
}
|
|
38
|
+
return merged;
|
|
39
|
+
}
|
|
40
|
+
const SCRIPT_REGEX = /<script\b([^>]*)>([\s\S]*?)<\/script\s*>/gi;
|
|
41
|
+
function extractScriptBlocks(source) {
|
|
42
|
+
const blocks = [];
|
|
43
|
+
let m;
|
|
44
|
+
while ((m = SCRIPT_REGEX.exec(source)) !== null) {
|
|
45
|
+
const fullMatchStart = m.index;
|
|
46
|
+
const openTagEnd = fullMatchStart + m[0].indexOf('>') + 1;
|
|
47
|
+
const startLine = source.slice(0, openTagEnd).split('\n').length;
|
|
48
|
+
blocks.push({ content: m[2], startLine });
|
|
49
|
+
}
|
|
50
|
+
return blocks;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vue.js","sourceRoot":"","sources":["../../src/parsers/vue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG1C;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,MAAc;IACtD,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACjD,CAAC;IAED,MAAM,MAAM,GAAgB,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAEpE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,6EAA6E;QAC7E,2DAA2D;QAC3D,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAEnD,2DAA2D;QAC3D,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;QACnC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAChC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;gBAClB,GAAG,GAAG;gBACN,SAAS,EAAE,GAAG,CAAC,SAAS,GAAG,MAAM;gBACjC,OAAO,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM;aAC9B,CAAC,CAAC;QACL,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAOD,MAAM,YAAY,GAAG,4CAA4C,CAAC;AAElE,SAAS,mBAAmB,CAAC,MAAc;IACzC,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,IAAI,CAAyB,CAAC;IAC9B,OAAO,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC;QAC/B,MAAM,UAAU,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QACjE,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mincut-context",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Token-minimal context selection for AI coding agents. Builds a symbol graph of your repo and uses personalized PageRank + budget-constrained min-cut to pick the smallest provably-relevant context for any task.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/adapters/lib/index.js",
|
|
@@ -75,6 +75,7 @@
|
|
|
75
75
|
"js-tiktoken": "^1.0.15",
|
|
76
76
|
"react": "^18.3.1",
|
|
77
77
|
"tree-sitter": "^0.21.1",
|
|
78
|
+
"tree-sitter-php": "^0.23.12",
|
|
78
79
|
"tree-sitter-python": "^0.23.6",
|
|
79
80
|
"tree-sitter-typescript": "^0.23.2",
|
|
80
81
|
"zod": "^3.23.8"
|