@octocodeai/octocode-core 4.2.0 → 16.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/data/compressed.js +1 -1
  2. package/dist/data/default.json +210 -299
  3. package/dist/resources/global.d.ts +3 -0
  4. package/dist/resources/global.js +1 -0
  5. package/dist/resources/tools/githubCloneRepo.d.ts +2 -0
  6. package/dist/resources/tools/githubCloneRepo.js +1 -0
  7. package/dist/resources/tools/githubGetFileContent.d.ts +2 -0
  8. package/dist/resources/tools/githubGetFileContent.js +1 -0
  9. package/dist/resources/tools/githubSearchCode.d.ts +2 -0
  10. package/dist/resources/tools/githubSearchCode.js +1 -0
  11. package/dist/resources/tools/githubSearchPullRequests.d.ts +2 -0
  12. package/dist/resources/tools/githubSearchPullRequests.js +1 -0
  13. package/dist/resources/tools/githubSearchRepositories.d.ts +2 -0
  14. package/dist/resources/tools/githubSearchRepositories.js +1 -0
  15. package/dist/resources/tools/githubViewRepoStructure.d.ts +2 -0
  16. package/dist/resources/tools/githubViewRepoStructure.js +1 -0
  17. package/dist/resources/tools/localFindFiles.d.ts +2 -0
  18. package/dist/resources/tools/localFindFiles.js +1 -0
  19. package/dist/resources/tools/localGetFileContent.d.ts +2 -0
  20. package/dist/resources/tools/localGetFileContent.js +1 -0
  21. package/dist/resources/tools/localSearchCode.d.ts +2 -0
  22. package/dist/resources/tools/localSearchCode.js +1 -0
  23. package/dist/resources/tools/localViewStructure.d.ts +2 -0
  24. package/dist/resources/tools/localViewStructure.js +1 -0
  25. package/dist/resources/tools/lspGetSemanticContent.d.ts +2 -0
  26. package/dist/resources/tools/lspGetSemanticContent.js +1 -0
  27. package/dist/resources/tools/packageSearch.d.ts +2 -0
  28. package/dist/resources/tools/packageSearch.js +1 -0
  29. package/dist/schemas/extraTypes.d.ts +15 -1
  30. package/dist/schemas/index.d.ts +207 -88
  31. package/dist/schemas/index.js +1 -1
  32. package/dist/schemas/outputs.d.ts +34 -2
  33. package/dist/schemas/outputs.js +1 -1
  34. package/dist/schemas/runtime.js +1 -1
  35. package/dist/types/index.d.ts +17 -5
  36. package/package.json +2 -1
@@ -0,0 +1,3 @@
1
+ import type { ToolNames, BaseSchema } from "../types/index.js";
2
+ export declare const toolNames: ToolNames;
3
+ export declare const baseSchema: BaseSchema;
@@ -0,0 +1 @@
1
+ export const toolNames={GITHUB_FETCH_CONTENT:"githubGetFileContent",GITHUB_SEARCH_CODE:"githubSearchCode",GITHUB_SEARCH_PULL_REQUESTS:"githubSearchPullRequests",GITHUB_SEARCH_REPOSITORIES:"githubSearchRepositories",GITHUB_VIEW_REPO_STRUCTURE:"githubViewRepoStructure",PACKAGE_SEARCH:"packageSearch",GITHUB_CLONE_REPO:"githubCloneRepo",LOCAL_RIPGREP:"localSearchCode",LOCAL_FETCH_CONTENT:"localGetFileContent",LOCAL_FIND_FILES:"localFindFiles",LOCAL_VIEW_STRUCTURE:"localViewStructure",LSP_GET_SEMANTIC_CONTENT:"lspGetSemanticContent"};export const baseSchema={id:"Query ID.",mainResearchGoal:"Shared goal across batched queries.",researchGoal:"Goal this query answers.",reasoning:"Why this query."};
@@ -0,0 +1,2 @@
1
+ import type { ToolSpec } from "../../types/index.js";
2
+ export declare const githubCloneRepo: ToolSpec;
@@ -0,0 +1 @@
1
+ export const githubCloneRepo={name:"githubCloneRepo",description:"Clone GitHub repo/subtree for repeated reads, grep, or LSP; returns localPath.\nNext: localViewStructure(localPath), localSearchCode, localGetFileContent, lspGetSemanticContent.\nRequires ENABLE_CLONE=true.",schema:{owner:"GitHub repository owner or organization.",repo:"GitHub repository name without the owner.",branch:"Branch, tag, or commit SHA. Omit to resolve the repository branch.",forceRefresh:"Bypass the clone cache and re-clone from GitHub.",sparsePath:'Subdirectory sparse checkout ("packages/foo") — shrinks large monorepo clones.'}};
@@ -0,0 +1,2 @@
1
+ import type { ToolSpec } from "../../types/index.js";
2
+ export declare const githubGetFileContent: ToolSpec;
@@ -0,0 +1 @@
1
+ export const githubGetFileContent={name:"githubGetFileContent",description:"Read GitHub file/region.\nUse matchString or startLine/endLine for focused reads; fullContent is for small whole-file reads.\nContinuation pages are cache-served; use pagination.nextBlockChar to avoid mid-block cuts or charOffset+charLength to advance.\nNext: githubSearchCode for usages, githubViewRepoStructure for surrounding paths.",schema:{owner:"GitHub owner or org.",repo:"Repository name (no owner).",branch:"Branch, tag, or commit SHA. Omit to resolve the repository branch.",path:"Repo-relative path — exact case, no leading slash (e.g. src/utils/foo.ts).",startLine:"1-based first line. Exclusive with fullContent/matchString.",endLine:"1-based last line. Exclusive with fullContent/matchString.",fullContent:"Whole file read. Exclusive with matchString/startLine/endLine.",matchString:'Anchor text or regex; all occurrences return as merged slices with matchRanges. Case-insensitive unless matchStringCaseSensitive is true. Not applied when minify:"symbols".',matchStringIsRegex:"Treat matchString as a regex pattern.",matchStringCaseSensitive:"Use case-sensitive matchString matching.",forceRefresh:"Bypass cache and re-fetch from GitHub.",type:"Content target: 'file' reads path; 'directory' materializes a subtree to disk and requires ENABLE_LOCAL=true plus ENABLE_CLONE=true.",contextLines:"Lines of context around each match.",charOffset:"Char offset for continuation pages. Use pagination.charOffset from a prior isPartial response.",charLength:"Page size in chars. Raise for a larger contiguous chunk.",minify:'"standard" strips comments+blanks; "none" keeps exact raw text/comments; "symbols" returns skeleton+gutter and skips matchString/charLength.'}};
@@ -0,0 +1,2 @@
1
+ import type { ToolSpec } from "../../types/index.js";
2
+ export declare const githubSearchCode: ToolSpec;
@@ -0,0 +1 @@
1
+ export const githubSearchCode={name:"githubSearchCode",description:"GitHub code/path search returning path+snippet; matchIndices are snippet char offsets, not file lines.\nEmpty owner+repo can mean unindexed repo; retry owner-only to confirm. Page with limit/page, no total pages.\nNext: githubGetFileContent(path,matchString) for source, githubViewRepoStructure for context, githubSearchRepositories if owner/repo unknown.",schema:{keywordsToSearch:"All terms are combined. Split independent terms into separate items; keep an exact phrase together when needed.",owner:"Owner/org scope — pair with repo to target one repository.",repo:"Repository name (without owner).",extension:'Extension filter, no dot ("ts"). Combines with keywords.',filename:'Filename filter (GitHub filename:) — name equals or contains the value ("Button.tsx", "jest.config").',path:"Directory-prefix filter (GitHub path:) — matches repo paths starting with this prefix, not a full file path.",match:'Search target: "file" searches file contents; "path" searches file paths/names.',limit:"Requested results per GitHub page. Output may have fewer; no total count is returned.",page:"GitHub result page (1-based).",verbose:"Set true to add per-file html url pinned to the matched commit."}};
@@ -0,0 +1,2 @@
1
+ import type { ToolSpec } from "../../types/index.js";
2
+ export declare const githubSearchPullRequests: ToolSpec;
@@ -0,0 +1 @@
1
+ export const githubSearchPullRequests={name:"githubSearchPullRequests",description:'PR search/review. Broad search returns lean metadata; prNumber fetches requested surfaces; reviewMode="full" fetches all.\nSignals: bodyEmpty=requested empty body, absent=not fetched, sanitizationWarnings=filtered/redacted, in_reply_to_id=inline reply.\nUse lighter diffs for scans, raw diffs for quotes, matchString for known text.\nPagination: search page/limit, content filePage/commentPage/commitPage/itemsPerPage, body charOffset/charLength; page only on hasMore, else request narrower content selectors.\nNext: githubGetFileContent for current source, githubSearchCode for usages, prNumber+content.comments for discussion.',schema:{keywordsToSearch:"All keywords are combined across title/body/comments. Multi-word terms auto phrase-quoted. Use match to restrict scope.",query:'Raw GitHub search string appended after keywords. Use for exact phrases ("Partial Prerendering"), qualifiers (label:bug), or anything not exposed as a field.',match:"PR text fields for keyword search: title, body, and/or comments. Body/comments broaden the search.",prNumber:"Direct PR lookup; include it when requesting body, files, patches, comments, reviews, or commits.",owner:"Repo owner or org.",repo:"Repo name.",verbose:"Set true to add url/sourceBranch/sourceSha/updatedAt/bodyPreview to broad results. prNumber lookup already includes full metadata.",state:'PR state filter: "open", "closed", or "merged". If "merged" is sparse, retry "closed" and filter by mergedAt.',assignee:"Assigned user filter.",author:"Author filter.",commenter:"Commenter filter.",involves:"User involvement filter.",mentions:"Mentioned user filter.","review-requested":"Requested reviewer filter.","reviewed-by":"Reviewer filter.",label:"Label filter.","no-label":"Filter to PRs without labels.","no-milestone":"Filter to PRs without milestone.","no-project":"Filter to PRs without project.","no-assignee":"Filter to PRs without assignee.",head:"Source branch filter.",base:"Target branch filter.",created:"Creation date/window.",updated:"Update date/window.",closed:"Closed date/window.","merged-at":"Merged date/window.",comments:"Comment-count filter.",reactions:"Reaction-count filter.",interactions:"Comment+reaction-count filter.",draft:"Draft-state filter.",sort:"created, updated, best-match, comments, or reactions.",order:"Sort order.",archived:"Include archived repos when needed.",limit:"Broad-search result count.",page:"Result page.",filePage:"Pagination page for changedFiles list.",commentPage:"Pagination page for comments.",commitPage:"Pagination page for commits.",itemsPerPage:"Items per page for content selectors.",reviewMode:'"full" = body + changedFiles + patches + comments + reviews + commits in one call.',content:"Surface selector object. Include prNumber because broad searches return metadata.","content.metadata":"PR metadata fields.","content.body":"Full PR description (char-paginated).","content.changedFiles":"File list: path/status/additions/deletions (paged via filePage).","content.patches":"Patch/diff selector.","content.patches.mode":'Patch selection: "none", "selected" with files/ranges, or "all" for every diff.',"content.patches.files":'Non-empty file path list for mode:"selected".',"content.patches.ranges":'Non-empty per-file line ranges for mode:"selected".',"content.patches.ranges.file":"Changed file path for a selected patch range.","content.patches.ranges.additions":"Added-line numbers to include for this file.","content.patches.ranges.deletions":"Deleted-line numbers to include for this file.","content.comments":"PR discussion and inline review comment selector.","content.comments.discussion":"PR thread comments.","content.comments.reviewInline":"Inline code annotations (in_reply_to_id = reply thread).","content.comments.includeBots":"Set true to include CI/bot comments such as Vercel or CodeRabbit.","content.comments.file":"Filter inline comments to one file path.","content.reviews":"Review summaries: APPROVED / CHANGES_REQUESTED.","content.commits":"Commit selector.","content.commits.list":"Commit list (sha, message, author, date).","content.commits.includeFiles":"Per-commit changed-file list.",matchString:"Filter patch/body text — disables minify so matched lines stay visible.",charOffset:"Char offset for body pagination.",charLength:"Body page size in chars.",minify:'"standard" strips comment-only diff lines; "none" keeps raw exact diffs for quoting patch text.'}};
@@ -0,0 +1,2 @@
1
+ import type { ToolSpec } from "../../types/index.js";
2
+ export declare const githubSearchRepositories: ToolSpec;
@@ -0,0 +1 @@
1
+ export const githubSearchRepositories={name:"githubSearchRepositories",description:"Discover GitHub repos by name, keywords, owner, topic, language, or popularity.\nOwner alone enumerates org repos; keywords combine together. Lean output is pipe-separated; verbose=true returns structured objects.\nNext: githubViewRepoStructure, githubSearchCode/githubGetFileContent, packageSearch for npm names.",schema:{keywordsToSearch:"Combined search terms. Use one term per element for broad matching; keep a phrase together for exact wording.",topicsToSearch:"Self-reported GitHub topics. Sparse — fewer repos tag topics than set a language.",language:"Repository language qualifier (GitHub detection).",owner:"Owner/org scope. Owner without keywords enumerates org repos; owner with keywords scopes repository search.",stars:"Star-count filter ('>100', '50..500').",size:"Repository size filter in KB.",created:"Repo creation date/window (e.g. '>2023-01-01').",updated:"Last code-push date/window. Maps to GitHub's `pushed:` qualifier (not `updated:`), so it filters by the date of the last commit push, not metadata updates. E.g. '>2024-01-01'.",match:"Repository text fields to search: name, description, and/or readme. Multiple values match any listed field.",sort:"Sort field: 'stars' | 'forks' | 'help-wanted-issues' | 'updated' | 'best-match'. 'help-wanted-issues' finds repos actively seeking contributors.",limit:"Repositories per page.",page:"Result page (1-based).",archived:"Set true to include archived repos; otherwise search excludes archived repos.",visibility:"'public' or 'private' (private requires repo scope token). Omit to include both.",forks:"Fork-count filter ('>10', '50..500').",license:"SPDX license identifier (e.g. 'mit', 'apache-2.0', 'gpl-3.0'). Exact lowercase SPDX key.",goodFirstIssues:"Filter by number of 'good first issue' labels ('>5').",verbose:"Set true for structured repository objects with owner/repo, metadata, topics, dates, and url."}};
@@ -0,0 +1,2 @@
1
+ import type { ToolSpec } from "../../types/index.js";
2
+ export declare const githubViewRepoStructure: ToolSpec;
@@ -0,0 +1 @@
1
+ export const githubViewRepoStructure={name:"githubViewRepoStructure",description:"Inspect GitHub repo tree and separate implementation from tests, fixtures, docs, generated code.\nNext: githubGetFileContent(path), githubSearchCode, githubCloneRepo for local+LSP.",schema:{owner:"GitHub repository owner or organization.",repo:"GitHub repository name without the owner.",branch:"Branch, tag, or commit SHA. Omit to resolve the repository branch.",path:'Repo-relative directory to browse. Use "" or "." for the root.',depth:"Recursion depth for nested tree output; raise to expose deeper subtrees.",page:"Result page (1-based).",itemsPerPage:"Entries per page.",verbose:"Set true for per-entry file URLs, sizes, and last-modified dates."}};
@@ -0,0 +1,2 @@
1
+ import type { ToolSpec } from "../../types/index.js";
2
+ export declare const localFindFiles: ToolSpec;
@@ -0,0 +1 @@
1
+ export const localFindFiles={name:"localFindFiles",description:"Find local paths by basename glob, full-path glob, Rust basename regex, size, or time; returns metadata, not content.\nNext: localGetFileContent(path), localSearchCode for content, lspGetSemanticContent after a content hit.",schema:{path:"Search root, absolute or workspace-relative.",maxDepth:"Upper directory depth bound; pair with minDepth for a depth window.",minDepth:"Lower directory depth bound; pair with maxDepth for a depth window.",names:'Basename glob array; any listed glob may match (["*.ts", "*.tsx"]).',pathPattern:"Full-path glob — use for monorepo slices (e.g. 'packages/*/src/**').",regex:"Rust regex against the basename. Use names for simple glob patterns.",empty:"Match empty files (0 bytes) or directories with no children.",modifiedWithin:"Modified within the past N (e.g. '7d', '2h', '30m').",modifiedBefore:"Not modified in the past N — last touched more than N ago (e.g. '30d').",accessedWithin:"Accessed within the past N (e.g. '7d', '2h').",sizeGreater:"Larger than value (e.g. '100k', '1m', '500b').",sizeLess:"Smaller than value (e.g. '10k', '500b').",permissions:'Exact octal permission bits ("644", "755").',executable:"Filter to files executable by the current process (-x).",readable:"Filter to files readable by the current process (-r).",writable:"Filter to files writable by the current process (-w).",excludeDir:"Directory names to skip (e.g. 'node_modules', 'dist', '.git').",limit:"Pre-pagination cap on discovered entries; distinct from page size.",details:"Set true to add size and permissions per entry.",showFileLastModified:"Set true to include last-modified timestamps; sorting by modified still uses mtime internally.",sortBy:"Sort by modified time, name, path, or size.",entryType:'Entry kind: "f" for files, "d" for directories.',page:"Result page (1-based).",itemsPerPage:"Entries per page."}};
@@ -0,0 +1,2 @@
1
+ import type { ToolSpec } from "../../types/index.js";
2
+ export declare const localGetFileContent: ToolSpec;
@@ -0,0 +1 @@
1
+ export const localGetFileContent={name:"localGetFileContent",description:"Read local file/region.\nChoose mode by goal: readable page, exact text, or skeleton gutter.\nUse matchString or startLine/endLine for focused reads; charOffset/charLength continues partial content.\nNext: lspGetSemanticContent(uri,symbolName,lineHint), localSearchCode before unknown symbols.",schema:{path:"File path, absolute or workspace-relative. Use localViewStructure for directories.",fullContent:"Whole file. Exclusive with matchString and startLine/endLine — reserve for small files.",matchString:'Anchor text or regex; all occurrences return as merged slices with matchRanges. Case-insensitive unless matchStringCaseSensitive is true. Not applied when minify:"symbols".',matchStringIsRegex:"Treat matchString as a regex pattern.",matchStringCaseSensitive:"Use case-sensitive matchString matching.",startLine:"1-based first line. Use with endLine; exclusive with fullContent/matchString.",endLine:"1-based last line. Use with startLine; exclusive with fullContent/matchString.",contextLines:"Lines of context around each matchString hit.",charOffset:"Continuation char offset from pagination when isPartial/hasMore is true.",charLength:"Char page size.",minify:'"standard" strips comments+blanks; "none" keeps exact raw text/comments; "symbols" returns skeleton+gutter and skips matchString/charLength.'}};
@@ -0,0 +1,2 @@
1
+ import type { ToolSpec } from "../../types/index.js";
2
+ export declare const localSearchCode: ToolSpec;
@@ -0,0 +1 @@
1
+ export const localSearchCode={name:"localSearchCode",description:"Local ripgrep search for file+line.\nPage only on hasMore; use matchPage for more matches in one file; narrow path/include/exclude/keywords before paging noisy results.\nNext: localGetFileContent(path,matchString), lspGetSemanticContent(uri,symbolName,lineHint), localViewStructure if root unknown.",schema:{keywords:"Text or regex. fixedString:true for literal; perlRegex:true for PCRE2 features.",path:"File or directory to search; absolute paths are safest.",mode:'"paginated" for normal reading; "discovery" for cheap presence checks; "detailed" for expanded snippets.',fixedString:"Literal match — disables regex.",perlRegex:"PCRE2 regex — lookaheads, backreferences.",caseInsensitive:"Use case-insensitive matching (-i). Exclusive with caseSensitive.",caseSensitive:"Use case-sensitive matching.",wholeWord:"Match whole-word occurrences.",invertMatch:"Return non-matching lines (-v). For files lacking the pattern use filesWithoutMatch.",include:"File path include globs (e.g. '*.ts', 'src/**/*.tsx').",exclude:"File path exclude globs (e.g. '*.min.js', 'dist/**').",excludeDir:"Directory names to skip (e.g. 'node_modules', 'dist', '.git').",noIgnore:"Bypass .gitignore and .ignore files.",hidden:"Include hidden (dot) files.",filesOnly:"Return matching file paths without line content.",filesWithoutMatch:"Files that do not match.",contextLines:"Lines of context around each match.",matchContentLength:"Chars per match snippet; raise for very long lines such as minified code or JSON blobs.",maxMatchesPerFile:"Limit matches returned per file.",maxFiles:"Limit matched files returned.",multiline:"Cross-line matching (-U). Add multilineDotall when dot should match newlines.",multilineDotall:". matches newlines. Requires multiline=true.",sort:"Sort by path, modified time, access time, or creation time.",sortReverse:"Reverse sort order (e.g. sort=modified + sortReverse=true → oldest first).",langType:"Ripgrep language type filter such as ts, js, py, or go.",countLinesPerFile:"Matching-line count per file instead of content. Exclusive with countMatchesPerFile.",countMatchesPerFile:"Total match count per file (multiple per line counted). Exclusive with countLinesPerFile.",matchPage:"Per-file match page (1-based). Use with maxMatchesPerFile.",itemsPerPage:"Files per page.",page:"Result page (1-based)."}};
@@ -0,0 +1,2 @@
1
+ import type { ToolSpec } from "../../types/index.js";
2
+ export declare const localViewStructure: ToolSpec;
@@ -0,0 +1 @@
1
+ export const localViewStructure={name:"localViewStructure",description:"Inspect local directory tree and separate implementation from tests, fixtures, docs, generated output.\nNext: localGetFileContent(path), localSearchCode, lspGetSemanticContent after localSearchCode gives uri/symbolName/lineHint.",schema:{path:"Directory to browse.",details:"Set true for per-entry objects with size, permissions, and dates.",hidden:"Include hidden (dot) files and directories.",sortBy:"Sort by name, size, time, or extension.",reverse:"Reverse sort order.",pattern:"Filename/directory name filter — glob (e.g. '*.ts') or plain substring. For regex use localFindFiles.",directoriesOnly:"Return directories; mutually exclusive with filesOnly.",filesOnly:"Return files; mutually exclusive with directoriesOnly.",recursive:"Recursively walk subdirectories; depth controls how far to descend.",extensions:"Extension whitelist (['ts', 'js']).",depth:"Recursion depth.",limit:"Pre-pagination cap on discovered entries; distinct from page size.",showFileLastModified:"Set true to include last-modified timestamps; also enabled with details or sortBy=time.",page:"Result page (1-based).",itemsPerPage:"Directory entries per page for structure pagination."}};
@@ -0,0 +1,2 @@
1
+ import type { ToolSpec } from "../../types/index.js";
2
+ export declare const lspGetSemanticContent: ToolSpec;
@@ -0,0 +1 @@
1
+ export const lspGetSemanticContent={name:"lspGetSemanticContent",description:'Typed LSP queries: definition, references, callers, callees, callHierarchy, hover, documentSymbols, typeDefinition, implementation.\nTS/JS built in; other languages need installed servers. callers/callees/callHierarchy work on functions.\ndocumentSymbols needs only uri; implementation symbolName is member name. Use format:"compact" for scans.\nNext: localGetFileContent(startLine/endLine), localSearchCode for uri/symbolName/lineHint.',schema:{uri:"Target source file as absolute path or file:/// URI.",type:"LSP operation such as definition, references, hover, documentSymbols, typeDefinition, or implementation.",symbolName:"Needed except for documentSymbols. Exact identifier at lineHint; case-sensitive, no parentheses.",lineHint:"Needed except for documentSymbols. 1-based line from a prior localSearchCode hit.",orderHint:"Nth (0-based) occurrence when symbolName repeats on lineHint.",depth:"Call-tree recursion depth for callHierarchy/callers/callees.",includeDeclaration:"references: set false to omit the declaration itself.",groupByFile:"references: compact per-file summary instead of a flat usage list.",page:"Result page (1-based) for documentSymbols and call-flow results.",itemsPerPage:"Items per page for documentSymbols and call-flow results.",contextLines:"Lines of context for call-flow previews (callers/callees/callHierarchy).",format:'Output format: "structured" typed objects or "compact" line-oriented strings.',workspaceRoot:"Override the workspace root. Omit to auto-detect from the file path."}};
@@ -0,0 +1,2 @@
1
+ import type { ToolSpec } from "../../types/index.js";
2
+ export declare const packageSearch: ToolSpec;
@@ -0,0 +1 @@
1
+ export const packageSearch={name:"packageSearch",description:"npm lookup returning package identity, metadata, and source-repo handoff when available.\nMode controls enrichment; smart keeps exact hits rich and broad searches lean.\nNext: githubViewRepoStructure, githubSearchCode, githubGetFileContent when owner/repo exists.",schema:{packageName:"Exact npm package name or keyword query.",mode:'Enrichment mode: "smart", "full", or "lean".',page:"Keyword-result page. Exact package names return one canonical package."}};
@@ -71,6 +71,8 @@ export interface MatchRange {
71
71
  }
72
72
  export interface LocalGetFileContentToolResult extends BaseToolResult {
73
73
  content?: string;
74
+ contentView?: "none" | "standard" | "symbols";
75
+ isSkeleton?: boolean;
74
76
  totalLines?: number;
75
77
  startLine?: number;
76
78
  endLine?: number;
@@ -88,7 +90,8 @@ export interface LocalGetFileContentToolResult extends BaseToolResult {
88
90
  filePath?: string;
89
91
  }
90
92
  export interface LocalViewStructureEntryFlat {
91
- name: string;
93
+ /** Entry display name for rich directory listings. */
94
+ name?: string;
92
95
  type: "file" | "dir" | "link" | "directory" | "symlink";
93
96
  path?: string;
94
97
  depth?: number;
@@ -97,7 +100,16 @@ export interface LocalViewStructureEntryFlat {
97
100
  permissions?: string;
98
101
  }
99
102
  export interface LocalViewStructureToolResult extends BaseToolResult {
103
+ /** Rich per-entry objects — emitted with details=true or showFileLastModified=true. */
100
104
  entries?: LocalViewStructureEntryFlat[];
105
+ /** Base directory for the flat name lists (lean default output). */
106
+ path?: string;
107
+ /** Flat file name list (lean default; names carry subpaths in recursive mode). */
108
+ files?: string[];
109
+ /** Flat directory name list (lean default). */
110
+ folders?: string[];
111
+ /** Flat symlink name list (lean default, only when present). */
112
+ links?: string[];
101
113
  summary?: string | Record<string, unknown>;
102
114
  pagination?: PaginationInfo;
103
115
  }
@@ -186,6 +198,8 @@ export interface GitHubRepositoryOutput {
186
198
  forksCount: number;
187
199
  openIssuesCount?: number;
188
200
  language?: string;
201
+ license?: string;
202
+ homepage?: string;
189
203
  }
190
204
  /**
191
205
  * Provider-facing repos-search result. Mirrors `GitHubSearchReposData`