@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
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",
|
|
@@ -162,6 +162,11 @@ var init_package = __esm({
|
|
|
162
162
|
types: "./dist/modelrouter/index.d.ts",
|
|
163
163
|
import: "./dist/modelrouter/index.js",
|
|
164
164
|
require: "./dist/modelrouter/index.cjs"
|
|
165
|
+
},
|
|
166
|
+
"./tools/compact": {
|
|
167
|
+
types: "./dist/tools/compact/index.d.ts",
|
|
168
|
+
import: "./dist/tools/compact/index.js",
|
|
169
|
+
require: "./dist/tools/compact/index.cjs"
|
|
165
170
|
}
|
|
166
171
|
},
|
|
167
172
|
files: [
|
|
@@ -173,7 +178,7 @@ var init_package = __esm({
|
|
|
173
178
|
"!dist/**/*.test.*"
|
|
174
179
|
],
|
|
175
180
|
scripts: {
|
|
176
|
-
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",
|
|
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",
|
|
177
182
|
prepare: "npm run build",
|
|
178
183
|
typecheck: "tsc --noEmit",
|
|
179
184
|
lint: "eslint .",
|
|
@@ -931,6 +936,7 @@ __export(index_exports, {
|
|
|
931
936
|
AnthropicToolFactory: () => AnthropicToolFactory,
|
|
932
937
|
BrowserClient: () => BrowserClient,
|
|
933
938
|
CodebaseSearchClient: () => CodebaseSearchClient,
|
|
939
|
+
CompactClient: () => CompactClient,
|
|
934
940
|
FastApplyClient: () => FastApplyClient,
|
|
935
941
|
GeminiRouter: () => GeminiRouter,
|
|
936
942
|
GitHubClient: () => GitHubClient,
|
|
@@ -3833,7 +3839,51 @@ var RemoteCommandsProvider = class {
|
|
|
3833
3839
|
}
|
|
3834
3840
|
};
|
|
3835
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
|
+
|
|
3836
3885
|
// tools/warp_grep/client.ts
|
|
3886
|
+
var DEFAULT_CODE_SEARCH_URL = "https://morphllm.com";
|
|
3837
3887
|
async function getLocalProvider(repoRoot, excludes) {
|
|
3838
3888
|
const { LocalRipgrepProvider: LocalRipgrepProvider2 } = await Promise.resolve().then(() => (init_local(), local_exports));
|
|
3839
3889
|
return new LocalRipgrepProvider2(repoRoot, excludes);
|
|
@@ -3841,13 +3891,7 @@ async function getLocalProvider(repoRoot, excludes) {
|
|
|
3841
3891
|
var WarpGrepClient = class {
|
|
3842
3892
|
config;
|
|
3843
3893
|
constructor(config = {}) {
|
|
3844
|
-
this.config = {
|
|
3845
|
-
morphApiKey: config.morphApiKey,
|
|
3846
|
-
morphApiUrl: config.morphApiUrl,
|
|
3847
|
-
debug: config.debug,
|
|
3848
|
-
timeout: config.timeout,
|
|
3849
|
-
retryConfig: config.retryConfig
|
|
3850
|
-
};
|
|
3894
|
+
this.config = { ...config };
|
|
3851
3895
|
}
|
|
3852
3896
|
execute(input) {
|
|
3853
3897
|
const toolConfig = {
|
|
@@ -3867,6 +3911,63 @@ var WarpGrepClient = class {
|
|
|
3867
3911
|
}
|
|
3868
3912
|
return executeToolCall({ query: input.query }, toolConfig);
|
|
3869
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
|
+
}
|
|
3870
3971
|
};
|
|
3871
3972
|
async function executeToolCall(input, config) {
|
|
3872
3973
|
const parsed = typeof input === "string" ? JSON.parse(input) : input;
|
|
@@ -4855,6 +4956,78 @@ var MorphGit = class {
|
|
|
4855
4956
|
var import_isomorphic_git2 = __toESM(require("isomorphic-git"), 1);
|
|
4856
4957
|
var import_node2 = __toESM(require("isomorphic-git/http/node"), 1);
|
|
4857
4958
|
|
|
4959
|
+
// tools/compact/core.ts
|
|
4960
|
+
var import_openai3 = __toESM(require("openai"), 1);
|
|
4961
|
+
var DEFAULT_API_URL4 = "https://api.morphllm.com";
|
|
4962
|
+
var DEFAULT_TIMEOUT3 = 12e4;
|
|
4963
|
+
var CompactClient = class {
|
|
4964
|
+
config;
|
|
4965
|
+
constructor(config = {}) {
|
|
4966
|
+
this.config = {
|
|
4967
|
+
morphApiUrl: DEFAULT_API_URL4,
|
|
4968
|
+
timeout: DEFAULT_TIMEOUT3,
|
|
4969
|
+
...config
|
|
4970
|
+
};
|
|
4971
|
+
}
|
|
4972
|
+
/**
|
|
4973
|
+
* Compact conversation context using Morph compactor
|
|
4974
|
+
*
|
|
4975
|
+
* @param input - Compact parameters including input content and optional prompt
|
|
4976
|
+
* @returns Compact result with compacted output and usage stats
|
|
4977
|
+
*
|
|
4978
|
+
* @example
|
|
4979
|
+
* ```typescript
|
|
4980
|
+
* const client = new CompactClient({ morphApiKey: 'sk-...' });
|
|
4981
|
+
* const result = await client.compact({
|
|
4982
|
+
* input: 'Long conversation context to compact...',
|
|
4983
|
+
* prompt: 'Focus on the code review feedback',
|
|
4984
|
+
* });
|
|
4985
|
+
* console.log(result.output);
|
|
4986
|
+
* ```
|
|
4987
|
+
*/
|
|
4988
|
+
async compact(input) {
|
|
4989
|
+
const apiKey = this.config.morphApiKey || (typeof process !== "undefined" ? process.env?.MORPH_API_KEY : void 0);
|
|
4990
|
+
const debug = this.config.debug || false;
|
|
4991
|
+
if (!apiKey) {
|
|
4992
|
+
throw new Error(
|
|
4993
|
+
"Morph API key not found. Set MORPH_API_KEY environment variable or pass morphApiKey in config."
|
|
4994
|
+
);
|
|
4995
|
+
}
|
|
4996
|
+
const client = new import_openai3.default({
|
|
4997
|
+
apiKey,
|
|
4998
|
+
baseURL: `${this.config.morphApiUrl}/v1`,
|
|
4999
|
+
timeout: this.config.timeout,
|
|
5000
|
+
maxRetries: this.config.retryConfig?.maxRetries ?? 3
|
|
5001
|
+
});
|
|
5002
|
+
const instructions = input.prompt ? `The user's next message will be: "${input.prompt}"
|
|
5003
|
+
Prioritize keeping context relevant to this query.` : void 0;
|
|
5004
|
+
if (debug) {
|
|
5005
|
+
console.log(`[Compact] Calling ${this.config.morphApiUrl}/v1/responses`);
|
|
5006
|
+
console.log(`[Compact] Model: ${input.model || "morph-compactor"}`);
|
|
5007
|
+
}
|
|
5008
|
+
const startTime = Date.now();
|
|
5009
|
+
const response = await client.responses.create({
|
|
5010
|
+
model: input.model || "morph-compactor",
|
|
5011
|
+
input: input.input,
|
|
5012
|
+
...instructions && { instructions },
|
|
5013
|
+
...input.temperature != null && { temperature: input.temperature },
|
|
5014
|
+
...input.max_output_tokens != null && { max_output_tokens: input.max_output_tokens },
|
|
5015
|
+
stream: false
|
|
5016
|
+
});
|
|
5017
|
+
const elapsed = Date.now() - startTime;
|
|
5018
|
+
if (debug) {
|
|
5019
|
+
console.log(`[Compact] Success in ${elapsed}ms`);
|
|
5020
|
+
}
|
|
5021
|
+
return {
|
|
5022
|
+
id: response.id,
|
|
5023
|
+
output: response.output,
|
|
5024
|
+
usage: response.usage,
|
|
5025
|
+
status: response.status ?? "completed",
|
|
5026
|
+
model: response.model
|
|
5027
|
+
};
|
|
5028
|
+
}
|
|
5029
|
+
};
|
|
5030
|
+
|
|
4858
5031
|
// modelrouter/core.ts
|
|
4859
5032
|
var DEFAULT_CONFIG3 = {
|
|
4860
5033
|
apiUrl: "https://api.morphllm.com",
|
|
@@ -5058,6 +5231,17 @@ var RawRouter = class extends BaseRouter {
|
|
|
5058
5231
|
// tools/warp_grep/prompts.ts
|
|
5059
5232
|
var WARP_GREP_TOOL_NAME = "warpgrep_codebase_search";
|
|
5060
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
|
+
};
|
|
5061
5245
|
|
|
5062
5246
|
// tools/warp_grep/openai.ts
|
|
5063
5247
|
var TOOL_PARAMETERS = {
|
|
@@ -5088,6 +5272,28 @@ function createWarpGrepTool(config) {
|
|
|
5088
5272
|
}
|
|
5089
5273
|
});
|
|
5090
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
|
+
}
|
|
5091
5297
|
|
|
5092
5298
|
// tools/codebase_search/prompts.ts
|
|
5093
5299
|
var CODEBASE_SEARCH_DESCRIPTION = `Semantic search that finds code by meaning, not exact text.
|
|
@@ -5332,6 +5538,18 @@ var OpenAIToolFactory = class {
|
|
|
5332
5538
|
morphApiKey: this.config.apiKey
|
|
5333
5539
|
});
|
|
5334
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
|
+
}
|
|
5335
5553
|
};
|
|
5336
5554
|
|
|
5337
5555
|
// tools/warp_grep/anthropic.ts
|
|
@@ -5360,6 +5578,25 @@ function createWarpGrepTool2(config) {
|
|
|
5360
5578
|
}
|
|
5361
5579
|
});
|
|
5362
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
|
+
}
|
|
5363
5600
|
|
|
5364
5601
|
// tools/codebase_search/anthropic.ts
|
|
5365
5602
|
function createCodebaseSearchTool2(config) {
|
|
@@ -5521,6 +5758,18 @@ var AnthropicToolFactory = class {
|
|
|
5521
5758
|
morphApiKey: this.config.apiKey
|
|
5522
5759
|
});
|
|
5523
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
|
+
}
|
|
5524
5773
|
};
|
|
5525
5774
|
|
|
5526
5775
|
// tools/warp_grep/vercel.ts
|
|
@@ -5558,6 +5807,28 @@ function createWarpGrepTool3(config) {
|
|
|
5558
5807
|
}
|
|
5559
5808
|
});
|
|
5560
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
|
+
}
|
|
5561
5832
|
|
|
5562
5833
|
// tools/codebase_search/vercel.ts
|
|
5563
5834
|
var import_ai2 = require("ai");
|
|
@@ -5700,6 +5971,18 @@ var VercelToolFactory = class {
|
|
|
5700
5971
|
morphApiKey: this.config.apiKey
|
|
5701
5972
|
});
|
|
5702
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
|
+
}
|
|
5703
5986
|
};
|
|
5704
5987
|
|
|
5705
5988
|
// client.ts
|
|
@@ -5726,6 +6009,8 @@ var MorphClient = class {
|
|
|
5726
6009
|
anthropic;
|
|
5727
6010
|
/** Vercel AI SDK tool factories */
|
|
5728
6011
|
vercel;
|
|
6012
|
+
/** Responses API with compact tool */
|
|
6013
|
+
responses;
|
|
5729
6014
|
/**
|
|
5730
6015
|
* Create a new Morph SDK client
|
|
5731
6016
|
*
|
|
@@ -5802,6 +6087,15 @@ var MorphClient = class {
|
|
|
5802
6087
|
retryConfig: config.retryConfig
|
|
5803
6088
|
})
|
|
5804
6089
|
};
|
|
6090
|
+
const compactClient = new CompactClient({
|
|
6091
|
+
morphApiKey: config.apiKey,
|
|
6092
|
+
timeout: config.timeout,
|
|
6093
|
+
retryConfig: config.retryConfig,
|
|
6094
|
+
debug: config.debug
|
|
6095
|
+
});
|
|
6096
|
+
this.responses = {
|
|
6097
|
+
compact: compactClient.compact.bind(compactClient)
|
|
6098
|
+
};
|
|
5805
6099
|
this.openai = new OpenAIToolFactory(config);
|
|
5806
6100
|
this.anthropic = new AnthropicToolFactory(config);
|
|
5807
6101
|
this.vercel = new VercelToolFactory(config);
|
|
@@ -5830,6 +6124,7 @@ var warpGrepInputSchema = import_zod4.z.object({
|
|
|
5830
6124
|
AnthropicToolFactory,
|
|
5831
6125
|
BrowserClient,
|
|
5832
6126
|
CodebaseSearchClient,
|
|
6127
|
+
CompactClient,
|
|
5833
6128
|
FastApplyClient,
|
|
5834
6129
|
GeminiRouter,
|
|
5835
6130
|
GitHubClient,
|