@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/index.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 .",
|
|
@@ -3839,7 +3839,51 @@ var RemoteCommandsProvider = class {
|
|
|
3839
3839
|
}
|
|
3840
3840
|
};
|
|
3841
3841
|
|
|
3842
|
+
// tools/warp_grep/providers/code_storage_http.ts
|
|
3843
|
+
async function post(url, body, op) {
|
|
3844
|
+
const res = await fetch(url, {
|
|
3845
|
+
method: "POST",
|
|
3846
|
+
headers: { "Content-Type": "application/json" },
|
|
3847
|
+
body: JSON.stringify(body)
|
|
3848
|
+
});
|
|
3849
|
+
if (!res.ok) {
|
|
3850
|
+
const text = await res.text().catch(() => res.statusText);
|
|
3851
|
+
throw new Error(`${op} failed (${res.status}): ${text}`);
|
|
3852
|
+
}
|
|
3853
|
+
const data = await res.json();
|
|
3854
|
+
if (data.error) throw new Error(data.error);
|
|
3855
|
+
return data.stdout;
|
|
3856
|
+
}
|
|
3857
|
+
function createCodeStorageHttpCommands(config) {
|
|
3858
|
+
const { baseUrl, repoId, branch } = config;
|
|
3859
|
+
const encodedRepoId = encodeURIComponent(repoId);
|
|
3860
|
+
return {
|
|
3861
|
+
grep: (pattern, path5, glob) => post(`${baseUrl}/api/code-search/${encodedRepoId}/grep`, { pattern, path: path5, glob, branch }, "grep"),
|
|
3862
|
+
read: (path5, start, end) => post(`${baseUrl}/api/code-search/${encodedRepoId}/read`, { path: path5, start, end, branch }, "read"),
|
|
3863
|
+
listDir: (path5, maxDepth) => post(`${baseUrl}/api/code-search/${encodedRepoId}/list`, { path: path5, maxDepth, branch }, "list")
|
|
3864
|
+
};
|
|
3865
|
+
}
|
|
3866
|
+
|
|
3867
|
+
// tools/warp_grep/utils/github.ts
|
|
3868
|
+
function parseGitHubUrl(input) {
|
|
3869
|
+
input = input.trim();
|
|
3870
|
+
const urlPattern = /^(?:https?:\/\/)?github\.com\/([^\/]+)\/([^\/\?\#]+)/;
|
|
3871
|
+
const match = input.match(urlPattern);
|
|
3872
|
+
if (match) {
|
|
3873
|
+
return { owner: match[1], repo: match[2].replace(/\.git$/, "") };
|
|
3874
|
+
}
|
|
3875
|
+
const shortPattern = /^([^\/]+)\/([^\/]+)$/;
|
|
3876
|
+
const shortMatch = input.match(shortPattern);
|
|
3877
|
+
if (shortMatch && !shortMatch[1].includes(".")) {
|
|
3878
|
+
return { owner: shortMatch[1], repo: shortMatch[2].replace(/\.git$/, "") };
|
|
3879
|
+
}
|
|
3880
|
+
throw new Error(
|
|
3881
|
+
`Invalid GitHub URL or shorthand: "${input}". Expected "owner/repo" or "https://github.com/owner/repo"`
|
|
3882
|
+
);
|
|
3883
|
+
}
|
|
3884
|
+
|
|
3842
3885
|
// tools/warp_grep/client.ts
|
|
3886
|
+
var DEFAULT_CODE_SEARCH_URL = "https://morphllm.com";
|
|
3843
3887
|
async function getLocalProvider(repoRoot, excludes) {
|
|
3844
3888
|
const { LocalRipgrepProvider: LocalRipgrepProvider2 } = await Promise.resolve().then(() => (init_local(), local_exports));
|
|
3845
3889
|
return new LocalRipgrepProvider2(repoRoot, excludes);
|
|
@@ -3847,13 +3891,7 @@ async function getLocalProvider(repoRoot, excludes) {
|
|
|
3847
3891
|
var WarpGrepClient = class {
|
|
3848
3892
|
config;
|
|
3849
3893
|
constructor(config = {}) {
|
|
3850
|
-
this.config = {
|
|
3851
|
-
morphApiKey: config.morphApiKey,
|
|
3852
|
-
morphApiUrl: config.morphApiUrl,
|
|
3853
|
-
debug: config.debug,
|
|
3854
|
-
timeout: config.timeout,
|
|
3855
|
-
retryConfig: config.retryConfig
|
|
3856
|
-
};
|
|
3894
|
+
this.config = { ...config };
|
|
3857
3895
|
}
|
|
3858
3896
|
execute(input) {
|
|
3859
3897
|
const toolConfig = {
|
|
@@ -3873,6 +3911,63 @@ var WarpGrepClient = class {
|
|
|
3873
3911
|
}
|
|
3874
3912
|
return executeToolCall({ query: input.query }, toolConfig);
|
|
3875
3913
|
}
|
|
3914
|
+
searchGitHub(input) {
|
|
3915
|
+
if (input.streamSteps) {
|
|
3916
|
+
return this._searchGitHubStreaming(input);
|
|
3917
|
+
}
|
|
3918
|
+
return this._searchGitHubAsync(input);
|
|
3919
|
+
}
|
|
3920
|
+
async _resolveGitHubRepo(input) {
|
|
3921
|
+
const { owner, repo } = parseGitHubUrl(input.github);
|
|
3922
|
+
const baseUrl = this.config.codeSearchUrl || DEFAULT_CODE_SEARCH_URL;
|
|
3923
|
+
const importRes = await fetch(`${baseUrl}/api/code-search/get-or-create?url=${encodeURIComponent(`${owner}/${repo}`)}`);
|
|
3924
|
+
if (!importRes.ok) {
|
|
3925
|
+
const text = await importRes.text().catch(() => importRes.statusText);
|
|
3926
|
+
throw new Error(`Failed to import repo ${owner}/${repo}: ${text}`);
|
|
3927
|
+
}
|
|
3928
|
+
const { repoId, defaultBranch } = await importRes.json();
|
|
3929
|
+
return {
|
|
3930
|
+
repo,
|
|
3931
|
+
remoteCommands: createCodeStorageHttpCommands({ baseUrl, repoId, branch: input.branch || defaultBranch })
|
|
3932
|
+
};
|
|
3933
|
+
}
|
|
3934
|
+
async _searchGitHubAsync(input) {
|
|
3935
|
+
try {
|
|
3936
|
+
const { repo, remoteCommands } = await this._resolveGitHubRepo(input);
|
|
3937
|
+
return this.execute({
|
|
3938
|
+
query: input.query,
|
|
3939
|
+
repoRoot: repo,
|
|
3940
|
+
remoteCommands
|
|
3941
|
+
});
|
|
3942
|
+
} catch (error) {
|
|
3943
|
+
return { success: false, error: error instanceof Error ? error.message : String(error) };
|
|
3944
|
+
}
|
|
3945
|
+
}
|
|
3946
|
+
async *_searchGitHubStreaming(input) {
|
|
3947
|
+
let repo;
|
|
3948
|
+
let remoteCommands;
|
|
3949
|
+
try {
|
|
3950
|
+
({ repo, remoteCommands } = await this._resolveGitHubRepo(input));
|
|
3951
|
+
} catch (error) {
|
|
3952
|
+
return { success: false, error: error instanceof Error ? error.message : String(error) };
|
|
3953
|
+
}
|
|
3954
|
+
const generator = this.execute({
|
|
3955
|
+
query: input.query,
|
|
3956
|
+
repoRoot: repo,
|
|
3957
|
+
remoteCommands,
|
|
3958
|
+
streamSteps: true
|
|
3959
|
+
});
|
|
3960
|
+
let result;
|
|
3961
|
+
for (; ; ) {
|
|
3962
|
+
const { value, done } = await generator.next();
|
|
3963
|
+
if (done) {
|
|
3964
|
+
result = value;
|
|
3965
|
+
break;
|
|
3966
|
+
}
|
|
3967
|
+
yield value;
|
|
3968
|
+
}
|
|
3969
|
+
return result;
|
|
3970
|
+
}
|
|
3876
3971
|
};
|
|
3877
3972
|
async function executeToolCall(input, config) {
|
|
3878
3973
|
const parsed = typeof input === "string" ? JSON.parse(input) : input;
|
|
@@ -5136,6 +5231,17 @@ var RawRouter = class extends BaseRouter {
|
|
|
5136
5231
|
// tools/warp_grep/prompts.ts
|
|
5137
5232
|
var WARP_GREP_TOOL_NAME = "warpgrep_codebase_search";
|
|
5138
5233
|
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.';
|
|
5234
|
+
var GITHUB_SEARCH_TOOL_NAME = "warpgrep_github_search";
|
|
5235
|
+
var GITHUB_SEARCH_DESCRIPTION = "Search a public GitHub repository using WarpGrep. Provide a GitHub URL or owner/repo shorthand and a natural language query.";
|
|
5236
|
+
var GITHUB_SEARCH_INPUT_SCHEMA = {
|
|
5237
|
+
type: "object",
|
|
5238
|
+
properties: {
|
|
5239
|
+
query: { type: "string", description: "Natural language search query describing what to find in the repository" },
|
|
5240
|
+
github: { type: "string", description: 'GitHub repository URL or owner/repo shorthand (e.g., "vercel/next.js" or "https://github.com/vercel/next.js")' },
|
|
5241
|
+
branch: { type: "string", description: "Branch to search (defaults to the repository default branch)" }
|
|
5242
|
+
},
|
|
5243
|
+
required: ["query", "github"]
|
|
5244
|
+
};
|
|
5139
5245
|
|
|
5140
5246
|
// tools/warp_grep/openai.ts
|
|
5141
5247
|
var TOOL_PARAMETERS = {
|
|
@@ -5166,6 +5272,28 @@ function createWarpGrepTool(config) {
|
|
|
5166
5272
|
}
|
|
5167
5273
|
});
|
|
5168
5274
|
}
|
|
5275
|
+
function createGitHubSearchTool(config) {
|
|
5276
|
+
const client = new WarpGrepClient(config);
|
|
5277
|
+
const tool4 = {
|
|
5278
|
+
type: "function",
|
|
5279
|
+
function: {
|
|
5280
|
+
name: GITHUB_SEARCH_TOOL_NAME,
|
|
5281
|
+
description: GITHUB_SEARCH_DESCRIPTION,
|
|
5282
|
+
parameters: GITHUB_SEARCH_INPUT_SCHEMA
|
|
5283
|
+
}
|
|
5284
|
+
};
|
|
5285
|
+
return Object.assign(tool4, {
|
|
5286
|
+
execute: async (input) => {
|
|
5287
|
+
return client.searchGitHub(input);
|
|
5288
|
+
},
|
|
5289
|
+
formatResult: (result) => {
|
|
5290
|
+
return formatResult(result);
|
|
5291
|
+
},
|
|
5292
|
+
getSystemPrompt: () => {
|
|
5293
|
+
return getSystemPrompt();
|
|
5294
|
+
}
|
|
5295
|
+
});
|
|
5296
|
+
}
|
|
5169
5297
|
|
|
5170
5298
|
// tools/codebase_search/prompts.ts
|
|
5171
5299
|
var CODEBASE_SEARCH_DESCRIPTION = `Semantic search that finds code by meaning, not exact text.
|
|
@@ -5410,6 +5538,18 @@ var OpenAIToolFactory = class {
|
|
|
5410
5538
|
morphApiKey: this.config.apiKey
|
|
5411
5539
|
});
|
|
5412
5540
|
}
|
|
5541
|
+
/**
|
|
5542
|
+
* Create an OpenAI-compatible GitHub search tool
|
|
5543
|
+
*
|
|
5544
|
+
* @param toolConfig - Tool configuration (morphApiKey inherited from MorphClient)
|
|
5545
|
+
* @returns OpenAI ChatCompletionTool with execute and formatResult methods
|
|
5546
|
+
*/
|
|
5547
|
+
createGitHubSearchTool(toolConfig) {
|
|
5548
|
+
return createGitHubSearchTool({
|
|
5549
|
+
...toolConfig,
|
|
5550
|
+
morphApiKey: this.config.apiKey
|
|
5551
|
+
});
|
|
5552
|
+
}
|
|
5413
5553
|
};
|
|
5414
5554
|
|
|
5415
5555
|
// tools/warp_grep/anthropic.ts
|
|
@@ -5438,6 +5578,25 @@ function createWarpGrepTool2(config) {
|
|
|
5438
5578
|
}
|
|
5439
5579
|
});
|
|
5440
5580
|
}
|
|
5581
|
+
function createGitHubSearchTool2(config) {
|
|
5582
|
+
const client = new WarpGrepClient(config);
|
|
5583
|
+
const tool4 = {
|
|
5584
|
+
name: GITHUB_SEARCH_TOOL_NAME,
|
|
5585
|
+
description: GITHUB_SEARCH_DESCRIPTION,
|
|
5586
|
+
input_schema: GITHUB_SEARCH_INPUT_SCHEMA
|
|
5587
|
+
};
|
|
5588
|
+
return Object.assign(tool4, {
|
|
5589
|
+
execute: async (input) => {
|
|
5590
|
+
return client.searchGitHub(input);
|
|
5591
|
+
},
|
|
5592
|
+
formatResult: (result) => {
|
|
5593
|
+
return formatResult(result);
|
|
5594
|
+
},
|
|
5595
|
+
getSystemPrompt: () => {
|
|
5596
|
+
return getSystemPrompt();
|
|
5597
|
+
}
|
|
5598
|
+
});
|
|
5599
|
+
}
|
|
5441
5600
|
|
|
5442
5601
|
// tools/codebase_search/anthropic.ts
|
|
5443
5602
|
function createCodebaseSearchTool2(config) {
|
|
@@ -5599,6 +5758,18 @@ var AnthropicToolFactory = class {
|
|
|
5599
5758
|
morphApiKey: this.config.apiKey
|
|
5600
5759
|
});
|
|
5601
5760
|
}
|
|
5761
|
+
/**
|
|
5762
|
+
* Create an Anthropic-compatible GitHub search tool
|
|
5763
|
+
*
|
|
5764
|
+
* @param toolConfig - Tool configuration (morphApiKey inherited from MorphClient)
|
|
5765
|
+
* @returns Anthropic Tool with execute and formatResult methods
|
|
5766
|
+
*/
|
|
5767
|
+
createGitHubSearchTool(toolConfig) {
|
|
5768
|
+
return createGitHubSearchTool2({
|
|
5769
|
+
...toolConfig,
|
|
5770
|
+
morphApiKey: this.config.apiKey
|
|
5771
|
+
});
|
|
5772
|
+
}
|
|
5602
5773
|
};
|
|
5603
5774
|
|
|
5604
5775
|
// tools/warp_grep/vercel.ts
|
|
@@ -5636,6 +5807,28 @@ function createWarpGrepTool3(config) {
|
|
|
5636
5807
|
}
|
|
5637
5808
|
});
|
|
5638
5809
|
}
|
|
5810
|
+
function createGitHubSearchTool3(config) {
|
|
5811
|
+
const client = new WarpGrepClient(config);
|
|
5812
|
+
return (0, import_ai.tool)({
|
|
5813
|
+
description: GITHUB_SEARCH_DESCRIPTION,
|
|
5814
|
+
inputSchema: import_zod.z.object({
|
|
5815
|
+
query: import_zod.z.string().describe("Natural language search query"),
|
|
5816
|
+
github: import_zod.z.string().describe('GitHub URL or "owner/repo" shorthand'),
|
|
5817
|
+
branch: import_zod.z.string().optional().describe("Branch to search (defaults to repo default branch)")
|
|
5818
|
+
}),
|
|
5819
|
+
execute: async (params) => {
|
|
5820
|
+
const result = await client.searchGitHub(params);
|
|
5821
|
+
if (!result.success) {
|
|
5822
|
+
throw new Error(`GitHub search failed: ${result.error}`);
|
|
5823
|
+
}
|
|
5824
|
+
return {
|
|
5825
|
+
success: true,
|
|
5826
|
+
contexts: result.contexts,
|
|
5827
|
+
summary: result.summary
|
|
5828
|
+
};
|
|
5829
|
+
}
|
|
5830
|
+
});
|
|
5831
|
+
}
|
|
5639
5832
|
|
|
5640
5833
|
// tools/codebase_search/vercel.ts
|
|
5641
5834
|
var import_ai2 = require("ai");
|
|
@@ -5778,6 +5971,18 @@ var VercelToolFactory = class {
|
|
|
5778
5971
|
morphApiKey: this.config.apiKey
|
|
5779
5972
|
});
|
|
5780
5973
|
}
|
|
5974
|
+
/**
|
|
5975
|
+
* Create a Vercel AI SDK-compatible GitHub search tool
|
|
5976
|
+
*
|
|
5977
|
+
* @param toolConfig - Tool configuration (morphApiKey inherited from MorphClient)
|
|
5978
|
+
* @returns Vercel AI SDK tool
|
|
5979
|
+
*/
|
|
5980
|
+
createGitHubSearchTool(toolConfig) {
|
|
5981
|
+
return createGitHubSearchTool3({
|
|
5982
|
+
...toolConfig,
|
|
5983
|
+
morphApiKey: this.config.apiKey
|
|
5984
|
+
});
|
|
5985
|
+
}
|
|
5781
5986
|
};
|
|
5782
5987
|
|
|
5783
5988
|
// client.ts
|