@octocodeai/octocode-tools-core 17.0.2 → 18.0.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/README.md +48 -38
- package/dist/direct.js +52 -35
- package/dist/github/canonicalRepo.d.ts +14 -0
- package/dist/github/codeSearch/matchPositions.d.ts +11 -0
- package/dist/github/codeSearch.d.ts +2 -1
- package/dist/github/compare.d.ts +42 -0
- package/dist/github/dateWindow.d.ts +4 -0
- package/dist/github/discussions.d.ts +45 -0
- package/dist/github/githubAPI.d.ts +7 -13
- package/dist/github/history/commitFiles.d.ts +39 -0
- package/dist/github/history.d.ts +1 -0
- package/dist/github/issues/types.d.ts +8 -8
- package/dist/github/prTransformation.d.ts +24 -25
- package/dist/github/queryBuilders/base.d.ts +0 -1
- package/dist/github/queryBuilders/issues.d.ts +0 -6
- package/dist/github/releases.d.ts +9 -1
- package/dist/github/responseHeaders.d.ts +6 -0
- package/dist/index.d.ts +7 -6
- package/dist/index.js +56 -39
- package/dist/providers/github/githubPullRequests.d.ts +9 -0
- package/dist/providers/github/paginationMetadata.d.ts +6 -5
- package/dist/providers/providerQueries.d.ts +11 -6
- package/dist/providers/providerResults.d.ts +9 -1
- package/dist/schema.d.ts +0 -1
- package/dist/schema.js +1 -2
- package/dist/scheme/pagination.d.ts +5 -13
- package/dist/scheme/responseEnvelope.d.ts +28 -22
- package/dist/security/bridge.d.ts +3 -2
- package/dist/shared/config/index.d.ts +0 -1
- package/dist/shared/config/index.js +1 -1
- package/dist/shared/languageSelectors/classify.d.ts +2 -2
- package/dist/shared/languageSelectors/data.d.ts +4 -4
- package/dist/shared/languageSelectors.d.ts +1 -1
- package/dist/shared/paths.d.ts +1 -4
- package/dist/tools/directToolCatalog/toolCatalogDefinitions.d.ts +10 -11
- package/dist/tools/directToolCatalog/toolCatalogFormatters.d.ts +12 -0
- package/dist/tools/directToolCatalog.meta.d.ts +1 -0
- package/dist/tools/github_clone_repo/contentSize.d.ts +9 -0
- package/dist/tools/github_clone_repo/scheme.d.ts +26 -96
- package/dist/tools/github_fetch_content/finalizer/types.d.ts +2 -3
- package/dist/tools/github_fetch_content/scheme.d.ts +92 -140
- package/dist/tools/github_fetch_content/types.d.ts +2 -1
- package/dist/tools/github_search_code/scheme.d.ts +39 -87
- package/dist/tools/github_search_discussions/execution.d.ts +15 -0
- package/dist/tools/github_search_discussions/scheme.d.ts +16 -0
- package/dist/tools/github_search_pull_requests/contentResponse/fileSurfaces.d.ts +2 -16
- package/dist/tools/github_search_pull_requests/scheme.d.ts +97 -119
- package/dist/tools/github_search_pull_requests/splitExecutions.d.ts +8 -0
- package/dist/tools/github_search_pull_requests/splitSchemes.d.ts +216 -0
- package/dist/tools/github_search_pull_requests/types.d.ts +28 -29
- package/dist/tools/github_search_repos/execution.d.ts +0 -2
- package/dist/tools/github_search_repos/scheme.d.ts +36 -64
- package/dist/tools/github_view_repo_structure/scheme.d.ts +37 -66
- package/dist/tools/local_dead_code/deadCodeScan.d.ts +26 -0
- package/dist/tools/local_dead_code/entrypoints.d.ts +16 -0
- package/dist/tools/local_dead_code/execution.d.ts +4 -0
- package/dist/tools/local_dead_code/graphBuilder.d.ts +43 -0
- package/dist/tools/local_dead_code/importResolver.d.ts +6 -0
- package/dist/tools/local_dead_code/local_dead_code.d.ts +5 -0
- package/dist/tools/local_dead_code/reachability.d.ts +21 -0
- package/dist/tools/local_dead_code/retention.d.ts +22 -0
- package/dist/tools/local_dead_code/scheme.d.ts +51 -0
- package/dist/tools/local_dead_code/types.d.ts +56 -0
- package/dist/tools/local_fetch_content/execution.d.ts +0 -1
- package/dist/tools/local_fetch_content/fetchContent/extraction.d.ts +6 -0
- package/dist/tools/local_fetch_content/fetchContent/validation.d.ts +9 -1
- package/dist/tools/local_fetch_content/fetchContent.d.ts +0 -1
- package/dist/tools/local_fetch_content/scheme.d.ts +28 -90
- package/dist/tools/local_find_files/execution.d.ts +0 -1
- package/dist/tools/local_find_files/findFiles.d.ts +0 -3
- package/dist/tools/local_find_files/findFilesNext.d.ts +26 -0
- package/dist/tools/local_find_files/pathPatternBraces.d.ts +20 -0
- package/dist/tools/local_find_files/scheme.d.ts +19 -81
- package/dist/tools/local_ripgrep/captureBudget.d.ts +25 -0
- package/dist/tools/local_ripgrep/rankingProfile/rankingProfiles.d.ts +1 -0
- package/dist/tools/local_ripgrep/rankingProfile/rankingResults.d.ts +1 -0
- package/dist/tools/local_ripgrep/ripgrepResultBuilder/searchNext.d.ts +1 -1
- package/dist/tools/local_ripgrep/scheme.d.ts +89 -190
- package/dist/tools/local_view_structure/execution.d.ts +0 -1
- package/dist/tools/local_view_structure/local_view_structure.d.ts +0 -1
- package/dist/tools/local_view_structure/scheme.d.ts +34 -87
- package/dist/tools/local_view_structure/structureFilters.d.ts +2 -4
- package/dist/tools/local_view_structure/structureResponse.d.ts +1 -0
- package/dist/tools/local_view_structure/viewStructureNext.d.ts +25 -0
- package/dist/tools/lsp/semantic_content/index.d.ts +2 -1
- package/dist/tools/lsp/semantic_content/scheme.d.ts +167 -642
- package/dist/tools/lsp/semantic_content/semanticAnchored.d.ts +8 -2
- package/dist/tools/lsp/semantic_content/semanticEnvelopes/locationEnvelopes.d.ts +2 -1
- package/dist/tools/lsp/semantic_content/semanticFileOps/anchor.d.ts +17 -1
- package/dist/tools/lsp/semantic_content/semanticNext.d.ts +2 -0
- package/dist/tools/lsp/semantic_content/semanticPresentation.d.ts +1 -1
- package/dist/tools/lsp/shared/callHierarchyTraversal.d.ts +14 -2
- package/dist/tools/lsp/shared/semanticTypes.d.ts +14 -1
- package/dist/tools/package_search/execution.d.ts +9 -6
- package/dist/tools/package_search/queryHelpers.d.ts +8 -0
- package/dist/tools/package_search/scheme.d.ts +30 -86
- package/dist/tools/providerMappers/codeSearch.d.ts +0 -1
- package/dist/tools/providerMappers/pullRequests.d.ts +0 -13
- package/dist/tools/providerMappers/repoSearch.d.ts +1 -5
- package/dist/tools/providerMappers/repoStructure.d.ts +4 -0
- package/dist/tools/toolCatalogFactory.d.ts +25 -0
- package/dist/tools/toolConfig.d.ts +9 -24
- package/dist/tools/toolNames.d.ts +2 -2
- package/dist/tools/toolSchemaImports.d.ts +3 -1
- package/dist/types/execution.d.ts +1 -0
- package/dist/types/toolOutput.d.ts +38 -0
- package/dist/utils/contextUtils.d.ts +6 -0
- package/dist/utils/core/types.d.ts +4 -0
- package/dist/utils/jsSymbolNames.d.ts +6 -0
- package/package.json +4 -8
- package/dist/oql/adapters/compile.d.ts +0 -25
- package/dist/oql/adapters/github/execute.d.ts +0 -16
- package/dist/oql/adapters/github/provider-diagnostics.d.ts +0 -14
- package/dist/oql/adapters/github/shared.d.ts +0 -75
- package/dist/oql/adapters/github.d.ts +0 -14
- package/dist/oql/adapters/graphProof.d.ts +0 -6
- package/dist/oql/adapters/graphView/filters.d.ts +0 -25
- package/dist/oql/adapters/graphView/nativeEdges.d.ts +0 -5
- package/dist/oql/adapters/graphView.d.ts +0 -29
- package/dist/oql/adapters/local/code.d.ts +0 -3
- package/dist/oql/adapters/local/codeBoolean.d.ts +0 -3
- package/dist/oql/adapters/local/fileRowOps.d.ts +0 -11
- package/dist/oql/adapters/local/files.d.ts +0 -3
- package/dist/oql/adapters/local/filesBoolean.d.ts +0 -10
- package/dist/oql/adapters/local/filesContentLeaf.d.ts +0 -12
- package/dist/oql/adapters/local/filesUniverse.d.ts +0 -6
- package/dist/oql/adapters/local/findToolType.d.ts +0 -10
- package/dist/oql/adapters/local/predicates.d.ts +0 -18
- package/dist/oql/adapters/local/scope.d.ts +0 -14
- package/dist/oql/adapters/local/searchToolType.d.ts +0 -7
- package/dist/oql/adapters/local/structureContent.d.ts +0 -6
- package/dist/oql/adapters/local/types.d.ts +0 -34
- package/dist/oql/adapters/local.d.ts +0 -4
- package/dist/oql/adapters/materialize.d.ts +0 -11
- package/dist/oql/adapters/pagination.d.ts +0 -21
- package/dist/oql/adapters/researchTargets/diff.d.ts +0 -16
- package/dist/oql/adapters/researchTargets/graph.d.ts +0 -3
- package/dist/oql/adapters/researchTargets/history.d.ts +0 -20
- package/dist/oql/adapters/researchTargets/pagination.d.ts +0 -54
- package/dist/oql/adapters/researchTargets/repositories.d.ts +0 -4
- package/dist/oql/adapters/researchTargets/research.d.ts +0 -3
- package/dist/oql/adapters/researchTargets/rows.d.ts +0 -16
- package/dist/oql/adapters/researchTargets/semantics.d.ts +0 -3
- package/dist/oql/adapters/researchTargets/shared.d.ts +0 -11
- package/dist/oql/adapters/researchTargets.d.ts +0 -8
- package/dist/oql/adapters/resultMap.d.ts +0 -27
- package/dist/oql/adapters/ruleYaml.d.ts +0 -11
- package/dist/oql/adapters/runner.d.ts +0 -21
- package/dist/oql/capabilities.d.ts +0 -31
- package/dist/oql/defaults.d.ts +0 -26
- package/dist/oql/diagnostics.d.ts +0 -25
- package/dist/oql/diffLanes.d.ts +0 -29
- package/dist/oql/envelope.d.ts +0 -21
- package/dist/oql/features.d.ts +0 -7
- package/dist/oql/index.d.ts +0 -27
- package/dist/oql/index.js +0 -47
- package/dist/oql/normalize/batch.d.ts +0 -2
- package/dist/oql/normalize/materialize.d.ts +0 -2
- package/dist/oql/normalize/params.d.ts +0 -2
- package/dist/oql/normalize/query.d.ts +0 -2
- package/dist/oql/normalize/scope.d.ts +0 -2
- package/dist/oql/normalize/shared.d.ts +0 -7
- package/dist/oql/normalize/source.d.ts +0 -2
- package/dist/oql/normalize/where.d.ts +0 -2
- package/dist/oql/normalize.d.ts +0 -20
- package/dist/oql/planner/planDiagnostics.d.ts +0 -13
- package/dist/oql/planner/predicateRouting.d.ts +0 -35
- package/dist/oql/planner.d.ts +0 -7
- package/dist/oql/predicateUtils.d.ts +0 -3
- package/dist/oql/research/analyze/manifest-scan.d.ts +0 -4
- package/dist/oql/research/analyze/source-graph.d.ts +0 -7
- package/dist/oql/research/analyze/symbol-scoring.d.ts +0 -4
- package/dist/oql/research/analyze/types.d.ts +0 -163
- package/dist/oql/research/analyze/utils.d.ts +0 -16
- package/dist/oql/research/analyze.d.ts +0 -3
- package/dist/oql/research/packets/builders.d.ts +0 -4
- package/dist/oql/research/packets/types.d.ts +0 -91
- package/dist/oql/research/packets.d.ts +0 -21
- package/dist/oql/run/batch.d.ts +0 -3
- package/dist/oql/run/continuations/records.d.ts +0 -19
- package/dist/oql/run/continuations/registry.d.ts +0 -22
- package/dist/oql/run/continuations/semantics.d.ts +0 -3
- package/dist/oql/run/continuations/types.d.ts +0 -12
- package/dist/oql/run/dryRun.d.ts +0 -11
- package/dist/oql/run/paths.d.ts +0 -15
- package/dist/oql/run/proofGrades.d.ts +0 -8
- package/dist/oql/run/select.d.ts +0 -10
- package/dist/oql/run/single.d.ts +0 -22
- package/dist/oql/run.d.ts +0 -5
- package/dist/oql/schema/predicates.d.ts +0 -12
- package/dist/oql/schema.d.ts +0 -1049
- package/dist/oql/schemeText.d.ts +0 -152
- package/dist/oql/shorthand/predicates.d.ts +0 -15
- package/dist/oql/shorthand/query-controls.d.ts +0 -18
- package/dist/oql/shorthand/target-params.d.ts +0 -9
- package/dist/oql/shorthand/types.d.ts +0 -159
- package/dist/oql/shorthand/utils.d.ts +0 -7
- package/dist/oql/shorthand.d.ts +0 -8
- package/dist/oql/targetParams.d.ts +0 -7
- package/dist/oql/transformers/contract.d.ts +0 -19
- package/dist/oql/transformers/github/code.d.ts +0 -9
- package/dist/oql/transformers/github/common.d.ts +0 -14
- package/dist/oql/transformers/language.d.ts +0 -1
- package/dist/oql/transformers/registry.d.ts +0 -16
- package/dist/oql/transformers/types.d.ts +0 -11
- package/dist/oql/types/diagnostics.d.ts +0 -22
- package/dist/oql/types/envelope.d.ts +0 -78
- package/dist/oql/types/guards.d.ts +0 -9
- package/dist/oql/types/planner.d.ts +0 -46
- package/dist/oql/types/predicates.d.ts +0 -93
- package/dist/oql/types/query.d.ts +0 -143
- package/dist/oql/types/recordData.d.ts +0 -127
- package/dist/oql/types/recordRows.d.ts +0 -48
- package/dist/oql/types/results.d.ts +0 -118
- package/dist/oql/types/targets.d.ts +0 -22
- package/dist/oql/types.d.ts +0 -27
- package/dist/tools/oql_search/execution.d.ts +0 -7
- package/dist/tools/toolMetadata/descriptionOverrides.d.ts +0 -4
|
@@ -2,14 +2,13 @@ import type { PaginationInfo } from '../../types/toolResults.js';
|
|
|
2
2
|
export interface GitHubPullRequestApiItem {
|
|
3
3
|
number: number;
|
|
4
4
|
title: string;
|
|
5
|
-
url: string;
|
|
6
5
|
state: 'open' | 'closed';
|
|
7
6
|
draft: boolean;
|
|
8
7
|
merged: boolean;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
createdAt: string;
|
|
9
|
+
updatedAt: string;
|
|
10
|
+
closedAt?: string;
|
|
11
|
+
mergedAt?: string;
|
|
13
12
|
author: string;
|
|
14
13
|
assignees?: string[];
|
|
15
14
|
labels?: Array<{
|
|
@@ -18,12 +17,12 @@ export interface GitHubPullRequestApiItem {
|
|
|
18
17
|
color: string;
|
|
19
18
|
description?: string;
|
|
20
19
|
}>;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
headRef: string;
|
|
21
|
+
headSha?: string;
|
|
22
|
+
baseRef: string;
|
|
23
|
+
baseSha?: string;
|
|
25
24
|
body?: string | null;
|
|
26
|
-
|
|
25
|
+
bodyPagination?: {
|
|
27
26
|
charOffset: number;
|
|
28
27
|
charLength: number;
|
|
29
28
|
totalChars: number;
|
|
@@ -31,25 +30,25 @@ export interface GitHubPullRequestApiItem {
|
|
|
31
30
|
nextCharOffset?: number;
|
|
32
31
|
};
|
|
33
32
|
comments?: number;
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
commentDetailsBreakdown?: {
|
|
34
|
+
inlineReview: number;
|
|
36
35
|
discussion: number;
|
|
37
36
|
};
|
|
38
37
|
commits?: number;
|
|
39
38
|
additions?: number;
|
|
40
39
|
deletions?: number;
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
changedFiles?: number;
|
|
41
|
+
commentDetails?: Array<{
|
|
43
42
|
id: string;
|
|
44
43
|
user: string;
|
|
45
44
|
body: string;
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
createdAt: string;
|
|
46
|
+
updatedAt: string;
|
|
48
47
|
commentType?: 'discussion' | 'review_inline';
|
|
49
48
|
path?: string;
|
|
50
49
|
line?: number;
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
inReplyToId?: number | null;
|
|
51
|
+
bodyPagination?: {
|
|
53
52
|
charOffset: number;
|
|
54
53
|
charLength: number;
|
|
55
54
|
totalChars: number;
|
|
@@ -57,10 +56,10 @@ export interface GitHubPullRequestApiItem {
|
|
|
57
56
|
nextCharOffset?: number;
|
|
58
57
|
};
|
|
59
58
|
}>;
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
59
|
+
commentDetailsShown?: number;
|
|
60
|
+
commentDetailsTotal?: number;
|
|
61
|
+
commentDetailsPaginated?: boolean;
|
|
62
|
+
fileChanges?: Array<{
|
|
64
63
|
filename: string;
|
|
65
64
|
status: string;
|
|
66
65
|
additions: number;
|
|
@@ -73,10 +72,10 @@ export interface GitHubPullRequestApiItem {
|
|
|
73
72
|
user: string;
|
|
74
73
|
state: string;
|
|
75
74
|
body: string;
|
|
76
|
-
|
|
77
|
-
|
|
75
|
+
submittedAt?: string;
|
|
76
|
+
commitId?: string;
|
|
78
77
|
}>;
|
|
79
|
-
|
|
78
|
+
commitDetails?: Array<{
|
|
80
79
|
sha: string;
|
|
81
80
|
message: string;
|
|
82
81
|
author: string;
|
|
@@ -90,14 +89,14 @@ export interface GitHubPullRequestApiItem {
|
|
|
90
89
|
patch?: string;
|
|
91
90
|
}>;
|
|
92
91
|
}>;
|
|
93
|
-
|
|
92
|
+
sanitizationWarnings?: string[];
|
|
94
93
|
}
|
|
95
94
|
export interface GitHubPullRequestSearchApiData {
|
|
96
95
|
owner?: string;
|
|
97
96
|
repo?: string;
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
97
|
+
pullRequests?: GitHubPullRequestApiItem[];
|
|
98
|
+
totalCount?: number;
|
|
99
|
+
incompleteResults?: boolean;
|
|
101
100
|
effectiveQuery?: string;
|
|
102
101
|
pagination?: PaginationInfo;
|
|
103
102
|
outputPagination?: {
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { type CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
-
import type { GitHubRepositoryOutput } from '@octocodeai/octocode-core/extra-types';
|
|
3
2
|
import type { ToolExecutionArgs } from '../../types/execution.js';
|
|
4
3
|
import { type PartialReposSearchQuery } from './execution/queryVariants.js';
|
|
5
4
|
export { buildMergedPagination, buildPartialFailureWarnings, buildResultPagination, } from './execution/pagination.js';
|
|
6
|
-
export declare function formatRepoLine(repo: GitHubRepositoryOutput): string;
|
|
7
5
|
export declare function searchMultipleGitHubRepos(args: ToolExecutionArgs<PartialReposSearchQuery>): Promise<CallToolResult>;
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import type { ItemPagination, ToolContinuation } from '../../scheme/pagination.js';
|
|
3
|
+
import type { BulkToolOutput } from '../../types/toolOutput.js';
|
|
2
4
|
export declare const GitHubReposSearchSingleQueryLocalSchema: z.ZodObject<{
|
|
3
5
|
keywords: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
4
6
|
topicsToSearch: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
5
7
|
language: z.ZodOptional<z.ZodString>;
|
|
6
8
|
owner: z.ZodOptional<z.ZodString>;
|
|
7
9
|
stars: z.ZodOptional<z.ZodString>;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
+
forks: z.ZodOptional<z.ZodString>;
|
|
11
|
+
goodFirstIssues: z.ZodOptional<z.ZodString>;
|
|
10
12
|
updated: z.ZodOptional<z.ZodString>;
|
|
13
|
+
created: z.ZodOptional<z.ZodString>;
|
|
14
|
+
size: z.ZodOptional<z.ZodString>;
|
|
11
15
|
match: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
12
16
|
description: "description";
|
|
13
17
|
name: "name";
|
|
@@ -15,8 +19,8 @@ export declare const GitHubReposSearchSingleQueryLocalSchema: z.ZodObject<{
|
|
|
15
19
|
}>>>;
|
|
16
20
|
sort: z.ZodDefault<z.ZodEnum<{
|
|
17
21
|
stars: "stars";
|
|
18
|
-
updated: "updated";
|
|
19
22
|
forks: "forks";
|
|
23
|
+
updated: "updated";
|
|
20
24
|
"help-wanted-issues": "help-wanted-issues";
|
|
21
25
|
"best-match": "best-match";
|
|
22
26
|
}>>;
|
|
@@ -27,9 +31,7 @@ export declare const GitHubReposSearchSingleQueryLocalSchema: z.ZodObject<{
|
|
|
27
31
|
public: "public";
|
|
28
32
|
private: "private";
|
|
29
33
|
}>>;
|
|
30
|
-
forks: z.ZodOptional<z.ZodString>;
|
|
31
34
|
license: z.ZodOptional<z.ZodString>;
|
|
32
|
-
goodFirstIssues: z.ZodOptional<z.ZodString>;
|
|
33
35
|
concise: z.ZodOptional<z.ZodBoolean>;
|
|
34
36
|
id: z.ZodOptional<z.ZodString>;
|
|
35
37
|
mainResearchGoal: z.ZodOptional<z.ZodString>;
|
|
@@ -41,62 +43,32 @@ export declare const GitHubReposSearchBulkQueryLocalSchema: z.ZodObject<{
|
|
|
41
43
|
responseCharLength: z.ZodOptional<z.ZodPreprocess<z.ZodNumber>>;
|
|
42
44
|
queries: z.ZodArray<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
|
|
43
45
|
}, z.core.$strip>;
|
|
44
|
-
export
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
totalItems: z.ZodOptional<z.ZodNumber>;
|
|
74
|
-
perPage: z.ZodOptional<z.ZodNumber>;
|
|
75
|
-
totalFound: z.ZodOptional<z.ZodNumber>;
|
|
76
|
-
returned: z.ZodOptional<z.ZodNumber>;
|
|
77
|
-
totalMatches: z.ZodOptional<z.ZodNumber>;
|
|
78
|
-
reportedTotalMatches: z.ZodOptional<z.ZodNumber>;
|
|
79
|
-
reachableTotalMatches: z.ZodOptional<z.ZodNumber>;
|
|
80
|
-
totalResults: z.ZodOptional<z.ZodNumber>;
|
|
81
|
-
itemsPerPage: z.ZodOptional<z.ZodNumber>;
|
|
82
|
-
totalMatchesKind: z.ZodOptional<z.ZodEnum<{
|
|
83
|
-
exact: "exact";
|
|
84
|
-
reported: "reported";
|
|
85
|
-
lowerBound: "lowerBound";
|
|
86
|
-
}>>;
|
|
87
|
-
totalMatchesCapped: z.ZodOptional<z.ZodBoolean>;
|
|
88
|
-
}, z.core.$strip>>;
|
|
89
|
-
}, z.core.$loose>>;
|
|
90
|
-
}, z.core.$loose>>>;
|
|
91
|
-
base: z.ZodOptional<z.ZodString>;
|
|
92
|
-
shared: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
|
|
93
|
-
responsePagination: z.ZodOptional<z.ZodObject<{
|
|
94
|
-
currentPage: z.ZodNumber;
|
|
95
|
-
totalPages: z.ZodNumber;
|
|
96
|
-
hasMore: z.ZodBoolean;
|
|
97
|
-
charOffset: z.ZodNumber;
|
|
98
|
-
charLength: z.ZodNumber;
|
|
99
|
-
totalChars: z.ZodNumber;
|
|
100
|
-
nextCharOffset: z.ZodOptional<z.ZodNumber>;
|
|
101
|
-
}, z.core.$strip>>;
|
|
102
|
-
}, z.core.$strip>;
|
|
46
|
+
export interface LocalRepositoryDetail {
|
|
47
|
+
owner: string;
|
|
48
|
+
repo: string;
|
|
49
|
+
stars?: number;
|
|
50
|
+
forks?: number;
|
|
51
|
+
openIssuesCount?: number;
|
|
52
|
+
language?: string;
|
|
53
|
+
license?: string;
|
|
54
|
+
description?: string;
|
|
55
|
+
homepage?: string;
|
|
56
|
+
pushedAt?: string;
|
|
57
|
+
createdAt?: string;
|
|
58
|
+
defaultBranch?: string;
|
|
59
|
+
topics?: string[];
|
|
60
|
+
visibility?: string;
|
|
61
|
+
url?: string;
|
|
62
|
+
updatedAt?: string;
|
|
63
|
+
}
|
|
64
|
+
export interface RepoSearchPagination extends ItemPagination {
|
|
65
|
+
totalMatchesKind?: 'exact' | 'reported' | 'lowerBound';
|
|
66
|
+
totalMatchesCapped?: boolean;
|
|
67
|
+
}
|
|
68
|
+
export interface RepositoryResultData {
|
|
69
|
+
repositories?: Array<string | LocalRepositoryDetail>;
|
|
70
|
+
pagination?: RepoSearchPagination;
|
|
71
|
+
next?: Record<string, ToolContinuation>;
|
|
72
|
+
[key: string]: unknown;
|
|
73
|
+
}
|
|
74
|
+
export type GitHubSearchRepositoriesOutputLocal = BulkToolOutput<RepositoryResultData>;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { ItemPagination, ToolContinuation } from '../../scheme/pagination.js';
|
|
2
|
+
import type { BulkToolOutput } from '../../types/toolOutput.js';
|
|
1
3
|
export declare const GitHubViewRepoStructureQueryLocalSchema: import("zod").ZodObject<{
|
|
2
4
|
owner: import("zod").ZodString;
|
|
3
5
|
repo: import("zod").ZodString;
|
|
@@ -6,7 +8,13 @@ export declare const GitHubViewRepoStructureQueryLocalSchema: import("zod").ZodO
|
|
|
6
8
|
maxDepth: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
7
9
|
page: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
8
10
|
itemsPerPage: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
9
|
-
|
|
11
|
+
include: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodEnum<{
|
|
12
|
+
sizes: "sizes";
|
|
13
|
+
languages: "languages";
|
|
14
|
+
contributors: "contributors";
|
|
15
|
+
branches: "branches";
|
|
16
|
+
tags: "tags";
|
|
17
|
+
}>>>;
|
|
10
18
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
11
19
|
mainResearchGoal: import("zod").ZodOptional<import("zod").ZodString>;
|
|
12
20
|
researchGoal: import("zod").ZodOptional<import("zod").ZodString>;
|
|
@@ -17,68 +25,31 @@ export declare const GitHubViewRepoStructureBulkQueryLocalSchema: import("zod").
|
|
|
17
25
|
responseCharLength: import("zod").ZodOptional<import("zod").ZodPreprocess<import("zod").ZodNumber>>;
|
|
18
26
|
queries: import("zod").ZodArray<import("zod").ZodType<unknown, unknown, import("zod/v4/core").$ZodTypeInternals<unknown, unknown>>>;
|
|
19
27
|
}, import("zod/v4/core").$strip>;
|
|
20
|
-
export
|
|
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
|
-
entries: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
|
|
49
|
-
path: import("zod").ZodString;
|
|
50
|
-
name: import("zod").ZodOptional<import("zod").ZodString>;
|
|
51
|
-
type: import("zod").ZodOptional<import("zod").ZodString>;
|
|
52
|
-
size: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
53
|
-
}, import("zod/v4/core").$loose>>>;
|
|
54
|
-
pagination: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
55
|
-
currentPage: import("zod").ZodNumber;
|
|
56
|
-
totalPages: import("zod").ZodNumber;
|
|
57
|
-
hasMore: import("zod").ZodBoolean;
|
|
58
|
-
nextPage: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
59
|
-
nextMatchPage: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
60
|
-
perPage: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
61
|
-
totalMatches: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
62
|
-
totalFiles: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
63
|
-
totalEntries: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
64
|
-
totalResults: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
65
|
-
entriesPerPage: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
66
|
-
filesPerPage: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
67
|
-
matchesPerPage: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
68
|
-
}, import("zod/v4/core").$strip>>;
|
|
69
|
-
warnings: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodObject<{
|
|
70
|
-
kind: import("zod").ZodString;
|
|
71
|
-
}, import("zod/v4/core").$loose>]>>>;
|
|
72
|
-
error: import("zod").ZodOptional<import("zod").ZodString>;
|
|
73
|
-
base: import("zod").ZodOptional<import("zod").ZodString>;
|
|
74
|
-
shared: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber, import("zod").ZodBoolean]>>>;
|
|
75
|
-
responsePagination: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
76
|
-
currentPage: import("zod").ZodNumber;
|
|
77
|
-
totalPages: import("zod").ZodNumber;
|
|
78
|
-
hasMore: import("zod").ZodBoolean;
|
|
79
|
-
charOffset: import("zod").ZodNumber;
|
|
80
|
-
charLength: import("zod").ZodNumber;
|
|
81
|
-
totalChars: import("zod").ZodNumber;
|
|
82
|
-
nextCharOffset: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
83
|
-
}, import("zod/v4/core").$strip>>;
|
|
84
|
-
}, import("zod/v4/core").$loose>;
|
|
28
|
+
export interface StructureDirEntry {
|
|
29
|
+
dir?: string;
|
|
30
|
+
files?: string[];
|
|
31
|
+
folders?: string[];
|
|
32
|
+
[key: string]: unknown;
|
|
33
|
+
}
|
|
34
|
+
export interface RepoStructureResultData {
|
|
35
|
+
structure?: StructureDirEntry[];
|
|
36
|
+
fileSizes?: Record<string, number>;
|
|
37
|
+
summary?: {
|
|
38
|
+
totalFiles?: number;
|
|
39
|
+
totalFolders?: number;
|
|
40
|
+
truncated?: boolean;
|
|
41
|
+
[key: string]: unknown;
|
|
42
|
+
};
|
|
43
|
+
resolvedBranch?: string;
|
|
44
|
+
pagination?: ItemPagination;
|
|
45
|
+
next?: Record<string, ToolContinuation>;
|
|
46
|
+
warnings?: string[];
|
|
47
|
+
owner?: string;
|
|
48
|
+
repo?: string;
|
|
49
|
+
path?: string;
|
|
50
|
+
error?: string;
|
|
51
|
+
statusCode?: number;
|
|
52
|
+
errorType?: string;
|
|
53
|
+
[key: string]: unknown;
|
|
54
|
+
}
|
|
55
|
+
export type GitHubViewRepoStructureOutputLocal = BulkToolOutput<RepoStructureResultData>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { DeadClusterOutput, DeadExportOutput, FindDeadCodeQuery as StrictFindDeadCodeQuery } from './scheme.js';
|
|
2
|
+
import type { WithOptionalMeta } from '../../types/execution.js';
|
|
3
|
+
type FindDeadCodeQuery = WithOptionalMeta<StrictFindDeadCodeQuery>;
|
|
4
|
+
export interface DeadCodeScanResult {
|
|
5
|
+
filesScanned: number;
|
|
6
|
+
filesSkipped: number;
|
|
7
|
+
entrypointsResolved: string[];
|
|
8
|
+
deadExports: DeadExportOutput[];
|
|
9
|
+
deadClusters: DeadClusterOutput[];
|
|
10
|
+
warnings: string[];
|
|
11
|
+
/**
|
|
12
|
+
* Present (and always `"low"`) when the scan's reachability base is shaky, so
|
|
13
|
+
* the raw candidate count should not be trusted as-is. Two triggers, each
|
|
14
|
+
* with its own explanatory `warnings` entry:
|
|
15
|
+
* - `entrypointsResolved` came entirely from the test-file heuristic (no
|
|
16
|
+
* package.json main/exports/bin matched and no explicit `entrypoints`),
|
|
17
|
+
* so every export in an otherwise-live file reads as "dead"; re-scope to
|
|
18
|
+
* the real entrypoint-bearing package or pass `entrypoints` explicitly.
|
|
19
|
+
* - one or more resolved entrypoints parsed to zero edges (a native
|
|
20
|
+
* extractor parse failure on that file), so reachability can't leave them
|
|
21
|
+
* and files they should reach show as false "unreachable-file".
|
|
22
|
+
*/
|
|
23
|
+
confidence?: 'low';
|
|
24
|
+
}
|
|
25
|
+
export declare function scanForDeadCode(rootAbsolutePath: string, query: FindDeadCodeQuery): DeadCodeScanResult;
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve entrypoint files: explicit paths win; otherwise auto-detect from
|
|
3
|
+
* package.json (main/exports/bin, plus file-looking tokens inside `scripts`
|
|
4
|
+
* such as `node build.mjs`) plus, when `includeTests`, every file that looks
|
|
5
|
+
* like a test. Tests count as roots because a symbol only exercised by a test
|
|
6
|
+
* is proven live, not dead — treating them as entrypoints is the conservative
|
|
7
|
+
* direction (never a false dead-code claim).
|
|
8
|
+
*
|
|
9
|
+
* Returns only entrypoints present in `knownFiles` — an explicit path that
|
|
10
|
+
* doesn't exist in the scanned set is dropped and reported via `warnings`.
|
|
11
|
+
*/
|
|
12
|
+
export declare function resolveEntrypoints(rootAbsolutePath: string, explicitEntrypoints: string[] | undefined, includeTests: boolean, knownFiles: ReadonlySet<string>): {
|
|
13
|
+
entrypoints: string[];
|
|
14
|
+
warnings: string[];
|
|
15
|
+
lowConfidence: boolean;
|
|
16
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import { type FindDeadCodeQuery } from './scheme.js';
|
|
3
|
+
import type { ToolExecutionArgs } from '../../types/execution.js';
|
|
4
|
+
export declare function executeFindDeadCode(args: ToolExecutionArgs<FindDeadCodeQuery>): Promise<CallToolResult>;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { FileFacts, FileNode } from './types.js';
|
|
2
|
+
export declare const DEFAULT_DEAD_CODE_EXCLUDE_DIRS: string[];
|
|
3
|
+
export interface WalkResult {
|
|
4
|
+
facts: Map<string, FileFacts>;
|
|
5
|
+
fileGraph: Map<string, FileNode>;
|
|
6
|
+
filesScanned: number;
|
|
7
|
+
filesSkipped: number;
|
|
8
|
+
truncated: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Files that are the target of a `export * from '...'` somewhere in the
|
|
11
|
+
* scan. A star re-export re-publishes its target's entire surface, so once
|
|
12
|
+
* such a target is reachable its exports are the public API — same
|
|
13
|
+
* treatment as an entrypoint file, not individually retention-checked.
|
|
14
|
+
*/
|
|
15
|
+
starReexportTargets: Set<string>;
|
|
16
|
+
/**
|
|
17
|
+
* Files that are the target of a string-literal dynamic `import('./x')`
|
|
18
|
+
* somewhere in the scan. A dynamic import resolves the whole module
|
|
19
|
+
* namespace, not a specific named binding, so — unlike a static
|
|
20
|
+
* `import { x } from './y'` — there is no reliable way to attribute which
|
|
21
|
+
* of the target's exports are actually used. Treated the same as
|
|
22
|
+
* `starReexportTargets`: reachable, and not individually retention-checked,
|
|
23
|
+
* rather than risk a false-positive "unreferenced export" on a name that's
|
|
24
|
+
* genuinely read off the dynamically-imported namespace object.
|
|
25
|
+
*/
|
|
26
|
+
dynamicImportTargets: Set<string>;
|
|
27
|
+
/**
|
|
28
|
+
* Reverse star-re-export edges: target file → the files that
|
|
29
|
+
* `export * from` it. Needed for retention: a NAMED re-export whose barrel
|
|
30
|
+
* is itself star-re-exported (barrel → `export *` → entrypoint) is public
|
|
31
|
+
* API — `isBindingLive` must be able to hop the star edge, which carries no
|
|
32
|
+
* per-name entry in the named `reexportIndex`. Unfiltered (all scanned
|
|
33
|
+
* files); the scan filters to reachable re-exporters before use.
|
|
34
|
+
*/
|
|
35
|
+
starReexporters: Map<string, string[]>;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Walk every graph-fact-capable file under `rootAbsolutePath`, extract native
|
|
39
|
+
* per-file facts, and resolve import specifiers into a file-level graph. One
|
|
40
|
+
* native call per file, zero LSP round-trips — this is what makes the scan
|
|
41
|
+
* scale with repo size instead of candidate count.
|
|
42
|
+
*/
|
|
43
|
+
export declare function buildFileGraph(rootAbsolutePath: string, excludeDir: string[], maxFiles: number): WalkResult;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve an import specifier to a relative path already present in
|
|
3
|
+
* `knownFiles`, or `null` when it's external/bare or doesn't resolve within
|
|
4
|
+
* the scanned set (dangling import, or a target outside the scan scope).
|
|
5
|
+
*/
|
|
6
|
+
export declare function resolveImportSpecifier(specifier: string, importingFileRelativePath: string, knownFiles: ReadonlySet<string>): string | null;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { WithOptionalMeta } from '../../types/execution.js';
|
|
2
|
+
import type { FindDeadCodeOutput, FindDeadCodeQuery as CoreFindDeadCodeQuery } from './scheme.js';
|
|
3
|
+
type FindDeadCodeQuery = WithOptionalMeta<CoreFindDeadCodeQuery>;
|
|
4
|
+
export declare function findDeadCode(query: FindDeadCodeQuery): Promise<FindDeadCodeOutput>;
|
|
5
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { FileNode } from './types.js';
|
|
2
|
+
/** BFS from every entrypoint across the directed file-import graph. */
|
|
3
|
+
export declare function computeReachableFiles(fileGraph: ReadonlyMap<string, FileNode>, entrypoints: readonly string[]): Set<string>;
|
|
4
|
+
export interface StronglyConnectedComponent {
|
|
5
|
+
files: string[];
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Iterative Tarjan's SCC over the file-import graph (iterative, not
|
|
9
|
+
* recursive, so a deep or cyclic graph in a large repo can't blow the call
|
|
10
|
+
* stack). Only components with more than one file — or a single file that
|
|
11
|
+
* imports itself — are real cycles; singleton components are dropped.
|
|
12
|
+
*
|
|
13
|
+
* This does NOT change what's reachable (BFS in `computeReachableFiles`
|
|
14
|
+
* already resolves cycles correctly — a 2-file cycle with no path from any
|
|
15
|
+
* entrypoint is simply never visited). What SCC adds is explanatory: instead
|
|
16
|
+
* of reporting N separately "unreachable" files, a cyclic cluster is grouped
|
|
17
|
+
* and named as one unit — the exact case a one-symbol-at-a-time reference
|
|
18
|
+
* check (ask "does A call B" in isolation) gets wrong, since each file in the
|
|
19
|
+
* cluster looks locally referenced by the other.
|
|
20
|
+
*/
|
|
21
|
+
export declare function findStronglyConnectedComponents(fileGraph: ReadonlyMap<string, FileNode>): StronglyConnectedComponent[];
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { FileFacts } from './types.js';
|
|
2
|
+
export declare function bindingKey(file: string, name: string): string;
|
|
3
|
+
/**
|
|
4
|
+
* Symbol-level liveness for one file's exported declarations.
|
|
5
|
+
*
|
|
6
|
+
* Seed: exports proven live by cross-file evidence (real import, live
|
|
7
|
+
* re-export chain, star hop — `isBindingLive`). Then propagate same-file
|
|
8
|
+
* call edges to a fixpoint: a call only retains its callee when the CALLER is
|
|
9
|
+
* itself live — two dead exports calling each other must not retain each
|
|
10
|
+
* other. Non-exported callers are conservatively treated as live (their
|
|
11
|
+
* liveness is not tracked, and module-level calls carry no caller edge at
|
|
12
|
+
* all). The lexical whole-word fallback (value references — spreads,
|
|
13
|
+
* property access, arguments — that `calls` never sees) still applies, but
|
|
14
|
+
* call-site occurrences attributable to DEAD exported callers are subtracted
|
|
15
|
+
* first so a dead caller's call site no longer lexically retains its callee.
|
|
16
|
+
* Both propagation rules are monotone (live only grows, the subtraction only
|
|
17
|
+
* shrinks), so the fixpoint terminates.
|
|
18
|
+
*/
|
|
19
|
+
export declare function computeLiveExportedNames(file: string, facts: FileFacts, entrypointSet: ReadonlySet<string>, realImportIndex: ReadonlySet<string>, reexportIndex: ReadonlyMap<string, ReadonlyArray<{
|
|
20
|
+
file: string;
|
|
21
|
+
localName: string;
|
|
22
|
+
}>>, starReexporters: ReadonlyMap<string, ReadonlyArray<string>>): Set<string>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { FindDeadCodeQuerySchema as CoreFindDeadCodeQuerySchema } from '@octocodeai/octocode-core/schemas';
|
|
3
|
+
import type { LocalItemPagination, ToolContinuation } from '../../scheme/pagination.js';
|
|
4
|
+
export type FindDeadCodeQuery = z.infer<typeof CoreFindDeadCodeQuerySchema>;
|
|
5
|
+
export declare const LocalFindDeadCodeQuerySchema: z.ZodType<FindDeadCodeQuery>;
|
|
6
|
+
export declare const LocalFindDeadCodeBulkQuerySchema: z.ZodObject<{
|
|
7
|
+
responseCharOffset: z.ZodOptional<z.ZodPreprocess<z.ZodNumber>>;
|
|
8
|
+
responseCharLength: z.ZodOptional<z.ZodPreprocess<z.ZodNumber>>;
|
|
9
|
+
queries: z.ZodArray<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
|
|
10
|
+
}, z.core.$strip>;
|
|
11
|
+
export type DeadCodeReason = 'unreachable-file' | 'unreferenced-export' | 'dead-cluster';
|
|
12
|
+
export interface DeadExportOutput {
|
|
13
|
+
file: string;
|
|
14
|
+
name: string;
|
|
15
|
+
kind: string;
|
|
16
|
+
line: number;
|
|
17
|
+
reason: DeadCodeReason;
|
|
18
|
+
clusterId?: number;
|
|
19
|
+
/**
|
|
20
|
+
* Only on `reason:"unreferenced-export"` — which negative-evidence path
|
|
21
|
+
* concluded "dead", so agents know which candidates to LSP-verify first:
|
|
22
|
+
* - `"reexport-chain"`: the binding IS re-exported somewhere, but every
|
|
23
|
+
* chain terminated without a real consumer — the most fragile verdict.
|
|
24
|
+
* - `"lexical-count"`: no import and no unexplained same-file occurrence
|
|
25
|
+
* beyond the declaration itself.
|
|
26
|
+
*/
|
|
27
|
+
viaHeuristic?: 'lexical-count' | 'reexport-chain';
|
|
28
|
+
}
|
|
29
|
+
export interface DeadClusterOutput {
|
|
30
|
+
id: number;
|
|
31
|
+
files: string[];
|
|
32
|
+
reason: string;
|
|
33
|
+
}
|
|
34
|
+
export interface FindDeadCodeOutput {
|
|
35
|
+
status?: 'empty' | 'error';
|
|
36
|
+
error?: string;
|
|
37
|
+
errorCode?: string;
|
|
38
|
+
rawResponseChars?: number;
|
|
39
|
+
path?: string;
|
|
40
|
+
filesScanned?: number;
|
|
41
|
+
filesSkipped?: number;
|
|
42
|
+
entrypointsResolved?: string[];
|
|
43
|
+
deadExports?: DeadExportOutput[];
|
|
44
|
+
deadClusters?: DeadClusterOutput[];
|
|
45
|
+
pagination?: LocalItemPagination;
|
|
46
|
+
next?: Record<string, ToolContinuation>;
|
|
47
|
+
/** See `DeadCodeScanResult.confidence` — present (always `"low"`) only when
|
|
48
|
+
* `entrypointsResolved` came entirely from the test-file heuristic. */
|
|
49
|
+
confidence?: 'low';
|
|
50
|
+
[key: string]: unknown;
|
|
51
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export interface DeclarationFact {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
kind: string;
|
|
5
|
+
line: number;
|
|
6
|
+
exported: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface ImportFact {
|
|
9
|
+
specifier: string;
|
|
10
|
+
localName: string;
|
|
11
|
+
importedName: string;
|
|
12
|
+
line: number;
|
|
13
|
+
}
|
|
14
|
+
export interface CallEdgeFact {
|
|
15
|
+
caller: string;
|
|
16
|
+
callee: string;
|
|
17
|
+
}
|
|
18
|
+
export interface FileFacts {
|
|
19
|
+
relativePath: string;
|
|
20
|
+
declarations: DeclarationFact[];
|
|
21
|
+
imports: ImportFact[];
|
|
22
|
+
/**
|
|
23
|
+
* Named re-exports (`export { x } from './y.js'`) declared in this file.
|
|
24
|
+
* Kept separate from `imports`: a re-export is a pass-through, not a
|
|
25
|
+
* consuming usage — `x` is only actually live if *this file's own* export
|
|
26
|
+
* of it (`localName`) is itself consumed somewhere, directly or through a
|
|
27
|
+
* further re-export. Folding these into `imports` would make merely being
|
|
28
|
+
* re-exported look like proof of use, which false-negatives on exactly the
|
|
29
|
+
* "barrel re-exports more than anyone downstream imports" case.
|
|
30
|
+
*/
|
|
31
|
+
namedReexports: ImportFact[];
|
|
32
|
+
calls: CallEdgeFact[];
|
|
33
|
+
/**
|
|
34
|
+
* Whole-word occurrence count of each declared name in the file's raw
|
|
35
|
+
* source. `calls` only covers function-invocation edges; a name used by
|
|
36
|
+
* value reference (spread, property access, passed as an argument) never
|
|
37
|
+
* appears there, so this is the fallback that catches same-file usage of
|
|
38
|
+
* exported constants/types. A count > 1 means the name appears somewhere
|
|
39
|
+
* besides its own declaration line.
|
|
40
|
+
*/
|
|
41
|
+
referenceCounts: Map<string, number>;
|
|
42
|
+
}
|
|
43
|
+
export interface FileNode {
|
|
44
|
+
relativePath: string;
|
|
45
|
+
/** Resolved relative paths of files this file imports from — static and
|
|
46
|
+
* string-literal dynamic `import()` targets alike. */
|
|
47
|
+
importsFiles: Set<string>;
|
|
48
|
+
/**
|
|
49
|
+
* Subset of `importsFiles` reached only through a string-literal dynamic
|
|
50
|
+
* `import()`, not a static `import`/`export ... from`. Used to compute a
|
|
51
|
+
* static-only reachability pass so a file reachable exclusively through
|
|
52
|
+
* dynamic import can be flagged as lower-confidence rather than treated
|
|
53
|
+
* with the same certainty as a statically-proven path.
|
|
54
|
+
*/
|
|
55
|
+
dynamicImportsFiles: Set<string>;
|
|
56
|
+
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { type CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
2
2
|
import { type FetchContentQuery } from './scheme.js';
|
|
3
3
|
import type { ToolExecutionArgs } from '../../types/execution.js';
|
|
4
|
-
export { finalizeFetchContentResult } from './fetchContent.js';
|
|
5
4
|
export declare function executeFetchContent(args: ToolExecutionArgs<FetchContentQuery>): Promise<CallToolResult>;
|