@octocodeai/octocode-core 4.3.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 (33) hide show
  1. package/dist/data/compressed.js +1 -1
  2. package/dist/data/default.json +170 -263
  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/index.d.ts +88 -50
  30. package/dist/schemas/index.js +1 -1
  31. package/dist/schemas/runtime.js +1 -1
  32. package/dist/types/index.d.ts +7 -0
  33. 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."}};
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * Zod input schemas — the canonical schemas every tool exposes to MCP
3
- * clients. The mcp-host overlay extends these with default pagination
4
- * values, detail controls, and meta fields (id/researchGoal/etc.).
3
+ * clients. Keep public field names, stable defaults, numeric bounds, and
4
+ * cross-field validation here so generated JSON Schema carries the contract.
5
5
  *
6
- * These schemas expose the public tool field names. Package overlays can still
7
- * add bounds/defaults, but legacy aliases do not belong here.
6
+ * Package overlays may add runtime clamping or environment-specific behavior,
7
+ * but legacy aliases do not belong here.
8
8
  *
9
9
  * The overlay calls `.extend()`, `.shape`, `.element` on these schemas,
10
10
  * so they must remain `z.ZodObject<...>` shapes (no transforms / unions
@@ -14,7 +14,7 @@ import { z } from "zod";
14
14
  export declare const RipgrepQuerySchema: z.ZodObject<{
15
15
  keywords: z.ZodString;
16
16
  path: z.ZodString;
17
- mode: z.ZodOptional<z.ZodEnum<{
17
+ mode: z.ZodDefault<z.ZodEnum<{
18
18
  paginated: "paginated";
19
19
  discovery: "discovery";
20
20
  detailed: "detailed";
@@ -33,16 +33,16 @@ export declare const RipgrepQuerySchema: z.ZodObject<{
33
33
  filesOnly: z.ZodOptional<z.ZodBoolean>;
34
34
  filesWithoutMatch: z.ZodOptional<z.ZodBoolean>;
35
35
  contextLines: z.ZodOptional<z.ZodNumber>;
36
- matchContentLength: z.ZodOptional<z.ZodNumber>;
36
+ matchContentLength: z.ZodDefault<z.ZodNumber>;
37
37
  maxMatchesPerFile: z.ZodOptional<z.ZodNumber>;
38
38
  maxFiles: z.ZodOptional<z.ZodNumber>;
39
39
  multiline: z.ZodOptional<z.ZodBoolean>;
40
40
  multilineDotall: z.ZodOptional<z.ZodBoolean>;
41
- sort: z.ZodOptional<z.ZodEnum<{
41
+ sort: z.ZodDefault<z.ZodEnum<{
42
42
  path: "path";
43
43
  modified: "modified";
44
- accessed: "accessed";
45
44
  created: "created";
45
+ accessed: "accessed";
46
46
  }>>;
47
47
  sortReverse: z.ZodOptional<z.ZodBoolean>;
48
48
  langType: z.ZodOptional<z.ZodString>;
@@ -50,7 +50,7 @@ export declare const RipgrepQuerySchema: z.ZodObject<{
50
50
  countMatchesPerFile: z.ZodOptional<z.ZodBoolean>;
51
51
  matchPage: z.ZodOptional<z.ZodNumber>;
52
52
  itemsPerPage: z.ZodOptional<z.ZodNumber>;
53
- page: z.ZodOptional<z.ZodNumber>;
53
+ page: z.ZodDefault<z.ZodNumber>;
54
54
  id: z.ZodOptional<z.ZodString>;
55
55
  mainResearchGoal: z.ZodOptional<z.ZodString>;
56
56
  researchGoal: z.ZodOptional<z.ZodString>;
@@ -63,7 +63,6 @@ export declare const FindFilesQuerySchema: z.ZodObject<{
63
63
  names: z.ZodOptional<z.ZodArray<z.ZodString>>;
64
64
  pathPattern: z.ZodOptional<z.ZodString>;
65
65
  regex: z.ZodOptional<z.ZodString>;
66
- regexType: z.ZodOptional<z.ZodString>;
67
66
  empty: z.ZodOptional<z.ZodBoolean>;
68
67
  modifiedWithin: z.ZodOptional<z.ZodString>;
69
68
  modifiedBefore: z.ZodOptional<z.ZodString>;
@@ -78,17 +77,17 @@ export declare const FindFilesQuerySchema: z.ZodObject<{
78
77
  limit: z.ZodOptional<z.ZodNumber>;
79
78
  details: z.ZodOptional<z.ZodBoolean>;
80
79
  showFileLastModified: z.ZodOptional<z.ZodBoolean>;
81
- sortBy: z.ZodOptional<z.ZodEnum<{
80
+ sortBy: z.ZodDefault<z.ZodEnum<{
82
81
  path: "path";
83
82
  modified: "modified";
84
- name: "name";
85
83
  size: "size";
84
+ name: "name";
86
85
  }>>;
87
86
  entryType: z.ZodOptional<z.ZodEnum<{
88
87
  f: "f";
89
88
  d: "d";
90
89
  }>>;
91
- page: z.ZodOptional<z.ZodNumber>;
90
+ page: z.ZodDefault<z.ZodNumber>;
92
91
  itemsPerPage: z.ZodOptional<z.ZodNumber>;
93
92
  id: z.ZodOptional<z.ZodString>;
94
93
  mainResearchGoal: z.ZodOptional<z.ZodString>;
@@ -99,12 +98,11 @@ export declare const ViewStructureQuerySchema: z.ZodObject<{
99
98
  path: z.ZodString;
100
99
  details: z.ZodOptional<z.ZodBoolean>;
101
100
  hidden: z.ZodOptional<z.ZodBoolean>;
102
- humanReadable: z.ZodOptional<z.ZodBoolean>;
103
- sortBy: z.ZodOptional<z.ZodEnum<{
104
- name: "name";
101
+ sortBy: z.ZodDefault<z.ZodEnum<{
102
+ extension: "extension";
105
103
  size: "size";
104
+ name: "name";
106
105
  time: "time";
107
- extension: "extension";
108
106
  }>>;
109
107
  reverse: z.ZodOptional<z.ZodBoolean>;
110
108
  pattern: z.ZodOptional<z.ZodString>;
@@ -115,7 +113,7 @@ export declare const ViewStructureQuerySchema: z.ZodObject<{
115
113
  depth: z.ZodOptional<z.ZodNumber>;
116
114
  limit: z.ZodOptional<z.ZodNumber>;
117
115
  showFileLastModified: z.ZodOptional<z.ZodBoolean>;
118
- page: z.ZodOptional<z.ZodNumber>;
116
+ page: z.ZodDefault<z.ZodNumber>;
119
117
  itemsPerPage: z.ZodOptional<z.ZodNumber>;
120
118
  id: z.ZodOptional<z.ZodString>;
121
119
  mainResearchGoal: z.ZodOptional<z.ZodString>;
@@ -130,10 +128,10 @@ export declare const FetchContentQuerySchema: z.ZodObject<{
130
128
  matchStringCaseSensitive: z.ZodOptional<z.ZodBoolean>;
131
129
  startLine: z.ZodOptional<z.ZodNumber>;
132
130
  endLine: z.ZodOptional<z.ZodNumber>;
133
- contextLines: z.ZodOptional<z.ZodNumber>;
131
+ contextLines: z.ZodDefault<z.ZodNumber>;
134
132
  charOffset: z.ZodOptional<z.ZodNumber>;
135
133
  charLength: z.ZodOptional<z.ZodNumber>;
136
- minify: z.ZodOptional<z.ZodEnum<{
134
+ minify: z.ZodDefault<z.ZodEnum<{
137
135
  none: "none";
138
136
  standard: "standard";
139
137
  symbols: "symbols";
@@ -155,14 +153,15 @@ export declare const FileContentQuerySchema: z.ZodObject<{
155
153
  matchStringIsRegex: z.ZodOptional<z.ZodBoolean>;
156
154
  matchStringCaseSensitive: z.ZodOptional<z.ZodBoolean>;
157
155
  forceRefresh: z.ZodOptional<z.ZodBoolean>;
158
- type: z.ZodOptional<z.ZodEnum<{
156
+ /** Discriminator allowing fetch executor to handle directories. */
157
+ type: z.ZodDefault<z.ZodEnum<{
159
158
  file: "file";
160
159
  directory: "directory";
161
160
  }>>;
162
- contextLines: z.ZodOptional<z.ZodNumber>;
161
+ contextLines: z.ZodDefault<z.ZodNumber>;
163
162
  charOffset: z.ZodOptional<z.ZodNumber>;
164
163
  charLength: z.ZodOptional<z.ZodNumber>;
165
- minify: z.ZodOptional<z.ZodEnum<{
164
+ minify: z.ZodDefault<z.ZodEnum<{
166
165
  none: "none";
167
166
  standard: "standard";
168
167
  symbols: "symbols";
@@ -179,12 +178,12 @@ export declare const GitHubCodeSearchQuerySchema: z.ZodObject<{
179
178
  extension: z.ZodOptional<z.ZodString>;
180
179
  filename: z.ZodOptional<z.ZodString>;
181
180
  path: z.ZodOptional<z.ZodString>;
182
- match: z.ZodOptional<z.ZodEnum<{
181
+ match: z.ZodDefault<z.ZodEnum<{
183
182
  file: "file";
184
183
  path: "path";
185
184
  }>>;
186
- limit: z.ZodOptional<z.ZodNumber>;
187
- page: z.ZodOptional<z.ZodNumber>;
185
+ limit: z.ZodDefault<z.ZodNumber>;
186
+ page: z.ZodDefault<z.ZodNumber>;
188
187
  verbose: z.ZodOptional<z.ZodBoolean>;
189
188
  id: z.ZodOptional<z.ZodString>;
190
189
  mainResearchGoal: z.ZodOptional<z.ZodString>;
@@ -201,20 +200,27 @@ export declare const GitHubReposSearchSingleQuerySchema: z.ZodObject<{
201
200
  created: z.ZodOptional<z.ZodString>;
202
201
  updated: z.ZodOptional<z.ZodString>;
203
202
  match: z.ZodOptional<z.ZodArray<z.ZodEnum<{
204
- name: "name";
205
203
  description: "description";
204
+ name: "name";
206
205
  readme: "readme";
207
206
  }>>>;
208
- sort: z.ZodOptional<z.ZodEnum<{
209
- stars: "stars";
207
+ sort: z.ZodDefault<z.ZodEnum<{
210
208
  updated: "updated";
209
+ stars: "stars";
211
210
  forks: "forks";
212
211
  "help-wanted-issues": "help-wanted-issues";
213
212
  "best-match": "best-match";
214
213
  }>>;
215
- limit: z.ZodOptional<z.ZodNumber>;
216
- page: z.ZodOptional<z.ZodNumber>;
214
+ limit: z.ZodDefault<z.ZodNumber>;
215
+ page: z.ZodDefault<z.ZodNumber>;
217
216
  archived: z.ZodOptional<z.ZodBoolean>;
217
+ visibility: z.ZodOptional<z.ZodEnum<{
218
+ public: "public";
219
+ private: "private";
220
+ }>>;
221
+ forks: z.ZodOptional<z.ZodString>;
222
+ license: z.ZodOptional<z.ZodString>;
223
+ goodFirstIssues: z.ZodOptional<z.ZodString>;
218
224
  verbose: z.ZodOptional<z.ZodBoolean>;
219
225
  id: z.ZodOptional<z.ZodString>;
220
226
  mainResearchGoal: z.ZodOptional<z.ZodString>;
@@ -223,6 +229,7 @@ export declare const GitHubReposSearchSingleQuerySchema: z.ZodObject<{
223
229
  }, z.core.$strip>;
224
230
  export declare const GitHubPullRequestSearchQuerySchema: z.ZodObject<{
225
231
  keywordsToSearch: z.ZodOptional<z.ZodArray<z.ZodString>>;
232
+ query: z.ZodOptional<z.ZodString>;
226
233
  prNumber: z.ZodOptional<z.ZodNumber>;
227
234
  owner: z.ZodOptional<z.ZodString>;
228
235
  repo: z.ZodOptional<z.ZodString>;
@@ -254,7 +261,7 @@ export declare const GitHubPullRequestSearchQuerySchema: z.ZodObject<{
254
261
  reactions: z.ZodOptional<z.ZodString>;
255
262
  interactions: z.ZodOptional<z.ZodString>;
256
263
  draft: z.ZodOptional<z.ZodBoolean>;
257
- matchScope: z.ZodOptional<z.ZodArray<z.ZodEnum<{
264
+ match: z.ZodOptional<z.ZodArray<z.ZodEnum<{
258
265
  comments: "comments";
259
266
  title: "title";
260
267
  body: "body";
@@ -262,28 +269,28 @@ export declare const GitHubPullRequestSearchQuerySchema: z.ZodObject<{
262
269
  sort: z.ZodOptional<z.ZodEnum<{
263
270
  created: "created";
264
271
  updated: "updated";
265
- "best-match": "best-match";
266
272
  comments: "comments";
267
273
  reactions: "reactions";
274
+ "best-match": "best-match";
268
275
  }>>;
269
276
  order: z.ZodOptional<z.ZodEnum<{
270
277
  asc: "asc";
271
278
  desc: "desc";
272
279
  }>>;
273
- limit: z.ZodOptional<z.ZodNumber>;
274
- page: z.ZodOptional<z.ZodNumber>;
280
+ limit: z.ZodDefault<z.ZodNumber>;
281
+ page: z.ZodDefault<z.ZodNumber>;
275
282
  archived: z.ZodOptional<z.ZodBoolean>;
276
283
  filePage: z.ZodOptional<z.ZodNumber>;
277
284
  commentPage: z.ZodOptional<z.ZodNumber>;
278
285
  commitPage: z.ZodOptional<z.ZodNumber>;
279
- itemsPerPage: z.ZodOptional<z.ZodNumber>;
286
+ itemsPerPage: z.ZodDefault<z.ZodNumber>;
280
287
  reviewMode: z.ZodOptional<z.ZodLiteral<"full">>;
281
288
  content: z.ZodOptional<z.ZodObject<{
282
289
  metadata: z.ZodOptional<z.ZodBoolean>;
283
290
  body: z.ZodOptional<z.ZodBoolean>;
284
291
  changedFiles: z.ZodOptional<z.ZodBoolean>;
285
292
  patches: z.ZodOptional<z.ZodObject<{
286
- mode: z.ZodOptional<z.ZodEnum<{
293
+ mode: z.ZodDefault<z.ZodEnum<{
287
294
  none: "none";
288
295
  selected: "selected";
289
296
  all: "all";
@@ -298,7 +305,7 @@ export declare const GitHubPullRequestSearchQuerySchema: z.ZodObject<{
298
305
  comments: z.ZodOptional<z.ZodObject<{
299
306
  discussion: z.ZodOptional<z.ZodBoolean>;
300
307
  reviewInline: z.ZodOptional<z.ZodBoolean>;
301
- includeBots: z.ZodOptional<z.ZodBoolean>;
308
+ includeBots: z.ZodDefault<z.ZodBoolean>;
302
309
  file: z.ZodOptional<z.ZodString>;
303
310
  }, z.core.$strip>>;
304
311
  reviews: z.ZodOptional<z.ZodBoolean>;
@@ -310,8 +317,7 @@ export declare const GitHubPullRequestSearchQuerySchema: z.ZodObject<{
310
317
  matchString: z.ZodOptional<z.ZodString>;
311
318
  charOffset: z.ZodOptional<z.ZodNumber>;
312
319
  charLength: z.ZodOptional<z.ZodNumber>;
313
- includeBots: z.ZodOptional<z.ZodBoolean>;
314
- minify: z.ZodOptional<z.ZodEnum<{
320
+ minify: z.ZodDefault<z.ZodEnum<{
315
321
  none: "none";
316
322
  standard: "standard";
317
323
  }>>;
@@ -326,8 +332,8 @@ export declare const GitHubViewRepoStructureQuerySchema: z.ZodObject<{
326
332
  branch: z.ZodOptional<z.ZodString>;
327
333
  path: z.ZodOptional<z.ZodString>;
328
334
  depth: z.ZodOptional<z.ZodNumber>;
329
- page: z.ZodOptional<z.ZodNumber>;
330
- itemsPerPage: z.ZodOptional<z.ZodNumber>;
335
+ page: z.ZodDefault<z.ZodNumber>;
336
+ itemsPerPage: z.ZodDefault<z.ZodNumber>;
331
337
  verbose: z.ZodOptional<z.ZodBoolean>;
332
338
  id: z.ZodOptional<z.ZodString>;
333
339
  mainResearchGoal: z.ZodOptional<z.ZodString>;
@@ -335,13 +341,13 @@ export declare const GitHubViewRepoStructureQuerySchema: z.ZodObject<{
335
341
  reasoning: z.ZodOptional<z.ZodString>;
336
342
  }, z.core.$strip>;
337
343
  export declare const NpmPackageQuerySchema: z.ZodObject<{
338
- ecosystem: z.ZodOptional<z.ZodLiteral<"npm">>;
339
344
  packageName: z.ZodString;
340
- mode: z.ZodOptional<z.ZodEnum<{
345
+ mode: z.ZodDefault<z.ZodEnum<{
341
346
  full: "full";
342
347
  smart: "smart";
343
348
  lean: "lean";
344
349
  }>>;
350
+ page: z.ZodDefault<z.ZodNumber>;
345
351
  id: z.ZodOptional<z.ZodString>;
346
352
  mainResearchGoal: z.ZodOptional<z.ZodString>;
347
353
  researchGoal: z.ZodOptional<z.ZodString>;
@@ -370,13 +376,13 @@ export declare const BulkCloneRepoSchema: z.ZodObject<{
370
376
  researchGoal: z.ZodOptional<z.ZodString>;
371
377
  reasoning: z.ZodOptional<z.ZodString>;
372
378
  }, z.core.$strip>>;
373
- }, z.core.$strip>;
379
+ }, z.core.$strict>;
374
380
  export declare const LSPGotoDefinitionQuerySchema: z.ZodObject<{
375
381
  contextLines: z.ZodOptional<z.ZodNumber>;
376
382
  uri: z.ZodString;
377
383
  symbolName: z.ZodString;
378
384
  lineHint: z.ZodNumber;
379
- orderHint: z.ZodOptional<z.ZodNumber>;
385
+ orderHint: z.ZodDefault<z.ZodNumber>;
380
386
  id: z.ZodOptional<z.ZodString>;
381
387
  mainResearchGoal: z.ZodOptional<z.ZodString>;
382
388
  researchGoal: z.ZodOptional<z.ZodString>;
@@ -386,12 +392,12 @@ export declare const LSPFindReferencesQuerySchema: z.ZodObject<{
386
392
  includeDeclaration: z.ZodOptional<z.ZodBoolean>;
387
393
  contextLines: z.ZodOptional<z.ZodNumber>;
388
394
  itemsPerPage: z.ZodOptional<z.ZodNumber>;
389
- page: z.ZodOptional<z.ZodNumber>;
395
+ page: z.ZodDefault<z.ZodNumber>;
390
396
  groupByFile: z.ZodOptional<z.ZodBoolean>;
391
397
  uri: z.ZodString;
392
398
  symbolName: z.ZodString;
393
399
  lineHint: z.ZodNumber;
394
- orderHint: z.ZodOptional<z.ZodNumber>;
400
+ orderHint: z.ZodDefault<z.ZodNumber>;
395
401
  id: z.ZodOptional<z.ZodString>;
396
402
  mainResearchGoal: z.ZodOptional<z.ZodString>;
397
403
  researchGoal: z.ZodOptional<z.ZodString>;
@@ -405,11 +411,43 @@ export declare const LSPCallHierarchyQuerySchema: z.ZodObject<{
405
411
  depth: z.ZodOptional<z.ZodNumber>;
406
412
  contextLines: z.ZodOptional<z.ZodNumber>;
407
413
  itemsPerPage: z.ZodOptional<z.ZodNumber>;
408
- page: z.ZodOptional<z.ZodNumber>;
414
+ page: z.ZodDefault<z.ZodNumber>;
409
415
  uri: z.ZodString;
410
416
  symbolName: z.ZodString;
411
417
  lineHint: z.ZodNumber;
412
- orderHint: z.ZodOptional<z.ZodNumber>;
418
+ orderHint: z.ZodDefault<z.ZodNumber>;
419
+ id: z.ZodOptional<z.ZodString>;
420
+ mainResearchGoal: z.ZodOptional<z.ZodString>;
421
+ researchGoal: z.ZodOptional<z.ZodString>;
422
+ reasoning: z.ZodOptional<z.ZodString>;
423
+ }, z.core.$strip>;
424
+ export declare const LspGetSemanticContentQuerySchema: z.ZodObject<{
425
+ uri: z.ZodOptional<z.ZodString>;
426
+ type: z.ZodDefault<z.ZodEnum<{
427
+ references: "references";
428
+ definition: "definition";
429
+ callers: "callers";
430
+ callees: "callees";
431
+ callHierarchy: "callHierarchy";
432
+ hover: "hover";
433
+ documentSymbols: "documentSymbols";
434
+ typeDefinition: "typeDefinition";
435
+ implementation: "implementation";
436
+ }>>;
437
+ symbolName: z.ZodOptional<z.ZodString>;
438
+ lineHint: z.ZodOptional<z.ZodNumber>;
439
+ orderHint: z.ZodDefault<z.ZodNumber>;
440
+ depth: z.ZodOptional<z.ZodNumber>;
441
+ includeDeclaration: z.ZodDefault<z.ZodBoolean>;
442
+ groupByFile: z.ZodOptional<z.ZodBoolean>;
443
+ page: z.ZodDefault<z.ZodNumber>;
444
+ itemsPerPage: z.ZodOptional<z.ZodNumber>;
445
+ contextLines: z.ZodOptional<z.ZodNumber>;
446
+ format: z.ZodDefault<z.ZodEnum<{
447
+ structured: "structured";
448
+ compact: "compact";
449
+ }>>;
450
+ workspaceRoot: z.ZodOptional<z.ZodString>;
413
451
  id: z.ZodOptional<z.ZodString>;
414
452
  mainResearchGoal: z.ZodOptional<z.ZodString>;
415
453
  researchGoal: z.ZodOptional<z.ZodString>;
@@ -1 +1 @@
1
- import{z as o}from"zod";const n=o.array(o.string()).optional(),t={id:o.string().optional(),mainResearchGoal:o.string().optional(),researchGoal:o.string().optional(),reasoning:o.string().optional()};export const RipgrepQuerySchema=o.object({...t,keywords:o.string(),path:o.string(),mode:o.enum(["paginated","discovery","detailed"]).optional(),fixedString:o.boolean().optional(),perlRegex:o.boolean().optional(),caseInsensitive:o.boolean().optional(),caseSensitive:o.boolean().optional(),wholeWord:o.boolean().optional(),invertMatch:o.boolean().optional(),include:n,exclude:n,excludeDir:n,noIgnore:o.boolean().optional(),hidden:o.boolean().optional(),filesOnly:o.boolean().optional(),filesWithoutMatch:o.boolean().optional(),contextLines:o.number().int().optional(),matchContentLength:o.number().int().optional(),maxMatchesPerFile:o.number().int().optional(),maxFiles:o.number().int().optional(),multiline:o.boolean().optional(),multilineDotall:o.boolean().optional(),sort:o.enum(["path","modified","accessed","created"]).optional(),sortReverse:o.boolean().optional(),langType:o.string().optional(),countLinesPerFile:o.boolean().optional(),countMatchesPerFile:o.boolean().optional(),matchPage:o.number().int().optional(),itemsPerPage:o.number().int().optional(),page:o.number().int().optional()});export const FindFilesQuerySchema=o.object({...t,path:o.string(),maxDepth:o.number().int().optional(),minDepth:o.number().int().optional(),names:n,pathPattern:o.string().optional(),regex:o.string().optional(),regexType:o.string().optional(),empty:o.boolean().optional(),modifiedWithin:o.string().optional(),modifiedBefore:o.string().optional(),accessedWithin:o.string().optional(),sizeGreater:o.string().optional(),sizeLess:o.string().optional(),permissions:o.string().optional(),executable:o.boolean().optional(),readable:o.boolean().optional(),writable:o.boolean().optional(),excludeDir:n,limit:o.number().int().optional(),details:o.boolean().optional(),showFileLastModified:o.boolean().optional(),sortBy:o.enum(["modified","name","path","size"]).optional(),entryType:o.enum(["f","d"]).optional(),page:o.number().int().optional(),itemsPerPage:o.number().int().optional()});export const ViewStructureQuerySchema=o.object({...t,path:o.string(),details:o.boolean().optional(),hidden:o.boolean().optional(),humanReadable:o.boolean().optional(),sortBy:o.enum(["name","size","time","extension"]).optional(),reverse:o.boolean().optional(),pattern:o.string().optional(),directoriesOnly:o.boolean().optional(),filesOnly:o.boolean().optional(),recursive:o.boolean().optional(),extensions:n,depth:o.number().int().optional(),limit:o.number().int().optional(),showFileLastModified:o.boolean().optional(),page:o.number().int().optional(),itemsPerPage:o.number().int().optional()});export const FetchContentQuerySchema=o.object({...t,path:o.string(),fullContent:o.boolean().optional(),matchString:o.string().optional(),matchStringIsRegex:o.boolean().optional(),matchStringCaseSensitive:o.boolean().optional(),startLine:o.number().int().optional(),endLine:o.number().int().optional(),contextLines:o.number().int().optional(),charOffset:o.number().int().optional(),charLength:o.number().int().optional(),minify:o.enum(["none","standard","symbols"]).optional()});export const FileContentQuerySchema=o.object({...t,owner:o.string(),repo:o.string(),branch:o.string().optional(),path:o.string(),startLine:o.number().int().optional(),endLine:o.number().int().optional(),fullContent:o.boolean().optional(),matchString:o.string().optional(),matchStringIsRegex:o.boolean().optional(),matchStringCaseSensitive:o.boolean().optional(),forceRefresh:o.boolean().optional(),type:o.enum(["file","directory"]).optional(),contextLines:o.number().int().optional(),charOffset:o.number().int().optional(),charLength:o.number().int().optional(),minify:o.enum(["none","standard","symbols"]).optional()});export const GitHubCodeSearchQuerySchema=o.object({...t,keywordsToSearch:n,owner:o.string().optional(),repo:o.string().optional(),extension:o.string().optional(),filename:o.string().optional(),path:o.string().optional(),match:o.enum(["file","path"]).optional(),limit:o.number().int().optional(),page:o.number().int().optional(),verbose:o.boolean().optional()});export const GitHubReposSearchSingleQuerySchema=o.object({...t,keywordsToSearch:n,topicsToSearch:n,language:o.string().optional(),owner:o.string().optional(),stars:o.string().optional(),size:o.string().optional(),created:o.string().optional(),updated:o.string().optional(),match:o.array(o.enum(["name","description","readme"])).optional(),sort:o.enum(["stars","forks","help-wanted-issues","updated","best-match"]).optional(),limit:o.number().int().optional(),page:o.number().int().optional(),archived:o.boolean().optional(),verbose:o.boolean().optional()});export const GitHubPullRequestSearchQuerySchema=o.object({...t,keywordsToSearch:o.array(o.string()).optional(),prNumber:o.number().int().optional(),owner:o.string().optional(),repo:o.string().optional(),verbose:o.boolean().optional(),state:o.enum(["open","closed","merged"]).optional(),assignee:o.string().optional(),author:o.string().optional(),commenter:o.string().optional(),involves:o.string().optional(),mentions:o.string().optional(),"review-requested":o.string().optional(),"reviewed-by":o.string().optional(),label:o.union([o.string(),o.array(o.string())]).optional(),"no-label":o.boolean().optional(),"no-milestone":o.boolean().optional(),"no-project":o.boolean().optional(),"no-assignee":o.boolean().optional(),head:o.string().optional(),base:o.string().optional(),created:o.string().optional(),updated:o.string().optional(),closed:o.string().optional(),"merged-at":o.string().optional(),comments:o.string().optional(),reactions:o.string().optional(),interactions:o.string().optional(),draft:o.boolean().optional(),matchScope:o.array(o.enum(["title","body","comments"])).optional(),sort:o.enum(["created","updated","best-match","comments","reactions"]).optional(),order:o.enum(["asc","desc"]).optional(),limit:o.number().int().optional(),page:o.number().int().optional(),archived:o.boolean().optional(),filePage:o.number().int().optional(),commentPage:o.number().int().optional(),commitPage:o.number().int().optional(),itemsPerPage:o.number().int().optional(),reviewMode:o.literal("full").optional(),content:o.object({metadata:o.boolean().optional(),body:o.boolean().optional(),changedFiles:o.boolean().optional(),patches:o.object({mode:o.enum(["none","selected","all"]).optional(),files:n,ranges:o.array(o.object({file:o.string(),additions:o.array(o.number().int()).optional(),deletions:o.array(o.number().int()).optional()})).optional()}).optional(),comments:o.object({discussion:o.boolean().optional(),reviewInline:o.boolean().optional(),includeBots:o.boolean().optional(),file:o.string().optional()}).optional(),reviews:o.boolean().optional(),commits:o.object({list:o.boolean().optional(),includeFiles:o.boolean().optional()}).optional()}).optional(),matchString:o.string().optional(),charOffset:o.number().int().optional(),charLength:o.number().int().optional(),includeBots:o.boolean().optional(),minify:o.enum(["none","standard"]).optional()});export const GitHubViewRepoStructureQuerySchema=o.object({...t,owner:o.string(),repo:o.string(),branch:o.string().optional(),path:o.string().optional(),depth:o.number().int().optional(),page:o.number().int().optional(),itemsPerPage:o.number().int().optional(),verbose:o.boolean().optional()});export const NpmPackageQuerySchema=o.object({...t,ecosystem:o.literal("npm").optional(),packageName:o.string(),mode:o.enum(["smart","full","lean"]).optional()});export const CloneRepoQuerySchema=o.object({...t,owner:o.string(),repo:o.string(),branch:o.string().optional(),sparsePath:o.string().optional(),forceRefresh:o.boolean().optional()});export const BulkCloneRepoSchema=o.object({queries:o.array(CloneRepoQuerySchema).min(1)});const e={...t,uri:o.string(),symbolName:o.string(),lineHint:o.number().int(),orderHint:o.number().int().optional()};export const LSPGotoDefinitionQuerySchema=o.object({...e,contextLines:o.number().int().optional()});export const LSPFindReferencesQuerySchema=o.object({...e,includeDeclaration:o.boolean().optional(),contextLines:o.number().int().optional(),itemsPerPage:o.number().int().optional(),page:o.number().int().optional(),groupByFile:o.boolean().optional()});export const LSPCallHierarchyQuerySchema=o.object({...e,direction:o.enum(["incoming","outgoing"]),depth:o.number().int().optional(),contextLines:o.number().int().optional(),itemsPerPage:o.number().int().optional(),page:o.number().int().optional()});
1
+ import{z as e}from"zod";import{baseSchema as o,toolNames as t}from"../resources/global.js";import{githubCloneRepo as n}from"../resources/tools/githubCloneRepo.js";import{githubGetFileContent as i}from"../resources/tools/githubGetFileContent.js";import{githubSearchCode as a}from"../resources/tools/githubSearchCode.js";import{githubSearchPullRequests as s}from"../resources/tools/githubSearchPullRequests.js";import{githubSearchRepositories as l}from"../resources/tools/githubSearchRepositories.js";import{githubViewRepoStructure as r}from"../resources/tools/githubViewRepoStructure.js";import{localFindFiles as c}from"../resources/tools/localFindFiles.js";import{localGetFileContent as p}from"../resources/tools/localGetFileContent.js";import{localSearchCode as u}from"../resources/tools/localSearchCode.js";import{localViewStructure as m}from"../resources/tools/localViewStructure.js";import{lspGetSemanticContent as d}from"../resources/tools/lspGetSemanticContent.js";import{packageSearch as g}from"../resources/tools/packageSearch.js";const h=e.array(e.string()).optional(),f=1e3,b=1e9,S=1e5,y=100,L=1e5;function E(o,t){return e.number().int().min(o).max(t)}function C(){return E(1,f).default(1)}function _(){return E(1,f).optional()}function T(){return E(0,100).optional()}function R(){return E(1,b).optional()}function I(){return E(0,1e8).optional()}function P(){return E(1,5e4).optional()}const x={[t.GITHUB_FETCH_CONTENT]:i.schema,[t.GITHUB_SEARCH_CODE]:a.schema,[t.GITHUB_SEARCH_PULL_REQUESTS]:s.schema,[t.GITHUB_SEARCH_REPOSITORIES]:l.schema,[t.GITHUB_VIEW_REPO_STRUCTURE]:r.schema,[t.PACKAGE_SEARCH]:g.schema,[t.GITHUB_CLONE_REPO]:n.schema,[t.LOCAL_RIPGREP]:u.schema,[t.LOCAL_FETCH_CONTENT]:p.schema,[t.LOCAL_FIND_FILES]:c.schema,[t.LOCAL_VIEW_STRUCTURE]:m.schema,[t.LSP_GET_SEMANTIC_CONTENT]:d.schema};function H(e,t){const n=x[e];return o[t]??n[t]}function v(e,o){return o?e.describe(o):e}function O(o,t,n=""){const i={};for(const e of Object.keys(t)){const a=t[e],s=H(o,n?`${n}.${e}`:e);i[e]=v(a,s)}return e.strictObject(i)}function U(e,o){return O(e,o)}const G={id:e.string().optional(),mainResearchGoal:e.string().optional(),researchGoal:e.string().optional(),reasoning:e.string().optional()};export const RipgrepQuerySchema=U(t.LOCAL_RIPGREP,{...G,keywords:e.string(),path:e.string(),mode:e.enum(["paginated","discovery","detailed"]).default("paginated"),fixedString:e.boolean().optional(),perlRegex:e.boolean().optional(),caseInsensitive:e.boolean().optional(),caseSensitive:e.boolean().optional(),wholeWord:e.boolean().optional(),invertMatch:e.boolean().optional(),include:h,exclude:h,excludeDir:h,noIgnore:e.boolean().optional(),hidden:e.boolean().optional(),filesOnly:e.boolean().optional(),filesWithoutMatch:e.boolean().optional(),contextLines:T(),matchContentLength:E(1,L).default(500),maxMatchesPerFile:E(1,L).optional(),maxFiles:E(1,L).optional(),multiline:e.boolean().optional(),multilineDotall:e.boolean().optional(),sort:e.enum(["path","modified","accessed","created"]).default("path"),sortReverse:e.boolean().optional(),langType:e.string().optional(),countLinesPerFile:e.boolean().optional(),countMatchesPerFile:e.boolean().optional(),matchPage:_(),itemsPerPage:E(1,f).optional(),page:C()}).superRefine((e,o)=>{e.filesOnly&&e.filesWithoutMatch&&o.addIssue({code:"custom",message:"filesOnly and filesWithoutMatch are mutually exclusive.",path:["filesWithoutMatch"]}),e.fixedString&&e.perlRegex&&o.addIssue({code:"custom",message:"fixedString and perlRegex are mutually exclusive.",path:["perlRegex"]}),e.caseSensitive&&e.caseInsensitive&&o.addIssue({code:"custom",message:"caseSensitive and caseInsensitive are mutually exclusive.",path:["caseInsensitive"]}),e.multilineDotall&&!e.multiline&&o.addIssue({code:"custom",message:"multilineDotall requires multiline=true.",path:["multilineDotall"]}),e.countLinesPerFile&&e.countMatchesPerFile&&o.addIssue({code:"custom",message:"countLinesPerFile and countMatchesPerFile are mutually exclusive.",path:["countMatchesPerFile"]})});export const FindFilesQuerySchema=U(t.LOCAL_FIND_FILES,{...G,path:e.string(),maxDepth:E(0,100).optional(),minDepth:E(0,100).optional(),names:h,pathPattern:e.string().optional(),regex:e.string().optional(),empty:e.boolean().optional(),modifiedWithin:e.string().optional(),modifiedBefore:e.string().optional(),accessedWithin:e.string().optional(),sizeGreater:e.string().optional(),sizeLess:e.string().optional(),permissions:e.string().optional(),executable:e.boolean().optional(),readable:e.boolean().optional(),writable:e.boolean().optional(),excludeDir:h,limit:E(1,1e4).optional(),details:e.boolean().optional(),showFileLastModified:e.boolean().optional(),sortBy:e.enum(["modified","name","path","size"]).default("modified"),entryType:e.enum(["f","d"]).optional(),page:C(),itemsPerPage:E(1,50).optional()}).superRefine((e,o)=>{void 0!==e.minDepth&&void 0!==e.maxDepth&&e.minDepth>e.maxDepth&&o.addIssue({code:"custom",message:"minDepth must be less than or equal to maxDepth.",path:["minDepth"]})});export const ViewStructureQuerySchema=U(t.LOCAL_VIEW_STRUCTURE,{...G,path:e.string(),details:e.boolean().optional(),hidden:e.boolean().optional(),sortBy:e.enum(["name","size","time","extension"]).default("name"),reverse:e.boolean().optional(),pattern:e.string().optional(),directoriesOnly:e.boolean().optional(),filesOnly:e.boolean().optional(),recursive:e.boolean().optional(),extensions:h,depth:E(0,20).optional(),limit:E(1,1e4).optional(),showFileLastModified:e.boolean().optional(),page:C(),itemsPerPage:E(1,50).optional()}).superRefine((e,o)=>{e.filesOnly&&e.directoriesOnly&&o.addIssue({code:"custom",message:"filesOnly and directoriesOnly are mutually exclusive.",path:["directoriesOnly"]})});function N(e,o){const t=!0===e.fullContent,n=void 0!==e.matchString,i=void 0!==e.startLine||void 0!==e.endLine;t&&n&&o.addIssue({code:"custom",message:"Cannot use fullContent with matchString — these are mutually exclusive extraction methods.",path:["matchString"]}),t&&i&&o.addIssue({code:"custom",message:"Cannot use fullContent with startLine/endLine — these are mutually exclusive extraction methods.",path:["startLine"]}),n&&i&&o.addIssue({code:"custom",message:"Cannot use matchString with startLine/endLine — these are mutually exclusive extraction methods.",path:["startLine"]}),void 0!==e.startLine&&void 0!==e.endLine&&e.endLine<e.startLine&&o.addIssue({code:"custom",message:"Invalid line range: endLine must be greater than or equal to startLine.",path:["endLine"]})}export const FetchContentQuerySchema=U(t.LOCAL_FETCH_CONTENT,{...G,path:e.string(),fullContent:e.boolean().optional(),matchString:e.string().optional(),matchStringIsRegex:e.boolean().optional(),matchStringCaseSensitive:e.boolean().optional(),startLine:R(),endLine:R(),contextLines:E(0,100).default(5),charOffset:I(),charLength:P(),minify:e.enum(["none","standard","symbols"]).default("standard")}).superRefine(N);export const FileContentQuerySchema=U(t.GITHUB_FETCH_CONTENT,{...G,owner:e.string(),repo:e.string(),branch:e.string().optional(),path:e.string(),startLine:R(),endLine:R(),fullContent:e.boolean().optional(),matchString:e.string().optional(),matchStringIsRegex:e.boolean().optional(),matchStringCaseSensitive:e.boolean().optional(),forceRefresh:e.boolean().optional(),type:e.enum(["file","directory"]).default("file"),contextLines:E(0,100).default(5),charOffset:I(),charLength:P(),minify:e.enum(["none","standard","symbols"]).default("standard")}).superRefine(N);export const GitHubCodeSearchQuerySchema=U(t.GITHUB_SEARCH_CODE,{...G,keywordsToSearch:h,owner:e.string().optional(),repo:e.string().optional(),extension:e.string().optional(),filename:e.string().optional(),path:e.string().optional(),match:e.enum(["file","path"]).default("file"),limit:E(1,100).default(30),page:C(),verbose:e.boolean().optional()});export const GitHubReposSearchSingleQuerySchema=U(t.GITHUB_SEARCH_REPOSITORIES,{...G,keywordsToSearch:h,topicsToSearch:h,language:e.string().optional(),owner:e.string().optional(),stars:e.string().optional(),size:e.string().optional(),created:e.string().optional(),updated:e.string().optional(),match:e.array(e.enum(["name","description","readme"])).optional(),sort:e.enum(["stars","forks","help-wanted-issues","updated","best-match"]).default("best-match"),limit:E(1,100).default(30),page:C(),archived:e.boolean().optional(),visibility:e.enum(["public","private"]).optional(),forks:e.string().optional(),license:e.string().optional(),goodFirstIssues:e.string().optional(),verbose:e.boolean().optional()});export const GitHubPullRequestSearchQuerySchema=U(t.GITHUB_SEARCH_PULL_REQUESTS,{...G,keywordsToSearch:e.array(e.string()).optional(),query:e.string().optional(),prNumber:E(1,b).optional(),owner:e.string().optional(),repo:e.string().optional(),verbose:e.boolean().optional(),state:e.enum(["open","closed","merged"]).optional(),assignee:e.string().optional(),author:e.string().optional(),commenter:e.string().optional(),involves:e.string().optional(),mentions:e.string().optional(),"review-requested":e.string().optional(),"reviewed-by":e.string().optional(),label:e.union([e.string(),e.array(e.string())]).optional(),"no-label":e.boolean().optional(),"no-milestone":e.boolean().optional(),"no-project":e.boolean().optional(),"no-assignee":e.boolean().optional(),head:e.string().optional(),base:e.string().optional(),created:e.string().optional(),updated:e.string().optional(),closed:e.string().optional(),"merged-at":e.string().optional(),comments:e.string().optional(),reactions:e.string().optional(),interactions:e.string().optional(),draft:e.boolean().optional(),match:e.array(e.enum(["title","body","comments"])).optional(),sort:e.enum(["created","updated","best-match","comments","reactions"]).optional(),order:e.enum(["asc","desc"]).optional(),limit:E(1,100).default(30),page:C(),archived:e.boolean().optional(),filePage:_(),commentPage:_(),commitPage:_(),itemsPerPage:E(1,y).default(20),reviewMode:e.literal("full").optional(),content:O(t.GITHUB_SEARCH_PULL_REQUESTS,{metadata:e.boolean().optional(),body:e.boolean().optional(),changedFiles:e.boolean().optional(),patches:O(t.GITHUB_SEARCH_PULL_REQUESTS,{mode:e.enum(["none","selected","all"]).default("none"),files:h,ranges:e.array(O(t.GITHUB_SEARCH_PULL_REQUESTS,{file:e.string(),additions:e.array(E(1,b)).optional(),deletions:e.array(E(1,b)).optional()},"content.patches.ranges")).optional()},"content.patches").optional(),comments:O(t.GITHUB_SEARCH_PULL_REQUESTS,{discussion:e.boolean().optional(),reviewInline:e.boolean().optional(),includeBots:e.boolean().default(!1),file:e.string().optional()},"content.comments").optional(),reviews:e.boolean().optional(),commits:O(t.GITHUB_SEARCH_PULL_REQUESTS,{list:e.boolean().optional(),includeFiles:e.boolean().optional()},"content.commits").optional()},"content").optional(),matchString:e.string().optional(),charOffset:I(),charLength:P(),minify:e.enum(["none","standard"]).default("standard")}).superRefine((e,o)=>{const t=e.content?.patches;if(!t)return;const n=(t.files?.length??0)>0,i=(t.ranges?.length??0)>0,a=n||i;"selected"!==t.mode||a||o.addIssue({code:"custom",message:'content.patches.mode="selected" requires non-empty files or ranges.',path:["content","patches","files"]}),"selected"!==t.mode&&a&&o.addIssue({code:"custom",message:'content.patches.files and content.patches.ranges require mode="selected".',path:["content","patches","mode"]})});export const GitHubViewRepoStructureQuerySchema=U(t.GITHUB_VIEW_REPO_STRUCTURE,{...G,owner:e.string(),repo:e.string(),branch:e.string().optional(),path:e.string().optional(),depth:E(0,20).optional(),page:C(),itemsPerPage:E(1,200).default(100),verbose:e.boolean().optional()});export const NpmPackageQuerySchema=U(t.PACKAGE_SEARCH,{...G,packageName:e.string(),mode:e.enum(["smart","full","lean"]).default("smart"),page:C()});export const CloneRepoQuerySchema=U(t.GITHUB_CLONE_REPO,{...G,owner:e.string(),repo:e.string(),branch:e.string().optional(),sparsePath:e.string().optional(),forceRefresh:e.boolean().optional()});export const BulkCloneRepoSchema=e.strictObject({queries:e.array(CloneRepoQuerySchema).min(1)});const F={...G,uri:e.string(),symbolName:e.string(),lineHint:E(1,b),orderHint:E(0,S).default(0)};export const LSPGotoDefinitionQuerySchema=U(t.LSP_GET_SEMANTIC_CONTENT,{...F,contextLines:T()});export const LSPFindReferencesQuerySchema=U(t.LSP_GET_SEMANTIC_CONTENT,{...F,includeDeclaration:e.boolean().optional(),contextLines:T(),itemsPerPage:E(1,y).optional(),page:C(),groupByFile:e.boolean().optional()});export const LSPCallHierarchyQuerySchema=U(t.LSP_GET_SEMANTIC_CONTENT,{...F,direction:e.enum(["incoming","outgoing"]),depth:E(0,20).optional(),contextLines:T(),itemsPerPage:E(1,y).optional(),page:C()});export const LspGetSemanticContentQuerySchema=U(t.LSP_GET_SEMANTIC_CONTENT,{...G,uri:e.string().optional(),type:e.enum(["definition","references","callers","callees","callHierarchy","hover","documentSymbols","typeDefinition","implementation"]).default("definition"),symbolName:e.string().min(1).optional(),lineHint:E(1,b).optional(),orderHint:E(0,S).default(0),depth:E(0,20).optional(),includeDeclaration:e.boolean().default(!0),groupByFile:e.boolean().optional(),page:C(),itemsPerPage:E(1,y).optional(),contextLines:T(),format:e.enum(["structured","compact"]).default("structured"),workspaceRoot:e.string().optional()}).superRefine((e,o)=>{e.uri||o.addIssue({code:"custom",path:["uri"],message:"uri is required"}),"documentSymbols"!==e.type&&(e.symbolName||o.addIssue({code:"custom",path:["symbolName"],message:"symbolName is required unless type is documentSymbols"}),Number.isInteger(e.lineHint)||o.addIssue({code:"custom",path:["lineHint"],message:"lineHint is required unless type is documentSymbols"}))});
@@ -1 +1 @@
1
- export function validateRipgrepQuery(e){const t=[],i=[];return e&&"object"==typeof e?(e.keywords&&"string"==typeof e.keywords||t.push("`keywords` is required"),e.filesOnly&&e.filesWithoutMatch&&t.push("`filesOnly` and `filesWithoutMatch` are mutually exclusive"),e.countLinesPerFile&&e.countMatchesPerFile&&i.push("Both `countLinesPerFile` and `countMatchesPerFile` set `countMatchesPerFile` takes precedence"),e.fixedString&&e.perlRegex&&t.push("`fixedString` and `perlRegex` are mutually exclusive"),{isValid:0===t.length,errors:t,warnings:i}):(t.push("Query must be an object"),{isValid:!1,errors:t,warnings:i})}export function applyWorkflowMode(e){if(!e||"object"!=typeof e)return e;const t=e.mode;if(!t||"string"!=typeof t)return e;const i={...e};return"discovery"===t?void 0===i.filesOnly&&(i.filesOnly=!0):"detailed"===t&&void 0===i.contextLines&&(i.contextLines=3),i}
1
+ export function validateRipgrepQuery(e){const i=[],t=[];return e&&"object"==typeof e?(e.keywords&&"string"==typeof e.keywords||i.push("`keywords` is required"),e.filesOnly&&e.filesWithoutMatch&&i.push("`filesOnly` and `filesWithoutMatch` are mutually exclusive"),e.countLinesPerFile&&e.countMatchesPerFile&&i.push("`countLinesPerFile` and `countMatchesPerFile` are mutually exclusive"),e.fixedString&&e.perlRegex&&i.push("`fixedString` and `perlRegex` are mutually exclusive"),e.caseSensitive&&e.caseInsensitive&&i.push("`caseSensitive` and `caseInsensitive` are mutually exclusive"),e.multilineDotall&&!e.multiline&&i.push("`multilineDotall` requires `multiline=true`"),{isValid:0===i.length,errors:i,warnings:t}):(i.push("Query must be an object"),{isValid:!1,errors:i,warnings:t})}export function applyWorkflowMode(e){if(!e||"object"!=typeof e)return e;const i=e.mode;if(!i||"string"!=typeof i)return e;const t={...e};return"discovery"===i?void 0===t.filesOnly&&(t.filesOnly=!0):"detailed"===i&&void 0===t.contextLines&&(t.contextLines=3),t}
@@ -108,6 +108,13 @@ export interface CharPagination {
108
108
  readonly charOffset: number;
109
109
  readonly charLength: number;
110
110
  readonly totalChars: number;
111
+ /** How the page boundary was chosen.
112
+ * `'semantic'` — snapped to a tree-sitter/heuristic block boundary.
113
+ * `'char-limit'` — fixed char-size cut; may end mid-block (see nextBlockChar). */
114
+ readonly chunkMode?: "semantic" | "char-limit";
115
+ /** Set when `chunkMode` is `'char-limit'` and the cut is mid-block.
116
+ * Char offset of the next top-level block start; extend charLength to reach it. */
117
+ readonly nextBlockChar?: number;
111
118
  }
112
119
  /** LSP semantic vs. fallback mode marker. */
113
120
  export declare enum LspMode {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@octocodeai/octocode-core",
3
- "version": "4.3.0",
3
+ "version": "16.1.0",
4
4
  "description": "Core config, prompts, tools, and schemas for Octocode MCP",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -43,6 +43,7 @@
43
43
  },
44
44
  "scripts": {
45
45
  "generate": "tsx src/octocode-scripts/generateDefaultJson.ts",
46
+ "dump:agent-context": "tsx src/octocode-scripts/dumpAgentContext.ts",
46
47
  "compress": "yarn generate && node scripts/compress-config.mjs",
47
48
  "build": "rm -rf dist && yarn generate && node scripts/compress-config.mjs && tsc && node scripts/minify-dist.mjs",
48
49
  "lint": "eslint src/**/*.ts",