testdriverai 7.9.56-test → 7.9.57-test
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/docs/_data/examples-manifest.json +42 -42
- package/docs/v7/examples/ai.mdx +1 -1
- package/docs/v7/examples/assert.mdx +1 -1
- package/docs/v7/examples/chrome-extension.mdx +1 -1
- package/docs/v7/examples/element-not-found.mdx +1 -1
- package/docs/v7/examples/findall-coffee-icons.mdx +1 -1
- package/docs/v7/examples/hover-image.mdx +1 -1
- package/docs/v7/examples/hover-text-with-description.mdx +1 -1
- package/docs/v7/examples/hover-text.mdx +1 -1
- package/docs/v7/examples/installer.mdx +1 -1
- package/docs/v7/examples/launch-vscode-linux.mdx +1 -1
- package/docs/v7/examples/parse.mdx +1 -1
- package/docs/v7/examples/press-keys.mdx +1 -1
- package/docs/v7/examples/scroll-keyboard.mdx +1 -1
- package/docs/v7/examples/scroll.mdx +1 -1
- package/docs/v7/examples/type.mdx +1 -1
- package/interfaces/vitest-plugin.mjs +7 -1
- package/lib/vitest/hooks.mjs +11 -0
- package/mcp-server/dist/env-utils.d.ts +45 -0
- package/mcp-server/dist/env-utils.js +63 -0
- package/mcp-server/dist/provision-types.d.ts +6 -2
- package/mcp-server/dist/provision-types.js +3 -1
- package/mcp-server/dist/server.mjs +20 -3
- package/mcp-server/package-lock.json +384 -1
- package/mcp-server/package.json +4 -2
- package/mcp-server/src/env-utils.test.ts +82 -0
- package/mcp-server/src/env-utils.ts +77 -0
- package/mcp-server/src/provision-types.ts +4 -1
- package/mcp-server/src/server.ts +22 -3
- package/mcp-server/tsconfig.json +1 -1
- package/mcp-server/vitest.config.ts +7 -0
- package/package.json +1 -1
|
@@ -21,7 +21,8 @@
|
|
|
21
21
|
"tsx": "^4.19.0",
|
|
22
22
|
"typescript": "^5.6.0",
|
|
23
23
|
"vite": "^6.0.0",
|
|
24
|
-
"vite-plugin-singlefile": "^2.3.0"
|
|
24
|
+
"vite-plugin-singlefile": "^2.3.0",
|
|
25
|
+
"vitest": "^4.0.18"
|
|
25
26
|
}
|
|
26
27
|
},
|
|
27
28
|
"node_modules/@esbuild/aix-ppc64": {
|
|
@@ -478,6 +479,13 @@
|
|
|
478
479
|
"hono": "^4"
|
|
479
480
|
}
|
|
480
481
|
},
|
|
482
|
+
"node_modules/@jridgewell/sourcemap-codec": {
|
|
483
|
+
"version": "1.5.5",
|
|
484
|
+
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
|
|
485
|
+
"integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
|
|
486
|
+
"dev": true,
|
|
487
|
+
"license": "MIT"
|
|
488
|
+
},
|
|
481
489
|
"node_modules/@modelcontextprotocol/ext-apps": {
|
|
482
490
|
"version": "1.0.1",
|
|
483
491
|
"resolved": "https://registry.npmjs.org/@modelcontextprotocol/ext-apps/-/ext-apps-1.0.1.tgz",
|
|
@@ -1693,6 +1701,24 @@
|
|
|
1693
1701
|
"@opentelemetry/semantic-conventions": "^1.34.0"
|
|
1694
1702
|
}
|
|
1695
1703
|
},
|
|
1704
|
+
"node_modules/@standard-schema/spec": {
|
|
1705
|
+
"version": "1.1.0",
|
|
1706
|
+
"resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz",
|
|
1707
|
+
"integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==",
|
|
1708
|
+
"dev": true,
|
|
1709
|
+
"license": "MIT"
|
|
1710
|
+
},
|
|
1711
|
+
"node_modules/@types/chai": {
|
|
1712
|
+
"version": "5.2.3",
|
|
1713
|
+
"resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz",
|
|
1714
|
+
"integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==",
|
|
1715
|
+
"dev": true,
|
|
1716
|
+
"license": "MIT",
|
|
1717
|
+
"dependencies": {
|
|
1718
|
+
"@types/deep-eql": "*",
|
|
1719
|
+
"assertion-error": "^2.0.1"
|
|
1720
|
+
}
|
|
1721
|
+
},
|
|
1696
1722
|
"node_modules/@types/connect": {
|
|
1697
1723
|
"version": "3.4.38",
|
|
1698
1724
|
"resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
|
|
@@ -1702,6 +1728,13 @@
|
|
|
1702
1728
|
"@types/node": "*"
|
|
1703
1729
|
}
|
|
1704
1730
|
},
|
|
1731
|
+
"node_modules/@types/deep-eql": {
|
|
1732
|
+
"version": "4.0.2",
|
|
1733
|
+
"resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz",
|
|
1734
|
+
"integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==",
|
|
1735
|
+
"dev": true,
|
|
1736
|
+
"license": "MIT"
|
|
1737
|
+
},
|
|
1705
1738
|
"node_modules/@types/estree": {
|
|
1706
1739
|
"version": "1.0.8",
|
|
1707
1740
|
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
|
|
@@ -1769,6 +1802,119 @@
|
|
|
1769
1802
|
"@types/node": "*"
|
|
1770
1803
|
}
|
|
1771
1804
|
},
|
|
1805
|
+
"node_modules/@vitest/expect": {
|
|
1806
|
+
"version": "4.1.5",
|
|
1807
|
+
"resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.5.tgz",
|
|
1808
|
+
"integrity": "sha512-PWBaRY5JoKuRnHlUHfpV/KohFylaDZTupcXN1H9vYryNLOnitSw60Mw9IAE2r67NbwwzBw/Cc/8q9BK3kIX8Kw==",
|
|
1809
|
+
"dev": true,
|
|
1810
|
+
"license": "MIT",
|
|
1811
|
+
"dependencies": {
|
|
1812
|
+
"@standard-schema/spec": "^1.1.0",
|
|
1813
|
+
"@types/chai": "^5.2.2",
|
|
1814
|
+
"@vitest/spy": "4.1.5",
|
|
1815
|
+
"@vitest/utils": "4.1.5",
|
|
1816
|
+
"chai": "^6.2.2",
|
|
1817
|
+
"tinyrainbow": "^3.1.0"
|
|
1818
|
+
},
|
|
1819
|
+
"funding": {
|
|
1820
|
+
"url": "https://opencollective.com/vitest"
|
|
1821
|
+
}
|
|
1822
|
+
},
|
|
1823
|
+
"node_modules/@vitest/mocker": {
|
|
1824
|
+
"version": "4.1.5",
|
|
1825
|
+
"resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.5.tgz",
|
|
1826
|
+
"integrity": "sha512-/x2EmFC4mT4NNzqvC3fmesuV97w5FC903KPmey4gsnJiMQ3Be1IlDKVaDaG8iqaLFHqJ2FVEkxZk5VmeLjIItw==",
|
|
1827
|
+
"dev": true,
|
|
1828
|
+
"license": "MIT",
|
|
1829
|
+
"dependencies": {
|
|
1830
|
+
"@vitest/spy": "4.1.5",
|
|
1831
|
+
"estree-walker": "^3.0.3",
|
|
1832
|
+
"magic-string": "^0.30.21"
|
|
1833
|
+
},
|
|
1834
|
+
"funding": {
|
|
1835
|
+
"url": "https://opencollective.com/vitest"
|
|
1836
|
+
},
|
|
1837
|
+
"peerDependencies": {
|
|
1838
|
+
"msw": "^2.4.9",
|
|
1839
|
+
"vite": "^6.0.0 || ^7.0.0 || ^8.0.0"
|
|
1840
|
+
},
|
|
1841
|
+
"peerDependenciesMeta": {
|
|
1842
|
+
"msw": {
|
|
1843
|
+
"optional": true
|
|
1844
|
+
},
|
|
1845
|
+
"vite": {
|
|
1846
|
+
"optional": true
|
|
1847
|
+
}
|
|
1848
|
+
}
|
|
1849
|
+
},
|
|
1850
|
+
"node_modules/@vitest/pretty-format": {
|
|
1851
|
+
"version": "4.1.5",
|
|
1852
|
+
"resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.5.tgz",
|
|
1853
|
+
"integrity": "sha512-7I3q6l5qr03dVfMX2wCo9FxwSJbPdwKjy2uu/YPpU3wfHvIL4QHwVRp57OfGrDFeUJ8/8QdfBKIV12FTtLn00g==",
|
|
1854
|
+
"dev": true,
|
|
1855
|
+
"license": "MIT",
|
|
1856
|
+
"dependencies": {
|
|
1857
|
+
"tinyrainbow": "^3.1.0"
|
|
1858
|
+
},
|
|
1859
|
+
"funding": {
|
|
1860
|
+
"url": "https://opencollective.com/vitest"
|
|
1861
|
+
}
|
|
1862
|
+
},
|
|
1863
|
+
"node_modules/@vitest/runner": {
|
|
1864
|
+
"version": "4.1.5",
|
|
1865
|
+
"resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.5.tgz",
|
|
1866
|
+
"integrity": "sha512-2D+o7Pr82IEO46YPpoA/YU0neeyr6FTerQb5Ro7BUnBuv6NQtT/kmVnczngiMEBhzgqz2UZYl5gArejsyERDSQ==",
|
|
1867
|
+
"dev": true,
|
|
1868
|
+
"license": "MIT",
|
|
1869
|
+
"dependencies": {
|
|
1870
|
+
"@vitest/utils": "4.1.5",
|
|
1871
|
+
"pathe": "^2.0.3"
|
|
1872
|
+
},
|
|
1873
|
+
"funding": {
|
|
1874
|
+
"url": "https://opencollective.com/vitest"
|
|
1875
|
+
}
|
|
1876
|
+
},
|
|
1877
|
+
"node_modules/@vitest/snapshot": {
|
|
1878
|
+
"version": "4.1.5",
|
|
1879
|
+
"resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.5.tgz",
|
|
1880
|
+
"integrity": "sha512-zypXEt4KH/XgKGPUz4eC2AvErYx0My5hfL8oDb1HzGFpEk1P62bxSohdyOmvz+d9UJwanI68MKwr2EquOaOgMQ==",
|
|
1881
|
+
"dev": true,
|
|
1882
|
+
"license": "MIT",
|
|
1883
|
+
"dependencies": {
|
|
1884
|
+
"@vitest/pretty-format": "4.1.5",
|
|
1885
|
+
"@vitest/utils": "4.1.5",
|
|
1886
|
+
"magic-string": "^0.30.21",
|
|
1887
|
+
"pathe": "^2.0.3"
|
|
1888
|
+
},
|
|
1889
|
+
"funding": {
|
|
1890
|
+
"url": "https://opencollective.com/vitest"
|
|
1891
|
+
}
|
|
1892
|
+
},
|
|
1893
|
+
"node_modules/@vitest/spy": {
|
|
1894
|
+
"version": "4.1.5",
|
|
1895
|
+
"resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.5.tgz",
|
|
1896
|
+
"integrity": "sha512-2lNOsh6+R2Idnf1TCZqSwYlKN2E/iDlD8sgU59kYVl+OMDmvldO1VDk39smRfpUNwYpNRVn3w4YfuC7KfbBnkQ==",
|
|
1897
|
+
"dev": true,
|
|
1898
|
+
"license": "MIT",
|
|
1899
|
+
"funding": {
|
|
1900
|
+
"url": "https://opencollective.com/vitest"
|
|
1901
|
+
}
|
|
1902
|
+
},
|
|
1903
|
+
"node_modules/@vitest/utils": {
|
|
1904
|
+
"version": "4.1.5",
|
|
1905
|
+
"resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.5.tgz",
|
|
1906
|
+
"integrity": "sha512-76wdkrmfXfqGjueGgnb45ITPyUi1ycZ4IHgC2bhPDUfWHklY/q3MdLOAB+TF1e6xfl8NxNY0ZYaPCFNWSsw3Ug==",
|
|
1907
|
+
"dev": true,
|
|
1908
|
+
"license": "MIT",
|
|
1909
|
+
"dependencies": {
|
|
1910
|
+
"@vitest/pretty-format": "4.1.5",
|
|
1911
|
+
"convert-source-map": "^2.0.0",
|
|
1912
|
+
"tinyrainbow": "^3.1.0"
|
|
1913
|
+
},
|
|
1914
|
+
"funding": {
|
|
1915
|
+
"url": "https://opencollective.com/vitest"
|
|
1916
|
+
}
|
|
1917
|
+
},
|
|
1772
1918
|
"node_modules/accepts": {
|
|
1773
1919
|
"version": "2.0.0",
|
|
1774
1920
|
"resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz",
|
|
@@ -1836,6 +1982,16 @@
|
|
|
1836
1982
|
}
|
|
1837
1983
|
}
|
|
1838
1984
|
},
|
|
1985
|
+
"node_modules/assertion-error": {
|
|
1986
|
+
"version": "2.0.1",
|
|
1987
|
+
"resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
|
|
1988
|
+
"integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==",
|
|
1989
|
+
"dev": true,
|
|
1990
|
+
"license": "MIT",
|
|
1991
|
+
"engines": {
|
|
1992
|
+
"node": ">=12"
|
|
1993
|
+
}
|
|
1994
|
+
},
|
|
1839
1995
|
"node_modules/balanced-match": {
|
|
1840
1996
|
"version": "1.0.2",
|
|
1841
1997
|
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
|
@@ -1926,6 +2082,16 @@
|
|
|
1926
2082
|
"url": "https://github.com/sponsors/ljharb"
|
|
1927
2083
|
}
|
|
1928
2084
|
},
|
|
2085
|
+
"node_modules/chai": {
|
|
2086
|
+
"version": "6.2.2",
|
|
2087
|
+
"resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz",
|
|
2088
|
+
"integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==",
|
|
2089
|
+
"dev": true,
|
|
2090
|
+
"license": "MIT",
|
|
2091
|
+
"engines": {
|
|
2092
|
+
"node": ">=18"
|
|
2093
|
+
}
|
|
2094
|
+
},
|
|
1929
2095
|
"node_modules/cjs-module-lexer": {
|
|
1930
2096
|
"version": "1.4.3",
|
|
1931
2097
|
"resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz",
|
|
@@ -1954,6 +2120,13 @@
|
|
|
1954
2120
|
"node": ">= 0.6"
|
|
1955
2121
|
}
|
|
1956
2122
|
},
|
|
2123
|
+
"node_modules/convert-source-map": {
|
|
2124
|
+
"version": "2.0.0",
|
|
2125
|
+
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
|
|
2126
|
+
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
|
|
2127
|
+
"dev": true,
|
|
2128
|
+
"license": "MIT"
|
|
2129
|
+
},
|
|
1957
2130
|
"node_modules/cookie": {
|
|
1958
2131
|
"version": "0.7.2",
|
|
1959
2132
|
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
|
|
@@ -2095,6 +2268,13 @@
|
|
|
2095
2268
|
"node": ">= 0.4"
|
|
2096
2269
|
}
|
|
2097
2270
|
},
|
|
2271
|
+
"node_modules/es-module-lexer": {
|
|
2272
|
+
"version": "2.0.0",
|
|
2273
|
+
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz",
|
|
2274
|
+
"integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==",
|
|
2275
|
+
"dev": true,
|
|
2276
|
+
"license": "MIT"
|
|
2277
|
+
},
|
|
2098
2278
|
"node_modules/es-object-atoms": {
|
|
2099
2279
|
"version": "1.1.1",
|
|
2100
2280
|
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
|
|
@@ -2155,6 +2335,16 @@
|
|
|
2155
2335
|
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
|
|
2156
2336
|
"license": "MIT"
|
|
2157
2337
|
},
|
|
2338
|
+
"node_modules/estree-walker": {
|
|
2339
|
+
"version": "3.0.3",
|
|
2340
|
+
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
|
|
2341
|
+
"integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
|
|
2342
|
+
"dev": true,
|
|
2343
|
+
"license": "MIT",
|
|
2344
|
+
"dependencies": {
|
|
2345
|
+
"@types/estree": "^1.0.0"
|
|
2346
|
+
}
|
|
2347
|
+
},
|
|
2158
2348
|
"node_modules/etag": {
|
|
2159
2349
|
"version": "1.8.1",
|
|
2160
2350
|
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
|
|
@@ -2185,6 +2375,16 @@
|
|
|
2185
2375
|
"node": ">=18.0.0"
|
|
2186
2376
|
}
|
|
2187
2377
|
},
|
|
2378
|
+
"node_modules/expect-type": {
|
|
2379
|
+
"version": "1.3.0",
|
|
2380
|
+
"resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz",
|
|
2381
|
+
"integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==",
|
|
2382
|
+
"dev": true,
|
|
2383
|
+
"license": "Apache-2.0",
|
|
2384
|
+
"engines": {
|
|
2385
|
+
"node": ">=12.0.0"
|
|
2386
|
+
}
|
|
2387
|
+
},
|
|
2188
2388
|
"node_modules/express": {
|
|
2189
2389
|
"version": "5.2.1",
|
|
2190
2390
|
"resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz",
|
|
@@ -2582,6 +2782,16 @@
|
|
|
2582
2782
|
"integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==",
|
|
2583
2783
|
"license": "BSD-2-Clause"
|
|
2584
2784
|
},
|
|
2785
|
+
"node_modules/magic-string": {
|
|
2786
|
+
"version": "0.30.21",
|
|
2787
|
+
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
|
|
2788
|
+
"integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
|
|
2789
|
+
"dev": true,
|
|
2790
|
+
"license": "MIT",
|
|
2791
|
+
"dependencies": {
|
|
2792
|
+
"@jridgewell/sourcemap-codec": "^1.5.5"
|
|
2793
|
+
}
|
|
2794
|
+
},
|
|
2585
2795
|
"node_modules/math-intrinsics": {
|
|
2586
2796
|
"version": "1.1.0",
|
|
2587
2797
|
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
|
|
@@ -2740,6 +2950,17 @@
|
|
|
2740
2950
|
"url": "https://github.com/sponsors/ljharb"
|
|
2741
2951
|
}
|
|
2742
2952
|
},
|
|
2953
|
+
"node_modules/obug": {
|
|
2954
|
+
"version": "2.1.1",
|
|
2955
|
+
"resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz",
|
|
2956
|
+
"integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==",
|
|
2957
|
+
"dev": true,
|
|
2958
|
+
"funding": [
|
|
2959
|
+
"https://github.com/sponsors/sxzz",
|
|
2960
|
+
"https://opencollective.com/debug"
|
|
2961
|
+
],
|
|
2962
|
+
"license": "MIT"
|
|
2963
|
+
},
|
|
2743
2964
|
"node_modules/on-finished": {
|
|
2744
2965
|
"version": "2.4.1",
|
|
2745
2966
|
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
|
|
@@ -2795,6 +3016,13 @@
|
|
|
2795
3016
|
"url": "https://opencollective.com/express"
|
|
2796
3017
|
}
|
|
2797
3018
|
},
|
|
3019
|
+
"node_modules/pathe": {
|
|
3020
|
+
"version": "2.0.3",
|
|
3021
|
+
"resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
|
|
3022
|
+
"integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
|
|
3023
|
+
"dev": true,
|
|
3024
|
+
"license": "MIT"
|
|
3025
|
+
},
|
|
2798
3026
|
"node_modules/pg-int8": {
|
|
2799
3027
|
"version": "1.0.1",
|
|
2800
3028
|
"resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz",
|
|
@@ -3257,6 +3485,13 @@
|
|
|
3257
3485
|
"url": "https://github.com/sponsors/ljharb"
|
|
3258
3486
|
}
|
|
3259
3487
|
},
|
|
3488
|
+
"node_modules/siginfo": {
|
|
3489
|
+
"version": "2.0.0",
|
|
3490
|
+
"resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz",
|
|
3491
|
+
"integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==",
|
|
3492
|
+
"dev": true,
|
|
3493
|
+
"license": "ISC"
|
|
3494
|
+
},
|
|
3260
3495
|
"node_modules/source-map-js": {
|
|
3261
3496
|
"version": "1.2.1",
|
|
3262
3497
|
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
|
|
@@ -3267,6 +3502,13 @@
|
|
|
3267
3502
|
"node": ">=0.10.0"
|
|
3268
3503
|
}
|
|
3269
3504
|
},
|
|
3505
|
+
"node_modules/stackback": {
|
|
3506
|
+
"version": "0.0.2",
|
|
3507
|
+
"resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz",
|
|
3508
|
+
"integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==",
|
|
3509
|
+
"dev": true,
|
|
3510
|
+
"license": "MIT"
|
|
3511
|
+
},
|
|
3270
3512
|
"node_modules/statuses": {
|
|
3271
3513
|
"version": "2.0.2",
|
|
3272
3514
|
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
|
|
@@ -3276,6 +3518,13 @@
|
|
|
3276
3518
|
"node": ">= 0.8"
|
|
3277
3519
|
}
|
|
3278
3520
|
},
|
|
3521
|
+
"node_modules/std-env": {
|
|
3522
|
+
"version": "4.1.0",
|
|
3523
|
+
"resolved": "https://registry.npmjs.org/std-env/-/std-env-4.1.0.tgz",
|
|
3524
|
+
"integrity": "sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==",
|
|
3525
|
+
"dev": true,
|
|
3526
|
+
"license": "MIT"
|
|
3527
|
+
},
|
|
3279
3528
|
"node_modules/supports-preserve-symlinks-flag": {
|
|
3280
3529
|
"version": "1.0.0",
|
|
3281
3530
|
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
|
|
@@ -3288,6 +3537,23 @@
|
|
|
3288
3537
|
"url": "https://github.com/sponsors/ljharb"
|
|
3289
3538
|
}
|
|
3290
3539
|
},
|
|
3540
|
+
"node_modules/tinybench": {
|
|
3541
|
+
"version": "2.9.0",
|
|
3542
|
+
"resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz",
|
|
3543
|
+
"integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==",
|
|
3544
|
+
"dev": true,
|
|
3545
|
+
"license": "MIT"
|
|
3546
|
+
},
|
|
3547
|
+
"node_modules/tinyexec": {
|
|
3548
|
+
"version": "1.1.1",
|
|
3549
|
+
"resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.1.1.tgz",
|
|
3550
|
+
"integrity": "sha512-VKS/ZaQhhkKFMANmAOhhXVoIfBXblQxGX1myCQ2faQrfmobMftXeJPcZGp0gS07ocvGJWDLZGyOZDadDBqYIJg==",
|
|
3551
|
+
"dev": true,
|
|
3552
|
+
"license": "MIT",
|
|
3553
|
+
"engines": {
|
|
3554
|
+
"node": ">=18"
|
|
3555
|
+
}
|
|
3556
|
+
},
|
|
3291
3557
|
"node_modules/tinyglobby": {
|
|
3292
3558
|
"version": "0.2.15",
|
|
3293
3559
|
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
|
|
@@ -3305,6 +3571,16 @@
|
|
|
3305
3571
|
"url": "https://github.com/sponsors/SuperchupuDev"
|
|
3306
3572
|
}
|
|
3307
3573
|
},
|
|
3574
|
+
"node_modules/tinyrainbow": {
|
|
3575
|
+
"version": "3.1.0",
|
|
3576
|
+
"resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz",
|
|
3577
|
+
"integrity": "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==",
|
|
3578
|
+
"dev": true,
|
|
3579
|
+
"license": "MIT",
|
|
3580
|
+
"engines": {
|
|
3581
|
+
"node": ">=14.0.0"
|
|
3582
|
+
}
|
|
3583
|
+
},
|
|
3308
3584
|
"node_modules/to-regex-range": {
|
|
3309
3585
|
"version": "5.0.1",
|
|
3310
3586
|
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
|
@@ -3975,6 +4251,96 @@
|
|
|
3975
4251
|
"@esbuild/win32-x64": "0.25.12"
|
|
3976
4252
|
}
|
|
3977
4253
|
},
|
|
4254
|
+
"node_modules/vitest": {
|
|
4255
|
+
"version": "4.1.5",
|
|
4256
|
+
"resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.5.tgz",
|
|
4257
|
+
"integrity": "sha512-9Xx1v3/ih3m9hN+SbfkUyy0JAs72ap3r7joc87XL6jwF0jGg6mFBvQ1SrwaX+h8BlkX6Hz9shdd1uo6AF+ZGpg==",
|
|
4258
|
+
"dev": true,
|
|
4259
|
+
"license": "MIT",
|
|
4260
|
+
"dependencies": {
|
|
4261
|
+
"@vitest/expect": "4.1.5",
|
|
4262
|
+
"@vitest/mocker": "4.1.5",
|
|
4263
|
+
"@vitest/pretty-format": "4.1.5",
|
|
4264
|
+
"@vitest/runner": "4.1.5",
|
|
4265
|
+
"@vitest/snapshot": "4.1.5",
|
|
4266
|
+
"@vitest/spy": "4.1.5",
|
|
4267
|
+
"@vitest/utils": "4.1.5",
|
|
4268
|
+
"es-module-lexer": "^2.0.0",
|
|
4269
|
+
"expect-type": "^1.3.0",
|
|
4270
|
+
"magic-string": "^0.30.21",
|
|
4271
|
+
"obug": "^2.1.1",
|
|
4272
|
+
"pathe": "^2.0.3",
|
|
4273
|
+
"picomatch": "^4.0.3",
|
|
4274
|
+
"std-env": "^4.0.0-rc.1",
|
|
4275
|
+
"tinybench": "^2.9.0",
|
|
4276
|
+
"tinyexec": "^1.0.2",
|
|
4277
|
+
"tinyglobby": "^0.2.15",
|
|
4278
|
+
"tinyrainbow": "^3.1.0",
|
|
4279
|
+
"vite": "^6.0.0 || ^7.0.0 || ^8.0.0",
|
|
4280
|
+
"why-is-node-running": "^2.3.0"
|
|
4281
|
+
},
|
|
4282
|
+
"bin": {
|
|
4283
|
+
"vitest": "vitest.mjs"
|
|
4284
|
+
},
|
|
4285
|
+
"engines": {
|
|
4286
|
+
"node": "^20.0.0 || ^22.0.0 || >=24.0.0"
|
|
4287
|
+
},
|
|
4288
|
+
"funding": {
|
|
4289
|
+
"url": "https://opencollective.com/vitest"
|
|
4290
|
+
},
|
|
4291
|
+
"peerDependencies": {
|
|
4292
|
+
"@edge-runtime/vm": "*",
|
|
4293
|
+
"@opentelemetry/api": "^1.9.0",
|
|
4294
|
+
"@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0",
|
|
4295
|
+
"@vitest/browser-playwright": "4.1.5",
|
|
4296
|
+
"@vitest/browser-preview": "4.1.5",
|
|
4297
|
+
"@vitest/browser-webdriverio": "4.1.5",
|
|
4298
|
+
"@vitest/coverage-istanbul": "4.1.5",
|
|
4299
|
+
"@vitest/coverage-v8": "4.1.5",
|
|
4300
|
+
"@vitest/ui": "4.1.5",
|
|
4301
|
+
"happy-dom": "*",
|
|
4302
|
+
"jsdom": "*",
|
|
4303
|
+
"vite": "^6.0.0 || ^7.0.0 || ^8.0.0"
|
|
4304
|
+
},
|
|
4305
|
+
"peerDependenciesMeta": {
|
|
4306
|
+
"@edge-runtime/vm": {
|
|
4307
|
+
"optional": true
|
|
4308
|
+
},
|
|
4309
|
+
"@opentelemetry/api": {
|
|
4310
|
+
"optional": true
|
|
4311
|
+
},
|
|
4312
|
+
"@types/node": {
|
|
4313
|
+
"optional": true
|
|
4314
|
+
},
|
|
4315
|
+
"@vitest/browser-playwright": {
|
|
4316
|
+
"optional": true
|
|
4317
|
+
},
|
|
4318
|
+
"@vitest/browser-preview": {
|
|
4319
|
+
"optional": true
|
|
4320
|
+
},
|
|
4321
|
+
"@vitest/browser-webdriverio": {
|
|
4322
|
+
"optional": true
|
|
4323
|
+
},
|
|
4324
|
+
"@vitest/coverage-istanbul": {
|
|
4325
|
+
"optional": true
|
|
4326
|
+
},
|
|
4327
|
+
"@vitest/coverage-v8": {
|
|
4328
|
+
"optional": true
|
|
4329
|
+
},
|
|
4330
|
+
"@vitest/ui": {
|
|
4331
|
+
"optional": true
|
|
4332
|
+
},
|
|
4333
|
+
"happy-dom": {
|
|
4334
|
+
"optional": true
|
|
4335
|
+
},
|
|
4336
|
+
"jsdom": {
|
|
4337
|
+
"optional": true
|
|
4338
|
+
},
|
|
4339
|
+
"vite": {
|
|
4340
|
+
"optional": false
|
|
4341
|
+
}
|
|
4342
|
+
}
|
|
4343
|
+
},
|
|
3978
4344
|
"node_modules/which": {
|
|
3979
4345
|
"version": "2.0.2",
|
|
3980
4346
|
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
|
@@ -3990,6 +4356,23 @@
|
|
|
3990
4356
|
"node": ">= 8"
|
|
3991
4357
|
}
|
|
3992
4358
|
},
|
|
4359
|
+
"node_modules/why-is-node-running": {
|
|
4360
|
+
"version": "2.3.0",
|
|
4361
|
+
"resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz",
|
|
4362
|
+
"integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==",
|
|
4363
|
+
"dev": true,
|
|
4364
|
+
"license": "MIT",
|
|
4365
|
+
"dependencies": {
|
|
4366
|
+
"siginfo": "^2.0.0",
|
|
4367
|
+
"stackback": "0.0.2"
|
|
4368
|
+
},
|
|
4369
|
+
"bin": {
|
|
4370
|
+
"why-is-node-running": "cli.js"
|
|
4371
|
+
},
|
|
4372
|
+
"engines": {
|
|
4373
|
+
"node": ">=8"
|
|
4374
|
+
}
|
|
4375
|
+
},
|
|
3993
4376
|
"node_modules/wrappy": {
|
|
3994
4377
|
"version": "1.0.2",
|
|
3995
4378
|
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
package/mcp-server/package.json
CHANGED
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
"build:ui": "cross-env INPUT=mcp-app.html vite build",
|
|
11
11
|
"dev": "tsx watch src/server.ts",
|
|
12
12
|
"serve": "tsx src/server.ts",
|
|
13
|
-
"start": "node dist/server.js"
|
|
13
|
+
"start": "node dist/server.js",
|
|
14
|
+
"test": "vitest run"
|
|
14
15
|
},
|
|
15
16
|
"dependencies": {
|
|
16
17
|
"@modelcontextprotocol/ext-apps": "^1.0.0",
|
|
@@ -26,6 +27,7 @@
|
|
|
26
27
|
"tsx": "^4.19.0",
|
|
27
28
|
"typescript": "^5.6.0",
|
|
28
29
|
"vite": "^6.0.0",
|
|
29
|
-
"vite-plugin-singlefile": "^2.3.0"
|
|
30
|
+
"vite-plugin-singlefile": "^2.3.0",
|
|
31
|
+
"vitest": "^4.0.18"
|
|
30
32
|
}
|
|
31
33
|
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unit tests for env-utils.ts
|
|
3
|
+
*
|
|
4
|
+
* Verifies that the OS and E2B template ID resolution helpers apply the
|
|
5
|
+
* correct priority order:
|
|
6
|
+
* explicit param > environment variable > built-in default
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { describe, it, expect } from "vitest";
|
|
10
|
+
import { resolveOs, resolveE2bTemplateId } from "./env-utils.js";
|
|
11
|
+
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
// resolveOs
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
|
|
16
|
+
describe("resolveOs", () => {
|
|
17
|
+
it("returns the explicit param when provided", () => {
|
|
18
|
+
const { os } = resolveOs("windows", { TD_OS: "linux" });
|
|
19
|
+
expect(os).toBe("windows");
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
it("falls back to TD_OS env var when no explicit param is given", () => {
|
|
23
|
+
const { os } = resolveOs(undefined, { TD_OS: "windows" });
|
|
24
|
+
expect(os).toBe("windows");
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it("defaults to linux when neither param nor TD_OS is set", () => {
|
|
28
|
+
const { os } = resolveOs(undefined, {});
|
|
29
|
+
expect(os).toBe("linux");
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it("returns linux and a warning when TD_OS has an unsupported value", () => {
|
|
33
|
+
const { os, warning } = resolveOs(undefined, { TD_OS: "mac" });
|
|
34
|
+
expect(os).toBe("linux");
|
|
35
|
+
expect(warning).toMatch(/unsupported/i);
|
|
36
|
+
expect(warning).toContain("mac");
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
it("returns linux and a warning when TD_OS is 'Linux' (wrong case)", () => {
|
|
40
|
+
const { os, warning } = resolveOs(undefined, { TD_OS: "Linux" });
|
|
41
|
+
expect(os).toBe("linux");
|
|
42
|
+
expect(warning).toBeDefined();
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it("explicit param takes priority over TD_OS env var", () => {
|
|
46
|
+
const { os, warning } = resolveOs("linux", { TD_OS: "windows" });
|
|
47
|
+
expect(os).toBe("linux");
|
|
48
|
+
expect(warning).toBeUndefined();
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it("returns no warning when TD_OS is valid", () => {
|
|
52
|
+
const { os, warning } = resolveOs(undefined, { TD_OS: "windows" });
|
|
53
|
+
expect(os).toBe("windows");
|
|
54
|
+
expect(warning).toBeUndefined();
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
// ---------------------------------------------------------------------------
|
|
59
|
+
// resolveE2bTemplateId
|
|
60
|
+
// ---------------------------------------------------------------------------
|
|
61
|
+
|
|
62
|
+
describe("resolveE2bTemplateId", () => {
|
|
63
|
+
it("returns the explicit param when provided", () => {
|
|
64
|
+
const id = resolveE2bTemplateId("explicit-id", { TD_E2B_TEMPLATE_ID: "env-id" });
|
|
65
|
+
expect(id).toBe("explicit-id");
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
it("falls back to TD_E2B_TEMPLATE_ID env var when no explicit param is given", () => {
|
|
69
|
+
const id = resolveE2bTemplateId(undefined, { TD_E2B_TEMPLATE_ID: "env-id" });
|
|
70
|
+
expect(id).toBe("env-id");
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it("returns undefined when neither param nor TD_E2B_TEMPLATE_ID is set", () => {
|
|
74
|
+
const id = resolveE2bTemplateId(undefined, {});
|
|
75
|
+
expect(id).toBeUndefined();
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
it("explicit param takes priority over TD_E2B_TEMPLATE_ID env var", () => {
|
|
79
|
+
const id = resolveE2bTemplateId("my-template", { TD_E2B_TEMPLATE_ID: "other-template" });
|
|
80
|
+
expect(id).toBe("my-template");
|
|
81
|
+
});
|
|
82
|
+
});
|