@morphllm/morphsdk 0.2.121 → 0.2.123
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-L4PK4VC7.js → chunk-5OJE7GH4.js} +2 -2
- package/dist/chunk-63VHBANJ.js +22 -0
- package/dist/chunk-63VHBANJ.js.map +1 -0
- package/dist/{chunk-BDKXYMU2.js → chunk-ANPZFWYV.js} +2 -2
- package/dist/{chunk-DL3Y3R6A.js → chunk-BJ2764MK.js} +2 -2
- package/dist/{chunk-JBIFS33U.js → chunk-DBSOONOY.js} +2 -2
- package/dist/chunk-ETTCJWJK.js +113 -0
- package/dist/chunk-ETTCJWJK.js.map +1 -0
- package/dist/{chunk-EJYFE73S.js → chunk-FMKJ72KT.js} +3 -3
- package/dist/{chunk-EJYFE73S.js.map → chunk-FMKJ72KT.js.map} +1 -1
- package/dist/{chunk-7QZFNYOH.js → chunk-GXFJLL5O.js} +2 -2
- package/dist/chunk-H3U7J5RI.js +98 -0
- package/dist/chunk-H3U7J5RI.js.map +1 -0
- package/dist/{chunk-MAAULSSQ.js → chunk-HVBJ4UO6.js} +2 -2
- package/dist/{chunk-3HBZXN6E.js → chunk-K74GLGST.js} +2 -2
- package/dist/{chunk-EZFXR52Q.js → chunk-KL3AMLGL.js} +2 -2
- package/dist/{chunk-YMOTJ6ZP.js → chunk-L426IMZD.js} +2 -2
- package/dist/{chunk-C3BQUIFE.js → chunk-MXSGTN7R.js} +145 -9
- package/dist/chunk-MXSGTN7R.js.map +1 -0
- package/dist/{chunk-266SWRHK.js → chunk-OFJYDTQI.js} +2 -2
- package/dist/chunk-OTOVGCG6.js +42 -0
- package/dist/chunk-OTOVGCG6.js.map +1 -0
- package/dist/{chunk-W37KJB25.js → chunk-QD7KPI7A.js} +2 -2
- package/dist/chunk-QGRFAVGK.js +112 -0
- package/dist/chunk-QGRFAVGK.js.map +1 -0
- package/dist/{chunk-WEBUKGPK.js → chunk-UHL2ZEWG.js} +3 -3
- package/dist/{chunk-CIFPLFBQ.js → chunk-UJS3AIWS.js} +2 -2
- package/dist/{chunk-FV3R3JGV.js → chunk-UX65IRCX.js} +2 -2
- package/dist/{chunk-L5C6E32T.js → chunk-V3HLOZK2.js} +1 -1
- package/dist/{chunk-L5C6E32T.js.map → chunk-V3HLOZK2.js.map} +1 -1
- package/dist/{chunk-7IZUNRPZ.js → chunk-V4KBK66V.js} +54 -15
- package/dist/{chunk-7IZUNRPZ.js.map → chunk-V4KBK66V.js.map} +1 -1
- package/dist/{chunk-AI3ZCOCT.js → chunk-WE75QX2B.js} +1 -1
- package/dist/chunk-WYYR2EU6.js +29 -0
- package/dist/chunk-WYYR2EU6.js.map +1 -0
- package/dist/{chunk-GNRMDXJA.js → chunk-XXL62KSJ.js} +2 -2
- package/dist/{chunk-QDGB6FLI.js → chunk-ZZCMAFN7.js} +5 -5
- package/dist/chunk-ZZCMAFN7.js.map +1 -0
- package/dist/{client-Bp3MRcJc.d.ts → client-JHPwle1Z.d.ts} +46 -1
- package/dist/client.cjs +287 -12
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.ts +2 -2
- package/dist/client.js +23 -21
- package/dist/edge.cjs +2 -2
- package/dist/edge.cjs.map +1 -1
- package/dist/edge.js +4 -4
- package/dist/index.cjs +287 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +24 -22
- package/dist/modelrouter/core.cjs +2 -2
- package/dist/modelrouter/core.cjs.map +1 -1
- package/dist/modelrouter/core.js +3 -3
- package/dist/modelrouter/index.cjs +2 -2
- package/dist/modelrouter/index.cjs.map +1 -1
- package/dist/modelrouter/index.js +3 -3
- package/dist/tools/browser/anthropic.cjs +2 -2
- package/dist/tools/browser/anthropic.cjs.map +1 -1
- package/dist/tools/browser/anthropic.js +5 -5
- package/dist/tools/browser/core.cjs +2 -2
- package/dist/tools/browser/core.cjs.map +1 -1
- package/dist/tools/browser/core.js +4 -4
- package/dist/tools/browser/index.cjs +2 -2
- package/dist/tools/browser/index.cjs.map +1 -1
- package/dist/tools/browser/index.js +7 -7
- package/dist/tools/browser/openai.cjs +2 -2
- package/dist/tools/browser/openai.cjs.map +1 -1
- package/dist/tools/browser/openai.js +5 -5
- package/dist/tools/browser/profiles/core.cjs +2 -2
- package/dist/tools/browser/profiles/core.cjs.map +1 -1
- package/dist/tools/browser/profiles/core.js +3 -3
- package/dist/tools/browser/profiles/index.cjs +2 -2
- package/dist/tools/browser/profiles/index.cjs.map +1 -1
- package/dist/tools/browser/profiles/index.js +3 -3
- package/dist/tools/browser/vercel.cjs +2 -2
- package/dist/tools/browser/vercel.cjs.map +1 -1
- package/dist/tools/browser/vercel.js +5 -5
- package/dist/tools/codebase_search/anthropic.cjs +2 -2
- package/dist/tools/codebase_search/anthropic.cjs.map +1 -1
- package/dist/tools/codebase_search/anthropic.js +4 -4
- package/dist/tools/codebase_search/core.cjs +2 -2
- package/dist/tools/codebase_search/core.cjs.map +1 -1
- package/dist/tools/codebase_search/core.js +3 -3
- package/dist/tools/codebase_search/index.cjs +2 -2
- package/dist/tools/codebase_search/index.cjs.map +1 -1
- package/dist/tools/codebase_search/index.js +6 -6
- package/dist/tools/codebase_search/openai.cjs +2 -2
- package/dist/tools/codebase_search/openai.cjs.map +1 -1
- package/dist/tools/codebase_search/openai.js +4 -4
- package/dist/tools/codebase_search/vercel.cjs +2 -2
- package/dist/tools/codebase_search/vercel.cjs.map +1 -1
- package/dist/tools/codebase_search/vercel.js +4 -4
- package/dist/tools/fastapply/anthropic.cjs +2 -2
- package/dist/tools/fastapply/anthropic.cjs.map +1 -1
- package/dist/tools/fastapply/anthropic.js +4 -4
- package/dist/tools/fastapply/apply.cjs +2 -2
- package/dist/tools/fastapply/apply.cjs.map +1 -1
- package/dist/tools/fastapply/apply.js +2 -2
- package/dist/tools/fastapply/core.cjs +2 -2
- package/dist/tools/fastapply/core.cjs.map +1 -1
- package/dist/tools/fastapply/core.js +3 -3
- package/dist/tools/fastapply/index.cjs +2 -2
- package/dist/tools/fastapply/index.cjs.map +1 -1
- package/dist/tools/fastapply/index.js +6 -6
- package/dist/tools/fastapply/openai.cjs +2 -2
- package/dist/tools/fastapply/openai.cjs.map +1 -1
- package/dist/tools/fastapply/openai.js +4 -4
- package/dist/tools/fastapply/vercel.cjs +2 -2
- package/dist/tools/fastapply/vercel.cjs.map +1 -1
- package/dist/tools/fastapply/vercel.js +4 -4
- package/dist/tools/index.cjs +2 -2
- package/dist/tools/index.cjs.map +1 -1
- package/dist/tools/index.js +6 -6
- package/dist/tools/utils/resilience.cjs +2 -2
- package/dist/tools/utils/resilience.cjs.map +1 -1
- package/dist/tools/utils/resilience.js +2 -2
- package/dist/tools/warp_grep/agent/runner.cjs +5 -5
- package/dist/tools/warp_grep/agent/runner.cjs.map +1 -1
- package/dist/tools/warp_grep/agent/runner.js +2 -2
- package/dist/tools/warp_grep/anthropic.cjs +476 -5
- package/dist/tools/warp_grep/anthropic.cjs.map +1 -1
- package/dist/tools/warp_grep/anthropic.d.ts +62 -2
- package/dist/tools/warp_grep/anthropic.js +11 -5
- package/dist/tools/warp_grep/client.cjs +187 -12
- package/dist/tools/warp_grep/client.cjs.map +1 -1
- package/dist/tools/warp_grep/client.d.ts +58 -2
- package/dist/tools/warp_grep/client.js +9 -3
- package/dist/tools/warp_grep/gemini.cjs +475 -5
- package/dist/tools/warp_grep/gemini.cjs.map +1 -1
- package/dist/tools/warp_grep/gemini.d.ts +62 -2
- package/dist/tools/warp_grep/gemini.js +69 -4
- package/dist/tools/warp_grep/gemini.js.map +1 -1
- package/dist/tools/warp_grep/index.cjs +228 -12
- package/dist/tools/warp_grep/index.cjs.map +1 -1
- package/dist/tools/warp_grep/index.d.ts +52 -3
- package/dist/tools/warp_grep/index.js +26 -5
- package/dist/tools/warp_grep/openai.cjs +482 -5
- package/dist/tools/warp_grep/openai.cjs.map +1 -1
- package/dist/tools/warp_grep/openai.d.ts +62 -2
- package/dist/tools/warp_grep/openai.js +11 -5
- package/dist/tools/warp_grep/providers/code_storage_http.cjs +53 -0
- package/dist/tools/warp_grep/providers/code_storage_http.cjs.map +1 -0
- package/dist/tools/warp_grep/providers/code_storage_http.d.ts +23 -0
- package/dist/tools/warp_grep/providers/code_storage_http.js +8 -0
- package/dist/tools/warp_grep/providers/code_storage_http.js.map +1 -0
- package/dist/tools/warp_grep/providers/remote.d.ts +1 -1
- package/dist/tools/warp_grep/utils/github.cjs +46 -0
- package/dist/tools/warp_grep/utils/github.cjs.map +1 -0
- package/dist/tools/warp_grep/utils/github.d.ts +13 -0
- package/dist/tools/warp_grep/utils/github.js +8 -0
- package/dist/tools/warp_grep/utils/github.js.map +1 -0
- package/dist/tools/warp_grep/vercel.cjs +245 -5
- package/dist/tools/warp_grep/vercel.cjs.map +1 -1
- package/dist/tools/warp_grep/vercel.d.ts +60 -2
- package/dist/tools/warp_grep/vercel.js +11 -5
- package/dist/{types-D5p8QErL.d.ts → types-DY_hq2eZ.d.ts} +53 -1
- package/dist/version.cjs +2 -2
- package/dist/version.cjs.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
- package/dist/chunk-C3BQUIFE.js.map +0 -1
- package/dist/chunk-CXP63PHW.js +0 -61
- package/dist/chunk-CXP63PHW.js.map +0 -1
- package/dist/chunk-KW7OEGZK.js +0 -9
- package/dist/chunk-KW7OEGZK.js.map +0 -1
- package/dist/chunk-QDGB6FLI.js.map +0 -1
- package/dist/chunk-U5UDFQXK.js +0 -66
- package/dist/chunk-U5UDFQXK.js.map +0 -1
- package/dist/chunk-XERAWJ3H.js +0 -53
- package/dist/chunk-XERAWJ3H.js.map +0 -1
- /package/dist/{chunk-L4PK4VC7.js.map → chunk-5OJE7GH4.js.map} +0 -0
- /package/dist/{chunk-BDKXYMU2.js.map → chunk-ANPZFWYV.js.map} +0 -0
- /package/dist/{chunk-DL3Y3R6A.js.map → chunk-BJ2764MK.js.map} +0 -0
- /package/dist/{chunk-JBIFS33U.js.map → chunk-DBSOONOY.js.map} +0 -0
- /package/dist/{chunk-7QZFNYOH.js.map → chunk-GXFJLL5O.js.map} +0 -0
- /package/dist/{chunk-MAAULSSQ.js.map → chunk-HVBJ4UO6.js.map} +0 -0
- /package/dist/{chunk-3HBZXN6E.js.map → chunk-K74GLGST.js.map} +0 -0
- /package/dist/{chunk-EZFXR52Q.js.map → chunk-KL3AMLGL.js.map} +0 -0
- /package/dist/{chunk-YMOTJ6ZP.js.map → chunk-L426IMZD.js.map} +0 -0
- /package/dist/{chunk-266SWRHK.js.map → chunk-OFJYDTQI.js.map} +0 -0
- /package/dist/{chunk-W37KJB25.js.map → chunk-QD7KPI7A.js.map} +0 -0
- /package/dist/{chunk-WEBUKGPK.js.map → chunk-UHL2ZEWG.js.map} +0 -0
- /package/dist/{chunk-CIFPLFBQ.js.map → chunk-UJS3AIWS.js.map} +0 -0
- /package/dist/{chunk-FV3R3JGV.js.map → chunk-UX65IRCX.js.map} +0 -0
- /package/dist/{chunk-AI3ZCOCT.js.map → chunk-WE75QX2B.js.map} +0 -0
- /package/dist/{chunk-GNRMDXJA.js.map → chunk-XXL62KSJ.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Tool } from '@anthropic-ai/sdk/resources/messages';
|
|
2
2
|
export { formatResult } from './client.js';
|
|
3
3
|
export { getSystemPrompt } from './agent/prompt.js';
|
|
4
|
-
import { d as WarpGrepToolConfig, b as WarpGrepResult } from '../../types-
|
|
4
|
+
import { d as WarpGrepToolConfig, b as WarpGrepResult, g as GitHubSearchToolConfig, h as GitHubReadFileToolConfig, e as GitHubReadFileInput, f as GitHubReadFileResult } from '../../types-DY_hq2eZ.js';
|
|
5
5
|
import './agent/types.js';
|
|
6
6
|
import '../utils/resilience.js';
|
|
7
7
|
import './providers/types.js';
|
|
@@ -79,5 +79,65 @@ declare function createWarpGrepTool(config: WarpGrepToolConfig): Tool & {
|
|
|
79
79
|
formatResult: (result: WarpGrepResult) => string;
|
|
80
80
|
getSystemPrompt: () => string;
|
|
81
81
|
};
|
|
82
|
+
/**
|
|
83
|
+
* Create a GitHub search tool for Anthropic SDK
|
|
84
|
+
*
|
|
85
|
+
* @param config - Configuration options (morphApiKey, morphApiUrl, codeSearchUrl, timeout)
|
|
86
|
+
* @returns Anthropic Tool with execute and formatResult methods
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```typescript
|
|
90
|
+
* import Anthropic from '@anthropic-ai/sdk';
|
|
91
|
+
* import { createGitHubSearchTool } from '@morphllm/morphsdk/tools/warp-grep/anthropic';
|
|
92
|
+
*
|
|
93
|
+
* const tool = createGitHubSearchTool({ morphApiKey: process.env.MORPH_API_KEY });
|
|
94
|
+
*
|
|
95
|
+
* const response = await client.messages.create({
|
|
96
|
+
* model: 'claude-sonnet-4-5-20250929',
|
|
97
|
+
* tools: [tool],
|
|
98
|
+
* messages: [{ role: 'user', content: 'How does auth work in vercel/next.js?' }]
|
|
99
|
+
* });
|
|
100
|
+
*
|
|
101
|
+
* // Execute
|
|
102
|
+
* const result = await tool.execute({ query: 'auth middleware', github: 'vercel/next.js' });
|
|
103
|
+
* console.log(tool.formatResult(result));
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
declare function createGitHubSearchTool(config: GitHubSearchToolConfig): Tool & {
|
|
107
|
+
execute: (input: {
|
|
108
|
+
query: string;
|
|
109
|
+
github: string;
|
|
110
|
+
branch?: string;
|
|
111
|
+
}) => Promise<WarpGrepResult>;
|
|
112
|
+
formatResult: (result: WarpGrepResult) => string;
|
|
113
|
+
getSystemPrompt: () => string;
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Create a GitHub read file tool for Anthropic SDK
|
|
117
|
+
*
|
|
118
|
+
* @param config - Optional configuration (timeout)
|
|
119
|
+
* @returns Anthropic Tool with execute and formatResult methods
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```typescript
|
|
123
|
+
* import Anthropic from '@anthropic-ai/sdk';
|
|
124
|
+
* import { createGitHubReadFileTool } from '@morphllm/morphsdk/tools/warp-grep/anthropic';
|
|
125
|
+
*
|
|
126
|
+
* const tool = createGitHubReadFileTool();
|
|
127
|
+
*
|
|
128
|
+
* const response = await client.messages.create({
|
|
129
|
+
* model: 'claude-sonnet-4-5-20250929',
|
|
130
|
+
* tools: [tool],
|
|
131
|
+
* messages: [{ role: 'user', content: 'Read the package.json from vercel/next.js' }]
|
|
132
|
+
* });
|
|
133
|
+
*
|
|
134
|
+
* const result = await tool.execute({ github: 'vercel/next.js', path: 'package.json' });
|
|
135
|
+
* console.log(tool.formatResult(result));
|
|
136
|
+
* ```
|
|
137
|
+
*/
|
|
138
|
+
declare function createGitHubReadFileTool(config?: GitHubReadFileToolConfig): Tool & {
|
|
139
|
+
execute: (input: GitHubReadFileInput) => Promise<GitHubReadFileResult>;
|
|
140
|
+
formatResult: (result: GitHubReadFileResult) => string;
|
|
141
|
+
};
|
|
82
142
|
|
|
83
|
-
export { createWarpGrepTool, execute, warpGrepTool };
|
|
143
|
+
export { createGitHubReadFileTool, createGitHubSearchTool, createWarpGrepTool, execute, warpGrepTool };
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import {
|
|
2
|
+
createGitHubReadFileTool,
|
|
3
|
+
createGitHubSearchTool,
|
|
2
4
|
createWarpGrepTool,
|
|
3
5
|
execute,
|
|
4
6
|
warpGrepTool
|
|
5
|
-
} from "../../chunk-
|
|
6
|
-
import "../../chunk-
|
|
7
|
+
} from "../../chunk-H3U7J5RI.js";
|
|
8
|
+
import "../../chunk-OTOVGCG6.js";
|
|
7
9
|
import {
|
|
8
10
|
formatResult
|
|
9
|
-
} from "../../chunk-
|
|
11
|
+
} from "../../chunk-MXSGTN7R.js";
|
|
12
|
+
import "../../chunk-WYYR2EU6.js";
|
|
10
13
|
import "../../chunk-PUGSTXLO.js";
|
|
11
|
-
import "../../chunk-
|
|
14
|
+
import "../../chunk-63VHBANJ.js";
|
|
15
|
+
import "../../chunk-ZZCMAFN7.js";
|
|
12
16
|
import "../../chunk-3MLWXJTJ.js";
|
|
13
17
|
import "../../chunk-5PNMAWLC.js";
|
|
14
18
|
import "../../chunk-APP75CBN.js";
|
|
@@ -16,9 +20,11 @@ import "../../chunk-GHGJAQSJ.js";
|
|
|
16
20
|
import {
|
|
17
21
|
getSystemPrompt
|
|
18
22
|
} from "../../chunk-FMLHRJDF.js";
|
|
19
|
-
import "../../chunk-
|
|
23
|
+
import "../../chunk-FMKJ72KT.js";
|
|
20
24
|
import "../../chunk-PZ5AY32C.js";
|
|
21
25
|
export {
|
|
26
|
+
createGitHubReadFileTool,
|
|
27
|
+
createGitHubSearchTool,
|
|
22
28
|
createWarpGrepTool,
|
|
23
29
|
execute,
|
|
24
30
|
formatResult,
|
|
@@ -573,9 +573,11 @@ Details: ${res.stderr}` : ""}`
|
|
|
573
573
|
var client_exports = {};
|
|
574
574
|
__export(client_exports, {
|
|
575
575
|
WarpGrepClient: () => WarpGrepClient,
|
|
576
|
+
executeGitHubReadFile: () => executeGitHubReadFile,
|
|
576
577
|
executeToolCall: () => executeToolCall,
|
|
577
578
|
executeToolCallStreaming: () => executeToolCallStreaming,
|
|
578
579
|
executeWarpGrep: () => executeWarpGrep,
|
|
580
|
+
formatGitHubReadFileResult: () => formatGitHubReadFileResult,
|
|
579
581
|
formatResult: () => formatResult
|
|
580
582
|
});
|
|
581
583
|
module.exports = __toCommonJS(client_exports);
|
|
@@ -1377,7 +1379,7 @@ var import_openai = __toESM(require("openai"), 1);
|
|
|
1377
1379
|
// package.json
|
|
1378
1380
|
var package_default = {
|
|
1379
1381
|
name: "@morphllm/morphsdk",
|
|
1380
|
-
version: "0.2.
|
|
1382
|
+
version: "0.2.123",
|
|
1381
1383
|
description: "TypeScript SDK and CLI for Morph Fast Apply integration",
|
|
1382
1384
|
type: "module",
|
|
1383
1385
|
main: "./dist/index.cjs",
|
|
@@ -1519,7 +1521,7 @@ var package_default = {
|
|
|
1519
1521
|
"!dist/**/*.test.*"
|
|
1520
1522
|
],
|
|
1521
1523
|
scripts: {
|
|
1522
|
-
build: "tsup version.ts index.ts edge.ts client.ts tools/index.ts tools/fastapply/index.ts tools/fastapply/core.ts tools/fastapply/apply.ts tools/fastapply/types.ts tools/fastapply/prompts.ts tools/fastapply/anthropic.ts tools/fastapply/openai.ts tools/fastapply/vercel.ts tools/codebase_search/index.ts tools/codebase_search/core.ts tools/codebase_search/types.ts tools/codebase_search/prompts.ts tools/codebase_search/anthropic.ts tools/codebase_search/openai.ts tools/codebase_search/vercel.ts tools/warp_grep/index.ts tools/warp_grep/client.ts tools/warp_grep/openai.ts tools/warp_grep/anthropic.ts tools/warp_grep/vercel.ts tools/warp_grep/gemini.ts tools/warp_grep/harness.ts tools/warp_grep/agent/config.ts tools/warp_grep/agent/prompt.ts tools/warp_grep/agent/parser.ts tools/warp_grep/agent/runner.ts tools/warp_grep/agent/types.ts tools/warp_grep/agent/formatter.ts tools/warp_grep/providers/types.ts tools/warp_grep/providers/local.ts tools/warp_grep/providers/remote.ts tools/warp_grep/tools/grep.ts tools/warp_grep/tools/analyse.ts tools/warp_grep/tools/read.ts tools/warp_grep/tools/finish.ts tools/warp_grep/utils/paths.ts tools/warp_grep/utils/ripgrep.ts tools/warp_grep/utils/format.ts tools/warp_grep/utils/files.ts git/index.ts git/client.ts git/config.ts git/types.ts tools/browser/index.ts tools/browser/core.ts tools/browser/types.ts tools/browser/prompts.ts tools/browser/anthropic.ts tools/browser/openai.ts tools/browser/vercel.ts tools/browser/live.ts tools/browser/errors.ts tools/browser/profiles/index.ts tools/browser/profiles/core.ts tools/browser/profiles/types.ts modelrouter/index.ts modelrouter/core.ts modelrouter/types.ts tools/compact/index.ts tools/compact/core.ts tools/compact/types.ts tools/utils/resilience.ts --format esm,cjs --sourcemap --clean --dts --dts-resolve",
|
|
1524
|
+
build: "tsup version.ts index.ts edge.ts client.ts tools/index.ts tools/fastapply/index.ts tools/fastapply/core.ts tools/fastapply/apply.ts tools/fastapply/types.ts tools/fastapply/prompts.ts tools/fastapply/anthropic.ts tools/fastapply/openai.ts tools/fastapply/vercel.ts tools/codebase_search/index.ts tools/codebase_search/core.ts tools/codebase_search/types.ts tools/codebase_search/prompts.ts tools/codebase_search/anthropic.ts tools/codebase_search/openai.ts tools/codebase_search/vercel.ts tools/warp_grep/index.ts tools/warp_grep/client.ts tools/warp_grep/openai.ts tools/warp_grep/anthropic.ts tools/warp_grep/vercel.ts tools/warp_grep/gemini.ts tools/warp_grep/harness.ts tools/warp_grep/agent/config.ts tools/warp_grep/agent/prompt.ts tools/warp_grep/agent/parser.ts tools/warp_grep/agent/runner.ts tools/warp_grep/agent/types.ts tools/warp_grep/agent/formatter.ts tools/warp_grep/providers/types.ts tools/warp_grep/providers/local.ts tools/warp_grep/providers/remote.ts tools/warp_grep/providers/code_storage_http.ts tools/warp_grep/tools/grep.ts tools/warp_grep/tools/analyse.ts tools/warp_grep/tools/read.ts tools/warp_grep/tools/finish.ts tools/warp_grep/utils/paths.ts tools/warp_grep/utils/github.ts tools/warp_grep/utils/ripgrep.ts tools/warp_grep/utils/format.ts tools/warp_grep/utils/files.ts git/index.ts git/client.ts git/config.ts git/types.ts tools/browser/index.ts tools/browser/core.ts tools/browser/types.ts tools/browser/prompts.ts tools/browser/anthropic.ts tools/browser/openai.ts tools/browser/vercel.ts tools/browser/live.ts tools/browser/errors.ts tools/browser/profiles/index.ts tools/browser/profiles/core.ts tools/browser/profiles/types.ts modelrouter/index.ts modelrouter/core.ts modelrouter/types.ts tools/compact/index.ts tools/compact/core.ts tools/compact/types.ts tools/utils/resilience.ts --format esm,cjs --sourcemap --clean --dts --dts-resolve",
|
|
1523
1525
|
prepare: "npm run build",
|
|
1524
1526
|
typecheck: "tsc --noEmit",
|
|
1525
1527
|
lint: "eslint .",
|
|
@@ -1627,9 +1629,9 @@ async function callModel(messages, model, options = {}) {
|
|
|
1627
1629
|
});
|
|
1628
1630
|
} catch (error) {
|
|
1629
1631
|
if (error instanceof import_openai.default.APIError && error.status === 404) {
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
);
|
|
1632
|
+
const defaultMsg = "The endpoint you are trying to call is likely deprecated. Please update with: npm cache clean --force && npx -y @morphllm/morphmcp@latest or visit: https://morphllm.com/mcp";
|
|
1633
|
+
const errorText = error.message?.trim();
|
|
1634
|
+
throw new Error(errorText || defaultMsg);
|
|
1633
1635
|
}
|
|
1634
1636
|
throw error;
|
|
1635
1637
|
}
|
|
@@ -2157,7 +2159,51 @@ var RemoteCommandsProvider = class {
|
|
|
2157
2159
|
}
|
|
2158
2160
|
};
|
|
2159
2161
|
|
|
2162
|
+
// tools/warp_grep/providers/code_storage_http.ts
|
|
2163
|
+
async function post(url, body, op) {
|
|
2164
|
+
const res = await fetch(url, {
|
|
2165
|
+
method: "POST",
|
|
2166
|
+
headers: { "Content-Type": "application/json" },
|
|
2167
|
+
body: JSON.stringify(body)
|
|
2168
|
+
});
|
|
2169
|
+
if (!res.ok) {
|
|
2170
|
+
const text = await res.text().catch(() => res.statusText);
|
|
2171
|
+
throw new Error(`${op} failed (${res.status}): ${text}`);
|
|
2172
|
+
}
|
|
2173
|
+
const data = await res.json();
|
|
2174
|
+
if (data.error) throw new Error(data.error);
|
|
2175
|
+
return data.stdout;
|
|
2176
|
+
}
|
|
2177
|
+
function createCodeStorageHttpCommands(config) {
|
|
2178
|
+
const { baseUrl, repoId, branch } = config;
|
|
2179
|
+
const encodedRepoId = encodeURIComponent(repoId);
|
|
2180
|
+
return {
|
|
2181
|
+
grep: (pattern, path5, glob) => post(`${baseUrl}/api/code-search/${encodedRepoId}/grep`, { pattern, path: path5, glob, branch }, "grep"),
|
|
2182
|
+
read: (path5, start, end) => post(`${baseUrl}/api/code-search/${encodedRepoId}/read`, { path: path5, start, end, branch }, "read"),
|
|
2183
|
+
listDir: (path5, maxDepth) => post(`${baseUrl}/api/code-search/${encodedRepoId}/list`, { path: path5, maxDepth, branch }, "list")
|
|
2184
|
+
};
|
|
2185
|
+
}
|
|
2186
|
+
|
|
2187
|
+
// tools/warp_grep/utils/github.ts
|
|
2188
|
+
function parseGitHubUrl(input) {
|
|
2189
|
+
input = input.trim();
|
|
2190
|
+
const urlPattern = /^(?:https?:\/\/)?github\.com\/([^\/]+)\/([^\/\?\#]+)/;
|
|
2191
|
+
const match = input.match(urlPattern);
|
|
2192
|
+
if (match) {
|
|
2193
|
+
return { owner: match[1], repo: match[2].replace(/\.git$/, "") };
|
|
2194
|
+
}
|
|
2195
|
+
const shortPattern = /^([^\/]+)\/([^\/]+)$/;
|
|
2196
|
+
const shortMatch = input.match(shortPattern);
|
|
2197
|
+
if (shortMatch && !shortMatch[1].includes(".")) {
|
|
2198
|
+
return { owner: shortMatch[1], repo: shortMatch[2].replace(/\.git$/, "") };
|
|
2199
|
+
}
|
|
2200
|
+
throw new Error(
|
|
2201
|
+
`Invalid GitHub URL or shorthand: "${input}". Expected "owner/repo" or "https://github.com/owner/repo"`
|
|
2202
|
+
);
|
|
2203
|
+
}
|
|
2204
|
+
|
|
2160
2205
|
// tools/warp_grep/client.ts
|
|
2206
|
+
var DEFAULT_CODE_SEARCH_URL = "https://morphllm.com";
|
|
2161
2207
|
async function getLocalProvider(repoRoot, excludes) {
|
|
2162
2208
|
const { LocalRipgrepProvider: LocalRipgrepProvider2 } = await Promise.resolve().then(() => (init_local(), local_exports));
|
|
2163
2209
|
return new LocalRipgrepProvider2(repoRoot, excludes);
|
|
@@ -2165,13 +2211,7 @@ async function getLocalProvider(repoRoot, excludes) {
|
|
|
2165
2211
|
var WarpGrepClient = class {
|
|
2166
2212
|
config;
|
|
2167
2213
|
constructor(config = {}) {
|
|
2168
|
-
this.config = {
|
|
2169
|
-
morphApiKey: config.morphApiKey,
|
|
2170
|
-
morphApiUrl: config.morphApiUrl,
|
|
2171
|
-
debug: config.debug,
|
|
2172
|
-
timeout: config.timeout,
|
|
2173
|
-
retryConfig: config.retryConfig
|
|
2174
|
-
};
|
|
2214
|
+
this.config = { ...config };
|
|
2175
2215
|
}
|
|
2176
2216
|
execute(input) {
|
|
2177
2217
|
const toolConfig = {
|
|
@@ -2191,6 +2231,80 @@ var WarpGrepClient = class {
|
|
|
2191
2231
|
}
|
|
2192
2232
|
return executeToolCall({ query: input.query }, toolConfig);
|
|
2193
2233
|
}
|
|
2234
|
+
searchGitHub(input) {
|
|
2235
|
+
if (input.streamSteps) {
|
|
2236
|
+
return this._searchGitHubStreaming(input);
|
|
2237
|
+
}
|
|
2238
|
+
return this._searchGitHubAsync(input);
|
|
2239
|
+
}
|
|
2240
|
+
/**
|
|
2241
|
+
* Read a single file from a public GitHub repository
|
|
2242
|
+
*
|
|
2243
|
+
* @example
|
|
2244
|
+
* ```typescript
|
|
2245
|
+
* const result = await client.readGitHubFile({
|
|
2246
|
+
* github: 'vercel/next.js',
|
|
2247
|
+
* path: 'src/server/app-render/index.tsx',
|
|
2248
|
+
* startLine: 1,
|
|
2249
|
+
* endLine: 50,
|
|
2250
|
+
* });
|
|
2251
|
+
* if (result.success) console.log(result.content);
|
|
2252
|
+
* ```
|
|
2253
|
+
*/
|
|
2254
|
+
async readGitHubFile(input) {
|
|
2255
|
+
return executeGitHubReadFile(input, { timeout: this.config.timeout });
|
|
2256
|
+
}
|
|
2257
|
+
async _resolveGitHubRepo(input) {
|
|
2258
|
+
const { owner, repo } = parseGitHubUrl(input.github);
|
|
2259
|
+
const baseUrl = this.config.codeSearchUrl || DEFAULT_CODE_SEARCH_URL;
|
|
2260
|
+
const importRes = await fetch(`${baseUrl}/api/code-search/get-or-create?url=${encodeURIComponent(`${owner}/${repo}`)}`);
|
|
2261
|
+
if (!importRes.ok) {
|
|
2262
|
+
const text = await importRes.text().catch(() => importRes.statusText);
|
|
2263
|
+
throw new Error(`Failed to import repo ${owner}/${repo}: ${text}`);
|
|
2264
|
+
}
|
|
2265
|
+
const { repoId, defaultBranch } = await importRes.json();
|
|
2266
|
+
return {
|
|
2267
|
+
repo,
|
|
2268
|
+
remoteCommands: createCodeStorageHttpCommands({ baseUrl, repoId, branch: input.branch || defaultBranch })
|
|
2269
|
+
};
|
|
2270
|
+
}
|
|
2271
|
+
async _searchGitHubAsync(input) {
|
|
2272
|
+
try {
|
|
2273
|
+
const { repo, remoteCommands } = await this._resolveGitHubRepo(input);
|
|
2274
|
+
return this.execute({
|
|
2275
|
+
query: input.query,
|
|
2276
|
+
repoRoot: repo,
|
|
2277
|
+
remoteCommands
|
|
2278
|
+
});
|
|
2279
|
+
} catch (error) {
|
|
2280
|
+
return { success: false, error: error instanceof Error ? error.message : String(error) };
|
|
2281
|
+
}
|
|
2282
|
+
}
|
|
2283
|
+
async *_searchGitHubStreaming(input) {
|
|
2284
|
+
let repo;
|
|
2285
|
+
let remoteCommands;
|
|
2286
|
+
try {
|
|
2287
|
+
({ repo, remoteCommands } = await this._resolveGitHubRepo(input));
|
|
2288
|
+
} catch (error) {
|
|
2289
|
+
return { success: false, error: error instanceof Error ? error.message : String(error) };
|
|
2290
|
+
}
|
|
2291
|
+
const generator = this.execute({
|
|
2292
|
+
query: input.query,
|
|
2293
|
+
repoRoot: repo,
|
|
2294
|
+
remoteCommands,
|
|
2295
|
+
streamSteps: true
|
|
2296
|
+
});
|
|
2297
|
+
let result;
|
|
2298
|
+
for (; ; ) {
|
|
2299
|
+
const { value, done } = await generator.next();
|
|
2300
|
+
if (done) {
|
|
2301
|
+
result = value;
|
|
2302
|
+
break;
|
|
2303
|
+
}
|
|
2304
|
+
yield value;
|
|
2305
|
+
}
|
|
2306
|
+
return result;
|
|
2307
|
+
}
|
|
2194
2308
|
};
|
|
2195
2309
|
function executeWarpGrep(input, config) {
|
|
2196
2310
|
const client = new WarpGrepClient(config);
|
|
@@ -2267,6 +2381,65 @@ async function* executeToolCallStreaming(input, config) {
|
|
|
2267
2381
|
}
|
|
2268
2382
|
return processAgentResult(agentResult);
|
|
2269
2383
|
}
|
|
2384
|
+
async function fetchRawGitHubFile(owner, repo, filePath, branch, timeout) {
|
|
2385
|
+
const branches = branch ? [branch] : ["HEAD"];
|
|
2386
|
+
const fallbacks = ["main", "master", "develop"];
|
|
2387
|
+
const fetchWithTimeout = (url) => timeout ? fetch(url, { signal: AbortSignal.timeout(timeout) }) : fetch(url);
|
|
2388
|
+
for (const b of branches) {
|
|
2389
|
+
const url = `https://raw.githubusercontent.com/${owner}/${repo}/${b}/${filePath}`;
|
|
2390
|
+
const res = await fetchWithTimeout(url);
|
|
2391
|
+
if (res.ok) return { content: await res.text(), branch: b };
|
|
2392
|
+
}
|
|
2393
|
+
for (const fb of fallbacks) {
|
|
2394
|
+
if (branch && fb === branch) continue;
|
|
2395
|
+
const url = `https://raw.githubusercontent.com/${owner}/${repo}/${fb}/${filePath}`;
|
|
2396
|
+
const res = await fetchWithTimeout(url);
|
|
2397
|
+
if (res.ok) return { content: await res.text(), branch: fb };
|
|
2398
|
+
}
|
|
2399
|
+
throw new Error(`File not found: ${owner}/${repo}/${filePath}`);
|
|
2400
|
+
}
|
|
2401
|
+
async function executeGitHubReadFile(input, config) {
|
|
2402
|
+
try {
|
|
2403
|
+
const { owner, repo } = parseGitHubUrl(input.github);
|
|
2404
|
+
const { content: raw, branch } = await fetchRawGitHubFile(
|
|
2405
|
+
owner,
|
|
2406
|
+
repo,
|
|
2407
|
+
input.path,
|
|
2408
|
+
input.branch,
|
|
2409
|
+
config?.timeout
|
|
2410
|
+
);
|
|
2411
|
+
const allLines = raw.split("\n");
|
|
2412
|
+
const totalLines = allLines.length;
|
|
2413
|
+
const start = Math.max(1, input.startLine ?? 1);
|
|
2414
|
+
const end = Math.min(totalLines, input.endLine ?? totalLines);
|
|
2415
|
+
const selected = allLines.slice(start - 1, end);
|
|
2416
|
+
const padWidth = String(end).length;
|
|
2417
|
+
const numbered = selected.map((line, i) => `${String(start + i).padStart(padWidth)}|${line}`).join("\n");
|
|
2418
|
+
return {
|
|
2419
|
+
success: true,
|
|
2420
|
+
content: numbered,
|
|
2421
|
+
path: input.path,
|
|
2422
|
+
github: `${owner}/${repo}`,
|
|
2423
|
+
branch,
|
|
2424
|
+
lineRange: [start, end],
|
|
2425
|
+
totalLines
|
|
2426
|
+
};
|
|
2427
|
+
} catch (error) {
|
|
2428
|
+
return {
|
|
2429
|
+
success: false,
|
|
2430
|
+
error: error instanceof Error ? error.message : String(error)
|
|
2431
|
+
};
|
|
2432
|
+
}
|
|
2433
|
+
}
|
|
2434
|
+
function formatGitHubReadFileResult(result) {
|
|
2435
|
+
if (!result.success) {
|
|
2436
|
+
return `Failed to read file: ${result.error}`;
|
|
2437
|
+
}
|
|
2438
|
+
const rangeStr = result.lineRange ? ` (lines ${result.lineRange[0]}-${result.lineRange[1]} of ${result.totalLines})` : "";
|
|
2439
|
+
return `File: ${result.github}/${result.path}${rangeStr}
|
|
2440
|
+
|
|
2441
|
+
${result.content}`;
|
|
2442
|
+
}
|
|
2270
2443
|
function formatResult(result) {
|
|
2271
2444
|
if (!result.success) {
|
|
2272
2445
|
return `Search failed: ${result.error}`;
|
|
@@ -2294,9 +2467,11 @@ function formatResult(result) {
|
|
|
2294
2467
|
// Annotate the CommonJS export names for ESM import in node:
|
|
2295
2468
|
0 && (module.exports = {
|
|
2296
2469
|
WarpGrepClient,
|
|
2470
|
+
executeGitHubReadFile,
|
|
2297
2471
|
executeToolCall,
|
|
2298
2472
|
executeToolCallStreaming,
|
|
2299
2473
|
executeWarpGrep,
|
|
2474
|
+
formatGitHubReadFileResult,
|
|
2300
2475
|
formatResult
|
|
2301
2476
|
});
|
|
2302
2477
|
//# sourceMappingURL=client.cjs.map
|