@vibgrate/cli 2026.817.2 → 2026.818.2
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/dist/activity-MF2GNYAI.js +5 -0
- package/dist/activity-MF2GNYAI.js.map +1 -0
- package/dist/agent-X6VYCE63.js +30 -0
- package/dist/{agent-UQC7QN77.js.map → agent-X6VYCE63.js.map} +1 -1
- package/dist/{approvals-ASPJQUZK.js → approvals-TPQFQSWG.js} +5 -5
- package/dist/{approvals-ASPJQUZK.js.map → approvals-TPQFQSWG.js.map} +1 -1
- package/dist/attach-G5JUIWIT.js +10 -0
- package/dist/attach-G5JUIWIT.js.map +1 -0
- package/dist/baseline-DXI64VLW.js +9 -0
- package/dist/{baseline-FIV6PR2M.js.map → baseline-DXI64VLW.js.map} +1 -1
- package/dist/{chunk-AXZZ5CCG.js → chunk-2C33WR5O.js} +38 -19
- package/dist/chunk-2C33WR5O.js.map +1 -0
- package/dist/chunk-4NTNMT6T.js +6 -0
- package/dist/{chunk-PRG2ULPK.js.map → chunk-4NTNMT6T.js.map} +1 -1
- package/dist/chunk-5IQBIXHS.js +23 -0
- package/dist/chunk-5IQBIXHS.js.map +1 -0
- package/dist/{chunk-6K3XK7C5.js → chunk-6ABMV74F.js} +6 -3
- package/dist/chunk-6ABMV74F.js.map +1 -0
- package/dist/chunk-6BEBJCK4.js +467 -0
- package/dist/chunk-6BEBJCK4.js.map +1 -0
- package/dist/{chunk-E2FAQREZ.js → chunk-6PFHDHOL.js} +174 -401
- package/dist/chunk-6PFHDHOL.js.map +1 -0
- package/dist/chunk-6WRG7VDO.js +118 -0
- package/dist/chunk-6WRG7VDO.js.map +1 -0
- package/dist/{chunk-3NJUOIZQ.js → chunk-AEJYA6HZ.js} +5 -5
- package/dist/{chunk-3NJUOIZQ.js.map → chunk-AEJYA6HZ.js.map} +1 -1
- package/dist/{chunk-O2DL2Q55.js → chunk-B4EXD5LK.js} +5 -5
- package/dist/{chunk-O2DL2Q55.js.map → chunk-B4EXD5LK.js.map} +1 -1
- package/dist/{chunk-EXV4QSAD.js → chunk-BMOFJIMG.js} +3 -3
- package/dist/{chunk-EXV4QSAD.js.map → chunk-BMOFJIMG.js.map} +1 -1
- package/dist/chunk-DBX3DL27.js +26 -0
- package/dist/chunk-DBX3DL27.js.map +1 -0
- package/dist/{chunk-KNGAZDGF.js → chunk-E3O5UKNA.js} +151 -42
- package/dist/chunk-E3O5UKNA.js.map +1 -0
- package/dist/{chunk-RBIRXQR6.js → chunk-E53WBVUQ.js} +7 -14
- package/dist/chunk-E53WBVUQ.js.map +1 -0
- package/dist/{chunk-C3LMWZKF.js → chunk-FFXGWFAE.js} +4 -4
- package/dist/{chunk-C3LMWZKF.js.map → chunk-FFXGWFAE.js.map} +1 -1
- package/dist/chunk-H5Q4JUY4.js +47 -0
- package/dist/chunk-H5Q4JUY4.js.map +1 -0
- package/dist/{chunk-LHKQGVRF.js → chunk-HF6R73UC.js} +100 -11
- package/dist/chunk-HF6R73UC.js.map +1 -0
- package/dist/{chunk-K6DXETMC.js → chunk-JGA63RGF.js} +13 -12
- package/dist/chunk-JGA63RGF.js.map +1 -0
- package/dist/{chunk-3FMRFECC.js → chunk-KU7FI5EV.js} +3 -3
- package/dist/{chunk-3FMRFECC.js.map → chunk-KU7FI5EV.js.map} +1 -1
- package/dist/{chunk-5OL2TSHK.js → chunk-L2OS4WHT.js} +4 -4
- package/dist/{chunk-5OL2TSHK.js.map → chunk-L2OS4WHT.js.map} +1 -1
- package/dist/chunk-LJSJX6U4.js +38 -0
- package/dist/chunk-LJSJX6U4.js.map +1 -0
- package/dist/{chunk-Q4G2BWE3.js → chunk-MRZHNUN7.js} +12 -6
- package/dist/chunk-MRZHNUN7.js.map +1 -0
- package/dist/chunk-NDNNOAS6.js +16 -0
- package/dist/chunk-NDNNOAS6.js.map +1 -0
- package/dist/chunk-NJQZRM55.js +100 -0
- package/dist/chunk-NJQZRM55.js.map +1 -0
- package/dist/{chunk-DVW3SVCW.js → chunk-NKLYDSB7.js} +29 -9
- package/dist/chunk-NKLYDSB7.js.map +1 -0
- package/dist/{chunk-TVDMNIUT.js → chunk-O5IJDMTB.js} +4 -4
- package/dist/{chunk-TVDMNIUT.js.map → chunk-O5IJDMTB.js.map} +1 -1
- package/dist/chunk-POOL355F.js +237 -0
- package/dist/chunk-POOL355F.js.map +1 -0
- package/dist/{chunk-XLXJC7H3.js → chunk-PRHH4DVO.js} +5 -118
- package/dist/chunk-PRHH4DVO.js.map +1 -0
- package/dist/{chunk-3H3SVJUY.js → chunk-RHKOUPWT.js} +107 -542
- package/dist/chunk-RHKOUPWT.js.map +1 -0
- package/dist/{chunk-WAKP7SK7.js → chunk-V2UGRUTL.js} +225 -48
- package/dist/chunk-V2UGRUTL.js.map +1 -0
- package/dist/{chunk-2FEB5KJS.js → chunk-V6WONSIK.js} +5 -4
- package/dist/chunk-V6WONSIK.js.map +1 -0
- package/dist/{chunk-WVMOGIPC.js → chunk-VMAIDM4K.js} +3 -3
- package/dist/{chunk-WVMOGIPC.js.map → chunk-VMAIDM4K.js.map} +1 -1
- package/dist/{chunk-GOGMS3ST.js → chunk-VQ5KMHW6.js} +860 -65
- package/dist/chunk-VQ5KMHW6.js.map +1 -0
- package/dist/{chunk-M7IO3DXH.js → chunk-X2MQ7UFL.js} +250 -30
- package/dist/chunk-X2MQ7UFL.js.map +1 -0
- package/dist/{chunk-OZ3IFXRD.js → chunk-YENM3HT7.js} +5 -4
- package/dist/chunk-YENM3HT7.js.map +1 -0
- package/dist/{chunk-KJT2R6WW.js → chunk-YF54UMOU.js} +3 -3
- package/dist/{chunk-KJT2R6WW.js.map → chunk-YF54UMOU.js.map} +1 -1
- package/dist/{chunk-Q3M6K3HY.js → chunk-ZUOBPKVK.js} +3 -3
- package/dist/{chunk-Q3M6K3HY.js.map → chunk-ZUOBPKVK.js.map} +1 -1
- package/dist/cli.d.ts +6 -0
- package/dist/cli.js +711 -463
- package/dist/cli.js.map +1 -1
- package/dist/client-UQIELEEZ.js +8 -0
- package/dist/client-UQIELEEZ.js.map +1 -0
- package/dist/daemon-GUMWMKCA.js +31 -0
- package/dist/{daemon-FPTRHO5N.js.map → daemon-GUMWMKCA.js.map} +1 -1
- package/dist/embed-worker-main.js +3 -3
- package/dist/ensure-map-FHDJTO7Y.js +41 -0
- package/dist/{ensure-map-342G2IV3.js.map → ensure-map-FHDJTO7Y.js.map} +1 -1
- package/dist/graph-backend-W2D3HRRD.js +16 -0
- package/dist/{graph-backend-RNWQBT3P.js.map → graph-backend-W2D3HRRD.js.map} +1 -1
- package/dist/index.d.ts +633 -4
- package/dist/index.js +26 -17
- package/dist/index.js.map +1 -1
- package/dist/{interactive-SR7TMF6M.js → interactive-2MK4TLRD.js} +42 -34
- package/dist/interactive-2MK4TLRD.js.map +1 -0
- package/dist/load-4R4HYMBB.js +11 -0
- package/dist/{load-AYFECIQB.js.map → load-4R4HYMBB.js.map} +1 -1
- package/dist/parse-worker.js +3 -2
- package/dist/parse-worker.js.map +1 -1
- package/dist/publish-7YHRTBRA.js +9 -0
- package/dist/publish-7YHRTBRA.js.map +1 -0
- package/dist/{run-outcome-YQQJG3LW.js → run-outcome-H5GVDDZJ.js} +5 -5
- package/dist/{run-outcome-YQQJG3LW.js.map → run-outcome-H5GVDDZJ.js.map} +1 -1
- package/dist/runtime-session-JBIHHH5N.js +27 -0
- package/dist/{runtime-session-CNJ4DAV5.js.map → runtime-session-JBIHHH5N.js.map} +1 -1
- package/dist/semantic-status-2JFLIQQJ.js +4 -0
- package/dist/semantic-status-2JFLIQQJ.js.map +1 -0
- package/dist/{session-H34HUV2Y.js → session-N5IU4K5Q.js} +8 -8
- package/dist/{session-H34HUV2Y.js.map → session-N5IU4K5Q.js.map} +1 -1
- package/dist/slot-subscription-25GOARW5.js +95 -0
- package/dist/slot-subscription-25GOARW5.js.map +1 -0
- package/dist/{stream-json-55YDNAFX.js → stream-json-4WLSUF6I.js} +18 -15
- package/dist/stream-json-4WLSUF6I.js.map +1 -0
- package/dist/version-DTEU3SQD.js +4 -0
- package/dist/{version-WSE3QOPK.js.map → version-DTEU3SQD.js.map} +1 -1
- package/dist/{vg-mcp-bridge-2CNLHNEL.js → vg-mcp-bridge-KDVYIMFX.js} +12 -11
- package/dist/vg-mcp-bridge-KDVYIMFX.js.map +1 -0
- package/dist/{vgd-URUZQORN.js → vgd-M7UOPWLB.js} +15 -10
- package/dist/vgd-M7UOPWLB.js.map +1 -0
- package/package.json +1 -1
- package/dist/agent-UQC7QN77.js +0 -27
- package/dist/baseline-FIV6PR2M.js +0 -9
- package/dist/chunk-2FEB5KJS.js.map +0 -1
- package/dist/chunk-3H3SVJUY.js.map +0 -1
- package/dist/chunk-6K3XK7C5.js.map +0 -1
- package/dist/chunk-AXZZ5CCG.js.map +0 -1
- package/dist/chunk-DVW3SVCW.js.map +0 -1
- package/dist/chunk-E2FAQREZ.js.map +0 -1
- package/dist/chunk-GOGMS3ST.js.map +0 -1
- package/dist/chunk-K6DXETMC.js.map +0 -1
- package/dist/chunk-KNGAZDGF.js.map +0 -1
- package/dist/chunk-LHKQGVRF.js.map +0 -1
- package/dist/chunk-M7IO3DXH.js.map +0 -1
- package/dist/chunk-OZ3IFXRD.js.map +0 -1
- package/dist/chunk-PRG2ULPK.js +0 -6
- package/dist/chunk-Q4G2BWE3.js.map +0 -1
- package/dist/chunk-RBIRXQR6.js.map +0 -1
- package/dist/chunk-WAKP7SK7.js.map +0 -1
- package/dist/chunk-XLXJC7H3.js.map +0 -1
- package/dist/daemon-FPTRHO5N.js +0 -26
- package/dist/ensure-map-342G2IV3.js +0 -33
- package/dist/graph-backend-RNWQBT3P.js +0 -15
- package/dist/interactive-SR7TMF6M.js.map +0 -1
- package/dist/load-AYFECIQB.js +0 -11
- package/dist/runtime-session-CNJ4DAV5.js +0 -22
- package/dist/stream-json-55YDNAFX.js.map +0 -1
- package/dist/version-WSE3QOPK.js +0 -4
- package/dist/vg-mcp-bridge-2CNLHNEL.js.map +0 -1
- package/dist/vgd-URUZQORN.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { vgdRequest } from './chunk-RBIRXQR6.js';
|
|
2
1
|
import { resolveOne } from './chunk-J7LKEB2R.js';
|
|
3
|
-
import { impactOf, queryGraph } from './chunk-
|
|
2
|
+
import { impactOf, queryGraph } from './chunk-MRZHNUN7.js';
|
|
3
|
+
import { vgdRequest } from './chunk-E53WBVUQ.js';
|
|
4
4
|
|
|
5
5
|
// src/code/graph-backend.ts
|
|
6
6
|
function localGraphBackend(graph) {
|
|
@@ -132,5 +132,5 @@ function resolveSymbolId(graph, symbol) {
|
|
|
132
132
|
}
|
|
133
133
|
|
|
134
134
|
export { localGraphBackend, resolveGraphBackend, vgdGraphBackend };
|
|
135
|
-
//# sourceMappingURL=chunk-
|
|
136
|
-
//# sourceMappingURL=chunk-
|
|
135
|
+
//# sourceMappingURL=chunk-O5IJDMTB.js.map
|
|
136
|
+
//# sourceMappingURL=chunk-O5IJDMTB.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/code/graph-backend.ts"],"names":[],"mappings":"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","file":"chunk-TVDMNIUT.js","sourcesContent":["/**\n * Graph query backend for the agent tool layer (Fusion Runtime).\n *\n * Tools prefer a warm ActiveGraph in vgd when a daemon session is attached;\n * otherwise they fall back to the in-process {@link VgGraph}. Failures never\n * surface to the model as transport errors — they degrade to local query.\n */\n\nimport { queryGraph } from '../engine/query.js';\nimport { impactOf } from '../engine/impact.js';\nimport { resolveOne } from '../engine/lookup.js';\nimport { vgdRequest, type VgdClientOptions } from '../runtime/vgd/client.js';\nimport type { VgdRequest } from '../runtime/vgd/protocol.js';\nimport type { VgGraph } from '../schema.js';\n\nexport type GraphBackendSource = 'local' | 'vgd';\n\nexport interface GraphSearchHit {\n id: string;\n qualifiedName: string;\n kind: string;\n file: string;\n line: number;\n score: number;\n why: string;\n signature?: string | null;\n}\n\nexport interface GraphImpactHit {\n id: string;\n name: string;\n kind: string;\n file: string;\n line: number;\n depth: number;\n confidence: number;\n}\n\nexport interface GraphImpactResult {\n root: { id: string; name: string };\n depth: number;\n affected: GraphImpactHit[];\n direct: number;\n transitive: number;\n source: GraphBackendSource;\n}\n\nexport interface GraphSearchResult {\n matches: GraphSearchHit[];\n source: GraphBackendSource;\n}\n\nexport interface GraphBackend {\n readonly source: GraphBackendSource;\n search(query: string, opts?: { limit?: number }): Promise<GraphSearchResult>;\n impact(symbol: string, opts?: { depth?: number }): Promise<GraphImpactResult | null>;\n}\n\n/** Pure in-process backend over a loaded graph. */\nexport function localGraphBackend(graph: VgGraph): GraphBackend {\n return {\n source: 'local',\n async search(query, opts) {\n const res = queryGraph(graph, query, { budget: 1500, limit: opts?.limit ?? 10 });\n return {\n source: 'local',\n matches: res.matches.map((m) => ({\n id: m.node.id,\n qualifiedName: m.node.qualifiedName,\n kind: m.node.kind,\n file: m.node.file,\n line: m.node.span?.start ?? 0,\n score: m.score,\n why: m.why,\n signature: m.node.signature ?? null,\n })),\n };\n },\n async impact(symbol, opts) {\n const node = resolveSymbolId(graph, symbol);\n if (!node) return null;\n const imp = impactOf(graph, node, { depth: opts?.depth ?? 4 });\n return {\n source: 'local',\n root: imp.root,\n depth: imp.depth,\n affected: imp.affected.map((a) => ({\n id: a.id,\n name: a.name,\n kind: a.kind,\n file: a.file,\n line: a.line,\n depth: a.depth,\n confidence: a.confidence,\n })),\n direct: imp.direct,\n transitive: imp.transitive,\n };\n },\n };\n}\n\nexport interface VgdGraphBackendOptions {\n repositoryId: string;\n gitRef?: string;\n socketPath?: string;\n /** Always required for fall back when vgd has no slot or is down. */\n fallback: VgGraph;\n request?: (req: VgdRequest, opts?: VgdClientOptions) => Promise<unknown>;\n}\n\n/**\n * Prefer vgd query/impact; on any failure or empty daemon state, use local.\n * The returned `source` reflects which path answered.\n */\nexport function vgdGraphBackend(options: VgdGraphBackendOptions): GraphBackend {\n const local = localGraphBackend(options.fallback);\n const request = options.request ?? ((req, opts) => vgdRequest(req, opts));\n const clientOpts: VgdClientOptions = { socketPath: options.socketPath };\n\n return {\n source: 'vgd',\n async search(query, opts) {\n try {\n const res = (await request(\n {\n op: 'query-graph',\n repositoryId: options.repositoryId,\n query,\n limit: opts?.limit ?? 10,\n gitRef: options.gitRef,\n },\n clientOpts,\n )) as {\n ok?: boolean;\n matches?: Array<{\n id: string;\n qualifiedName: string;\n kind: string;\n file: string;\n line: number;\n score: number;\n why: string;\n }>;\n };\n if (res?.ok && Array.isArray(res.matches)) {\n return {\n source: 'vgd',\n matches: res.matches.map((m) => ({\n id: m.id,\n qualifiedName: m.qualifiedName,\n kind: m.kind,\n file: m.file,\n line: m.line,\n score: m.score,\n why: m.why,\n signature: null,\n })),\n };\n }\n } catch {\n /* fall through */\n }\n return local.search(query, opts);\n },\n async impact(symbol, opts) {\n try {\n const res = (await request(\n {\n op: 'impact-of',\n repositoryId: options.repositoryId,\n symbol,\n depth: opts?.depth ?? 4,\n gitRef: options.gitRef,\n },\n clientOpts,\n )) as {\n ok?: boolean;\n root?: { id: string; name: string };\n depth?: number;\n affected?: GraphImpactHit[];\n direct?: number;\n transitive?: number;\n };\n if (res?.ok && res.root && Array.isArray(res.affected)) {\n return {\n source: 'vgd',\n root: res.root,\n depth: res.depth ?? opts?.depth ?? 4,\n affected: res.affected,\n direct: res.direct ?? 0,\n transitive: res.transitive ?? 0,\n };\n }\n } catch {\n /* fall through */\n }\n return local.impact(symbol, opts);\n },\n };\n}\n\n/**\n * Pick a backend: vgd when repositoryId + socket are known, else local.\n */\nexport function resolveGraphBackend(input: {\n graph: VgGraph;\n repositoryId?: string | null;\n gitRef?: string | null;\n socketPath?: string | null;\n}): GraphBackend {\n if (input.repositoryId && input.socketPath) {\n return vgdGraphBackend({\n repositoryId: input.repositoryId,\n gitRef: input.gitRef ?? undefined,\n socketPath: input.socketPath,\n fallback: input.graph,\n });\n }\n return localGraphBackend(input.graph);\n}\n\nfunction resolveSymbolId(graph: VgGraph, symbol: string): string | null {\n if (graph.nodes.some((n) => n.id === symbol)) return symbol;\n const hit = resolveOne(graph, symbol);\n if (hit.node?.id) return hit.node.id;\n if (hit.candidates.length === 1 && hit.candidates[0]?.id) return hit.candidates[0].id;\n const q = symbol.toLowerCase();\n const byQn = graph.nodes.find((n) => n.qualifiedName?.toLowerCase() === q || n.name?.toLowerCase() === q);\n return byQn?.id ?? null;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/code/graph-backend.ts"],"names":[],"mappings":"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","file":"chunk-O5IJDMTB.js","sourcesContent":["/**\n * Graph query backend for the agent tool layer (Fusion Runtime).\n *\n * Tools prefer a warm ActiveGraph in vgd when a daemon session is attached;\n * otherwise they fall back to the in-process {@link VgGraph}. Failures never\n * surface to the model as transport errors — they degrade to local query.\n */\n\nimport { queryGraph } from '../engine/query.js';\nimport { impactOf } from '../engine/impact.js';\nimport { resolveOne } from '../engine/lookup.js';\nimport { vgdRequest, type VgdClientOptions } from '../runtime/vgd/client.js';\nimport type { VgdRequest } from '../runtime/vgd/protocol.js';\nimport type { VgGraph } from '../schema.js';\n\nexport type GraphBackendSource = 'local' | 'vgd';\n\nexport interface GraphSearchHit {\n id: string;\n qualifiedName: string;\n kind: string;\n file: string;\n line: number;\n score: number;\n why: string;\n signature?: string | null;\n}\n\nexport interface GraphImpactHit {\n id: string;\n name: string;\n kind: string;\n file: string;\n line: number;\n depth: number;\n confidence: number;\n}\n\nexport interface GraphImpactResult {\n root: { id: string; name: string };\n depth: number;\n affected: GraphImpactHit[];\n direct: number;\n transitive: number;\n source: GraphBackendSource;\n}\n\nexport interface GraphSearchResult {\n matches: GraphSearchHit[];\n source: GraphBackendSource;\n}\n\nexport interface GraphBackend {\n readonly source: GraphBackendSource;\n search(query: string, opts?: { limit?: number }): Promise<GraphSearchResult>;\n impact(symbol: string, opts?: { depth?: number }): Promise<GraphImpactResult | null>;\n}\n\n/** Pure in-process backend over a loaded graph. */\nexport function localGraphBackend(graph: VgGraph): GraphBackend {\n return {\n source: 'local',\n async search(query, opts) {\n const res = queryGraph(graph, query, { budget: 1500, limit: opts?.limit ?? 10 });\n return {\n source: 'local',\n matches: res.matches.map((m) => ({\n id: m.node.id,\n qualifiedName: m.node.qualifiedName,\n kind: m.node.kind,\n file: m.node.file,\n line: m.node.span?.start ?? 0,\n score: m.score,\n why: m.why,\n signature: m.node.signature ?? null,\n })),\n };\n },\n async impact(symbol, opts) {\n const node = resolveSymbolId(graph, symbol);\n if (!node) return null;\n const imp = impactOf(graph, node, { depth: opts?.depth ?? 4 });\n return {\n source: 'local',\n root: imp.root,\n depth: imp.depth,\n affected: imp.affected.map((a) => ({\n id: a.id,\n name: a.name,\n kind: a.kind,\n file: a.file,\n line: a.line,\n depth: a.depth,\n confidence: a.confidence,\n })),\n direct: imp.direct,\n transitive: imp.transitive,\n };\n },\n };\n}\n\nexport interface VgdGraphBackendOptions {\n repositoryId: string;\n gitRef?: string;\n socketPath?: string;\n /** Always required for fall back when vgd has no slot or is down. */\n fallback: VgGraph;\n request?: (req: VgdRequest, opts?: VgdClientOptions) => Promise<unknown>;\n}\n\n/**\n * Prefer vgd query/impact; on any failure or empty daemon state, use local.\n * The returned `source` reflects which path answered.\n */\nexport function vgdGraphBackend(options: VgdGraphBackendOptions): GraphBackend {\n const local = localGraphBackend(options.fallback);\n const request = options.request ?? ((req, opts) => vgdRequest(req, opts));\n const clientOpts: VgdClientOptions = { socketPath: options.socketPath };\n\n return {\n source: 'vgd',\n async search(query, opts) {\n try {\n const res = (await request(\n {\n op: 'query-graph',\n repositoryId: options.repositoryId,\n query,\n limit: opts?.limit ?? 10,\n gitRef: options.gitRef,\n },\n clientOpts,\n )) as {\n ok?: boolean;\n matches?: Array<{\n id: string;\n qualifiedName: string;\n kind: string;\n file: string;\n line: number;\n score: number;\n why: string;\n }>;\n };\n if (res?.ok && Array.isArray(res.matches)) {\n return {\n source: 'vgd',\n matches: res.matches.map((m) => ({\n id: m.id,\n qualifiedName: m.qualifiedName,\n kind: m.kind,\n file: m.file,\n line: m.line,\n score: m.score,\n why: m.why,\n signature: null,\n })),\n };\n }\n } catch {\n /* fall through */\n }\n return local.search(query, opts);\n },\n async impact(symbol, opts) {\n try {\n const res = (await request(\n {\n op: 'impact-of',\n repositoryId: options.repositoryId,\n symbol,\n depth: opts?.depth ?? 4,\n gitRef: options.gitRef,\n },\n clientOpts,\n )) as {\n ok?: boolean;\n root?: { id: string; name: string };\n depth?: number;\n affected?: GraphImpactHit[];\n direct?: number;\n transitive?: number;\n };\n if (res?.ok && res.root && Array.isArray(res.affected)) {\n return {\n source: 'vgd',\n root: res.root,\n depth: res.depth ?? opts?.depth ?? 4,\n affected: res.affected,\n direct: res.direct ?? 0,\n transitive: res.transitive ?? 0,\n };\n }\n } catch {\n /* fall through */\n }\n return local.impact(symbol, opts);\n },\n };\n}\n\n/**\n * Pick a backend: vgd when repositoryId + socket are known, else local.\n */\nexport function resolveGraphBackend(input: {\n graph: VgGraph;\n repositoryId?: string | null;\n gitRef?: string | null;\n socketPath?: string | null;\n}): GraphBackend {\n if (input.repositoryId && input.socketPath) {\n return vgdGraphBackend({\n repositoryId: input.repositoryId,\n gitRef: input.gitRef ?? undefined,\n socketPath: input.socketPath,\n fallback: input.graph,\n });\n }\n return localGraphBackend(input.graph);\n}\n\nfunction resolveSymbolId(graph: VgGraph, symbol: string): string | null {\n if (graph.nodes.some((n) => n.id === symbol)) return symbol;\n const hit = resolveOne(graph, symbol);\n if (hit.node?.id) return hit.node.id;\n if (hit.candidates.length === 1 && hit.candidates[0]?.id) return hit.candidates[0].id;\n const q = symbol.toLowerCase();\n const byQn = graph.nodes.find((n) => n.qualifiedName?.toLowerCase() === q || n.name?.toLowerCase() === q);\n return byQn?.id ?? null;\n}\n"]}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { langById, langForExtension } from './chunk-6WRG7VDO.js';
|
|
2
|
+
import * as fs from 'fs';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
import ignore from 'ignore';
|
|
5
|
+
|
|
6
|
+
var SKIP_DIRS = /* @__PURE__ */ new Set([
|
|
7
|
+
// Version control, IDE & tool metadata
|
|
8
|
+
".git",
|
|
9
|
+
".svn",
|
|
10
|
+
".hg",
|
|
11
|
+
".idea",
|
|
12
|
+
".vscode",
|
|
13
|
+
".vs",
|
|
14
|
+
// Claude Code agent state / worktrees (full monorepo copies under .claude/worktrees/)
|
|
15
|
+
".claude",
|
|
16
|
+
".vibgrate",
|
|
17
|
+
".wrangler",
|
|
18
|
+
".turbo",
|
|
19
|
+
".cache",
|
|
20
|
+
// Migration / tool backup trees (NativeScript, codemods, agent worktrees)
|
|
21
|
+
".migration_backup",
|
|
22
|
+
".update_backup",
|
|
23
|
+
".backup",
|
|
24
|
+
".bak",
|
|
25
|
+
".history",
|
|
26
|
+
".snapshots",
|
|
27
|
+
".snapshots_bak",
|
|
28
|
+
// JavaScript / Node — installed dependency trees
|
|
29
|
+
"node_modules",
|
|
30
|
+
"bower_components",
|
|
31
|
+
"jspm_packages",
|
|
32
|
+
"web_modules",
|
|
33
|
+
".pnpm-store",
|
|
34
|
+
".yarn",
|
|
35
|
+
// JS/TS meta-framework & bundler build output
|
|
36
|
+
".next",
|
|
37
|
+
".nuxt",
|
|
38
|
+
".output",
|
|
39
|
+
".svelte-kit",
|
|
40
|
+
".astro",
|
|
41
|
+
".vercel",
|
|
42
|
+
".netlify",
|
|
43
|
+
".angular",
|
|
44
|
+
".parcel-cache",
|
|
45
|
+
".docusaurus",
|
|
46
|
+
"storybook-static",
|
|
47
|
+
// Generic build / dist / coverage output
|
|
48
|
+
"dist",
|
|
49
|
+
"build",
|
|
50
|
+
"out",
|
|
51
|
+
"coverage",
|
|
52
|
+
// Native mobile platform build trees (NativeScript / Cordova / Capacitor)
|
|
53
|
+
"platforms",
|
|
54
|
+
"App_Resources",
|
|
55
|
+
// Vendored third-party source trees
|
|
56
|
+
"vendor",
|
|
57
|
+
"Pods",
|
|
58
|
+
"Carthage",
|
|
59
|
+
// Python — virtualenvs & tool caches
|
|
60
|
+
".venv",
|
|
61
|
+
"venv",
|
|
62
|
+
"virtualenv",
|
|
63
|
+
".tox",
|
|
64
|
+
".nox",
|
|
65
|
+
"__pycache__",
|
|
66
|
+
".mypy_cache",
|
|
67
|
+
".pytest_cache",
|
|
68
|
+
".ruff_cache",
|
|
69
|
+
".eggs",
|
|
70
|
+
".ipynb_checkpoints",
|
|
71
|
+
// Ruby
|
|
72
|
+
".bundle",
|
|
73
|
+
// Rust / Maven / sbt / Clojure — all build into target/
|
|
74
|
+
"target",
|
|
75
|
+
// JVM (Gradle / Maven) & .NET build output
|
|
76
|
+
".gradle",
|
|
77
|
+
"bin",
|
|
78
|
+
"obj",
|
|
79
|
+
"TestResults",
|
|
80
|
+
// Swift / Xcode
|
|
81
|
+
".build",
|
|
82
|
+
".swiftpm",
|
|
83
|
+
"DerivedData",
|
|
84
|
+
// Dart / Flutter
|
|
85
|
+
".dart_tool",
|
|
86
|
+
// Elixir / Erlang
|
|
87
|
+
"_build",
|
|
88
|
+
"deps",
|
|
89
|
+
// Haskell (Cabal / Stack)
|
|
90
|
+
"dist-newstyle",
|
|
91
|
+
".stack-work",
|
|
92
|
+
// Infrastructure-as-code build/state
|
|
93
|
+
".terraform",
|
|
94
|
+
".serverless",
|
|
95
|
+
"cdk.out",
|
|
96
|
+
".aws-sam"
|
|
97
|
+
]);
|
|
98
|
+
function isSkippedDirName(name) {
|
|
99
|
+
if (!name) return false;
|
|
100
|
+
if (SKIP_DIRS.has(name)) return true;
|
|
101
|
+
if (name.startsWith(".venv") || name.startsWith("venv-")) return true;
|
|
102
|
+
if (name === "site-packages") return true;
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
var SKIP_FILES = /* @__PURE__ */ new Set([
|
|
106
|
+
// JavaScript / Node
|
|
107
|
+
"package-lock.json",
|
|
108
|
+
"npm-shrinkwrap.json",
|
|
109
|
+
"yarn.lock",
|
|
110
|
+
"pnpm-lock.yaml",
|
|
111
|
+
"bun.lockb",
|
|
112
|
+
"bun.lock",
|
|
113
|
+
"deno.lock",
|
|
114
|
+
".pnp.cjs",
|
|
115
|
+
".pnp.data.json",
|
|
116
|
+
".pnp.loader.mjs",
|
|
117
|
+
// Python
|
|
118
|
+
"poetry.lock",
|
|
119
|
+
"pipfile.lock",
|
|
120
|
+
"pdm.lock",
|
|
121
|
+
"uv.lock",
|
|
122
|
+
"pylock.toml",
|
|
123
|
+
"conda-lock.yml",
|
|
124
|
+
// Ruby
|
|
125
|
+
"gemfile.lock",
|
|
126
|
+
// PHP
|
|
127
|
+
"composer.lock",
|
|
128
|
+
// Rust
|
|
129
|
+
"cargo.lock",
|
|
130
|
+
// Go
|
|
131
|
+
"go.sum",
|
|
132
|
+
"go.work.sum",
|
|
133
|
+
"gopkg.lock",
|
|
134
|
+
"glide.lock",
|
|
135
|
+
// .NET
|
|
136
|
+
"packages.lock.json",
|
|
137
|
+
// Java / JVM (Gradle)
|
|
138
|
+
"gradle.lockfile",
|
|
139
|
+
// Swift / Xcode
|
|
140
|
+
"package.resolved",
|
|
141
|
+
// Dart / Flutter
|
|
142
|
+
"pubspec.lock",
|
|
143
|
+
// Elixir
|
|
144
|
+
"mix.lock",
|
|
145
|
+
// Haskell (Cabal / Stack)
|
|
146
|
+
"cabal.project.freeze",
|
|
147
|
+
"stack.yaml.lock",
|
|
148
|
+
// Julia
|
|
149
|
+
"manifest.toml",
|
|
150
|
+
// R
|
|
151
|
+
"renv.lock",
|
|
152
|
+
// Perl (Carton)
|
|
153
|
+
"cpanfile.snapshot",
|
|
154
|
+
// CocoaPods / Carthage
|
|
155
|
+
"podfile.lock",
|
|
156
|
+
"cartfile.resolved",
|
|
157
|
+
// Terraform / IaC
|
|
158
|
+
".terraform.lock.hcl",
|
|
159
|
+
// Helm
|
|
160
|
+
"chart.lock",
|
|
161
|
+
// C / C++ (Conan)
|
|
162
|
+
"conan.lock",
|
|
163
|
+
// Bazel
|
|
164
|
+
"module.bazel.lock",
|
|
165
|
+
// Nix
|
|
166
|
+
"flake.lock"
|
|
167
|
+
]);
|
|
168
|
+
function toPosix(p) {
|
|
169
|
+
return p.split(path.sep).join("/");
|
|
170
|
+
}
|
|
171
|
+
function buildRootIgnore(root, exclude) {
|
|
172
|
+
const ig = ignore();
|
|
173
|
+
const gitignorePath = path.join(root, ".gitignore");
|
|
174
|
+
if (fs.existsSync(gitignorePath)) {
|
|
175
|
+
ig.add(fs.readFileSync(gitignorePath, "utf8"));
|
|
176
|
+
}
|
|
177
|
+
if (exclude.length) ig.add(exclude);
|
|
178
|
+
return ig;
|
|
179
|
+
}
|
|
180
|
+
function discover(options) {
|
|
181
|
+
const root = path.resolve(options.root);
|
|
182
|
+
const onlyLangs = (options.only ?? []).filter(Boolean);
|
|
183
|
+
const allowLang = (lang) => onlyLangs.length === 0 || onlyLangs.includes(lang.id);
|
|
184
|
+
for (const id of onlyLangs) {
|
|
185
|
+
if (!langById(id)) {
|
|
186
|
+
throw new UsageError(`unknown language "${id}" for --only`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
const rootIg = buildRootIgnore(root, options.exclude ?? []);
|
|
190
|
+
const scopeAbs = (options.paths && options.paths.length ? options.paths.map((p) => path.resolve(root, p)) : [root]).filter((p) => fs.existsSync(p));
|
|
191
|
+
const found = /* @__PURE__ */ new Map();
|
|
192
|
+
const considerFile = (abs) => {
|
|
193
|
+
const rel = toPosix(path.relative(root, abs));
|
|
194
|
+
if (rel.startsWith("..")) return;
|
|
195
|
+
if (rel === "" || rootIg.ignores(rel)) return;
|
|
196
|
+
if (SKIP_FILES.has(path.basename(abs).toLowerCase())) return;
|
|
197
|
+
const lang = langForExtension(path.extname(abs));
|
|
198
|
+
if (!lang || !allowLang(lang)) return;
|
|
199
|
+
found.set(rel, { rel, abs, lang });
|
|
200
|
+
};
|
|
201
|
+
const walk = (dir) => {
|
|
202
|
+
let entries;
|
|
203
|
+
try {
|
|
204
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
205
|
+
} catch {
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
for (const entry of entries) {
|
|
209
|
+
const abs = path.join(dir, entry.name);
|
|
210
|
+
const rel = toPosix(path.relative(root, abs));
|
|
211
|
+
if (entry.isDirectory()) {
|
|
212
|
+
if (isSkippedDirName(entry.name)) continue;
|
|
213
|
+
if (rel && rootIg.ignores(`${rel}/`)) continue;
|
|
214
|
+
walk(abs);
|
|
215
|
+
} else if (entry.isFile()) {
|
|
216
|
+
considerFile(abs);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
};
|
|
220
|
+
for (const scope of scopeAbs) {
|
|
221
|
+
const stat = fs.statSync(scope);
|
|
222
|
+
if (stat.isDirectory()) walk(scope);
|
|
223
|
+
else if (stat.isFile()) considerFile(scope);
|
|
224
|
+
}
|
|
225
|
+
return [...found.values()].sort((a, b) => a.rel < b.rel ? -1 : a.rel > b.rel ? 1 : 0);
|
|
226
|
+
}
|
|
227
|
+
var UsageError = class extends Error {
|
|
228
|
+
isUsageError = true;
|
|
229
|
+
constructor(message) {
|
|
230
|
+
super(message);
|
|
231
|
+
this.name = "UsageError";
|
|
232
|
+
}
|
|
233
|
+
};
|
|
234
|
+
|
|
235
|
+
export { SKIP_DIRS, SKIP_FILES, UsageError, discover, isSkippedDirName };
|
|
236
|
+
//# sourceMappingURL=chunk-POOL355F.js.map
|
|
237
|
+
//# sourceMappingURL=chunk-POOL355F.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/engine/discover.ts"],"names":[],"mappings":"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","file":"chunk-POOL355F.js","sourcesContent":["import * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport ignore, { type Ignore } from 'ignore';\nimport { langForExtension, langById, type LanguageDef } from './languages.js';\n\n/**\n * Deterministic file discovery.\n *\n * Respects `.gitignore` (including nested ones), explicit config excludes, and a\n * built-in SKIP_DIRS set consistent with the scanner. Results are returned\n * sorted by relative POSIX path so the build is order-independent of the\n * filesystem.\n */\n\n// Directories never worth walking — dependency trees, build output, and\n// VCS/IDE metadata. Kept aligned with the scanner's skip list (core-open\n// `utils/fs.ts` SKIP_DIRS): the engine stays self-contained (no runtime\n// import), and `test/discover-skips.test.ts` asserts this set covers the\n// scanner's, so the graph can never index a package folder the scanner\n// already decided is third-party.\n//\n// Exact names only. For prefix patterns (`.venv-*`, `venv-*`) and install\n// trees (`site-packages`), use {@link isSkippedDirName}.\nexport const SKIP_DIRS = new Set<string>([\n // Version control, IDE & tool metadata\n '.git', '.svn', '.hg',\n '.idea', '.vscode', '.vs',\n // Claude Code agent state / worktrees (full monorepo copies under .claude/worktrees/)\n '.claude',\n '.vibgrate', '.wrangler', '.turbo', '.cache',\n // Migration / tool backup trees (NativeScript, codemods, agent worktrees)\n '.migration_backup', '.update_backup', '.backup', '.bak',\n '.history', '.snapshots', '.snapshots_bak',\n // JavaScript / Node — installed dependency trees\n 'node_modules', 'bower_components', 'jspm_packages', 'web_modules',\n '.pnpm-store', '.yarn',\n // JS/TS meta-framework & bundler build output\n '.next', '.nuxt', '.output', '.svelte-kit', '.astro',\n '.vercel', '.netlify', '.angular', '.parcel-cache', '.docusaurus',\n 'storybook-static',\n // Generic build / dist / coverage output\n 'dist', 'build', 'out', 'coverage',\n // Native mobile platform build trees (NativeScript / Cordova / Capacitor)\n 'platforms', 'App_Resources',\n // Vendored third-party source trees\n 'vendor', 'Pods', 'Carthage',\n // Python — virtualenvs & tool caches\n '.venv', 'venv', 'virtualenv', '.tox', '.nox',\n '__pycache__', '.mypy_cache', '.pytest_cache', '.ruff_cache',\n '.eggs', '.ipynb_checkpoints',\n // Ruby\n '.bundle',\n // Rust / Maven / sbt / Clojure — all build into target/\n 'target',\n // JVM (Gradle / Maven) & .NET build output\n '.gradle', 'bin', 'obj', 'TestResults',\n // Swift / Xcode\n '.build', '.swiftpm', 'DerivedData',\n // Dart / Flutter\n '.dart_tool',\n // Elixir / Erlang\n '_build', 'deps',\n // Haskell (Cabal / Stack)\n 'dist-newstyle', '.stack-work',\n // Infrastructure-as-code build/state\n '.terraform', '.serverless', 'cdk.out', '.aws-sam',\n]);\n\n/**\n * True when a directory basename must be pruned from discovery / scoring walks.\n * Covers exact {@link SKIP_DIRS} names plus common virtualenv naming variants\n * (`.venv-contextbench`, `venv-tools`, …) and Python install trees\n * (`site-packages`) that mint hundreds of phantom nested \"projects\".\n */\nexport function isSkippedDirName(name: string): boolean {\n if (!name) return false;\n if (SKIP_DIRS.has(name)) return true;\n // Custom-named virtualenvs (uv/poetry/team convention: `.venv-<purpose>`).\n if (name.startsWith('.venv') || name.startsWith('venv-')) return true;\n // Python install tree — never source we own.\n if (name === 'site-packages') return true;\n return false;\n}\n\n// Lockfiles and generated dependency manifests — never hand-written source,\n// and single files can run to many MB (a pnpm-lock.yaml, a Yarn PnP .pnp.cjs).\n// Most carry extensions the graph doesn't parse anyway, but the ones that do\n// (`.pnp.cjs` is JavaScript) would otherwise be indexed as huge phantom\n// modules. Aligned with the scanner's SOURCE_EXCLUDE_FILES (core-open\n// `utils/fs.ts`), enforced by `test/discover-skips.test.ts`. Matched\n// case-insensitively against the basename; every entry must be lowercase.\nexport const SKIP_FILES = new Set<string>([\n // JavaScript / Node\n 'package-lock.json', 'npm-shrinkwrap.json', 'yarn.lock',\n 'pnpm-lock.yaml', 'bun.lockb', 'bun.lock', 'deno.lock',\n '.pnp.cjs', '.pnp.data.json', '.pnp.loader.mjs',\n // Python\n 'poetry.lock', 'pipfile.lock', 'pdm.lock', 'uv.lock',\n 'pylock.toml', 'conda-lock.yml',\n // Ruby\n 'gemfile.lock',\n // PHP\n 'composer.lock',\n // Rust\n 'cargo.lock',\n // Go\n 'go.sum', 'go.work.sum', 'gopkg.lock', 'glide.lock',\n // .NET\n 'packages.lock.json',\n // Java / JVM (Gradle)\n 'gradle.lockfile',\n // Swift / Xcode\n 'package.resolved',\n // Dart / Flutter\n 'pubspec.lock',\n // Elixir\n 'mix.lock',\n // Haskell (Cabal / Stack)\n 'cabal.project.freeze', 'stack.yaml.lock',\n // Julia\n 'manifest.toml',\n // R\n 'renv.lock',\n // Perl (Carton)\n 'cpanfile.snapshot',\n // CocoaPods / Carthage\n 'podfile.lock', 'cartfile.resolved',\n // Terraform / IaC\n '.terraform.lock.hcl',\n // Helm\n 'chart.lock',\n // C / C++ (Conan)\n 'conan.lock',\n // Bazel\n 'module.bazel.lock',\n // Nix\n 'flake.lock',\n]);\n\nexport interface DiscoverOptions {\n /** Absolute root directory. */\n root: string;\n /** Restrict to these language ids (e.g. ['ts','py']). Empty = all. */\n only?: string[];\n /** Additional ignore globs (gitignore syntax), e.g. from config `exclude`. */\n exclude?: string[];\n /** Explicit sub-paths to scope to (relative or absolute). */\n paths?: string[];\n}\n\nexport interface DiscoveredFile {\n /** Relative POSIX path from root. */\n rel: string;\n /** Absolute path. */\n abs: string;\n lang: LanguageDef;\n}\n\nfunction toPosix(p: string): string {\n return p.split(path.sep).join('/');\n}\n\n/** Build the ignore matcher from the repo's .gitignore plus extra excludes. */\nfunction buildRootIgnore(root: string, exclude: string[]): Ignore {\n const ig = ignore();\n const gitignorePath = path.join(root, '.gitignore');\n if (fs.existsSync(gitignorePath)) {\n ig.add(fs.readFileSync(gitignorePath, 'utf8'));\n }\n if (exclude.length) ig.add(exclude);\n return ig;\n}\n\nexport function discover(options: DiscoverOptions): DiscoveredFile[] {\n const root = path.resolve(options.root);\n const onlyLangs = (options.only ?? []).filter(Boolean);\n const allowLang = (lang: LanguageDef): boolean =>\n onlyLangs.length === 0 || onlyLangs.includes(lang.id);\n\n // Validate `--only` ids early so a typo is a usage error, not silent emptiness.\n for (const id of onlyLangs) {\n if (!langById(id)) {\n throw new UsageError(`unknown language \"${id}\" for --only`);\n }\n }\n\n const rootIg = buildRootIgnore(root, options.exclude ?? []);\n\n // Scope roots: explicit paths, or the whole repo.\n const scopeAbs = (options.paths && options.paths.length\n ? options.paths.map((p) => path.resolve(root, p))\n : [root]\n ).filter((p) => fs.existsSync(p));\n\n const found = new Map<string, DiscoveredFile>();\n\n const considerFile = (abs: string): void => {\n const rel = toPosix(path.relative(root, abs));\n if (rel.startsWith('..')) return; // outside root\n if (rel === '' || rootIg.ignores(rel)) return;\n if (SKIP_FILES.has(path.basename(abs).toLowerCase())) return; // lockfiles etc.\n const lang = langForExtension(path.extname(abs));\n if (!lang || !allowLang(lang)) return;\n found.set(rel, { rel, abs, lang });\n };\n\n const walk = (dir: string): void => {\n let entries: fs.Dirent[];\n try {\n entries = fs.readdirSync(dir, { withFileTypes: true });\n } catch {\n return; // unreadable dir — skip rather than crash the build\n }\n for (const entry of entries) {\n const abs = path.join(dir, entry.name);\n const rel = toPosix(path.relative(root, abs));\n if (entry.isDirectory()) {\n if (isSkippedDirName(entry.name)) continue;\n if (rel && rootIg.ignores(`${rel}/`)) continue;\n walk(abs);\n } else if (entry.isFile()) {\n considerFile(abs);\n }\n }\n };\n\n for (const scope of scopeAbs) {\n const stat = fs.statSync(scope);\n if (stat.isDirectory()) walk(scope);\n else if (stat.isFile()) considerFile(scope);\n }\n\n return [...found.values()].sort((a, b) => (a.rel < b.rel ? -1 : a.rel > b.rel ? 1 : 0));\n}\n\n/** A usage error that maps to exit code 5 at the CLI boundary. */\nexport class UsageError extends Error {\n readonly isUsageError = true;\n constructor(message: string) {\n super(message);\n this.name = 'UsageError';\n }\n}\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { redactSecrets, catalogForLanguage, sourceHasRoleNeedle } from './chunk-T7RSQ5WD.js';
|
|
2
|
+
import { LANGUAGES, langById } from './chunk-6WRG7VDO.js';
|
|
2
3
|
import { loadCache } from './chunk-MVPRPSXU.js';
|
|
3
|
-
import { VERSION } from './chunk-
|
|
4
|
+
import { VERSION } from './chunk-4NTNMT6T.js';
|
|
4
5
|
import { hashString } from './chunk-JFGYT6BI.js';
|
|
5
6
|
import * as fs from 'fs';
|
|
6
7
|
import * as path from 'path';
|
|
@@ -8,120 +9,6 @@ import { fileURLToPath } from 'url';
|
|
|
8
9
|
import { createRequire } from 'module';
|
|
9
10
|
import { Parser, Language, Query } from 'web-tree-sitter';
|
|
10
11
|
|
|
11
|
-
// src/engine/languages.ts
|
|
12
|
-
var LANGUAGES = [
|
|
13
|
-
{
|
|
14
|
-
id: "ts",
|
|
15
|
-
label: "TypeScript",
|
|
16
|
-
extensions: [".ts", ".mts", ".cts"],
|
|
17
|
-
grammarFile: "tree-sitter-typescript"
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
id: "tsx",
|
|
21
|
-
label: "TSX",
|
|
22
|
-
extensions: [".tsx"],
|
|
23
|
-
grammarFile: "tree-sitter-tsx"
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
id: "js",
|
|
27
|
-
label: "JavaScript",
|
|
28
|
-
extensions: [".js", ".mjs", ".cjs", ".jsx"],
|
|
29
|
-
grammarFile: "tree-sitter-javascript"
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
id: "py",
|
|
33
|
-
label: "Python",
|
|
34
|
-
extensions: [".py", ".pyi"],
|
|
35
|
-
grammarFile: "tree-sitter-python"
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
id: "go",
|
|
39
|
-
label: "Go",
|
|
40
|
-
extensions: [".go"],
|
|
41
|
-
grammarFile: "tree-sitter-go"
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
id: "java",
|
|
45
|
-
label: "Java",
|
|
46
|
-
extensions: [".java"],
|
|
47
|
-
grammarFile: "tree-sitter-java"
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
id: "rust",
|
|
51
|
-
label: "Rust",
|
|
52
|
-
extensions: [".rs"],
|
|
53
|
-
grammarFile: "tree-sitter-rust"
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
id: "cs",
|
|
57
|
-
label: "C#",
|
|
58
|
-
extensions: [".cs"],
|
|
59
|
-
grammarFile: "tree-sitter-c_sharp"
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
id: "rb",
|
|
63
|
-
label: "Ruby",
|
|
64
|
-
extensions: [".rb"],
|
|
65
|
-
grammarFile: "tree-sitter-ruby"
|
|
66
|
-
},
|
|
67
|
-
{ id: "php", label: "PHP", extensions: [".php"], grammarFile: "tree-sitter-php" },
|
|
68
|
-
{ id: "kotlin", label: "Kotlin", extensions: [".kt", ".kts"], grammarFile: "tree-sitter-kotlin" },
|
|
69
|
-
{ id: "swift", label: "Swift", extensions: [".swift"], grammarFile: "tree-sitter-swift" },
|
|
70
|
-
{ id: "scala", label: "Scala", extensions: [".scala", ".sc"], grammarFile: "tree-sitter-scala" },
|
|
71
|
-
{ id: "dart", label: "Dart", extensions: [".dart"], grammarFile: "tree-sitter-dart" },
|
|
72
|
-
{ id: "lua", label: "Lua", extensions: [".lua"], grammarFile: "tree-sitter-lua" },
|
|
73
|
-
{ id: "ex", label: "Elixir", extensions: [".ex", ".exs"], grammarFile: "tree-sitter-elixir" },
|
|
74
|
-
// Known limitation: the bundled bash grammar's external scanner throws under
|
|
75
|
-
// web-tree-sitter 0.25.10 on `case`/heredoc constructs. Such files degrade
|
|
76
|
-
// gracefully (per-file empty parse + a surfaced warning, never a build crash);
|
|
77
|
-
// functions in case/heredoc-free scripts extract normally.
|
|
78
|
-
{ id: "sh", label: "Shell", extensions: [".sh", ".bash"], grammarFile: "tree-sitter-bash" },
|
|
79
|
-
{ id: "zig", label: "Zig", extensions: [".zig"], grammarFile: "tree-sitter-zig" },
|
|
80
|
-
{ id: "c", label: "C", extensions: [".c"], grammarFile: "tree-sitter-c" },
|
|
81
|
-
// C++ owns `.h`: the cpp grammar is a superset of C, so C headers parse clean
|
|
82
|
-
// under it, while C++ headers (classes/templates) break the C grammar.
|
|
83
|
-
{
|
|
84
|
-
id: "cpp",
|
|
85
|
-
label: "C++",
|
|
86
|
-
extensions: [".cpp", ".cc", ".cxx", ".hpp", ".hh", ".hxx", ".h"],
|
|
87
|
-
grammarFile: "tree-sitter-cpp"
|
|
88
|
-
},
|
|
89
|
-
// Objective-C owns `.m` (the far more common meaning in repos than MATLAB);
|
|
90
|
-
// `.mm` (ObjC++) degrades gracefully on C++-only constructs.
|
|
91
|
-
{ id: "objc", label: "Objective-C", extensions: [".m", ".mm"], grammarFile: "tree-sitter-objc" },
|
|
92
|
-
// `.mli` interface files parse best-effort under the implementation grammar.
|
|
93
|
-
{ id: "ocaml", label: "OCaml", extensions: [".ml", ".mli"], grammarFile: "tree-sitter-ocaml" },
|
|
94
|
-
{ id: "rescript", label: "ReScript", extensions: [".res"], grammarFile: "tree-sitter-rescript" },
|
|
95
|
-
{ id: "solidity", label: "Solidity", extensions: [".sol"], grammarFile: "tree-sitter-solidity" },
|
|
96
|
-
// Embedded-script container formats (single-file components and templates).
|
|
97
|
-
// Their script regions are extracted with a position-preserving mask and
|
|
98
|
-
// parsed with the JS/TS (or Ruby, for ERB) grammars — see sfc.ts. The
|
|
99
|
-
// grammarFile below is the effective-grammar fallback so bundling always
|
|
100
|
-
// ships something loadable for the id; the actual grammar is chosen per file
|
|
101
|
-
// (script `lang` attribute / the container's fixed embedded language).
|
|
102
|
-
{ id: "vue", label: "Vue", extensions: [".vue"], grammarFile: "tree-sitter-typescript" },
|
|
103
|
-
{ id: "svelte", label: "Svelte", extensions: [".svelte"], grammarFile: "tree-sitter-typescript" },
|
|
104
|
-
{ id: "astro", label: "Astro", extensions: [".astro"], grammarFile: "tree-sitter-typescript" },
|
|
105
|
-
{ id: "html", label: "HTML", extensions: [".html", ".htm"], grammarFile: "tree-sitter-javascript" },
|
|
106
|
-
{ id: "erb", label: "ERB", extensions: [".erb"], grammarFile: "tree-sitter-ruby" },
|
|
107
|
-
{ id: "ejs", label: "EJS", extensions: [".ejs"], grammarFile: "tree-sitter-javascript" },
|
|
108
|
-
// SQL DDL — pure deterministic extract (sql-extract.ts), no tree-sitter grammar.
|
|
109
|
-
{ id: "sql", label: "SQL", extensions: [".sql"], grammarFile: "tree-sitter-typescript" }
|
|
110
|
-
];
|
|
111
|
-
var EXT_TO_LANG = /* @__PURE__ */ new Map();
|
|
112
|
-
for (const lang of LANGUAGES) {
|
|
113
|
-
for (const ext of lang.extensions) EXT_TO_LANG.set(ext, lang);
|
|
114
|
-
}
|
|
115
|
-
var ID_TO_LANG = new Map(LANGUAGES.map((l) => [l.id, l]));
|
|
116
|
-
function langForExtension(ext) {
|
|
117
|
-
return EXT_TO_LANG.get(ext.toLowerCase());
|
|
118
|
-
}
|
|
119
|
-
function langById(id) {
|
|
120
|
-
return ID_TO_LANG.get(id);
|
|
121
|
-
}
|
|
122
|
-
function allLanguageIds() {
|
|
123
|
-
return LANGUAGES.map((l) => l.id);
|
|
124
|
-
}
|
|
125
12
|
var require2 = createRequire(import.meta.url);
|
|
126
13
|
var parserInit = null;
|
|
127
14
|
var languageCache = /* @__PURE__ */ new Map();
|
|
@@ -1307,6 +1194,6 @@ function dedupeImports(imports) {
|
|
|
1307
1194
|
return out;
|
|
1308
1195
|
}
|
|
1309
1196
|
|
|
1310
|
-
export {
|
|
1311
|
-
//# sourceMappingURL=chunk-
|
|
1312
|
-
//# sourceMappingURL=chunk-
|
|
1197
|
+
export { TOOLCHAIN_GRAMMARS, fileRolesFromParseCache, fileRolesFromParses, grammarSetVersion, grammarsSourceDir, parseSource, resolveToolchainGrammar, resolvedGrammarFiles, setGrammarsOverride, toolchainGrammarSetVersion, toolchainParser };
|
|
1198
|
+
//# sourceMappingURL=chunk-PRHH4DVO.js.map
|
|
1199
|
+
//# sourceMappingURL=chunk-PRHH4DVO.js.map
|