@morphllm/morphsdk 0.2.121 → 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-L4PK4VC7.js → chunk-2AQLRL4U.js} +2 -2
- package/dist/{chunk-266SWRHK.js → chunk-2MJEULZU.js} +2 -2
- package/dist/{chunk-YMOTJ6ZP.js → chunk-3PMFQ5AV.js} +2 -2
- package/dist/{chunk-EZFXR52Q.js → chunk-4GEBF5OH.js} +2 -2
- package/dist/{chunk-BDKXYMU2.js → chunk-4IU2K63O.js} +2 -2
- package/dist/{chunk-XERAWJ3H.js → chunk-4LA3OT4Q.js} +28 -4
- package/dist/chunk-4LA3OT4Q.js.map +1 -0
- package/dist/{chunk-CIFPLFBQ.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-3HBZXN6E.js → chunk-73GZ6KUK.js} +2 -2
- package/dist/{chunk-W37KJB25.js → chunk-7KOUCN6T.js} +2 -2
- package/dist/{chunk-7QZFNYOH.js → chunk-EBROW6GK.js} +2 -2
- package/dist/{chunk-JBIFS33U.js → chunk-GTANVDUZ.js} +2 -2
- 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-WEBUKGPK.js → chunk-L4URLBKV.js} +3 -3
- package/dist/{chunk-MAAULSSQ.js → chunk-LE24SVVU.js} +2 -2
- package/dist/{chunk-QDGB6FLI.js → chunk-MQWEZJTP.js} +2 -2
- package/dist/{chunk-DL3Y3R6A.js → chunk-OTGBQEVH.js} +2 -2
- package/dist/{chunk-GNRMDXJA.js → chunk-OWISPSLH.js} +2 -2
- package/dist/{chunk-FV3R3JGV.js → chunk-QGE7FGGT.js} +2 -2
- package/dist/{chunk-EJYFE73S.js → chunk-RNKHRNSG.js} +3 -3
- package/dist/{chunk-EJYFE73S.js.map → chunk-RNKHRNSG.js.map} +1 -1
- package/dist/{chunk-CXP63PHW.js → chunk-T3T4LGRD.js} +30 -3
- package/dist/chunk-T3T4LGRD.js.map +1 -0
- package/dist/{chunk-U5UDFQXK.js → chunk-TBLMIAIH.js} +28 -3
- package/dist/chunk-TBLMIAIH.js.map +1 -0
- package/dist/{chunk-C3BQUIFE.js → chunk-TXT3W4QK.js} +67 -9
- package/dist/chunk-TXT3W4QK.js.map +1 -0
- package/dist/{chunk-7IZUNRPZ.js → chunk-UDGJQBTC.js} +54 -15
- package/dist/{chunk-7IZUNRPZ.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-AI3ZCOCT.js → chunk-ZHRT6F72.js} +1 -1
- package/dist/{client-Bp3MRcJc.d.ts → client-BJrzbMYL.d.ts} +46 -1
- package/dist/client.cjs +214 -9
- 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 +214 -9
- 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 +2 -2
- 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 +364 -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 +9 -5
- package/dist/tools/warp_grep/client.cjs +104 -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 +5 -3
- package/dist/tools/warp_grep/gemini.cjs +364 -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 +38 -4
- package/dist/tools/warp_grep/gemini.js.map +1 -1
- package/dist/tools/warp_grep/index.cjs +123 -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 +16 -5
- package/dist/tools/warp_grep/openai.cjs +367 -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 +9 -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 +152 -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 +9 -5
- package/dist/{types-D5p8QErL.d.ts → types-CA7989hK.d.ts} +17 -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.map +0 -1
- package/dist/chunk-U5UDFQXK.js.map +0 -1
- package/dist/chunk-XERAWJ3H.js.map +0 -1
- /package/dist/{chunk-L4PK4VC7.js.map → chunk-2AQLRL4U.js.map} +0 -0
- /package/dist/{chunk-266SWRHK.js.map → chunk-2MJEULZU.js.map} +0 -0
- /package/dist/{chunk-YMOTJ6ZP.js.map → chunk-3PMFQ5AV.js.map} +0 -0
- /package/dist/{chunk-EZFXR52Q.js.map → chunk-4GEBF5OH.js.map} +0 -0
- /package/dist/{chunk-BDKXYMU2.js.map → chunk-4IU2K63O.js.map} +0 -0
- /package/dist/{chunk-CIFPLFBQ.js.map → chunk-5UUJULLM.js.map} +0 -0
- /package/dist/{chunk-3HBZXN6E.js.map → chunk-73GZ6KUK.js.map} +0 -0
- /package/dist/{chunk-W37KJB25.js.map → chunk-7KOUCN6T.js.map} +0 -0
- /package/dist/{chunk-7QZFNYOH.js.map → chunk-EBROW6GK.js.map} +0 -0
- /package/dist/{chunk-JBIFS33U.js.map → chunk-GTANVDUZ.js.map} +0 -0
- /package/dist/{chunk-WEBUKGPK.js.map → chunk-L4URLBKV.js.map} +0 -0
- /package/dist/{chunk-MAAULSSQ.js.map → chunk-LE24SVVU.js.map} +0 -0
- /package/dist/{chunk-QDGB6FLI.js.map → chunk-MQWEZJTP.js.map} +0 -0
- /package/dist/{chunk-DL3Y3R6A.js.map → chunk-OTGBQEVH.js.map} +0 -0
- /package/dist/{chunk-GNRMDXJA.js.map → chunk-OWISPSLH.js.map} +0 -0
- /package/dist/{chunk-FV3R3JGV.js.map → chunk-QGE7FGGT.js.map} +0 -0
- /package/dist/{chunk-AI3ZCOCT.js.map → chunk-ZHRT6F72.js.map} +0 -0
package/dist/client.cjs
CHANGED
|
@@ -36,7 +36,7 @@ var init_package = __esm({
|
|
|
36
36
|
"package.json"() {
|
|
37
37
|
package_default = {
|
|
38
38
|
name: "@morphllm/morphsdk",
|
|
39
|
-
version: "0.2.
|
|
39
|
+
version: "0.2.122",
|
|
40
40
|
description: "TypeScript SDK and CLI for Morph Fast Apply integration",
|
|
41
41
|
type: "module",
|
|
42
42
|
main: "./dist/index.cjs",
|
|
@@ -178,7 +178,7 @@ var init_package = __esm({
|
|
|
178
178
|
"!dist/**/*.test.*"
|
|
179
179
|
],
|
|
180
180
|
scripts: {
|
|
181
|
-
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",
|
|
181
|
+
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",
|
|
182
182
|
prepare: "npm run build",
|
|
183
183
|
typecheck: "tsc --noEmit",
|
|
184
184
|
lint: "eslint .",
|
|
@@ -3817,7 +3817,51 @@ var RemoteCommandsProvider = class {
|
|
|
3817
3817
|
}
|
|
3818
3818
|
};
|
|
3819
3819
|
|
|
3820
|
+
// tools/warp_grep/providers/code_storage_http.ts
|
|
3821
|
+
async function post(url, body, op) {
|
|
3822
|
+
const res = await fetch(url, {
|
|
3823
|
+
method: "POST",
|
|
3824
|
+
headers: { "Content-Type": "application/json" },
|
|
3825
|
+
body: JSON.stringify(body)
|
|
3826
|
+
});
|
|
3827
|
+
if (!res.ok) {
|
|
3828
|
+
const text = await res.text().catch(() => res.statusText);
|
|
3829
|
+
throw new Error(`${op} failed (${res.status}): ${text}`);
|
|
3830
|
+
}
|
|
3831
|
+
const data = await res.json();
|
|
3832
|
+
if (data.error) throw new Error(data.error);
|
|
3833
|
+
return data.stdout;
|
|
3834
|
+
}
|
|
3835
|
+
function createCodeStorageHttpCommands(config) {
|
|
3836
|
+
const { baseUrl, repoId, branch } = config;
|
|
3837
|
+
const encodedRepoId = encodeURIComponent(repoId);
|
|
3838
|
+
return {
|
|
3839
|
+
grep: (pattern, path5, glob) => post(`${baseUrl}/api/code-search/${encodedRepoId}/grep`, { pattern, path: path5, glob, branch }, "grep"),
|
|
3840
|
+
read: (path5, start, end) => post(`${baseUrl}/api/code-search/${encodedRepoId}/read`, { path: path5, start, end, branch }, "read"),
|
|
3841
|
+
listDir: (path5, maxDepth) => post(`${baseUrl}/api/code-search/${encodedRepoId}/list`, { path: path5, maxDepth, branch }, "list")
|
|
3842
|
+
};
|
|
3843
|
+
}
|
|
3844
|
+
|
|
3845
|
+
// tools/warp_grep/utils/github.ts
|
|
3846
|
+
function parseGitHubUrl(input) {
|
|
3847
|
+
input = input.trim();
|
|
3848
|
+
const urlPattern = /^(?:https?:\/\/)?github\.com\/([^\/]+)\/([^\/\?\#]+)/;
|
|
3849
|
+
const match = input.match(urlPattern);
|
|
3850
|
+
if (match) {
|
|
3851
|
+
return { owner: match[1], repo: match[2].replace(/\.git$/, "") };
|
|
3852
|
+
}
|
|
3853
|
+
const shortPattern = /^([^\/]+)\/([^\/]+)$/;
|
|
3854
|
+
const shortMatch = input.match(shortPattern);
|
|
3855
|
+
if (shortMatch && !shortMatch[1].includes(".")) {
|
|
3856
|
+
return { owner: shortMatch[1], repo: shortMatch[2].replace(/\.git$/, "") };
|
|
3857
|
+
}
|
|
3858
|
+
throw new Error(
|
|
3859
|
+
`Invalid GitHub URL or shorthand: "${input}". Expected "owner/repo" or "https://github.com/owner/repo"`
|
|
3860
|
+
);
|
|
3861
|
+
}
|
|
3862
|
+
|
|
3820
3863
|
// tools/warp_grep/client.ts
|
|
3864
|
+
var DEFAULT_CODE_SEARCH_URL = "https://morphllm.com";
|
|
3821
3865
|
async function getLocalProvider(repoRoot, excludes) {
|
|
3822
3866
|
const { LocalRipgrepProvider: LocalRipgrepProvider2 } = await Promise.resolve().then(() => (init_local(), local_exports));
|
|
3823
3867
|
return new LocalRipgrepProvider2(repoRoot, excludes);
|
|
@@ -3825,13 +3869,7 @@ async function getLocalProvider(repoRoot, excludes) {
|
|
|
3825
3869
|
var WarpGrepClient = class {
|
|
3826
3870
|
config;
|
|
3827
3871
|
constructor(config = {}) {
|
|
3828
|
-
this.config = {
|
|
3829
|
-
morphApiKey: config.morphApiKey,
|
|
3830
|
-
morphApiUrl: config.morphApiUrl,
|
|
3831
|
-
debug: config.debug,
|
|
3832
|
-
timeout: config.timeout,
|
|
3833
|
-
retryConfig: config.retryConfig
|
|
3834
|
-
};
|
|
3872
|
+
this.config = { ...config };
|
|
3835
3873
|
}
|
|
3836
3874
|
execute(input) {
|
|
3837
3875
|
const toolConfig = {
|
|
@@ -3851,6 +3889,63 @@ var WarpGrepClient = class {
|
|
|
3851
3889
|
}
|
|
3852
3890
|
return executeToolCall({ query: input.query }, toolConfig);
|
|
3853
3891
|
}
|
|
3892
|
+
searchGitHub(input) {
|
|
3893
|
+
if (input.streamSteps) {
|
|
3894
|
+
return this._searchGitHubStreaming(input);
|
|
3895
|
+
}
|
|
3896
|
+
return this._searchGitHubAsync(input);
|
|
3897
|
+
}
|
|
3898
|
+
async _resolveGitHubRepo(input) {
|
|
3899
|
+
const { owner, repo } = parseGitHubUrl(input.github);
|
|
3900
|
+
const baseUrl = this.config.codeSearchUrl || DEFAULT_CODE_SEARCH_URL;
|
|
3901
|
+
const importRes = await fetch(`${baseUrl}/api/code-search/get-or-create?url=${encodeURIComponent(`${owner}/${repo}`)}`);
|
|
3902
|
+
if (!importRes.ok) {
|
|
3903
|
+
const text = await importRes.text().catch(() => importRes.statusText);
|
|
3904
|
+
throw new Error(`Failed to import repo ${owner}/${repo}: ${text}`);
|
|
3905
|
+
}
|
|
3906
|
+
const { repoId, defaultBranch } = await importRes.json();
|
|
3907
|
+
return {
|
|
3908
|
+
repo,
|
|
3909
|
+
remoteCommands: createCodeStorageHttpCommands({ baseUrl, repoId, branch: input.branch || defaultBranch })
|
|
3910
|
+
};
|
|
3911
|
+
}
|
|
3912
|
+
async _searchGitHubAsync(input) {
|
|
3913
|
+
try {
|
|
3914
|
+
const { repo, remoteCommands } = await this._resolveGitHubRepo(input);
|
|
3915
|
+
return this.execute({
|
|
3916
|
+
query: input.query,
|
|
3917
|
+
repoRoot: repo,
|
|
3918
|
+
remoteCommands
|
|
3919
|
+
});
|
|
3920
|
+
} catch (error) {
|
|
3921
|
+
return { success: false, error: error instanceof Error ? error.message : String(error) };
|
|
3922
|
+
}
|
|
3923
|
+
}
|
|
3924
|
+
async *_searchGitHubStreaming(input) {
|
|
3925
|
+
let repo;
|
|
3926
|
+
let remoteCommands;
|
|
3927
|
+
try {
|
|
3928
|
+
({ repo, remoteCommands } = await this._resolveGitHubRepo(input));
|
|
3929
|
+
} catch (error) {
|
|
3930
|
+
return { success: false, error: error instanceof Error ? error.message : String(error) };
|
|
3931
|
+
}
|
|
3932
|
+
const generator = this.execute({
|
|
3933
|
+
query: input.query,
|
|
3934
|
+
repoRoot: repo,
|
|
3935
|
+
remoteCommands,
|
|
3936
|
+
streamSteps: true
|
|
3937
|
+
});
|
|
3938
|
+
let result;
|
|
3939
|
+
for (; ; ) {
|
|
3940
|
+
const { value, done } = await generator.next();
|
|
3941
|
+
if (done) {
|
|
3942
|
+
result = value;
|
|
3943
|
+
break;
|
|
3944
|
+
}
|
|
3945
|
+
yield value;
|
|
3946
|
+
}
|
|
3947
|
+
return result;
|
|
3948
|
+
}
|
|
3854
3949
|
};
|
|
3855
3950
|
async function executeToolCall(input, config) {
|
|
3856
3951
|
const parsed = typeof input === "string" ? JSON.parse(input) : input;
|
|
@@ -5114,6 +5209,17 @@ var RawRouter = class extends BaseRouter {
|
|
|
5114
5209
|
// tools/warp_grep/prompts.ts
|
|
5115
5210
|
var WARP_GREP_TOOL_NAME = "warpgrep_codebase_search";
|
|
5116
5211
|
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.';
|
|
5212
|
+
var GITHUB_SEARCH_TOOL_NAME = "warpgrep_github_search";
|
|
5213
|
+
var GITHUB_SEARCH_DESCRIPTION = "Search a public GitHub repository using WarpGrep. Provide a GitHub URL or owner/repo shorthand and a natural language query.";
|
|
5214
|
+
var GITHUB_SEARCH_INPUT_SCHEMA = {
|
|
5215
|
+
type: "object",
|
|
5216
|
+
properties: {
|
|
5217
|
+
query: { type: "string", description: "Natural language search query describing what to find in the repository" },
|
|
5218
|
+
github: { type: "string", description: 'GitHub repository URL or owner/repo shorthand (e.g., "vercel/next.js" or "https://github.com/vercel/next.js")' },
|
|
5219
|
+
branch: { type: "string", description: "Branch to search (defaults to the repository default branch)" }
|
|
5220
|
+
},
|
|
5221
|
+
required: ["query", "github"]
|
|
5222
|
+
};
|
|
5117
5223
|
|
|
5118
5224
|
// tools/warp_grep/openai.ts
|
|
5119
5225
|
var TOOL_PARAMETERS = {
|
|
@@ -5144,6 +5250,28 @@ function createWarpGrepTool(config) {
|
|
|
5144
5250
|
}
|
|
5145
5251
|
});
|
|
5146
5252
|
}
|
|
5253
|
+
function createGitHubSearchTool(config) {
|
|
5254
|
+
const client = new WarpGrepClient(config);
|
|
5255
|
+
const tool4 = {
|
|
5256
|
+
type: "function",
|
|
5257
|
+
function: {
|
|
5258
|
+
name: GITHUB_SEARCH_TOOL_NAME,
|
|
5259
|
+
description: GITHUB_SEARCH_DESCRIPTION,
|
|
5260
|
+
parameters: GITHUB_SEARCH_INPUT_SCHEMA
|
|
5261
|
+
}
|
|
5262
|
+
};
|
|
5263
|
+
return Object.assign(tool4, {
|
|
5264
|
+
execute: async (input) => {
|
|
5265
|
+
return client.searchGitHub(input);
|
|
5266
|
+
},
|
|
5267
|
+
formatResult: (result) => {
|
|
5268
|
+
return formatResult(result);
|
|
5269
|
+
},
|
|
5270
|
+
getSystemPrompt: () => {
|
|
5271
|
+
return getSystemPrompt();
|
|
5272
|
+
}
|
|
5273
|
+
});
|
|
5274
|
+
}
|
|
5147
5275
|
|
|
5148
5276
|
// tools/codebase_search/prompts.ts
|
|
5149
5277
|
var CODEBASE_SEARCH_DESCRIPTION = `Semantic search that finds code by meaning, not exact text.
|
|
@@ -5388,6 +5516,18 @@ var OpenAIToolFactory = class {
|
|
|
5388
5516
|
morphApiKey: this.config.apiKey
|
|
5389
5517
|
});
|
|
5390
5518
|
}
|
|
5519
|
+
/**
|
|
5520
|
+
* Create an OpenAI-compatible GitHub search tool
|
|
5521
|
+
*
|
|
5522
|
+
* @param toolConfig - Tool configuration (morphApiKey inherited from MorphClient)
|
|
5523
|
+
* @returns OpenAI ChatCompletionTool with execute and formatResult methods
|
|
5524
|
+
*/
|
|
5525
|
+
createGitHubSearchTool(toolConfig) {
|
|
5526
|
+
return createGitHubSearchTool({
|
|
5527
|
+
...toolConfig,
|
|
5528
|
+
morphApiKey: this.config.apiKey
|
|
5529
|
+
});
|
|
5530
|
+
}
|
|
5391
5531
|
};
|
|
5392
5532
|
|
|
5393
5533
|
// tools/warp_grep/anthropic.ts
|
|
@@ -5416,6 +5556,25 @@ function createWarpGrepTool2(config) {
|
|
|
5416
5556
|
}
|
|
5417
5557
|
});
|
|
5418
5558
|
}
|
|
5559
|
+
function createGitHubSearchTool2(config) {
|
|
5560
|
+
const client = new WarpGrepClient(config);
|
|
5561
|
+
const tool4 = {
|
|
5562
|
+
name: GITHUB_SEARCH_TOOL_NAME,
|
|
5563
|
+
description: GITHUB_SEARCH_DESCRIPTION,
|
|
5564
|
+
input_schema: GITHUB_SEARCH_INPUT_SCHEMA
|
|
5565
|
+
};
|
|
5566
|
+
return Object.assign(tool4, {
|
|
5567
|
+
execute: async (input) => {
|
|
5568
|
+
return client.searchGitHub(input);
|
|
5569
|
+
},
|
|
5570
|
+
formatResult: (result) => {
|
|
5571
|
+
return formatResult(result);
|
|
5572
|
+
},
|
|
5573
|
+
getSystemPrompt: () => {
|
|
5574
|
+
return getSystemPrompt();
|
|
5575
|
+
}
|
|
5576
|
+
});
|
|
5577
|
+
}
|
|
5419
5578
|
|
|
5420
5579
|
// tools/codebase_search/anthropic.ts
|
|
5421
5580
|
function createCodebaseSearchTool2(config) {
|
|
@@ -5577,6 +5736,18 @@ var AnthropicToolFactory = class {
|
|
|
5577
5736
|
morphApiKey: this.config.apiKey
|
|
5578
5737
|
});
|
|
5579
5738
|
}
|
|
5739
|
+
/**
|
|
5740
|
+
* Create an Anthropic-compatible GitHub search tool
|
|
5741
|
+
*
|
|
5742
|
+
* @param toolConfig - Tool configuration (morphApiKey inherited from MorphClient)
|
|
5743
|
+
* @returns Anthropic Tool with execute and formatResult methods
|
|
5744
|
+
*/
|
|
5745
|
+
createGitHubSearchTool(toolConfig) {
|
|
5746
|
+
return createGitHubSearchTool2({
|
|
5747
|
+
...toolConfig,
|
|
5748
|
+
morphApiKey: this.config.apiKey
|
|
5749
|
+
});
|
|
5750
|
+
}
|
|
5580
5751
|
};
|
|
5581
5752
|
|
|
5582
5753
|
// tools/warp_grep/vercel.ts
|
|
@@ -5614,6 +5785,28 @@ function createWarpGrepTool3(config) {
|
|
|
5614
5785
|
}
|
|
5615
5786
|
});
|
|
5616
5787
|
}
|
|
5788
|
+
function createGitHubSearchTool3(config) {
|
|
5789
|
+
const client = new WarpGrepClient(config);
|
|
5790
|
+
return (0, import_ai.tool)({
|
|
5791
|
+
description: GITHUB_SEARCH_DESCRIPTION,
|
|
5792
|
+
inputSchema: import_zod.z.object({
|
|
5793
|
+
query: import_zod.z.string().describe("Natural language search query"),
|
|
5794
|
+
github: import_zod.z.string().describe('GitHub URL or "owner/repo" shorthand'),
|
|
5795
|
+
branch: import_zod.z.string().optional().describe("Branch to search (defaults to repo default branch)")
|
|
5796
|
+
}),
|
|
5797
|
+
execute: async (params) => {
|
|
5798
|
+
const result = await client.searchGitHub(params);
|
|
5799
|
+
if (!result.success) {
|
|
5800
|
+
throw new Error(`GitHub search failed: ${result.error}`);
|
|
5801
|
+
}
|
|
5802
|
+
return {
|
|
5803
|
+
success: true,
|
|
5804
|
+
contexts: result.contexts,
|
|
5805
|
+
summary: result.summary
|
|
5806
|
+
};
|
|
5807
|
+
}
|
|
5808
|
+
});
|
|
5809
|
+
}
|
|
5617
5810
|
|
|
5618
5811
|
// tools/codebase_search/vercel.ts
|
|
5619
5812
|
var import_ai2 = require("ai");
|
|
@@ -5756,6 +5949,18 @@ var VercelToolFactory = class {
|
|
|
5756
5949
|
morphApiKey: this.config.apiKey
|
|
5757
5950
|
});
|
|
5758
5951
|
}
|
|
5952
|
+
/**
|
|
5953
|
+
* Create a Vercel AI SDK-compatible GitHub search tool
|
|
5954
|
+
*
|
|
5955
|
+
* @param toolConfig - Tool configuration (morphApiKey inherited from MorphClient)
|
|
5956
|
+
* @returns Vercel AI SDK tool
|
|
5957
|
+
*/
|
|
5958
|
+
createGitHubSearchTool(toolConfig) {
|
|
5959
|
+
return createGitHubSearchTool3({
|
|
5960
|
+
...toolConfig,
|
|
5961
|
+
morphApiKey: this.config.apiKey
|
|
5962
|
+
});
|
|
5963
|
+
}
|
|
5759
5964
|
};
|
|
5760
5965
|
|
|
5761
5966
|
// client.ts
|