@easynet/agent-tool 1.0.34 → 1.0.35
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/api/adapters/LangChainToolsHub.d.ts.map +1 -1
- package/dist/api/createAgentTools.d.ts.map +1 -1
- package/dist/api/extension/dynamicImportAdapter.d.ts +6 -2
- package/dist/api/extension/dynamicImportAdapter.d.ts.map +1 -1
- package/dist/api/extension/generateExtensionManifest.d.ts +2 -2
- package/dist/api/extension/generateExtensionManifest.d.ts.map +1 -1
- package/dist/api/extension/loadToolYaml.d.ts +1 -0
- package/dist/api/extension/loadToolYaml.d.ts.map +1 -1
- package/dist/api/extension/registerExtension.d.ts.map +1 -1
- package/dist/api/extension/registerFromManifest.d.ts.map +1 -1
- package/dist/api/main.cjs +14 -14
- package/dist/api/main.js +3 -3
- package/dist/api/runtimeFromConfig.d.ts +8 -0
- package/dist/api/runtimeFromConfig.d.ts.map +1 -1
- package/dist/{chunk-PKUSCCS6.cjs → chunk-2WDDJYR7.cjs} +243 -135
- package/dist/chunk-2WDDJYR7.cjs.map +1 -0
- package/dist/{chunk-GYUELFVR.js → chunk-DDIGAOYI.js} +3 -3
- package/dist/{chunk-GYUELFVR.js.map → chunk-DDIGAOYI.js.map} +1 -1
- package/dist/{chunk-ETZKGTTF.cjs → chunk-P25NBSPT.cjs} +7 -7
- package/dist/{chunk-ETZKGTTF.cjs.map → chunk-P25NBSPT.cjs.map} +1 -1
- package/dist/{chunk-UUQGKFSG.js → chunk-PSVSVTHY.js} +241 -136
- package/dist/chunk-PSVSVTHY.js.map +1 -0
- package/dist/{chunk-6UOHURU4.js → chunk-RRVM6JBA.js} +42 -5
- package/dist/chunk-RRVM6JBA.js.map +1 -0
- package/dist/{chunk-YP6GRCQG.cjs → chunk-S27O27OH.cjs} +53 -16
- package/dist/chunk-S27O27OH.cjs.map +1 -0
- package/dist/{chunk-FHHD4FSI.js → chunk-U3CAAURW.js} +3 -3
- package/dist/{chunk-FHHD4FSI.js.map → chunk-U3CAAURW.js.map} +1 -1
- package/dist/{chunk-LOGUQGCL.cjs → chunk-Z5STQ2JO.cjs} +9 -9
- package/dist/{chunk-LOGUQGCL.cjs.map → chunk-Z5STQ2JO.cjs.map} +1 -1
- package/dist/index.cjs +106 -69
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +58 -25
- package/dist/index.js.map +1 -1
- package/dist/tools/util/toolConfig.d.ts +11 -3
- package/dist/tools/util/toolConfig.d.ts.map +1 -1
- package/dist/tools/util/toolDescriptor.d.ts +29 -5
- package/dist/tools/util/toolDescriptor.d.ts.map +1 -1
- package/dist/utils/cli/index.cjs +17 -17
- package/dist/utils/cli/index.js +3 -3
- package/dist/utils/npmCache.d.ts +14 -0
- package/dist/utils/npmCache.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-6UOHURU4.js.map +0 -1
- package/dist/chunk-PKUSCCS6.cjs.map +0 -1
- package/dist/chunk-UUQGKFSG.js.map +0 -1
- package/dist/chunk-YP6GRCQG.cjs.map +0 -1
|
@@ -1519,8 +1519,20 @@ function npmDescriptorToRegistryPrefix(descriptor, resolvedVersion) {
|
|
|
1519
1519
|
const lastAt = beforeHash.lastIndexOf("@");
|
|
1520
1520
|
const scopeAndPackage = lastAt <= 0 ? beforeHash : beforeHash.slice(0, lastAt);
|
|
1521
1521
|
let version = lastAt <= 0 ? "latest" : beforeHash.slice(lastAt + 1).trim() || "latest";
|
|
1522
|
-
if (
|
|
1523
|
-
|
|
1522
|
+
if (version === "latest" || !version) {
|
|
1523
|
+
const resolved = (resolvedVersion ?? "").trim();
|
|
1524
|
+
if (resolved !== "" && resolved.toLowerCase() !== "latest") {
|
|
1525
|
+
version = resolved;
|
|
1526
|
+
} else {
|
|
1527
|
+
throw new Error(
|
|
1528
|
+
`Registry prefix requires a concrete version when descriptor uses latest (${descriptor}). Resolve version from registry (e.g. resolveLatestVersionFromRegistry) and pass as resolvedVersion.`
|
|
1529
|
+
);
|
|
1530
|
+
}
|
|
1531
|
+
}
|
|
1532
|
+
if (!version || version.toLowerCase() === "latest") {
|
|
1533
|
+
throw new Error(
|
|
1534
|
+
`Registry never uses "latest"; pass resolved concrete version for npm descriptor: ${descriptor}`
|
|
1535
|
+
);
|
|
1524
1536
|
}
|
|
1525
1537
|
const slashIdx = scopeAndPackage.indexOf("/");
|
|
1526
1538
|
const scope = slashIdx < 0 ? scopeAndPackage : scopeAndPackage.slice(0, slashIdx).replace(/^@/, "");
|
|
@@ -1530,6 +1542,23 @@ function npmDescriptorToRegistryPrefix(descriptor, resolvedVersion) {
|
|
|
1530
1542
|
if (!normalized) return "";
|
|
1531
1543
|
return "npm." + normalized + ".";
|
|
1532
1544
|
}
|
|
1545
|
+
function npmDescriptorToPackagePrefixWithVersion(descriptor) {
|
|
1546
|
+
const s = descriptor.trim();
|
|
1547
|
+
if (typeof s !== "string" || !s.startsWith("npm:")) return "";
|
|
1548
|
+
const rest = s.slice(4).trim();
|
|
1549
|
+
const hashIdx = rest.indexOf("#");
|
|
1550
|
+
const beforeHash = hashIdx < 0 ? rest : rest.slice(0, hashIdx);
|
|
1551
|
+
const lastAt = beforeHash.lastIndexOf("@");
|
|
1552
|
+
const scopeAndPackage = lastAt <= 0 ? beforeHash : beforeHash.slice(0, lastAt);
|
|
1553
|
+
const version = lastAt <= 0 ? "" : beforeHash.slice(lastAt + 1).trim();
|
|
1554
|
+
const slashIdx = scopeAndPackage.indexOf("/");
|
|
1555
|
+
const scope = slashIdx < 0 ? scopeAndPackage : scopeAndPackage.slice(0, slashIdx).replace(/^@/, "");
|
|
1556
|
+
const pkg = slashIdx < 0 ? "" : scopeAndPackage.slice(slashIdx + 1);
|
|
1557
|
+
const segment = [scope, pkg, version].filter(Boolean).join(".");
|
|
1558
|
+
const normalized = chunkDYDNPIV2_cjs.normalizeToolName(segment);
|
|
1559
|
+
if (!normalized) return "";
|
|
1560
|
+
return "npm." + normalized;
|
|
1561
|
+
}
|
|
1533
1562
|
function isNpmToolDescriptor(descriptor) {
|
|
1534
1563
|
return isToolPath(descriptor) && parseToolPath(descriptor)?.protocol === "npm";
|
|
1535
1564
|
}
|
|
@@ -1598,6 +1627,18 @@ function normalizeToolList(descriptors) {
|
|
|
1598
1627
|
}
|
|
1599
1628
|
return out;
|
|
1600
1629
|
}
|
|
1630
|
+
function fileDescriptorToPackagePrefix(descriptor) {
|
|
1631
|
+
const path = parseToolPath(descriptor.trim());
|
|
1632
|
+
if (!path || path.protocol !== "file") return "";
|
|
1633
|
+
const pathPart = `${path.scope}/${path.packageWithVersion}`;
|
|
1634
|
+
const normalized = chunkDYDNPIV2_cjs.normalizeToolName(pathPart);
|
|
1635
|
+
if (!normalized) return "";
|
|
1636
|
+
return "file." + normalized;
|
|
1637
|
+
}
|
|
1638
|
+
function fileDescriptorToRegistryPrefix(descriptor) {
|
|
1639
|
+
const prefix = fileDescriptorToPackagePrefix(descriptor);
|
|
1640
|
+
return prefix ? prefix + "." : "";
|
|
1641
|
+
}
|
|
1601
1642
|
function loadToolConfig(toolYamlPath) {
|
|
1602
1643
|
const abs = path.resolve(toolYamlPath);
|
|
1603
1644
|
const raw = fs.readFileSync(abs, "utf8");
|
|
@@ -1605,20 +1646,29 @@ function loadToolConfig(toolYamlPath) {
|
|
|
1605
1646
|
if (!parsed || typeof parsed !== "object") return {};
|
|
1606
1647
|
const toolsBlock = parsed.tools;
|
|
1607
1648
|
if (toolsBlock != null && typeof toolsBlock === "object" && !Array.isArray(toolsBlock)) {
|
|
1649
|
+
const toolDefaults = toolsBlock.defaults != null && typeof toolsBlock.defaults === "object" && !Array.isArray(toolsBlock.defaults) ? toolsBlock.defaults : void 0;
|
|
1650
|
+
const packageToolDefaults2 = toolsBlock.packages != null && typeof toolsBlock.packages === "object" && !Array.isArray(toolsBlock.packages) ? toolsBlock.packages : void 0;
|
|
1651
|
+
const list2 = Array.isArray(toolsBlock.list) && toolsBlock.list.length > 0 ? toolsBlock.list : void 0;
|
|
1608
1652
|
return {
|
|
1609
|
-
tools:
|
|
1653
|
+
tools: list2 ?? (packageToolDefaults2 ? Object.keys(packageToolDefaults2) : void 0),
|
|
1610
1654
|
sandboxedPath: typeof toolsBlock.sandboxedPath === "string" ? toolsBlock.sandboxedPath : parsed.sandboxedPath,
|
|
1611
1655
|
allowedHosts: Array.isArray(toolsBlock.allowedHosts) ? toolsBlock.allowedHosts : parsed.allowedHosts,
|
|
1612
1656
|
blockedHosts: Array.isArray(toolsBlock.blockedHosts) ? toolsBlock.blockedHosts : parsed.blockedHosts,
|
|
1613
|
-
blockedCidrs: Array.isArray(toolsBlock.blockedCidrs) ? toolsBlock.blockedCidrs : parsed.blockedCidrs
|
|
1657
|
+
blockedCidrs: Array.isArray(toolsBlock.blockedCidrs) ? toolsBlock.blockedCidrs : parsed.blockedCidrs,
|
|
1658
|
+
toolDefaults,
|
|
1659
|
+
packageToolDefaults: packageToolDefaults2
|
|
1614
1660
|
};
|
|
1615
1661
|
}
|
|
1662
|
+
const packageToolDefaults = typeof parsed.packageToolDefaults === "object" && !Array.isArray(parsed.packageToolDefaults) ? parsed.packageToolDefaults : void 0;
|
|
1663
|
+
const list = Array.isArray(parsed.tools) && parsed.tools.length > 0 ? parsed.tools : void 0;
|
|
1616
1664
|
return {
|
|
1617
|
-
tools:
|
|
1665
|
+
tools: list ?? (packageToolDefaults ? Object.keys(packageToolDefaults) : void 0),
|
|
1618
1666
|
sandboxedPath: parsed.sandboxedPath,
|
|
1619
1667
|
allowedHosts: Array.isArray(parsed.allowedHosts) ? parsed.allowedHosts : void 0,
|
|
1620
1668
|
blockedHosts: Array.isArray(parsed.blockedHosts) ? parsed.blockedHosts : void 0,
|
|
1621
|
-
blockedCidrs: Array.isArray(parsed.blockedCidrs) ? parsed.blockedCidrs : void 0
|
|
1669
|
+
blockedCidrs: Array.isArray(parsed.blockedCidrs) ? parsed.blockedCidrs : void 0,
|
|
1670
|
+
toolDefaults: typeof parsed.toolDefaults === "object" && !Array.isArray(parsed.toolDefaults) ? parsed.toolDefaults : void 0,
|
|
1671
|
+
packageToolDefaults
|
|
1622
1672
|
};
|
|
1623
1673
|
}
|
|
1624
1674
|
function resolveSandboxedPath(toolYamlPath, sandboxedPath) {
|
|
@@ -1645,6 +1695,37 @@ function findAndLoadToolConfig(dir) {
|
|
|
1645
1695
|
return {};
|
|
1646
1696
|
}
|
|
1647
1697
|
var DEFAULT_CACHE_BASE = path.join(os.homedir(), ".agent", "cache");
|
|
1698
|
+
function isLatestRequest(version) {
|
|
1699
|
+
const v = (version ?? "").trim().toLowerCase();
|
|
1700
|
+
return v === "" || v === "latest";
|
|
1701
|
+
}
|
|
1702
|
+
function resolveLatestVersionFromRegistry(packageName) {
|
|
1703
|
+
const quoted = packageName.includes(" ") ? `"${packageName}"` : packageName;
|
|
1704
|
+
try {
|
|
1705
|
+
const out = child_process.execSync(`npm view ${quoted} version`, {
|
|
1706
|
+
encoding: "utf-8",
|
|
1707
|
+
stdio: ["pipe", "pipe", "pipe"]
|
|
1708
|
+
});
|
|
1709
|
+
const version = (out ?? "").trim();
|
|
1710
|
+
if (!version) {
|
|
1711
|
+
throw new Error(`npm view ${packageName} version returned empty`);
|
|
1712
|
+
}
|
|
1713
|
+
return version;
|
|
1714
|
+
} catch (err) {
|
|
1715
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
1716
|
+
throw new Error(`Failed to resolve latest version for ${packageName}: ${msg}`);
|
|
1717
|
+
}
|
|
1718
|
+
}
|
|
1719
|
+
function getCachedPackageVersion(cacheDir) {
|
|
1720
|
+
const pkgPath = path.join(cacheDir, "package.json");
|
|
1721
|
+
if (!fs.existsSync(pkgPath)) return void 0;
|
|
1722
|
+
try {
|
|
1723
|
+
const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf-8"));
|
|
1724
|
+
return typeof pkg.version === "string" ? pkg.version : void 0;
|
|
1725
|
+
} catch {
|
|
1726
|
+
return void 0;
|
|
1727
|
+
}
|
|
1728
|
+
}
|
|
1648
1729
|
function packagePathSegments(name) {
|
|
1649
1730
|
const withoutScope = name.replace(/^@/, "");
|
|
1650
1731
|
return withoutScope.split("/").filter(Boolean);
|
|
@@ -1653,17 +1734,29 @@ function resolveCacheDir(cacheBase, packageName, version) {
|
|
|
1653
1734
|
const segments = packagePathSegments(packageName);
|
|
1654
1735
|
return path.join(cacheBase, ...segments, version);
|
|
1655
1736
|
}
|
|
1656
|
-
function getVersionFromTarball(tgzName) {
|
|
1657
|
-
const base = tgzName.replace(/\.tgz$/i, "");
|
|
1658
|
-
const match = base.match(/-(\d+\.\d+\.\d+(-[a-zA-Z0-9.-]+)?)$/);
|
|
1659
|
-
return match ? match[1] : base;
|
|
1660
|
-
}
|
|
1661
1737
|
function ensurePackageInCache(packageName, version = "latest", options = {}) {
|
|
1662
1738
|
const cacheBase = options.cacheBase ?? DEFAULT_CACHE_BASE;
|
|
1739
|
+
let resolvedVersion;
|
|
1740
|
+
if (isLatestRequest(version)) {
|
|
1741
|
+
resolvedVersion = resolveLatestVersionFromRegistry(packageName);
|
|
1742
|
+
} else {
|
|
1743
|
+
resolvedVersion = version;
|
|
1744
|
+
}
|
|
1745
|
+
const cacheDir = resolveCacheDir(cacheBase, packageName, resolvedVersion);
|
|
1746
|
+
const packageJsonPath = path.join(cacheDir, "package.json");
|
|
1747
|
+
const nodeModulesPath = path.join(cacheDir, "node_modules");
|
|
1748
|
+
if (fs.existsSync(packageJsonPath) && fs.existsSync(nodeModulesPath)) {
|
|
1749
|
+
const cachedVersion = getCachedPackageVersion(cacheDir);
|
|
1750
|
+
if (cachedVersion === resolvedVersion) {
|
|
1751
|
+
options.afterInstall?.(cacheDir, packageName);
|
|
1752
|
+
return cacheDir;
|
|
1753
|
+
}
|
|
1754
|
+
fs.rmSync(cacheDir, { recursive: true, force: true });
|
|
1755
|
+
}
|
|
1663
1756
|
const packDest = path.join(cacheBase, ".pack-tmp", packageName.replace(/@/g, "").replace(/\//g, "_"));
|
|
1664
1757
|
fs.mkdirSync(packDest, { recursive: true });
|
|
1665
1758
|
try {
|
|
1666
|
-
child_process.execSync(`npm pack ${packageName}@${
|
|
1759
|
+
child_process.execSync(`npm pack ${packageName}@${resolvedVersion} --pack-destination "${packDest}"`, {
|
|
1667
1760
|
cwd: process.cwd(),
|
|
1668
1761
|
stdio: "pipe",
|
|
1669
1762
|
encoding: "utf-8"
|
|
@@ -1673,15 +1766,6 @@ function ensurePackageInCache(packageName, version = "latest", options = {}) {
|
|
|
1673
1766
|
if (!tgz) {
|
|
1674
1767
|
throw new Error(`npm pack did not produce a .tgz in ${packDest}`);
|
|
1675
1768
|
}
|
|
1676
|
-
const resolvedVersion = getVersionFromTarball(tgz);
|
|
1677
|
-
const cacheDir = resolveCacheDir(cacheBase, packageName, resolvedVersion);
|
|
1678
|
-
const packageJsonPath = path.join(cacheDir, "package.json");
|
|
1679
|
-
const nodeModulesPath = path.join(cacheDir, "node_modules");
|
|
1680
|
-
if (fs.existsSync(packageJsonPath) && fs.existsSync(nodeModulesPath)) {
|
|
1681
|
-
options.afterInstall?.(cacheDir, packageName);
|
|
1682
|
-
fs.rmSync(packDest, { recursive: true, force: true });
|
|
1683
|
-
return cacheDir;
|
|
1684
|
-
}
|
|
1685
1769
|
const extractDir = path.join(packDest, "extract");
|
|
1686
1770
|
fs.mkdirSync(extractDir, { recursive: true });
|
|
1687
1771
|
child_process.execSync(`tar -xzf "${path.join(packDest, tgz)}" -C "${extractDir}"`, {
|
|
@@ -1731,7 +1815,7 @@ async function importFromCache(packageRoot) {
|
|
|
1731
1815
|
fileUrl
|
|
1732
1816
|
);
|
|
1733
1817
|
}
|
|
1734
|
-
var requireFromPackage = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-
|
|
1818
|
+
var requireFromPackage = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-2WDDJYR7.cjs', document.baseURI).href)));
|
|
1735
1819
|
function getProjectRequire() {
|
|
1736
1820
|
const cwd = process.cwd();
|
|
1737
1821
|
if (fs.existsSync(path.join(cwd, "package.json"))) return module$1.createRequire(path.join(cwd, "package.json"));
|
|
@@ -1818,34 +1902,95 @@ function parseNpmDescriptor(entry) {
|
|
|
1818
1902
|
const version = rest.slice(at + 1).split("#")[0]?.trim() || "latest";
|
|
1819
1903
|
return { packageName, version };
|
|
1820
1904
|
}
|
|
1821
|
-
function
|
|
1905
|
+
function loadExtensionFromFileDescriptorSync(descriptor, configFilePath, stepLog) {
|
|
1906
|
+
const entryStr = descriptor.trim();
|
|
1907
|
+
const path$1 = parseToolPath(entryStr);
|
|
1908
|
+
if (!path$1 || path$1.protocol !== "file") return null;
|
|
1909
|
+
const localPath = path.isAbsolute(configFilePath) ? configFilePath : path.resolve(process.cwd(), configFilePath);
|
|
1910
|
+
const configDir = path.dirname(localPath);
|
|
1911
|
+
const pathPart = `${path$1.scope}/${path$1.packageWithVersion}`;
|
|
1912
|
+
const resolvedPath = path.resolve(configDir, pathPart);
|
|
1913
|
+
if (!fs.existsSync(resolvedPath) || !fs.statSync(resolvedPath).isDirectory()) return null;
|
|
1914
|
+
try {
|
|
1915
|
+
const entryPath = getPackageEntryPath(resolvedPath);
|
|
1916
|
+
const req = module$1.createRequire(path.join(resolvedPath, "package.json"));
|
|
1917
|
+
const mod = req(entryPath);
|
|
1918
|
+
const fn = getRegisterFn(mod);
|
|
1919
|
+
if (typeof fn === "function") {
|
|
1920
|
+
if (stepLog) stepLog(`Loaded local extension from ${resolvedPath}`);
|
|
1921
|
+
return { register: fn, descriptor: entryStr, resolvedVersion: "local" };
|
|
1922
|
+
}
|
|
1923
|
+
} catch {
|
|
1924
|
+
}
|
|
1925
|
+
return null;
|
|
1926
|
+
}
|
|
1927
|
+
function loadExtensionForDescriptorSync(descriptor, configFilePath, stepLog) {
|
|
1928
|
+
const entryStr = descriptor.trim();
|
|
1929
|
+
const parsed = parseNpmDescriptor(entryStr);
|
|
1930
|
+
if (!parsed) return null;
|
|
1822
1931
|
const localPath = path.isAbsolute(configFilePath) ? configFilePath : path.resolve(process.cwd(), configFilePath);
|
|
1823
|
-
if (!fs.existsSync(localPath)) return null;
|
|
1824
|
-
const config = loadToolConfig(localPath);
|
|
1825
|
-
const tools = config.tools;
|
|
1826
|
-
if (!Array.isArray(tools) || tools.length === 0) return null;
|
|
1827
1932
|
const configDir = path.dirname(localPath);
|
|
1828
1933
|
const packageJsonPath = path.join(configDir, "package.json");
|
|
1829
|
-
|
|
1830
|
-
const configRequire = module$1.createRequire(packageJsonPath);
|
|
1831
|
-
if (
|
|
1832
|
-
for (const entry of tools) {
|
|
1833
|
-
const entryStr = String(entry).trim();
|
|
1834
|
-
const parsed = parseNpmDescriptor(entryStr);
|
|
1835
|
-
if (!parsed) continue;
|
|
1934
|
+
const useNodeModules = fs.existsSync(packageJsonPath);
|
|
1935
|
+
const configRequire = useNodeModules ? module$1.createRequire(packageJsonPath) : null;
|
|
1936
|
+
if (configRequire) {
|
|
1836
1937
|
try {
|
|
1837
1938
|
const mod = configRequire(parsed.packageName);
|
|
1838
1939
|
const fn = getRegisterFn(mod);
|
|
1839
1940
|
if (typeof fn === "function") {
|
|
1840
|
-
const
|
|
1941
|
+
const installed = getInstalledPackageVersionFromRequire(parsed.packageName, configRequire);
|
|
1942
|
+
const requested = parsed.version === "latest" || !parsed.version?.trim() ? null : parsed.version;
|
|
1943
|
+
const resolvedVersion = installed ?? (requested === null ? resolveLatestVersionFromRegistry(parsed.packageName) : requested);
|
|
1944
|
+
if (requested === null || installed === requested) {
|
|
1945
|
+
if (stepLog) stepLog(`Loaded ${parsed.packageName}@${resolvedVersion} from node_modules`);
|
|
1946
|
+
return { register: fn, descriptor: entryStr, resolvedVersion };
|
|
1947
|
+
}
|
|
1948
|
+
}
|
|
1949
|
+
} catch {
|
|
1950
|
+
}
|
|
1951
|
+
}
|
|
1952
|
+
const cacheBase = getCacheBaseFromToolConfig(localPath);
|
|
1953
|
+
const cacheOpts = cacheBase ? { cacheBase } : {};
|
|
1954
|
+
for (const opts of [cacheOpts, {}]) {
|
|
1955
|
+
try {
|
|
1956
|
+
const cacheDir = ensurePackageInCache(parsed.packageName, parsed.version, opts);
|
|
1957
|
+
if (stepLog) stepLog(`Loaded ${parsed.packageName} from cache: ${cacheDir}`);
|
|
1958
|
+
const entryPath = getPackageEntryPath(cacheDir);
|
|
1959
|
+
const req = module$1.createRequire(path.join(cacheDir, "package.json"));
|
|
1960
|
+
const mod = req(entryPath);
|
|
1961
|
+
const fn = getRegisterFn(mod);
|
|
1962
|
+
if (typeof fn === "function") {
|
|
1963
|
+
const resolvedVersion = path.basename(cacheDir);
|
|
1841
1964
|
return { register: fn, descriptor: entryStr, resolvedVersion };
|
|
1842
1965
|
}
|
|
1966
|
+
break;
|
|
1843
1967
|
} catch {
|
|
1844
|
-
continue;
|
|
1968
|
+
if (Object.keys(opts).length > 0) continue;
|
|
1969
|
+
break;
|
|
1845
1970
|
}
|
|
1846
1971
|
}
|
|
1847
1972
|
return null;
|
|
1848
1973
|
}
|
|
1974
|
+
function loadAllExtensionsFromToolYamlSync(configFilePath, stepLog) {
|
|
1975
|
+
const localPath = path.isAbsolute(configFilePath) ? configFilePath : path.resolve(process.cwd(), configFilePath);
|
|
1976
|
+
if (!fs.existsSync(localPath)) return [];
|
|
1977
|
+
const config = loadToolConfig(localPath);
|
|
1978
|
+
const tools = config.tools;
|
|
1979
|
+
if (!Array.isArray(tools) || tools.length === 0) return [];
|
|
1980
|
+
if (stepLog) stepLog("Loading extensions from tool.yaml (npm + file)");
|
|
1981
|
+
const loaded = [];
|
|
1982
|
+
for (const entry of tools) {
|
|
1983
|
+
const entryStr = String(entry).trim();
|
|
1984
|
+
if (entryStr.startsWith("npm:")) {
|
|
1985
|
+
const result = loadExtensionForDescriptorSync(entryStr, configFilePath, stepLog);
|
|
1986
|
+
if (result) loaded.push(result);
|
|
1987
|
+
} else if (entryStr.startsWith("file:")) {
|
|
1988
|
+
const result = loadExtensionFromFileDescriptorSync(entryStr, configFilePath, stepLog);
|
|
1989
|
+
if (result) loaded.push(result);
|
|
1990
|
+
}
|
|
1991
|
+
}
|
|
1992
|
+
return loaded;
|
|
1993
|
+
}
|
|
1849
1994
|
function getInstalledPackageVersionFromRequire(packageName, req) {
|
|
1850
1995
|
try {
|
|
1851
1996
|
const pkgJsonPath = req.resolve(`${packageName}/package.json`);
|
|
@@ -1856,114 +2001,84 @@ function getInstalledPackageVersionFromRequire(packageName, req) {
|
|
|
1856
2001
|
return null;
|
|
1857
2002
|
}
|
|
1858
2003
|
}
|
|
1859
|
-
function
|
|
2004
|
+
async function loadExtensionForDescriptorAsync(descriptor, configFilePath, stepLog) {
|
|
2005
|
+
const syncResult = loadExtensionForDescriptorSync(descriptor, configFilePath, stepLog);
|
|
2006
|
+
if (syncResult) return syncResult;
|
|
2007
|
+
const entryStr = descriptor.trim();
|
|
2008
|
+
const parsed = parseNpmDescriptor(entryStr);
|
|
2009
|
+
if (!parsed) return null;
|
|
1860
2010
|
const localPath = path.isAbsolute(configFilePath) ? configFilePath : path.resolve(process.cwd(), configFilePath);
|
|
1861
|
-
if (!fs.existsSync(localPath)) return null;
|
|
1862
|
-
const config = loadToolConfig(localPath);
|
|
1863
|
-
const tools = config.tools;
|
|
1864
|
-
if (!Array.isArray(tools)) return null;
|
|
1865
2011
|
const cacheBase = getCacheBaseFromToolConfig(localPath);
|
|
1866
2012
|
const cacheOpts = cacheBase ? { cacheBase } : {};
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
if (stepLog) stepLog(`Using cache: ${cacheDir}`);
|
|
1877
|
-
const entryPath = getPackageEntryPath(cacheDir);
|
|
1878
|
-
const req = module$1.createRequire(path.join(cacheDir, "package.json"));
|
|
1879
|
-
const mod = req(entryPath);
|
|
1880
|
-
const fn = getRegisterFn(mod);
|
|
1881
|
-
if (typeof fn === "function") {
|
|
1882
|
-
const resolvedVersion = path.basename(cacheDir);
|
|
1883
|
-
return { register: fn, descriptor: entryStr, resolvedVersion };
|
|
1884
|
-
}
|
|
1885
|
-
break;
|
|
1886
|
-
} catch {
|
|
1887
|
-
if (Object.keys(opts).length > 0) continue;
|
|
1888
|
-
break;
|
|
2013
|
+
for (const opts of [cacheOpts, {}]) {
|
|
2014
|
+
try {
|
|
2015
|
+
const cacheDir = ensurePackageInCache(parsed.packageName, parsed.version, opts);
|
|
2016
|
+
if (stepLog) stepLog(`Loaded ${parsed.packageName} from cache (async): ${cacheDir}`);
|
|
2017
|
+
const mod = await importFromCache(cacheDir);
|
|
2018
|
+
const fn = getRegisterFn(mod);
|
|
2019
|
+
if (typeof fn === "function") {
|
|
2020
|
+
const resolvedVersion = path.basename(cacheDir);
|
|
2021
|
+
return { register: fn, descriptor: entryStr, resolvedVersion };
|
|
1889
2022
|
}
|
|
2023
|
+
break;
|
|
2024
|
+
} catch {
|
|
2025
|
+
if (Object.keys(opts).length > 0) continue;
|
|
2026
|
+
break;
|
|
1890
2027
|
}
|
|
1891
2028
|
}
|
|
1892
2029
|
return null;
|
|
1893
2030
|
}
|
|
1894
|
-
async function
|
|
2031
|
+
async function loadAllExtensionsFromToolYamlAsync(configFilePath, stepLog) {
|
|
1895
2032
|
const localPath = path.isAbsolute(configFilePath) ? configFilePath : path.resolve(process.cwd(), configFilePath);
|
|
1896
|
-
if (!fs.existsSync(localPath)) return
|
|
2033
|
+
if (!fs.existsSync(localPath)) return [];
|
|
1897
2034
|
const config = loadToolConfig(localPath);
|
|
1898
2035
|
const tools = config.tools;
|
|
1899
|
-
if (!Array.isArray(tools)) return
|
|
1900
|
-
|
|
1901
|
-
const
|
|
1902
|
-
if (stepLog) stepLog("Loading extension from tool.yaml cache (async)");
|
|
2036
|
+
if (!Array.isArray(tools) || tools.length === 0) return [];
|
|
2037
|
+
if (stepLog) stepLog("Loading extensions from tool.yaml (async)");
|
|
2038
|
+
const loaded = [];
|
|
1903
2039
|
for (const entry of tools) {
|
|
1904
2040
|
const entryStr = String(entry).trim();
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
1911
|
-
if (stepLog) stepLog(`Using cache: ${cacheDir}`);
|
|
1912
|
-
const mod = await importFromCache(cacheDir);
|
|
1913
|
-
const fn = getRegisterFn(mod);
|
|
1914
|
-
if (typeof fn === "function") {
|
|
1915
|
-
const resolvedVersion = path.basename(cacheDir);
|
|
1916
|
-
return { register: fn, descriptor: entryStr, resolvedVersion };
|
|
1917
|
-
}
|
|
1918
|
-
break;
|
|
1919
|
-
} catch {
|
|
1920
|
-
if (Object.keys(opts).length > 0) continue;
|
|
1921
|
-
break;
|
|
1922
|
-
}
|
|
2041
|
+
if (entryStr.startsWith("npm:")) {
|
|
2042
|
+
const result = await loadExtensionForDescriptorAsync(entryStr, configFilePath, stepLog);
|
|
2043
|
+
if (result) loaded.push(result);
|
|
2044
|
+
} else if (entryStr.startsWith("file:")) {
|
|
2045
|
+
const result = loadExtensionFromFileDescriptorSync(entryStr, configFilePath, stepLog);
|
|
2046
|
+
if (result) loaded.push(result);
|
|
1923
2047
|
}
|
|
1924
2048
|
}
|
|
1925
|
-
return
|
|
2049
|
+
return loaded;
|
|
1926
2050
|
}
|
|
1927
2051
|
function createRuntimeFromConfigSync(options = {}) {
|
|
1928
2052
|
const registry = new chunkTOSPHMYU_cjs.ToolRegistry();
|
|
1929
2053
|
const stepLog = options.stepLog;
|
|
1930
2054
|
if (options.coreTools !== void 0) {
|
|
2055
|
+
if (options.configFilePath) {
|
|
2056
|
+
const all = loadAllExtensionsFromToolYamlSync(options.configFilePath, stepLog);
|
|
2057
|
+
if (all.length > 0) {
|
|
2058
|
+
if (stepLog) stepLog(`Registered ${all.length} extension(s) from tool.yaml`);
|
|
2059
|
+
const runtime3 = new PTCRuntime({ registry });
|
|
2060
|
+
for (const ext of all) {
|
|
2061
|
+
const prefix = ext.descriptor.startsWith("file:") ? fileDescriptorToRegistryPrefix(ext.descriptor) : npmDescriptorToRegistryPrefix(ext.descriptor, ext.resolvedVersion);
|
|
2062
|
+
const reg = prefix ? createPrefixingRegistry(registry, prefix) : registry;
|
|
2063
|
+
const adapter = ext.register(reg, options.coreTools);
|
|
2064
|
+
runtime3.registerAdapter(adapter);
|
|
2065
|
+
}
|
|
2066
|
+
return { runtime: runtime3, registry };
|
|
2067
|
+
}
|
|
2068
|
+
}
|
|
1931
2069
|
if (stepLog) stepLog("Trying extension from node_modules");
|
|
1932
|
-
|
|
2070
|
+
const extensionNode = loadExtensionFromNodeModules();
|
|
1933
2071
|
if (extensionNode) {
|
|
1934
2072
|
if (stepLog) stepLog("Registered extension from node_modules");
|
|
1935
2073
|
const descriptor = `npm:${extensionNode.packageName}`;
|
|
1936
|
-
const resolvedVersion = getInstalledPackageVersion(extensionNode.packageName);
|
|
1937
|
-
const prefix = npmDescriptorToRegistryPrefix(descriptor, resolvedVersion
|
|
2074
|
+
const resolvedVersion = getInstalledPackageVersion(extensionNode.packageName) ?? resolveLatestVersionFromRegistry(extensionNode.packageName);
|
|
2075
|
+
const prefix = npmDescriptorToRegistryPrefix(descriptor, resolvedVersion);
|
|
1938
2076
|
const reg = prefix ? createPrefixingRegistry(registry, prefix) : registry;
|
|
1939
2077
|
const coreAdapter = extensionNode.register(reg, options.coreTools);
|
|
1940
2078
|
const runtime3 = new PTCRuntime({ registry });
|
|
1941
2079
|
runtime3.registerAdapter(coreAdapter);
|
|
1942
2080
|
return { runtime: runtime3, registry };
|
|
1943
2081
|
}
|
|
1944
|
-
if (options.configFilePath) {
|
|
1945
|
-
const extensionFromNodeModules = loadExtensionFromToolYamlNodeModules(options.configFilePath, stepLog);
|
|
1946
|
-
if (extensionFromNodeModules) {
|
|
1947
|
-
if (stepLog) stepLog("Registered extension from tool.yaml list (node_modules)");
|
|
1948
|
-
const prefix = npmDescriptorToRegistryPrefix(extensionFromNodeModules.descriptor, extensionFromNodeModules.resolvedVersion);
|
|
1949
|
-
const reg = prefix ? createPrefixingRegistry(registry, prefix) : registry;
|
|
1950
|
-
const coreAdapter = extensionFromNodeModules.register(reg, options.coreTools);
|
|
1951
|
-
const runtime3 = new PTCRuntime({ registry });
|
|
1952
|
-
runtime3.registerAdapter(coreAdapter);
|
|
1953
|
-
return { runtime: runtime3, registry };
|
|
1954
|
-
}
|
|
1955
|
-
if (stepLog) stepLog("No extension in node_modules, loading from tool.yaml cache");
|
|
1956
|
-
const extensionCache = loadExtensionFromToolYamlCache(options.configFilePath, stepLog);
|
|
1957
|
-
if (extensionCache) {
|
|
1958
|
-
if (stepLog) stepLog("Registered extension from cache");
|
|
1959
|
-
const prefix = npmDescriptorToRegistryPrefix(extensionCache.descriptor, extensionCache.resolvedVersion);
|
|
1960
|
-
const reg = prefix ? createPrefixingRegistry(registry, prefix) : registry;
|
|
1961
|
-
const coreAdapter = extensionCache.register(reg, options.coreTools);
|
|
1962
|
-
const runtime3 = new PTCRuntime({ registry });
|
|
1963
|
-
runtime3.registerAdapter(coreAdapter);
|
|
1964
|
-
return { runtime: runtime3, registry };
|
|
1965
|
-
}
|
|
1966
|
-
}
|
|
1967
2082
|
const runtime2 = new PTCRuntime({ registry });
|
|
1968
2083
|
return { runtime: runtime2, registry };
|
|
1969
2084
|
}
|
|
@@ -1972,27 +2087,17 @@ function createRuntimeFromConfigSync(options = {}) {
|
|
|
1972
2087
|
}
|
|
1973
2088
|
async function createRuntimeFromConfig(options = {}) {
|
|
1974
2089
|
if (options.coreTools !== void 0 && options.configFilePath) {
|
|
1975
|
-
const
|
|
1976
|
-
if (
|
|
1977
|
-
if (options.stepLog) options.stepLog(
|
|
2090
|
+
const all = await loadAllExtensionsFromToolYamlAsync(options.configFilePath, options.stepLog);
|
|
2091
|
+
if (all.length > 0) {
|
|
2092
|
+
if (options.stepLog) options.stepLog(`Registered ${all.length} extension(s) from tool.yaml`);
|
|
1978
2093
|
const registry = new chunkTOSPHMYU_cjs.ToolRegistry();
|
|
1979
|
-
const prefix = npmDescriptorToRegistryPrefix(fromNodeModules.descriptor, fromNodeModules.resolvedVersion);
|
|
1980
|
-
const reg = prefix ? createPrefixingRegistry(registry, prefix) : registry;
|
|
1981
|
-
const coreAdapter = fromNodeModules.register(reg, options.coreTools);
|
|
1982
2094
|
const runtime = new PTCRuntime({ registry });
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
|
|
1989
|
-
if (options.stepLog) options.stepLog("Registered extension from cache");
|
|
1990
|
-
const registry = new chunkTOSPHMYU_cjs.ToolRegistry();
|
|
1991
|
-
const prefix = npmDescriptorToRegistryPrefix(fromCache.descriptor, fromCache.resolvedVersion);
|
|
1992
|
-
const reg = prefix ? createPrefixingRegistry(registry, prefix) : registry;
|
|
1993
|
-
const coreAdapter = fromCache.register(reg, options.coreTools);
|
|
1994
|
-
const runtime = new PTCRuntime({ registry });
|
|
1995
|
-
runtime.registerAdapter(coreAdapter);
|
|
2095
|
+
for (const ext of all) {
|
|
2096
|
+
const prefix = ext.descriptor.startsWith("file:") ? fileDescriptorToRegistryPrefix(ext.descriptor) : npmDescriptorToRegistryPrefix(ext.descriptor, ext.resolvedVersion);
|
|
2097
|
+
const reg = prefix ? createPrefixingRegistry(registry, prefix) : registry;
|
|
2098
|
+
const adapter = ext.register(reg, options.coreTools);
|
|
2099
|
+
runtime.registerAdapter(adapter);
|
|
2100
|
+
}
|
|
1996
2101
|
return { runtime, registry };
|
|
1997
2102
|
}
|
|
1998
2103
|
}
|
|
@@ -2024,6 +2129,7 @@ exports.createRuntimeFromConfig = createRuntimeFromConfig;
|
|
|
2024
2129
|
exports.createRuntimeFromConfigSync = createRuntimeFromConfigSync;
|
|
2025
2130
|
exports.ensurePackageInCache = ensurePackageInCache;
|
|
2026
2131
|
exports.expandToolDescriptorsToRegistryNames = expandToolDescriptorsToRegistryNames;
|
|
2132
|
+
exports.fileDescriptorToPackagePrefix = fileDescriptorToPackagePrefix;
|
|
2027
2133
|
exports.findAndLoadToolConfig = findAndLoadToolConfig;
|
|
2028
2134
|
exports.getDisplayScope = getDisplayScope;
|
|
2029
2135
|
exports.getPackageEntryPath = getPackageEntryPath;
|
|
@@ -2032,12 +2138,14 @@ exports.isBarePackageDescriptor = isBarePackageDescriptor;
|
|
|
2032
2138
|
exports.isNpmToolDescriptor = isNpmToolDescriptor;
|
|
2033
2139
|
exports.loadToolConfig = loadToolConfig;
|
|
2034
2140
|
exports.normalizeToolList = normalizeToolList;
|
|
2141
|
+
exports.npmDescriptorToPackagePrefixWithVersion = npmDescriptorToPackagePrefixWithVersion;
|
|
2035
2142
|
exports.npmDescriptorToRegistryPrefix = npmDescriptorToRegistryPrefix;
|
|
2036
2143
|
exports.parseNpmToolDescriptor = parseNpmToolDescriptor;
|
|
2144
|
+
exports.resolveLatestVersionFromRegistry = resolveLatestVersionFromRegistry;
|
|
2037
2145
|
exports.resolveNpmToolDescriptor = resolveNpmToolDescriptor;
|
|
2038
2146
|
exports.resolveSandboxedPath = resolveSandboxedPath;
|
|
2039
2147
|
exports.resolveToolDescriptor = resolveToolDescriptor;
|
|
2040
2148
|
exports.sanitizeForLog = sanitizeForLog;
|
|
2041
2149
|
exports.summarizeForLog = summarizeForLog;
|
|
2042
|
-
//# sourceMappingURL=chunk-
|
|
2043
|
-
//# sourceMappingURL=chunk-
|
|
2150
|
+
//# sourceMappingURL=chunk-2WDDJYR7.cjs.map
|
|
2151
|
+
//# sourceMappingURL=chunk-2WDDJYR7.cjs.map
|