@morphllm/morphsdk 0.2.120 → 0.2.122
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-7TM4RBXE.js → chunk-2AQLRL4U.js} +2 -2
- package/dist/{chunk-XQ4KEOJT.js → chunk-2MJEULZU.js} +2 -2
- package/dist/{chunk-SNY2UKHQ.js → chunk-3PMFQ5AV.js} +4 -4
- package/dist/{chunk-A54BOCBI.js → chunk-4GEBF5OH.js} +2 -2
- package/dist/{chunk-VVEK5JSH.js → chunk-4IU2K63O.js} +4 -4
- package/dist/{chunk-HCN2MLSO.js → chunk-4LA3OT4Q.js} +28 -4
- package/dist/chunk-4LA3OT4Q.js.map +1 -0
- package/dist/{chunk-HBWOWL7L.js → chunk-5UUJULLM.js} +2 -2
- package/dist/chunk-63VHBANJ.js +22 -0
- package/dist/chunk-63VHBANJ.js.map +1 -0
- package/dist/{chunk-L5C6E32T.js → chunk-64KNVHR4.js} +1 -1
- package/dist/{chunk-L5C6E32T.js.map → chunk-64KNVHR4.js.map} +1 -1
- package/dist/{chunk-2BPPWIJI.js → chunk-73GZ6KUK.js} +2 -2
- package/dist/{chunk-NW6PJIID.js → chunk-7KOUCN6T.js} +2 -2
- package/dist/{chunk-NLDYHLRB.js → chunk-EBROW6GK.js} +2 -2
- package/dist/{chunk-TVPEH6FF.js → chunk-GTANVDUZ.js} +2 -2
- package/dist/chunk-J267T54M.js +76 -0
- package/dist/chunk-J267T54M.js.map +1 -0
- package/dist/{chunk-KW7OEGZK.js → chunk-KJZMKDDP.js} +16 -2
- package/dist/{chunk-KW7OEGZK.js.map → chunk-KJZMKDDP.js.map} +1 -1
- package/dist/{chunk-4VLTYTEY.js → chunk-L4URLBKV.js} +3 -3
- package/dist/{chunk-T7F3DIRK.js → chunk-LE24SVVU.js} +2 -2
- package/dist/{chunk-BVINWDTA.js → chunk-MQWEZJTP.js} +6 -6
- package/dist/{chunk-6ODXYTLF.js → chunk-OTGBQEVH.js} +2 -2
- package/dist/{chunk-7HKYJ2MW.js → chunk-OWISPSLH.js} +2 -2
- package/dist/{chunk-HQAPRX5T.js → chunk-QGE7FGGT.js} +4 -4
- package/dist/{chunk-4RO43W62.js → chunk-RNKHRNSG.js} +8 -3
- package/dist/chunk-RNKHRNSG.js.map +1 -0
- package/dist/{chunk-RZ4VC4BG.js → chunk-T3T4LGRD.js} +30 -3
- package/dist/chunk-T3T4LGRD.js.map +1 -0
- package/dist/{chunk-FZUUET6R.js → chunk-TBLMIAIH.js} +28 -3
- package/dist/chunk-TBLMIAIH.js.map +1 -0
- package/dist/{chunk-RODHADNG.js → chunk-TXT3W4QK.js} +69 -11
- package/dist/chunk-TXT3W4QK.js.map +1 -0
- package/dist/{chunk-P4EPXC2Q.js → chunk-UDGJQBTC.js} +70 -17
- package/dist/{chunk-P4EPXC2Q.js.map → chunk-UDGJQBTC.js.map} +1 -1
- package/dist/chunk-WYYR2EU6.js +29 -0
- package/dist/chunk-WYYR2EU6.js.map +1 -0
- package/dist/{chunk-5HPN4VL2.js → chunk-ZHRT6F72.js} +1 -1
- package/dist/{client-D7iO2TbA.d.ts → client-BJrzbMYL.d.ts} +52 -2
- package/dist/client.cjs +302 -9
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.ts +5 -2
- package/dist/client.js +25 -22
- package/dist/edge.cjs +81 -2
- package/dist/edge.cjs.map +1 -1
- package/dist/edge.d.ts +3 -0
- package/dist/edge.js +8 -4
- package/dist/index.cjs +304 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.js +30 -24
- package/dist/modelrouter/core.cjs +7 -2
- package/dist/modelrouter/core.cjs.map +1 -1
- package/dist/modelrouter/core.js +3 -3
- package/dist/modelrouter/index.cjs +7 -2
- package/dist/modelrouter/index.cjs.map +1 -1
- package/dist/modelrouter/index.js +3 -3
- package/dist/tools/browser/anthropic.cjs +7 -2
- package/dist/tools/browser/anthropic.cjs.map +1 -1
- package/dist/tools/browser/anthropic.js +5 -5
- package/dist/tools/browser/core.cjs +7 -2
- package/dist/tools/browser/core.cjs.map +1 -1
- package/dist/tools/browser/core.js +4 -4
- package/dist/tools/browser/index.cjs +7 -2
- package/dist/tools/browser/index.cjs.map +1 -1
- package/dist/tools/browser/index.js +7 -7
- package/dist/tools/browser/openai.cjs +7 -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 +7 -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 +7 -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 +7 -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 +7 -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 +7 -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 +7 -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 +7 -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 +7 -2
- package/dist/tools/codebase_search/vercel.cjs.map +1 -1
- package/dist/tools/codebase_search/vercel.js +4 -4
- package/dist/tools/compact/core.cjs +110 -0
- package/dist/tools/compact/core.cjs.map +1 -0
- package/dist/tools/compact/core.d.ts +37 -0
- package/dist/tools/compact/core.js +8 -0
- package/dist/tools/compact/core.js.map +1 -0
- package/dist/tools/compact/index.cjs +112 -0
- package/dist/tools/compact/index.cjs.map +1 -0
- package/dist/tools/compact/index.d.ts +4 -0
- package/dist/tools/compact/index.js +8 -0
- package/dist/tools/compact/index.js.map +1 -0
- package/dist/tools/compact/types.cjs +19 -0
- package/dist/tools/compact/types.cjs.map +1 -0
- package/dist/tools/compact/types.d.ts +60 -0
- package/dist/tools/compact/types.js +1 -0
- package/dist/tools/compact/types.js.map +1 -0
- package/dist/tools/fastapply/anthropic.cjs +7 -2
- package/dist/tools/fastapply/anthropic.cjs.map +1 -1
- package/dist/tools/fastapply/anthropic.js +4 -4
- package/dist/tools/fastapply/apply.cjs +7 -2
- package/dist/tools/fastapply/apply.cjs.map +1 -1
- package/dist/tools/fastapply/apply.js +2 -2
- package/dist/tools/fastapply/core.cjs +7 -2
- package/dist/tools/fastapply/core.cjs.map +1 -1
- package/dist/tools/fastapply/core.js +3 -3
- package/dist/tools/fastapply/index.cjs +7 -2
- package/dist/tools/fastapply/index.cjs.map +1 -1
- package/dist/tools/fastapply/index.d.ts +1 -1
- package/dist/tools/fastapply/index.js +8 -8
- package/dist/tools/fastapply/openai.cjs +7 -2
- package/dist/tools/fastapply/openai.cjs.map +1 -1
- package/dist/tools/fastapply/openai.js +4 -4
- package/dist/tools/fastapply/vercel.cjs +7 -2
- package/dist/tools/fastapply/vercel.cjs.map +1 -1
- package/dist/tools/fastapply/vercel.d.ts +1 -1
- package/dist/tools/fastapply/vercel.js +4 -4
- package/dist/tools/index.cjs +7 -2
- package/dist/tools/index.cjs.map +1 -1
- package/dist/tools/index.d.ts +1 -1
- package/dist/tools/index.js +8 -8
- package/dist/tools/utils/resilience.cjs +7 -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 +7 -2
- package/dist/tools/warp_grep/agent/runner.cjs.map +1 -1
- package/dist/tools/warp_grep/agent/runner.js +3 -3
- package/dist/tools/warp_grep/anthropic.cjs +369 -2
- package/dist/tools/warp_grep/anthropic.cjs.map +1 -1
- package/dist/tools/warp_grep/anthropic.d.ts +35 -2
- package/dist/tools/warp_grep/anthropic.js +10 -6
- package/dist/tools/warp_grep/client.cjs +109 -9
- package/dist/tools/warp_grep/client.cjs.map +1 -1
- package/dist/tools/warp_grep/client.d.ts +32 -1
- package/dist/tools/warp_grep/client.js +6 -4
- package/dist/tools/warp_grep/gemini.cjs +369 -2
- package/dist/tools/warp_grep/gemini.cjs.map +1 -1
- package/dist/tools/warp_grep/gemini.d.ts +35 -2
- package/dist/tools/warp_grep/gemini.js +39 -5
- package/dist/tools/warp_grep/gemini.js.map +1 -1
- package/dist/tools/warp_grep/harness.js +4 -4
- package/dist/tools/warp_grep/index.cjs +128 -9
- package/dist/tools/warp_grep/index.cjs.map +1 -1
- package/dist/tools/warp_grep/index.d.ts +23 -2
- package/dist/tools/warp_grep/index.js +19 -8
- package/dist/tools/warp_grep/openai.cjs +372 -2
- package/dist/tools/warp_grep/openai.cjs.map +1 -1
- package/dist/tools/warp_grep/openai.d.ts +35 -2
- package/dist/tools/warp_grep/openai.js +10 -6
- 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 +157 -2
- package/dist/tools/warp_grep/vercel.cjs.map +1 -1
- package/dist/tools/warp_grep/vercel.d.ts +32 -2
- package/dist/tools/warp_grep/vercel.js +10 -6
- package/dist/{types-D5p8QErL.d.ts → types-CA7989hK.d.ts} +17 -1
- package/dist/version.cjs +7 -2
- package/dist/version.cjs.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +7 -2
- package/dist/chunk-4RO43W62.js.map +0 -1
- package/dist/chunk-FZUUET6R.js.map +0 -1
- package/dist/chunk-HCN2MLSO.js.map +0 -1
- package/dist/chunk-RODHADNG.js.map +0 -1
- package/dist/chunk-RZ4VC4BG.js.map +0 -1
- package/dist/{chunk-7TM4RBXE.js.map → chunk-2AQLRL4U.js.map} +0 -0
- package/dist/{chunk-XQ4KEOJT.js.map → chunk-2MJEULZU.js.map} +0 -0
- package/dist/{chunk-SNY2UKHQ.js.map → chunk-3PMFQ5AV.js.map} +0 -0
- package/dist/{chunk-A54BOCBI.js.map → chunk-4GEBF5OH.js.map} +0 -0
- package/dist/{chunk-VVEK5JSH.js.map → chunk-4IU2K63O.js.map} +0 -0
- package/dist/{chunk-HBWOWL7L.js.map → chunk-5UUJULLM.js.map} +0 -0
- package/dist/{chunk-2BPPWIJI.js.map → chunk-73GZ6KUK.js.map} +0 -0
- package/dist/{chunk-NW6PJIID.js.map → chunk-7KOUCN6T.js.map} +0 -0
- package/dist/{chunk-NLDYHLRB.js.map → chunk-EBROW6GK.js.map} +0 -0
- package/dist/{chunk-TVPEH6FF.js.map → chunk-GTANVDUZ.js.map} +0 -0
- package/dist/{chunk-4VLTYTEY.js.map → chunk-L4URLBKV.js.map} +0 -0
- package/dist/{chunk-T7F3DIRK.js.map → chunk-LE24SVVU.js.map} +0 -0
- package/dist/{chunk-BVINWDTA.js.map → chunk-MQWEZJTP.js.map} +0 -0
- package/dist/{chunk-6ODXYTLF.js.map → chunk-OTGBQEVH.js.map} +0 -0
- package/dist/{chunk-7HKYJ2MW.js.map → chunk-OWISPSLH.js.map} +0 -0
- package/dist/{chunk-HQAPRX5T.js.map → chunk-QGE7FGGT.js.map} +0 -0
- package/dist/{chunk-5HPN4VL2.js.map → chunk-ZHRT6F72.js.map} +0 -0
- package/dist/{vercel-B1GZ_g9N.d.ts → vercel-BTSPdTA-.d.ts} +2 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ChatCompletionTool } from 'openai/resources/chat/completions';
|
|
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, e as GitHubSearchToolConfig } from '../../types-CA7989hK.js';
|
|
5
5
|
import './agent/types.js';
|
|
6
6
|
import '../utils/resilience.js';
|
|
7
7
|
import './providers/types.js';
|
|
@@ -79,5 +79,38 @@ declare function createWarpGrepTool(config: WarpGrepToolConfig): ChatCompletionT
|
|
|
79
79
|
formatResult: (result: WarpGrepResult) => string;
|
|
80
80
|
getSystemPrompt: () => string;
|
|
81
81
|
};
|
|
82
|
+
/**
|
|
83
|
+
* Create a GitHub search tool for OpenAI SDK
|
|
84
|
+
*
|
|
85
|
+
* @param config - Configuration options (morphApiKey, morphApiUrl, codeSearchUrl, timeout)
|
|
86
|
+
* @returns OpenAI ChatCompletionTool with execute and formatResult methods
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```typescript
|
|
90
|
+
* import OpenAI from 'openai';
|
|
91
|
+
* import { createGitHubSearchTool } from '@morphllm/morphsdk/tools/warp-grep/openai';
|
|
92
|
+
*
|
|
93
|
+
* const tool = createGitHubSearchTool({ morphApiKey: process.env.MORPH_API_KEY });
|
|
94
|
+
*
|
|
95
|
+
* const response = await openai.chat.completions.create({
|
|
96
|
+
* model: 'gpt-4o',
|
|
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): ChatCompletionTool & {
|
|
107
|
+
execute: (input: {
|
|
108
|
+
query: string;
|
|
109
|
+
github: string;
|
|
110
|
+
branch?: string;
|
|
111
|
+
}) => Promise<WarpGrepResult>;
|
|
112
|
+
formatResult: (result: WarpGrepResult) => string;
|
|
113
|
+
getSystemPrompt: () => string;
|
|
114
|
+
};
|
|
82
115
|
|
|
83
|
-
export { createWarpGrepTool, warpGrepTool as default, execute, warpGrepTool };
|
|
116
|
+
export { createGitHubSearchTool, createWarpGrepTool, warpGrepTool as default, execute, warpGrepTool };
|
|
@@ -1,25 +1,29 @@
|
|
|
1
1
|
import {
|
|
2
|
+
createGitHubSearchTool,
|
|
2
3
|
createWarpGrepTool,
|
|
3
4
|
execute,
|
|
4
5
|
openai_default,
|
|
5
6
|
warpGrepTool
|
|
6
|
-
} from "../../chunk-
|
|
7
|
-
import "../../chunk-
|
|
7
|
+
} from "../../chunk-T3T4LGRD.js";
|
|
8
|
+
import "../../chunk-KJZMKDDP.js";
|
|
8
9
|
import {
|
|
9
10
|
formatResult
|
|
10
|
-
} from "../../chunk-
|
|
11
|
-
import "../../chunk-
|
|
11
|
+
} from "../../chunk-TXT3W4QK.js";
|
|
12
|
+
import "../../chunk-WYYR2EU6.js";
|
|
12
13
|
import "../../chunk-PUGSTXLO.js";
|
|
14
|
+
import "../../chunk-63VHBANJ.js";
|
|
15
|
+
import "../../chunk-MQWEZJTP.js";
|
|
13
16
|
import "../../chunk-3MLWXJTJ.js";
|
|
17
|
+
import "../../chunk-5PNMAWLC.js";
|
|
14
18
|
import "../../chunk-APP75CBN.js";
|
|
15
19
|
import "../../chunk-GHGJAQSJ.js";
|
|
16
20
|
import {
|
|
17
21
|
getSystemPrompt
|
|
18
22
|
} from "../../chunk-FMLHRJDF.js";
|
|
19
|
-
import "../../chunk-
|
|
20
|
-
import "../../chunk-4RO43W62.js";
|
|
23
|
+
import "../../chunk-RNKHRNSG.js";
|
|
21
24
|
import "../../chunk-PZ5AY32C.js";
|
|
22
25
|
export {
|
|
26
|
+
createGitHubSearchTool,
|
|
23
27
|
createWarpGrepTool,
|
|
24
28
|
openai_default as default,
|
|
25
29
|
execute,
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// tools/warp_grep/providers/code_storage_http.ts
|
|
21
|
+
var code_storage_http_exports = {};
|
|
22
|
+
__export(code_storage_http_exports, {
|
|
23
|
+
createCodeStorageHttpCommands: () => createCodeStorageHttpCommands
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(code_storage_http_exports);
|
|
26
|
+
async function post(url, body, op) {
|
|
27
|
+
const res = await fetch(url, {
|
|
28
|
+
method: "POST",
|
|
29
|
+
headers: { "Content-Type": "application/json" },
|
|
30
|
+
body: JSON.stringify(body)
|
|
31
|
+
});
|
|
32
|
+
if (!res.ok) {
|
|
33
|
+
const text = await res.text().catch(() => res.statusText);
|
|
34
|
+
throw new Error(`${op} failed (${res.status}): ${text}`);
|
|
35
|
+
}
|
|
36
|
+
const data = await res.json();
|
|
37
|
+
if (data.error) throw new Error(data.error);
|
|
38
|
+
return data.stdout;
|
|
39
|
+
}
|
|
40
|
+
function createCodeStorageHttpCommands(config) {
|
|
41
|
+
const { baseUrl, repoId, branch } = config;
|
|
42
|
+
const encodedRepoId = encodeURIComponent(repoId);
|
|
43
|
+
return {
|
|
44
|
+
grep: (pattern, path, glob) => post(`${baseUrl}/api/code-search/${encodedRepoId}/grep`, { pattern, path, glob, branch }, "grep"),
|
|
45
|
+
read: (path, start, end) => post(`${baseUrl}/api/code-search/${encodedRepoId}/read`, { path, start, end, branch }, "read"),
|
|
46
|
+
listDir: (path, maxDepth) => post(`${baseUrl}/api/code-search/${encodedRepoId}/list`, { path, maxDepth, branch }, "list")
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
50
|
+
0 && (module.exports = {
|
|
51
|
+
createCodeStorageHttpCommands
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=code_storage_http.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../tools/warp_grep/providers/code_storage_http.ts"],"sourcesContent":["/**\n * HTTP-based RemoteCommands for code search against the Morph landing API.\n *\n * Translates grep/read/listDir into POST requests to the code-search endpoints,\n * so the WarpGrep agent can search GitHub repositories that have been indexed\n * by the Morph code storage service.\n */\n\nimport type { RemoteCommands } from '../types.js';\n\nexport interface CodeStorageHttpConfig {\n /** Base URL for the code search API (e.g. \"https://morphllm.com\") */\n baseUrl: string;\n /** Repository ID returned by the get-or-create endpoint */\n repoId: string;\n /** Git branch to search */\n branch: string;\n}\n\nasync function post(url: string, body: Record<string, unknown>, op: string): Promise<string> {\n const res = await fetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(body),\n });\n if (!res.ok) {\n const text = await res.text().catch(() => res.statusText);\n throw new Error(`${op} failed (${res.status}): ${text}`);\n }\n const data = await res.json();\n if (data.error) throw new Error(data.error);\n return data.stdout;\n}\n\nexport function createCodeStorageHttpCommands(config: CodeStorageHttpConfig): RemoteCommands {\n const { baseUrl, repoId, branch } = config;\n const encodedRepoId = encodeURIComponent(repoId);\n\n return {\n grep: (pattern: string, path: string, glob?: string) =>\n post(`${baseUrl}/api/code-search/${encodedRepoId}/grep`, { pattern, path, glob, branch }, 'grep'),\n\n read: (path: string, start: number, end: number) =>\n post(`${baseUrl}/api/code-search/${encodedRepoId}/read`, { path, start, end, branch }, 'read'),\n\n listDir: (path: string, maxDepth: number) =>\n post(`${baseUrl}/api/code-search/${encodedRepoId}/list`, { path, maxDepth, branch }, 'list'),\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBA,eAAe,KAAK,KAAa,MAA+B,IAA6B;AAC3F,QAAM,MAAM,MAAM,MAAM,KAAK;AAAA,IAC3B,QAAQ;AAAA,IACR,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,IAC9C,MAAM,KAAK,UAAU,IAAI;AAAA,EAC3B,CAAC;AACD,MAAI,CAAC,IAAI,IAAI;AACX,UAAM,OAAO,MAAM,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,UAAU;AACxD,UAAM,IAAI,MAAM,GAAG,EAAE,YAAY,IAAI,MAAM,MAAM,IAAI,EAAE;AAAA,EACzD;AACA,QAAM,OAAO,MAAM,IAAI,KAAK;AAC5B,MAAI,KAAK,MAAO,OAAM,IAAI,MAAM,KAAK,KAAK;AAC1C,SAAO,KAAK;AACd;AAEO,SAAS,8BAA8B,QAA+C;AAC3F,QAAM,EAAE,SAAS,QAAQ,OAAO,IAAI;AACpC,QAAM,gBAAgB,mBAAmB,MAAM;AAE/C,SAAO;AAAA,IACL,MAAM,CAAC,SAAiB,MAAc,SACpC,KAAK,GAAG,OAAO,oBAAoB,aAAa,SAAS,EAAE,SAAS,MAAM,MAAM,OAAO,GAAG,MAAM;AAAA,IAElG,MAAM,CAAC,MAAc,OAAe,QAClC,KAAK,GAAG,OAAO,oBAAoB,aAAa,SAAS,EAAE,MAAM,OAAO,KAAK,OAAO,GAAG,MAAM;AAAA,IAE/F,SAAS,CAAC,MAAc,aACtB,KAAK,GAAG,OAAO,oBAAoB,aAAa,SAAS,EAAE,MAAM,UAAU,OAAO,GAAG,MAAM;AAAA,EAC/F;AACF;","names":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { R as RemoteCommands } from '../../../types-CA7989hK.js';
|
|
2
|
+
import './types.js';
|
|
3
|
+
import '../../utils/resilience.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* HTTP-based RemoteCommands for code search against the Morph landing API.
|
|
7
|
+
*
|
|
8
|
+
* Translates grep/read/listDir into POST requests to the code-search endpoints,
|
|
9
|
+
* so the WarpGrep agent can search GitHub repositories that have been indexed
|
|
10
|
+
* by the Morph code storage service.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
interface CodeStorageHttpConfig {
|
|
14
|
+
/** Base URL for the code search API (e.g. "https://morphllm.com") */
|
|
15
|
+
baseUrl: string;
|
|
16
|
+
/** Repository ID returned by the get-or-create endpoint */
|
|
17
|
+
repoId: string;
|
|
18
|
+
/** Git branch to search */
|
|
19
|
+
branch: string;
|
|
20
|
+
}
|
|
21
|
+
declare function createCodeStorageHttpCommands(config: CodeStorageHttpConfig): RemoteCommands;
|
|
22
|
+
|
|
23
|
+
export { type CodeStorageHttpConfig, createCodeStorageHttpCommands };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { WarpGrepProvider, GrepResult, ReadResult, ListDirectoryEntry } from './types.js';
|
|
2
|
-
import { R as RemoteCommands } from '../../../types-
|
|
2
|
+
import { R as RemoteCommands } from '../../../types-CA7989hK.js';
|
|
3
3
|
import '../../utils/resilience.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// tools/warp_grep/utils/github.ts
|
|
21
|
+
var github_exports = {};
|
|
22
|
+
__export(github_exports, {
|
|
23
|
+
parseGitHubUrl: () => parseGitHubUrl
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(github_exports);
|
|
26
|
+
function parseGitHubUrl(input) {
|
|
27
|
+
input = input.trim();
|
|
28
|
+
const urlPattern = /^(?:https?:\/\/)?github\.com\/([^\/]+)\/([^\/\?\#]+)/;
|
|
29
|
+
const match = input.match(urlPattern);
|
|
30
|
+
if (match) {
|
|
31
|
+
return { owner: match[1], repo: match[2].replace(/\.git$/, "") };
|
|
32
|
+
}
|
|
33
|
+
const shortPattern = /^([^\/]+)\/([^\/]+)$/;
|
|
34
|
+
const shortMatch = input.match(shortPattern);
|
|
35
|
+
if (shortMatch && !shortMatch[1].includes(".")) {
|
|
36
|
+
return { owner: shortMatch[1], repo: shortMatch[2].replace(/\.git$/, "") };
|
|
37
|
+
}
|
|
38
|
+
throw new Error(
|
|
39
|
+
`Invalid GitHub URL or shorthand: "${input}". Expected "owner/repo" or "https://github.com/owner/repo"`
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
43
|
+
0 && (module.exports = {
|
|
44
|
+
parseGitHubUrl
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=github.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../tools/warp_grep/utils/github.ts"],"sourcesContent":["/**\n * GitHub URL parsing utilities\n */\n\n/**\n * Parse GitHub URL or \"owner/repo\" shorthand into owner and repo components.\n * Handles: \"owner/repo\", \"https://github.com/owner/repo\", \"github.com/owner/repo.git\"\n */\nexport function parseGitHubUrl(input: string): { owner: string; repo: string } {\n input = input.trim();\n\n // Try URL patterns first\n const urlPattern = /^(?:https?:\\/\\/)?github\\.com\\/([^\\/]+)\\/([^\\/\\?\\#]+)/;\n const match = input.match(urlPattern);\n if (match) {\n return { owner: match[1], repo: match[2].replace(/\\.git$/, '') };\n }\n\n // Try \"owner/repo\" shorthand (reject if owner contains '.', e.g. \"github.com/owner\")\n const shortPattern = /^([^\\/]+)\\/([^\\/]+)$/;\n const shortMatch = input.match(shortPattern);\n if (shortMatch && !shortMatch[1].includes('.')) {\n return { owner: shortMatch[1], repo: shortMatch[2].replace(/\\.git$/, '') };\n }\n\n throw new Error(\n `Invalid GitHub URL or shorthand: \"${input}\". Expected \"owner/repo\" or \"https://github.com/owner/repo\"`\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAQO,SAAS,eAAe,OAAgD;AAC7E,UAAQ,MAAM,KAAK;AAGnB,QAAM,aAAa;AACnB,QAAM,QAAQ,MAAM,MAAM,UAAU;AACpC,MAAI,OAAO;AACT,WAAO,EAAE,OAAO,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,EAAE,QAAQ,UAAU,EAAE,EAAE;AAAA,EACjE;AAGA,QAAM,eAAe;AACrB,QAAM,aAAa,MAAM,MAAM,YAAY;AAC3C,MAAI,cAAc,CAAC,WAAW,CAAC,EAAE,SAAS,GAAG,GAAG;AAC9C,WAAO,EAAE,OAAO,WAAW,CAAC,GAAG,MAAM,WAAW,CAAC,EAAE,QAAQ,UAAU,EAAE,EAAE;AAAA,EAC3E;AAEA,QAAM,IAAI;AAAA,IACR,qCAAqC,KAAK;AAAA,EAC5C;AACF;","names":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub URL parsing utilities
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Parse GitHub URL or "owner/repo" shorthand into owner and repo components.
|
|
6
|
+
* Handles: "owner/repo", "https://github.com/owner/repo", "github.com/owner/repo.git"
|
|
7
|
+
*/
|
|
8
|
+
declare function parseGitHubUrl(input: string): {
|
|
9
|
+
owner: string;
|
|
10
|
+
repo: string;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export { parseGitHubUrl };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -572,6 +572,7 @@ Details: ${res.stderr}` : ""}`
|
|
|
572
572
|
// tools/warp_grep/vercel.ts
|
|
573
573
|
var vercel_exports = {};
|
|
574
574
|
__export(vercel_exports, {
|
|
575
|
+
createGitHubSearchTool: () => createGitHubSearchTool,
|
|
575
576
|
createWarpGrepTool: () => createWarpGrepTool,
|
|
576
577
|
default: () => vercel_default,
|
|
577
578
|
execute: () => execute,
|
|
@@ -1380,7 +1381,7 @@ var import_openai = __toESM(require("openai"), 1);
|
|
|
1380
1381
|
// package.json
|
|
1381
1382
|
var package_default = {
|
|
1382
1383
|
name: "@morphllm/morphsdk",
|
|
1383
|
-
version: "0.2.
|
|
1384
|
+
version: "0.2.122",
|
|
1384
1385
|
description: "TypeScript SDK and CLI for Morph Fast Apply integration",
|
|
1385
1386
|
type: "module",
|
|
1386
1387
|
main: "./dist/index.cjs",
|
|
@@ -1506,6 +1507,11 @@ var package_default = {
|
|
|
1506
1507
|
types: "./dist/modelrouter/index.d.ts",
|
|
1507
1508
|
import: "./dist/modelrouter/index.js",
|
|
1508
1509
|
require: "./dist/modelrouter/index.cjs"
|
|
1510
|
+
},
|
|
1511
|
+
"./tools/compact": {
|
|
1512
|
+
types: "./dist/tools/compact/index.d.ts",
|
|
1513
|
+
import: "./dist/tools/compact/index.js",
|
|
1514
|
+
require: "./dist/tools/compact/index.cjs"
|
|
1509
1515
|
}
|
|
1510
1516
|
},
|
|
1511
1517
|
files: [
|
|
@@ -1517,7 +1523,7 @@ var package_default = {
|
|
|
1517
1523
|
"!dist/**/*.test.*"
|
|
1518
1524
|
],
|
|
1519
1525
|
scripts: {
|
|
1520
|
-
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/utils/resilience.ts --format esm,cjs --sourcemap --clean --dts --dts-resolve",
|
|
1526
|
+
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",
|
|
1521
1527
|
prepare: "npm run build",
|
|
1522
1528
|
typecheck: "tsc --noEmit",
|
|
1523
1529
|
lint: "eslint .",
|
|
@@ -2155,11 +2161,136 @@ var RemoteCommandsProvider = class {
|
|
|
2155
2161
|
}
|
|
2156
2162
|
};
|
|
2157
2163
|
|
|
2164
|
+
// tools/warp_grep/providers/code_storage_http.ts
|
|
2165
|
+
async function post(url, body, op) {
|
|
2166
|
+
const res = await fetch(url, {
|
|
2167
|
+
method: "POST",
|
|
2168
|
+
headers: { "Content-Type": "application/json" },
|
|
2169
|
+
body: JSON.stringify(body)
|
|
2170
|
+
});
|
|
2171
|
+
if (!res.ok) {
|
|
2172
|
+
const text = await res.text().catch(() => res.statusText);
|
|
2173
|
+
throw new Error(`${op} failed (${res.status}): ${text}`);
|
|
2174
|
+
}
|
|
2175
|
+
const data = await res.json();
|
|
2176
|
+
if (data.error) throw new Error(data.error);
|
|
2177
|
+
return data.stdout;
|
|
2178
|
+
}
|
|
2179
|
+
function createCodeStorageHttpCommands(config) {
|
|
2180
|
+
const { baseUrl, repoId, branch } = config;
|
|
2181
|
+
const encodedRepoId = encodeURIComponent(repoId);
|
|
2182
|
+
return {
|
|
2183
|
+
grep: (pattern, path5, glob) => post(`${baseUrl}/api/code-search/${encodedRepoId}/grep`, { pattern, path: path5, glob, branch }, "grep"),
|
|
2184
|
+
read: (path5, start, end) => post(`${baseUrl}/api/code-search/${encodedRepoId}/read`, { path: path5, start, end, branch }, "read"),
|
|
2185
|
+
listDir: (path5, maxDepth) => post(`${baseUrl}/api/code-search/${encodedRepoId}/list`, { path: path5, maxDepth, branch }, "list")
|
|
2186
|
+
};
|
|
2187
|
+
}
|
|
2188
|
+
|
|
2189
|
+
// tools/warp_grep/utils/github.ts
|
|
2190
|
+
function parseGitHubUrl(input) {
|
|
2191
|
+
input = input.trim();
|
|
2192
|
+
const urlPattern = /^(?:https?:\/\/)?github\.com\/([^\/]+)\/([^\/\?\#]+)/;
|
|
2193
|
+
const match = input.match(urlPattern);
|
|
2194
|
+
if (match) {
|
|
2195
|
+
return { owner: match[1], repo: match[2].replace(/\.git$/, "") };
|
|
2196
|
+
}
|
|
2197
|
+
const shortPattern = /^([^\/]+)\/([^\/]+)$/;
|
|
2198
|
+
const shortMatch = input.match(shortPattern);
|
|
2199
|
+
if (shortMatch && !shortMatch[1].includes(".")) {
|
|
2200
|
+
return { owner: shortMatch[1], repo: shortMatch[2].replace(/\.git$/, "") };
|
|
2201
|
+
}
|
|
2202
|
+
throw new Error(
|
|
2203
|
+
`Invalid GitHub URL or shorthand: "${input}". Expected "owner/repo" or "https://github.com/owner/repo"`
|
|
2204
|
+
);
|
|
2205
|
+
}
|
|
2206
|
+
|
|
2158
2207
|
// tools/warp_grep/client.ts
|
|
2208
|
+
var DEFAULT_CODE_SEARCH_URL = "https://morphllm.com";
|
|
2159
2209
|
async function getLocalProvider(repoRoot, excludes) {
|
|
2160
2210
|
const { LocalRipgrepProvider: LocalRipgrepProvider2 } = await Promise.resolve().then(() => (init_local(), local_exports));
|
|
2161
2211
|
return new LocalRipgrepProvider2(repoRoot, excludes);
|
|
2162
2212
|
}
|
|
2213
|
+
var WarpGrepClient = class {
|
|
2214
|
+
config;
|
|
2215
|
+
constructor(config = {}) {
|
|
2216
|
+
this.config = { ...config };
|
|
2217
|
+
}
|
|
2218
|
+
execute(input) {
|
|
2219
|
+
const toolConfig = {
|
|
2220
|
+
repoRoot: input.repoRoot,
|
|
2221
|
+
remoteCommands: input.remoteCommands,
|
|
2222
|
+
provider: input.provider,
|
|
2223
|
+
excludes: input.excludes,
|
|
2224
|
+
includes: input.includes,
|
|
2225
|
+
debug: input.debug ?? this.config.debug,
|
|
2226
|
+
morphApiKey: this.config.morphApiKey,
|
|
2227
|
+
morphApiUrl: this.config.morphApiUrl,
|
|
2228
|
+
retryConfig: this.config.retryConfig,
|
|
2229
|
+
timeout: this.config.timeout
|
|
2230
|
+
};
|
|
2231
|
+
if (input.streamSteps) {
|
|
2232
|
+
return executeToolCallStreaming({ query: input.query }, toolConfig);
|
|
2233
|
+
}
|
|
2234
|
+
return executeToolCall({ query: input.query }, toolConfig);
|
|
2235
|
+
}
|
|
2236
|
+
searchGitHub(input) {
|
|
2237
|
+
if (input.streamSteps) {
|
|
2238
|
+
return this._searchGitHubStreaming(input);
|
|
2239
|
+
}
|
|
2240
|
+
return this._searchGitHubAsync(input);
|
|
2241
|
+
}
|
|
2242
|
+
async _resolveGitHubRepo(input) {
|
|
2243
|
+
const { owner, repo } = parseGitHubUrl(input.github);
|
|
2244
|
+
const baseUrl = this.config.codeSearchUrl || DEFAULT_CODE_SEARCH_URL;
|
|
2245
|
+
const importRes = await fetch(`${baseUrl}/api/code-search/get-or-create?url=${encodeURIComponent(`${owner}/${repo}`)}`);
|
|
2246
|
+
if (!importRes.ok) {
|
|
2247
|
+
const text = await importRes.text().catch(() => importRes.statusText);
|
|
2248
|
+
throw new Error(`Failed to import repo ${owner}/${repo}: ${text}`);
|
|
2249
|
+
}
|
|
2250
|
+
const { repoId, defaultBranch } = await importRes.json();
|
|
2251
|
+
return {
|
|
2252
|
+
repo,
|
|
2253
|
+
remoteCommands: createCodeStorageHttpCommands({ baseUrl, repoId, branch: input.branch || defaultBranch })
|
|
2254
|
+
};
|
|
2255
|
+
}
|
|
2256
|
+
async _searchGitHubAsync(input) {
|
|
2257
|
+
try {
|
|
2258
|
+
const { repo, remoteCommands } = await this._resolveGitHubRepo(input);
|
|
2259
|
+
return this.execute({
|
|
2260
|
+
query: input.query,
|
|
2261
|
+
repoRoot: repo,
|
|
2262
|
+
remoteCommands
|
|
2263
|
+
});
|
|
2264
|
+
} catch (error) {
|
|
2265
|
+
return { success: false, error: error instanceof Error ? error.message : String(error) };
|
|
2266
|
+
}
|
|
2267
|
+
}
|
|
2268
|
+
async *_searchGitHubStreaming(input) {
|
|
2269
|
+
let repo;
|
|
2270
|
+
let remoteCommands;
|
|
2271
|
+
try {
|
|
2272
|
+
({ repo, remoteCommands } = await this._resolveGitHubRepo(input));
|
|
2273
|
+
} catch (error) {
|
|
2274
|
+
return { success: false, error: error instanceof Error ? error.message : String(error) };
|
|
2275
|
+
}
|
|
2276
|
+
const generator = this.execute({
|
|
2277
|
+
query: input.query,
|
|
2278
|
+
repoRoot: repo,
|
|
2279
|
+
remoteCommands,
|
|
2280
|
+
streamSteps: true
|
|
2281
|
+
});
|
|
2282
|
+
let result;
|
|
2283
|
+
for (; ; ) {
|
|
2284
|
+
const { value, done } = await generator.next();
|
|
2285
|
+
if (done) {
|
|
2286
|
+
result = value;
|
|
2287
|
+
break;
|
|
2288
|
+
}
|
|
2289
|
+
yield value;
|
|
2290
|
+
}
|
|
2291
|
+
return result;
|
|
2292
|
+
}
|
|
2293
|
+
};
|
|
2163
2294
|
async function executeToolCall(input, config) {
|
|
2164
2295
|
const parsed = typeof input === "string" ? JSON.parse(input) : input;
|
|
2165
2296
|
const provider = config.remoteCommands ? new RemoteCommandsProvider(config.repoRoot, config.remoteCommands) : config.provider ?? await getLocalProvider(config.repoRoot, config.excludes);
|
|
@@ -2255,6 +2386,7 @@ function formatResult(result) {
|
|
|
2255
2386
|
|
|
2256
2387
|
// tools/warp_grep/prompts.ts
|
|
2257
2388
|
var WARP_GREP_DESCRIPTION = 'IMPORTANT: If you need to explore the codebase to gather context, and the task does not involve a single file or function which is provided by name, you should ALWAYS use the warpgrep codebase search tool first instead of running search commands. When the task requires exploration beyond a single known file, invoke warpgrep first with a natural-language query describing the target functionality, bug, or architectural concern. Warp Grep is a fast and accurate tool that can search for all relevant context in a codebase. Keep queries action-oriented (e.g., "Find where billing invoices are generated and emailed"), and after reviewing the summarized results, you may verify important findings with other search tools or direct file reads to ensure completeness. Warp Grep can be used for query types like: find function responsible for <small feature>; find code that does <description>; find code path for <big feature>; Where does <minimal error message> come from?; or any query of that type. When a task requires exploration beyond a single known file, ALWAYS default to warpgrep codebase search before other search mechanisms.';
|
|
2389
|
+
var GITHUB_SEARCH_DESCRIPTION = "Search a public GitHub repository using WarpGrep. Provide a GitHub URL or owner/repo shorthand and a natural language query.";
|
|
2258
2390
|
|
|
2259
2391
|
// tools/warp_grep/vercel.ts
|
|
2260
2392
|
var warpGrepJsonSchema = {
|
|
@@ -2303,9 +2435,32 @@ function createWarpGrepTool(config) {
|
|
|
2303
2435
|
}
|
|
2304
2436
|
});
|
|
2305
2437
|
}
|
|
2438
|
+
function createGitHubSearchTool(config) {
|
|
2439
|
+
const client = new WarpGrepClient(config);
|
|
2440
|
+
return (0, import_ai.tool)({
|
|
2441
|
+
description: GITHUB_SEARCH_DESCRIPTION,
|
|
2442
|
+
inputSchema: import_zod.z.object({
|
|
2443
|
+
query: import_zod.z.string().describe("Natural language search query"),
|
|
2444
|
+
github: import_zod.z.string().describe('GitHub URL or "owner/repo" shorthand'),
|
|
2445
|
+
branch: import_zod.z.string().optional().describe("Branch to search (defaults to repo default branch)")
|
|
2446
|
+
}),
|
|
2447
|
+
execute: async (params) => {
|
|
2448
|
+
const result = await client.searchGitHub(params);
|
|
2449
|
+
if (!result.success) {
|
|
2450
|
+
throw new Error(`GitHub search failed: ${result.error}`);
|
|
2451
|
+
}
|
|
2452
|
+
return {
|
|
2453
|
+
success: true,
|
|
2454
|
+
contexts: result.contexts,
|
|
2455
|
+
summary: result.summary
|
|
2456
|
+
};
|
|
2457
|
+
}
|
|
2458
|
+
});
|
|
2459
|
+
}
|
|
2306
2460
|
var vercel_default = createWarpGrepTool;
|
|
2307
2461
|
// Annotate the CommonJS export names for ESM import in node:
|
|
2308
2462
|
0 && (module.exports = {
|
|
2463
|
+
createGitHubSearchTool,
|
|
2309
2464
|
createWarpGrepTool,
|
|
2310
2465
|
execute,
|
|
2311
2466
|
formatResult,
|