opencode-morphllm 0.0.6 → 0.0.8
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/.github/workflows/coverage.yml +39 -0
- package/.gitleaks.toml +6 -0
- package/.husky/pre-commit +3 -1
- package/.prettierignore +1 -0
- package/.prettierrc +1 -1
- package/README.md +8 -2
- package/bun.lock +80 -0
- package/bunfig.toml +4 -0
- package/coverage/coverage.svg +1 -0
- package/dist/index.js +11 -12
- package/dist/morph/mcps.js +11 -11
- package/dist/morph/mcps.test.js +32 -32
- package/dist/morph/router.d.ts +16 -21
- package/dist/morph/router.js +51 -55
- package/dist/morph/router.test.js +230 -231
- package/dist/shared/config.d.ts +16 -18
- package/dist/shared/config.js +62 -64
- package/dist/shared/config.test.js +183 -186
- package/dist/shared/opencode-config-dir.d.ts +18 -8
- package/dist/shared/opencode-config-dir.js +93 -47
- package/dist/shared/opencode-config-dir.test.d.ts +1 -0
- package/dist/shared/opencode-config-dir.test.js +310 -0
- package/package.json +4 -2
- package/src/index.ts +1 -2
- package/src/morph/router.test.ts +3 -2
- package/src/morph/router.ts +8 -3
- package/src/shared/config.test.ts +18 -6
- package/src/shared/config.ts +5 -5
- package/src/shared/opencode-config-dir.test.ts +404 -0
- package/src/shared/opencode-config-dir.ts +90 -11
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
name: Coverage
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
build:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v4
|
|
18
|
+
|
|
19
|
+
- name: Install Bun
|
|
20
|
+
run: |
|
|
21
|
+
curl -fsSL https://bun.sh/install | bash
|
|
22
|
+
|
|
23
|
+
- name: Install dependencies
|
|
24
|
+
run: $HOME/.bun/bin/bun install
|
|
25
|
+
|
|
26
|
+
- name: Run coverage
|
|
27
|
+
run: $HOME/.bun/bin/bun test
|
|
28
|
+
|
|
29
|
+
- name: Generate coverage badge
|
|
30
|
+
run: |
|
|
31
|
+
npx lcov-badge2 coverage/lcov.info -o coverage/coverage.svg
|
|
32
|
+
|
|
33
|
+
- name: Commit coverage badge
|
|
34
|
+
run: |
|
|
35
|
+
git config --local user.email "action@github.com"
|
|
36
|
+
git config --local user.name "GitHub Action"
|
|
37
|
+
git add coverage/*.svg 2>/dev/null || echo "No badge files to add"
|
|
38
|
+
git commit -m "Update coverage badge" || echo "No changes to commit"
|
|
39
|
+
git push
|
package/.gitleaks.toml
ADDED
package/.husky/pre-commit
CHANGED
package/.prettierignore
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
dist/
|
package/.prettierrc
CHANGED
package/README.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# MorphLLM OpenCode Plugin
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/opencode-morphllm)
|
|
4
|
+
[](https://www.npmjs.com/package/opencode-morphllm)
|
|
5
|
+
[](https://www.npmjs.com/package/opencode-morphllm)
|
|
6
|
+
|
|
3
7
|
This is an OpenCode Plugin for [MorphLLM](https://morphllm.com/). This plugin just adds in `edit_file` and `warpgrep_codebase_search` from MorphLLM to your agent configs as well as the intelligent model router for choosing different models based on the difficulty of the prompt.
|
|
4
8
|
|
|
5
9
|
Github: https://github.com/VitoLin/opencode-morphllm
|
|
@@ -27,7 +31,8 @@ Example configs:
|
|
|
27
31
|
"MORPH_MODEL_EASY": "github-copilot/gpt-5-mini",
|
|
28
32
|
"MORPH_MODEL_MEDIUM": "opencode/minimax-m2.1-free",
|
|
29
33
|
"MORPH_MODEL_HARD": "github-copilot/gemini-2.5-pro",
|
|
30
|
-
"MORPH_ROUTER_ENABLED": true
|
|
34
|
+
"MORPH_ROUTER_ENABLED": true,
|
|
35
|
+
"MORPH_ROUTER_PROMPT_CACHING_AWARE": true
|
|
31
36
|
}
|
|
32
37
|
}
|
|
33
38
|
```
|
|
@@ -40,7 +45,8 @@ Legacy format (still supported):
|
|
|
40
45
|
"MORPH_MODEL_EASY": "github-copilot/gpt-5-mini",
|
|
41
46
|
"MORPH_MODEL_MEDIUM": "opencode/minimax-m2.1-free",
|
|
42
47
|
"MORPH_MODEL_HARD": "github-copilot/gemini-2.5-pro",
|
|
43
|
-
"MORPH_ROUTER_ENABLED": true
|
|
48
|
+
"MORPH_ROUTER_ENABLED": true,
|
|
49
|
+
"MORPH_ROUTER_PROMPT_CACHING_AWARE": true
|
|
44
50
|
}
|
|
45
51
|
```
|
|
46
52
|
|
package/bun.lock
CHANGED
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
},
|
|
11
11
|
"devDependencies": {
|
|
12
12
|
"bun-types": "^1.3.6",
|
|
13
|
+
"coverage-badges-cli": "^2.2.0",
|
|
13
14
|
"husky": "^8.0.3",
|
|
15
|
+
"lcov-badge2": "^1.1.3",
|
|
14
16
|
"lint-staged": "^15.2.0",
|
|
15
17
|
"prettier": "^3.2.5",
|
|
16
18
|
"typescript": "^5.9.3",
|
|
@@ -34,6 +36,12 @@
|
|
|
34
36
|
|
|
35
37
|
"@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="],
|
|
36
38
|
|
|
39
|
+
"@types/fs-extra": ["@types/fs-extra@11.0.4", "", { "dependencies": { "@types/jsonfile": "*", "@types/node": "*" } }, "sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ=="],
|
|
40
|
+
|
|
41
|
+
"@types/jsonfile": ["@types/jsonfile@6.1.4", "", { "dependencies": { "@types/node": "*" } }, "sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ=="],
|
|
42
|
+
|
|
43
|
+
"@types/minimist": ["@types/minimist@1.2.5", "", {}, "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag=="],
|
|
44
|
+
|
|
37
45
|
"@types/node": ["@types/node@25.0.10", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg=="],
|
|
38
46
|
|
|
39
47
|
"@types/node-fetch": ["@types/node-fetch@2.6.13", "", { "dependencies": { "@types/node": "*", "form-data": "^4.0.4" } }, "sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw=="],
|
|
@@ -56,14 +64,22 @@
|
|
|
56
64
|
|
|
57
65
|
"ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="],
|
|
58
66
|
|
|
67
|
+
"arrify": ["arrify@1.0.1", "", {}, "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA=="],
|
|
68
|
+
|
|
59
69
|
"async-lock": ["async-lock@1.4.1", "", {}, "sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ=="],
|
|
60
70
|
|
|
61
71
|
"asynckit": ["asynckit@0.4.0", "", {}, "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="],
|
|
62
72
|
|
|
63
73
|
"available-typed-arrays": ["available-typed-arrays@1.0.7", "", { "dependencies": { "possible-typed-array-names": "^1.0.0" } }, "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ=="],
|
|
64
74
|
|
|
75
|
+
"badge-up2": ["badge-up2@2.0.3", "", { "dependencies": { "css-color-names": "^1.0.1", "dot": "^1.1.3", "svgo": "^4.0.0" } }, "sha512-uG3+cKncGfCWuGJYt4UriPJ4qAWLshJQRCJog61gCS6DKEk7MPeHpRkW+abIxNK5rayT6RQwir3oLTvkdcfVVw=="],
|
|
76
|
+
|
|
77
|
+
"badgen": ["badgen@3.2.3", "", {}, "sha512-svDuwkc63E/z0ky3drpUppB83s/nlgDciH9m+STwwQoWyq7yCgew1qEfJ+9axkKdNq7MskByptWUN9j1PGMwFA=="],
|
|
78
|
+
|
|
65
79
|
"base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="],
|
|
66
80
|
|
|
81
|
+
"boolbase": ["boolbase@1.0.0", "", {}, "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="],
|
|
82
|
+
|
|
67
83
|
"braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="],
|
|
68
84
|
|
|
69
85
|
"buffer": ["buffer@6.0.3", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" } }, "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA=="],
|
|
@@ -92,10 +108,22 @@
|
|
|
92
108
|
|
|
93
109
|
"commander": ["commander@13.1.0", "", {}, "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw=="],
|
|
94
110
|
|
|
111
|
+
"coverage-badges-cli": ["coverage-badges-cli@2.2.0", "", { "dependencies": { "@types/fs-extra": "~11.0.0", "@types/minimist": "~1.2.2", "badgen": "~3.2.3", "fs-extra": "~11.2.0", "lodash.get": "^4.4.2", "mini-svg-data-uri": "^1.4.4", "minimist": "~1.2.5" }, "bin": { "coverage-badges": "bin/cli", "coverage-badges-cli": "bin/cli" } }, "sha512-7E7TtxiybFkK5/FRkzt4WTNZkopEv+hra7I7k52fnOD0YBweCnmV4b0FCCEvnO8567e+xCEZ3AdbIfeVlkh+hg=="],
|
|
112
|
+
|
|
95
113
|
"crc-32": ["crc-32@1.2.2", "", { "bin": { "crc32": "bin/crc32.njs" } }, "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ=="],
|
|
96
114
|
|
|
97
115
|
"cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="],
|
|
98
116
|
|
|
117
|
+
"css-color-names": ["css-color-names@1.0.1", "", {}, "sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA=="],
|
|
118
|
+
|
|
119
|
+
"css-select": ["css-select@5.2.2", "", { "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", "domhandler": "^5.0.2", "domutils": "^3.0.1", "nth-check": "^2.0.1" } }, "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw=="],
|
|
120
|
+
|
|
121
|
+
"css-tree": ["css-tree@3.1.0", "", { "dependencies": { "mdn-data": "2.12.2", "source-map-js": "^1.0.1" } }, "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w=="],
|
|
122
|
+
|
|
123
|
+
"css-what": ["css-what@6.2.2", "", {}, "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA=="],
|
|
124
|
+
|
|
125
|
+
"csso": ["csso@5.0.5", "", { "dependencies": { "css-tree": "~2.2.0" } }, "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ=="],
|
|
126
|
+
|
|
99
127
|
"debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="],
|
|
100
128
|
|
|
101
129
|
"decompress-response": ["decompress-response@6.0.0", "", { "dependencies": { "mimic-response": "^3.1.0" } }, "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ=="],
|
|
@@ -108,10 +136,22 @@
|
|
|
108
136
|
|
|
109
137
|
"diff3": ["diff3@0.0.3", "", {}, "sha512-iSq8ngPOt0K53A6eVr4d5Kn6GNrM2nQZtC740pzIriHtn4pOQ2lyzEXQMBeVcWERN0ye7fhBsk9PbLLQOnUx/g=="],
|
|
110
138
|
|
|
139
|
+
"dom-serializer": ["dom-serializer@2.0.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", "entities": "^4.2.0" } }, "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg=="],
|
|
140
|
+
|
|
141
|
+
"domelementtype": ["domelementtype@2.3.0", "", {}, "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="],
|
|
142
|
+
|
|
143
|
+
"domhandler": ["domhandler@5.0.3", "", { "dependencies": { "domelementtype": "^2.3.0" } }, "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w=="],
|
|
144
|
+
|
|
145
|
+
"domutils": ["domutils@3.2.2", "", { "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3" } }, "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw=="],
|
|
146
|
+
|
|
147
|
+
"dot": ["dot@1.1.3", "", { "bin": { "dottojs": "./bin/dot-packer" } }, "sha512-/nt74Rm+PcfnirXGEdhZleTwGC2LMnuKTeeTIlI82xb5loBBoXNYzr2ezCroPSMtilK8EZIfcNZwOcHN+ib1Lg=="],
|
|
148
|
+
|
|
111
149
|
"dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="],
|
|
112
150
|
|
|
113
151
|
"emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="],
|
|
114
152
|
|
|
153
|
+
"entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="],
|
|
154
|
+
|
|
115
155
|
"environment": ["environment@1.1.0", "", {}, "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q=="],
|
|
116
156
|
|
|
117
157
|
"es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="],
|
|
@@ -144,6 +184,8 @@
|
|
|
144
184
|
|
|
145
185
|
"formdata-node": ["formdata-node@4.4.1", "", { "dependencies": { "node-domexception": "1.0.0", "web-streams-polyfill": "4.0.0-beta.3" } }, "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ=="],
|
|
146
186
|
|
|
187
|
+
"fs-extra": ["fs-extra@11.2.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw=="],
|
|
188
|
+
|
|
147
189
|
"function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="],
|
|
148
190
|
|
|
149
191
|
"get-east-asian-width": ["get-east-asian-width@1.4.0", "", {}, "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q=="],
|
|
@@ -156,6 +198,8 @@
|
|
|
156
198
|
|
|
157
199
|
"gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="],
|
|
158
200
|
|
|
201
|
+
"graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="],
|
|
202
|
+
|
|
159
203
|
"has-property-descriptors": ["has-property-descriptors@1.0.2", "", { "dependencies": { "es-define-property": "^1.0.0" } }, "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg=="],
|
|
160
204
|
|
|
161
205
|
"has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="],
|
|
@@ -184,6 +228,8 @@
|
|
|
184
228
|
|
|
185
229
|
"is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="],
|
|
186
230
|
|
|
231
|
+
"is-plain-obj": ["is-plain-obj@1.1.0", "", {}, "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg=="],
|
|
232
|
+
|
|
187
233
|
"is-stream": ["is-stream@3.0.0", "", {}, "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA=="],
|
|
188
234
|
|
|
189
235
|
"is-typed-array": ["is-typed-array@1.1.15", "", { "dependencies": { "which-typed-array": "^1.1.16" } }, "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ=="],
|
|
@@ -196,16 +242,26 @@
|
|
|
196
242
|
|
|
197
243
|
"json-schema": ["json-schema@0.4.0", "", {}, "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="],
|
|
198
244
|
|
|
245
|
+
"jsonfile": ["jsonfile@6.2.0", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg=="],
|
|
246
|
+
|
|
247
|
+
"kind-of": ["kind-of@6.0.3", "", {}, "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="],
|
|
248
|
+
|
|
249
|
+
"lcov-badge2": ["lcov-badge2@1.1.3", "", { "dependencies": { "badge-up2": "^2.0.1", "minimist": "^1.2.5", "minimist-options": "^4.1.0", "parse-lcov": "^1.0.4" }, "bin": { "lcov-badge2": "main.js" } }, "sha512-mz/oPx+G4qfFeN84giwi5Nbft2RxT57N/BO9rAUh/oeP4hUBOoajN65SIl4VOP5OUJ0rrOgK1kHPgrRSwWe6EA=="],
|
|
250
|
+
|
|
199
251
|
"lilconfig": ["lilconfig@3.1.3", "", {}, "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw=="],
|
|
200
252
|
|
|
201
253
|
"lint-staged": ["lint-staged@15.5.2", "", { "dependencies": { "chalk": "^5.4.1", "commander": "^13.1.0", "debug": "^4.4.0", "execa": "^8.0.1", "lilconfig": "^3.1.3", "listr2": "^8.2.5", "micromatch": "^4.0.8", "pidtree": "^0.6.0", "string-argv": "^0.3.2", "yaml": "^2.7.0" }, "bin": { "lint-staged": "bin/lint-staged.js" } }, "sha512-YUSOLq9VeRNAo/CTaVmhGDKG+LBtA8KF1X4K5+ykMSwWST1vDxJRB2kv2COgLb1fvpCo+A/y9A0G0znNVmdx4w=="],
|
|
202
254
|
|
|
203
255
|
"listr2": ["listr2@8.3.3", "", { "dependencies": { "cli-truncate": "^4.0.0", "colorette": "^2.0.20", "eventemitter3": "^5.0.1", "log-update": "^6.1.0", "rfdc": "^1.4.1", "wrap-ansi": "^9.0.0" } }, "sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ=="],
|
|
204
256
|
|
|
257
|
+
"lodash.get": ["lodash.get@4.4.2", "", {}, "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ=="],
|
|
258
|
+
|
|
205
259
|
"log-update": ["log-update@6.1.0", "", { "dependencies": { "ansi-escapes": "^7.0.0", "cli-cursor": "^5.0.0", "slice-ansi": "^7.1.0", "strip-ansi": "^7.1.0", "wrap-ansi": "^9.0.0" } }, "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w=="],
|
|
206
260
|
|
|
207
261
|
"math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="],
|
|
208
262
|
|
|
263
|
+
"mdn-data": ["mdn-data@2.12.2", "", {}, "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA=="],
|
|
264
|
+
|
|
209
265
|
"merge-stream": ["merge-stream@2.0.0", "", {}, "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="],
|
|
210
266
|
|
|
211
267
|
"micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="],
|
|
@@ -220,8 +276,12 @@
|
|
|
220
276
|
|
|
221
277
|
"mimic-response": ["mimic-response@3.1.0", "", {}, "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ=="],
|
|
222
278
|
|
|
279
|
+
"mini-svg-data-uri": ["mini-svg-data-uri@1.4.4", "", { "bin": { "mini-svg-data-uri": "cli.js" } }, "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg=="],
|
|
280
|
+
|
|
223
281
|
"minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="],
|
|
224
282
|
|
|
283
|
+
"minimist-options": ["minimist-options@4.1.0", "", { "dependencies": { "arrify": "^1.0.1", "is-plain-obj": "^1.1.0", "kind-of": "^6.0.3" } }, "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A=="],
|
|
284
|
+
|
|
225
285
|
"minimisted": ["minimisted@2.0.1", "", { "dependencies": { "minimist": "^1.2.5" } }, "sha512-1oPjfuLQa2caorJUM8HV8lGgWCc0qqAO1MNv/k05G4qslmsndV/5WdNZrqCiyqiz3wohia2Ij2B7w2Dr7/IyrA=="],
|
|
226
286
|
|
|
227
287
|
"ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
|
|
@@ -232,6 +292,8 @@
|
|
|
232
292
|
|
|
233
293
|
"npm-run-path": ["npm-run-path@5.3.0", "", { "dependencies": { "path-key": "^4.0.0" } }, "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ=="],
|
|
234
294
|
|
|
295
|
+
"nth-check": ["nth-check@2.1.1", "", { "dependencies": { "boolbase": "^1.0.0" } }, "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="],
|
|
296
|
+
|
|
235
297
|
"once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="],
|
|
236
298
|
|
|
237
299
|
"onetime": ["onetime@6.0.0", "", { "dependencies": { "mimic-fn": "^4.0.0" } }, "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ=="],
|
|
@@ -240,10 +302,14 @@
|
|
|
240
302
|
|
|
241
303
|
"pako": ["pako@1.0.11", "", {}, "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="],
|
|
242
304
|
|
|
305
|
+
"parse-lcov": ["parse-lcov@1.0.4", "", {}, "sha512-jE72M66VFyZJ0KYKnmaV70U/Y6FZyPoBCtJ6we5rDIVpWFR/GEkdCSLJn/R3UHJWZ3e3Qf3jAm2AUrmkaso+wA=="],
|
|
306
|
+
|
|
243
307
|
"path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="],
|
|
244
308
|
|
|
245
309
|
"pend": ["pend@1.2.0", "", {}, "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="],
|
|
246
310
|
|
|
311
|
+
"picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="],
|
|
312
|
+
|
|
247
313
|
"picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],
|
|
248
314
|
|
|
249
315
|
"pidtree": ["pidtree@0.6.0", "", { "bin": { "pidtree": "bin/pidtree.js" } }, "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g=="],
|
|
@@ -266,6 +332,8 @@
|
|
|
266
332
|
|
|
267
333
|
"safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="],
|
|
268
334
|
|
|
335
|
+
"sax": ["sax@1.4.4", "", {}, "sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw=="],
|
|
336
|
+
|
|
269
337
|
"set-function-length": ["set-function-length@1.2.2", "", { "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2" } }, "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg=="],
|
|
270
338
|
|
|
271
339
|
"sha.js": ["sha.js@2.4.12", "", { "dependencies": { "inherits": "^2.0.4", "safe-buffer": "^5.2.1", "to-buffer": "^1.2.0" }, "bin": { "sha.js": "bin.js" } }, "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w=="],
|
|
@@ -282,6 +350,8 @@
|
|
|
282
350
|
|
|
283
351
|
"slice-ansi": ["slice-ansi@5.0.0", "", { "dependencies": { "ansi-styles": "^6.0.0", "is-fullwidth-code-point": "^4.0.0" } }, "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ=="],
|
|
284
352
|
|
|
353
|
+
"source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="],
|
|
354
|
+
|
|
285
355
|
"string-argv": ["string-argv@0.3.2", "", {}, "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q=="],
|
|
286
356
|
|
|
287
357
|
"string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="],
|
|
@@ -292,6 +362,8 @@
|
|
|
292
362
|
|
|
293
363
|
"strip-final-newline": ["strip-final-newline@3.0.0", "", {}, "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw=="],
|
|
294
364
|
|
|
365
|
+
"svgo": ["svgo@4.0.0", "", { "dependencies": { "commander": "^11.1.0", "css-select": "^5.1.0", "css-tree": "^3.0.1", "css-what": "^6.1.0", "csso": "^5.0.5", "picocolors": "^1.1.1", "sax": "^1.4.1" }, "bin": "./bin/svgo.js" }, "sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw=="],
|
|
366
|
+
|
|
295
367
|
"to-buffer": ["to-buffer@1.2.2", "", { "dependencies": { "isarray": "^2.0.5", "safe-buffer": "^5.2.1", "typed-array-buffer": "^1.0.3" } }, "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw=="],
|
|
296
368
|
|
|
297
369
|
"to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="],
|
|
@@ -304,6 +376,8 @@
|
|
|
304
376
|
|
|
305
377
|
"undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="],
|
|
306
378
|
|
|
379
|
+
"universalify": ["universalify@2.0.1", "", {}, "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="],
|
|
380
|
+
|
|
307
381
|
"web-streams-polyfill": ["web-streams-polyfill@4.0.0-beta.3", "", {}, "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug=="],
|
|
308
382
|
|
|
309
383
|
"webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="],
|
|
@@ -326,6 +400,8 @@
|
|
|
326
400
|
|
|
327
401
|
"@opencode-ai/plugin/zod": ["zod@4.1.8", "", {}, "sha512-5R1P+WwQqmmMIEACyzSvo4JXHY5WiAFHRMg+zBZKgKS+Q1viRa0C1hmUKtHltoIFKtIdki3pRxkmpP74jnNYHQ=="],
|
|
328
402
|
|
|
403
|
+
"csso/css-tree": ["css-tree@2.2.1", "", { "dependencies": { "mdn-data": "2.0.28", "source-map-js": "^1.0.1" } }, "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA=="],
|
|
404
|
+
|
|
329
405
|
"log-update/slice-ansi": ["slice-ansi@7.1.2", "", { "dependencies": { "ansi-styles": "^6.2.1", "is-fullwidth-code-point": "^5.0.0" } }, "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w=="],
|
|
330
406
|
|
|
331
407
|
"npm-run-path/path-key": ["path-key@4.0.0", "", {}, "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ=="],
|
|
@@ -334,6 +410,10 @@
|
|
|
334
410
|
|
|
335
411
|
"restore-cursor/onetime": ["onetime@7.0.0", "", { "dependencies": { "mimic-function": "^5.0.0" } }, "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ=="],
|
|
336
412
|
|
|
413
|
+
"svgo/commander": ["commander@11.1.0", "", {}, "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ=="],
|
|
414
|
+
|
|
415
|
+
"csso/css-tree/mdn-data": ["mdn-data@2.0.28", "", {}, "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g=="],
|
|
416
|
+
|
|
337
417
|
"log-update/slice-ansi/is-fullwidth-code-point": ["is-fullwidth-code-point@5.1.0", "", { "dependencies": { "get-east-asian-width": "^1.3.1" } }, "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ=="],
|
|
338
418
|
|
|
339
419
|
"openai/@types/node/undici-types": ["undici-types@5.26.5", "", {}, "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="],
|
package/bunfig.toml
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="114" height="20"><defs><linearGradient id="smooth" x2="0" y2="100%"><stop offset="0" stop-color="#aaa" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><style>text{font-size:11px;font-family:Verdana,DejaVu Sans,Geneva,sans-serif}text.shadow{fill:#010101;fill-opacity:.3}text.high{fill:#fff}</style><mask id="round"><rect width="100%" height="100%" fill="#fff" rx="3"/></mask></defs><g id="bg" mask="url(#round)"><path fill="#555" d="M0 0h62v20H0z"/><path fill="#a4a61d" d="M62 0h52v20H62z"/><path fill="url(#smooth)" d="M0 0h114v20H0z"/></g><g id="fg"><text x="5.5" y="15" class="shadow">coverage</text><text x="5" y="14" class="high">coverage</text><text x="67.5" y="15" class="shadow">91.99%</text><text x="67" y="14" class="high">91.99%</text></g></svg>
|
package/dist/index.js
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
import { createBuiltinMcps } from './morph/mcps';
|
|
2
2
|
import { createModelRouterHook } from './morph/router';
|
|
3
|
-
import { MORPH_ROUTER_ENABLED } from './shared/config';
|
|
4
3
|
const MorphOpenCodePlugin = async () => {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
4
|
+
const builtinMcps = createBuiltinMcps();
|
|
5
|
+
const routerHook = createModelRouterHook();
|
|
6
|
+
return {
|
|
7
|
+
config: async (currentConfig) => {
|
|
8
|
+
currentConfig.mcp = {
|
|
9
|
+
...currentConfig.mcp,
|
|
10
|
+
...builtinMcps,
|
|
11
|
+
};
|
|
12
|
+
},
|
|
13
|
+
...routerHook,
|
|
14
|
+
};
|
|
16
15
|
};
|
|
17
16
|
export default MorphOpenCodePlugin;
|
package/dist/morph/mcps.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { API_KEY } from '../shared/config';
|
|
2
2
|
export function createBuiltinMcps() {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
3
|
+
return {
|
|
4
|
+
morph_mcp: {
|
|
5
|
+
type: 'local',
|
|
6
|
+
command: ['npx', '-y', '@morphllm/morphmcp'],
|
|
7
|
+
environment: {
|
|
8
|
+
MORPH_API_KEY: API_KEY,
|
|
9
|
+
ENABLED_TOOLS: 'edit_file,warpgrep_codebase_search',
|
|
10
|
+
},
|
|
11
|
+
enabled: true,
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
14
|
}
|
|
15
15
|
export default createBuiltinMcps;
|
package/dist/morph/mcps.test.js
CHANGED
|
@@ -1,39 +1,39 @@
|
|
|
1
1
|
import { describe, it, expect, vi } from 'bun:test';
|
|
2
2
|
vi.mock('../shared/config', () => ({
|
|
3
|
-
|
|
3
|
+
API_KEY: 'test-api-key-123',
|
|
4
4
|
}));
|
|
5
5
|
import { createBuiltinMcps } from './mcps';
|
|
6
6
|
describe('mcps.ts', () => {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
describe('createBuiltinMcps', () => {
|
|
8
|
+
it('should create morph_mcp configuration', () => {
|
|
9
|
+
const mcps = createBuiltinMcps();
|
|
10
|
+
expect(mcps).toHaveProperty('morph_mcp');
|
|
11
|
+
expect(mcps.morph_mcp.type).toBe('local');
|
|
12
|
+
expect(mcps.morph_mcp.enabled).toBe(true);
|
|
13
|
+
});
|
|
14
|
+
it('should set correct command for morph_mcp', () => {
|
|
15
|
+
const mcps = createBuiltinMcps();
|
|
16
|
+
expect(mcps.morph_mcp.command).toEqual([
|
|
17
|
+
'npx',
|
|
18
|
+
'-y',
|
|
19
|
+
'@morphllm/morphmcp',
|
|
20
|
+
]);
|
|
21
|
+
});
|
|
22
|
+
it('should set MORPH_API_KEY in environment', () => {
|
|
23
|
+
const mcps = createBuiltinMcps();
|
|
24
|
+
const env = mcps.morph_mcp.environment;
|
|
25
|
+
expect(env).toBeDefined();
|
|
26
|
+
expect(env?.MORPH_API_KEY).toBe('test-api-key-123');
|
|
27
|
+
});
|
|
28
|
+
it('should set ENABLED_TOOLS environment variable', () => {
|
|
29
|
+
const mcps = createBuiltinMcps();
|
|
30
|
+
const env = mcps.morph_mcp.environment;
|
|
31
|
+
expect(env).toBeDefined();
|
|
32
|
+
expect(env?.ENABLED_TOOLS).toBe('edit_file,warpgrep_codebase_search');
|
|
33
|
+
});
|
|
34
|
+
it('should only create morph_mcp key', () => {
|
|
35
|
+
const mcps = createBuiltinMcps();
|
|
36
|
+
expect(Object.keys(mcps)).toEqual(['morph_mcp']);
|
|
37
|
+
});
|
|
13
38
|
});
|
|
14
|
-
it('should set correct command for morph_mcp', () => {
|
|
15
|
-
const mcps = createBuiltinMcps();
|
|
16
|
-
expect(mcps.morph_mcp.command).toEqual([
|
|
17
|
-
'npx',
|
|
18
|
-
'-y',
|
|
19
|
-
'@morphllm/morphmcp',
|
|
20
|
-
]);
|
|
21
|
-
});
|
|
22
|
-
it('should set MORPH_API_KEY in environment', () => {
|
|
23
|
-
const mcps = createBuiltinMcps();
|
|
24
|
-
const env = mcps.morph_mcp.environment;
|
|
25
|
-
expect(env).toBeDefined();
|
|
26
|
-
expect(env?.MORPH_API_KEY).toBe('test-api-key-123');
|
|
27
|
-
});
|
|
28
|
-
it('should set ENABLED_TOOLS environment variable', () => {
|
|
29
|
-
const mcps = createBuiltinMcps();
|
|
30
|
-
const env = mcps.morph_mcp.environment;
|
|
31
|
-
expect(env).toBeDefined();
|
|
32
|
-
expect(env?.ENABLED_TOOLS).toBe('edit_file,warpgrep_codebase_search');
|
|
33
|
-
});
|
|
34
|
-
it('should only create morph_mcp key', () => {
|
|
35
|
-
const mcps = createBuiltinMcps();
|
|
36
|
-
expect(Object.keys(mcps)).toEqual(['morph_mcp']);
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
39
|
});
|
package/dist/morph/router.d.ts
CHANGED
|
@@ -1,27 +1,22 @@
|
|
|
1
1
|
import type { Part, UserMessage } from '@opencode-ai/sdk';
|
|
2
2
|
import type { RouterInput, RawRouterResult } from '@morphllm/morphsdk';
|
|
3
3
|
export declare function createModelRouterHook(): {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
parts: Part[];
|
|
19
|
-
}
|
|
20
|
-
) => Promise<void>;
|
|
4
|
+
'chat.message': (input: {
|
|
5
|
+
sessionID: string;
|
|
6
|
+
agent?: string;
|
|
7
|
+
model?: {
|
|
8
|
+
providerID: string;
|
|
9
|
+
modelID: string;
|
|
10
|
+
};
|
|
11
|
+
messageID?: string;
|
|
12
|
+
variant?: string;
|
|
13
|
+
classify?: (args: RouterInput) => Promise<RawRouterResult>;
|
|
14
|
+
}, output: {
|
|
15
|
+
message: UserMessage;
|
|
16
|
+
parts: Part[];
|
|
17
|
+
}) => Promise<void>;
|
|
21
18
|
};
|
|
22
|
-
export declare function extractPromptText(
|
|
23
|
-
parts: Array<{
|
|
19
|
+
export declare function extractPromptText(parts: Array<{
|
|
24
20
|
type: string;
|
|
25
21
|
text?: string;
|
|
26
|
-
|
|
27
|
-
): string;
|
|
22
|
+
}>): string;
|