@socketsecurity/lib 6.0.8 → 6.0.10
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/CHANGELOG.md +28 -0
- package/README.md +8 -9
- package/dist/abort/signal.d.ts +1 -1
- package/dist/abort/signal.js +1 -1
- package/dist/ai/agent-context.d.mts +1 -1
- package/dist/ai/agent-context.js +3 -2
- package/dist/ai/backends.d.mts +3 -3
- package/dist/ai/backends.js +2 -2
- package/dist/ai/billing-context.d.mts +74 -0
- package/dist/ai/billing-context.js +129 -0
- package/dist/ai/credentials.d.mts +39 -5
- package/dist/ai/credentials.js +61 -6
- package/dist/ai/discover.d.mts +4 -0
- package/dist/ai/discover.js +4 -0
- package/dist/ai/exec.d.mts +1 -1
- package/dist/ai/exec.js +1 -1
- package/dist/ai/http.d.mts +8 -8
- package/dist/ai/http.js +6 -6
- package/dist/ai/profiles.d.mts +9 -10
- package/dist/ai/profiles.js +0 -5
- package/dist/ai/role.d.mts +58 -0
- package/dist/ai/role.js +96 -0
- package/dist/ai/route-heuristic.d.mts +177 -0
- package/dist/ai/route-heuristic.js +194 -0
- package/dist/ai/route.d.mts +31 -17
- package/dist/ai/route.js +35 -19
- package/dist/ai/spawn.d.mts +34 -1
- package/dist/ai/spawn.js +115 -3
- package/dist/ai/subagent-status.d.mts +2 -0
- package/dist/ai/subagent-status.js +2 -0
- package/dist/ai/tier.d.mts +1 -1
- package/dist/ai/types.d.mts +19 -2
- package/dist/ai/worktree.d.mts +1 -1
- package/dist/ai/worktree.js +3 -2
- package/dist/argv/parse.d.ts +2 -0
- package/dist/argv/parse.js +2 -0
- package/dist/bin/_internal.d.ts +1 -1
- package/dist/bin/_internal.js +1 -1
- package/dist/bin/prim.cjs +19253 -13937
- package/dist/bin/resolve.js +1 -1
- package/dist/bin/shadow.js +2 -1
- package/dist/bin/which.d.ts +28 -3
- package/dist/bin/which.js +45 -3
- package/dist/cacache/_internal.d.ts +10 -2
- package/dist/cacache/_internal.js +6 -10
- package/dist/cache/ttl/_internal.d.ts +33 -0
- package/dist/cache/ttl/_internal.js +68 -0
- package/dist/cache/ttl/browser.d.ts +56 -0
- package/dist/cache/ttl/browser.js +257 -0
- package/dist/cache/ttl/store.js +11 -34
- package/dist/cache/ttl/types.d.ts +46 -3
- package/dist/checks/primordials-defaults.d.ts +5 -5
- package/dist/checks/primordials-defaults.js +5 -5
- package/dist/checks/primordials.d.ts +1 -1
- package/dist/checks/primordials.js +25 -17
- package/dist/cli/check-primordials.d.ts +6 -1
- package/dist/cli/check-primordials.js +14 -5
- package/dist/cli/check.js +1 -1
- package/dist/cli/socket-lib.d.ts +1 -1
- package/dist/cli/socket-lib.js +3 -3
- package/dist/colors/socket-palette.d.ts +1 -1
- package/dist/compression/brotli.d.ts +6 -2
- package/dist/compression/brotli.js +5 -1
- package/dist/compression/gzip.d.ts +6 -2
- package/dist/compression/gzip.js +7 -2
- package/dist/config/layers.d.ts +53 -0
- package/dist/config/layers.js +83 -0
- package/dist/constants/agents.d.ts +3 -0
- package/dist/constants/agents.js +3 -0
- package/dist/constants/node.d.ts +14 -0
- package/dist/constants/node.js +14 -0
- package/dist/constants/package-default-node-range.js +1 -5
- package/dist/constants/packages.d.ts +5 -0
- package/dist/constants/packages.js +5 -0
- package/dist/constants/platform.d.ts +1 -1
- package/dist/constants/platform.js +1 -1
- package/dist/constants/socket.js +1 -1
- package/dist/constants/typescript.d.ts +5 -0
- package/dist/constants/typescript.js +5 -0
- package/dist/debug/_internal.d.ts +22 -7
- package/dist/debug/_internal.js +33 -15
- package/dist/debug/caller-info.js +1 -1
- package/dist/debug/namespace.js +11 -8
- package/dist/debug/output.d.ts +12 -1
- package/dist/debug/output.js +33 -16
- package/dist/dlx/binary-cache.js +1 -1
- package/dist/dlx/binary-resolution.js +8 -5
- package/dist/dlx/firewall.js +1 -1
- package/dist/dlx/lockfile.js +1 -1
- package/dist/eco/npm/npm/parse-lockfile.js +3 -2
- package/dist/eco/npm/vlt/exec.d.ts +1 -1
- package/dist/eco/npm/vlt/exec.js +1 -1
- package/dist/eco/npm/yarnpkg/yarn/parse-lockfile.js +1 -1
- package/dist/env/agents.d.ts +6 -0
- package/dist/env/agents.js +29 -0
- package/dist/env/flags.d.ts +12 -0
- package/dist/env/flags.js +23 -0
- package/dist/env/github-status.js +2 -2
- package/dist/env/providers.d.ts +6 -0
- package/dist/env/providers.js +23 -0
- package/dist/env/proxy.js +1 -1
- package/dist/env/rewire.d.ts +37 -3
- package/dist/env/rewire.js +60 -29
- package/dist/env/runtimes.d.ts +9 -0
- package/dist/env/runtimes.js +53 -0
- package/dist/env/socket-cli.d.ts +5 -2
- package/dist/env/socket-cli.js +6 -3
- package/dist/env/xdg.d.ts +17 -0
- package/dist/env/xdg.js +21 -1
- package/dist/errors/predicates.d.ts +3 -2
- package/dist/errors/predicates.js +5 -3
- package/dist/events/exit/_internal.d.ts +1 -23
- package/dist/external/@npmcli/package-json.js +3570 -4905
- package/dist/external/@npmcli/promise-spawn.js +2 -2
- package/dist/external/@sinclair/typebox/value.js +5 -4
- package/dist/external/@socketregistry/yocto-spinner.js +3 -3
- package/dist/external/@yarnpkg/extensions.js +1 -1
- package/dist/external/adm-zip.d.ts +82 -0
- package/dist/external/adm-zip.js +2 -2
- package/dist/external/cacache.d.ts +87 -0
- package/dist/external/debug.d.ts +22 -0
- package/dist/external/debug.js +11 -4
- package/dist/external/del.d.ts +1 -0
- package/dist/external/external-pack.d.ts +12 -0
- package/dist/external/external-pack.js +42 -35
- package/dist/external/fast-glob.d.ts +8 -0
- package/dist/external/fast-sort.d.ts +1 -0
- package/dist/external/get-east-asian-width.d.ts +5 -0
- package/dist/external/get-east-asian-width.js +8 -1
- package/dist/external/has-flag.d.ts +1 -0
- package/dist/external/inquirer-pack.d.ts +18 -0
- package/dist/external/libnpmexec.d.ts +35 -0
- package/dist/external/libnpmpack.d.ts +1 -0
- package/dist/external/make-fetch-happen.d.ts +13 -0
- package/dist/external/normalize-package-data.d.ts +4 -0
- package/dist/external/npm-core.d.ts +14 -0
- package/dist/external/npm-pack.d.ts +24 -0
- package/dist/external/npm-pack.js +28934 -31885
- package/dist/external/npm-package-arg.d.ts +4 -0
- package/dist/external/p-map.js +8 -1
- package/dist/external/pacote.d.ts +15 -0
- package/dist/external/pico-pack.d.ts +16 -0
- package/dist/external/pico-pack.js +38 -23
- package/dist/external/picomatch.d.ts +96 -0
- package/dist/external/pony-cause.d.ts +14 -0
- package/dist/external/semver.d.ts +60 -0
- package/dist/external/semver.js +1459 -4
- package/dist/external/shell-quote.d.ts +51 -0
- package/dist/external/shell-quote.js +55 -15
- package/dist/external/signal-exit.d.ts +1 -0
- package/dist/external/spdx-correct.d.ts +4 -0
- package/dist/external/spdx-expression-parse.d.ts +4 -0
- package/dist/external/spdx-pack.d.ts +10 -0
- package/dist/external/std-env.d.ts +284 -0
- package/dist/external/std-env.js +323 -0
- package/dist/external/streaming-iterables.d.ts +11 -0
- package/dist/external/supports-color.d.ts +1 -0
- package/dist/external/tar-fs.d.ts +31 -0
- package/dist/external/tar-fs.js +63 -16
- package/dist/external/validate-npm-package-name.d.ts +4 -0
- package/dist/external/which.d.ts +25 -0
- package/dist/external/which.js +2 -2
- package/dist/external/yargs-parser.d.ts +2 -0
- package/dist/external/yargs-parser.js +11 -3
- package/dist/external/yoctocolors-cjs.d.ts +51 -0
- package/dist/external-tools/bazel/asset-names.d.ts +1 -1
- package/dist/external-tools/bazel/from-download.d.ts +1 -1
- package/dist/external-tools/bazel/resolve.d.ts +3 -0
- package/dist/external-tools/bazel/resolve.js +3 -0
- package/dist/external-tools/cdxgen/asset-names.d.ts +5 -5
- package/dist/external-tools/cdxgen/asset-names.js +3 -3
- package/dist/external-tools/cdxgen/from-download.d.ts +2 -2
- package/dist/external-tools/cdxgen/from-download.js +1 -1
- package/dist/external-tools/cdxgen/resolve.d.ts +4 -1
- package/dist/external-tools/cdxgen/resolve.js +4 -1
- package/dist/external-tools/cdxgen/types.d.ts +1 -1
- package/dist/external-tools/from-download.d.ts +2 -2
- package/dist/external-tools/from-download.js +1 -1
- package/dist/external-tools/janus/asset-names.d.ts +4 -1
- package/dist/external-tools/janus/asset-names.js +3 -0
- package/dist/external-tools/janus/from-download.d.ts +3 -3
- package/dist/external-tools/janus/from-download.js +2 -2
- package/dist/external-tools/janus/resolve.d.ts +3 -0
- package/dist/external-tools/janus/resolve.js +3 -0
- package/dist/external-tools/jre/asset-names.d.ts +3 -1
- package/dist/external-tools/jre/asset-names.js +2 -0
- package/dist/external-tools/jre/detect-platform-arch.js +1 -1
- package/dist/external-tools/jre/from-download.d.ts +1 -1
- package/dist/external-tools/manifest.d.ts +5 -3
- package/dist/external-tools/manifest.js +5 -3
- package/dist/external-tools/opengrep/asset-names.d.ts +1 -1
- package/dist/external-tools/opengrep/resolve.d.ts +3 -0
- package/dist/external-tools/opengrep/resolve.js +3 -0
- package/dist/external-tools/python/asset-names.d.ts +3 -1
- package/dist/external-tools/python/asset-names.js +8 -4
- package/dist/external-tools/python/pin.js +3 -1
- package/dist/external-tools/python/resolve.d.ts +3 -0
- package/dist/external-tools/python/resolve.js +3 -0
- package/dist/external-tools/python/uv-install.d.ts +89 -0
- package/dist/external-tools/python/uv-install.js +165 -0
- package/dist/external-tools/sbt/resolve.d.ts +3 -0
- package/dist/external-tools/sbt/resolve.js +3 -0
- package/dist/external-tools/skillspector/from-uv.d.ts +30 -0
- package/dist/external-tools/skillspector/from-uv.js +56 -0
- package/dist/external-tools/skillspector/resolve.d.ts +18 -3
- package/dist/external-tools/skillspector/resolve.js +21 -8
- package/dist/external-tools/skillspector/types.d.ts +3 -1
- package/dist/external-tools/synp/resolve.d.ts +3 -0
- package/dist/external-tools/synp/resolve.js +3 -0
- package/dist/external-tools/trivy/asset-names.d.ts +1 -1
- package/dist/external-tools/trivy/resolve.d.ts +3 -0
- package/dist/external-tools/trivy/resolve.js +3 -0
- package/dist/external-tools/trufflehog/asset-names.d.ts +4 -1
- package/dist/external-tools/trufflehog/asset-names.js +3 -0
- package/dist/external-tools/trufflehog/from-download.d.ts +1 -1
- package/dist/external-tools/trufflehog/resolve.d.ts +3 -0
- package/dist/external-tools/trufflehog/resolve.js +3 -0
- package/dist/external-tools/uv/asset-names.d.ts +36 -0
- package/dist/external-tools/uv/asset-names.js +73 -0
- package/dist/external-tools/uv/from-download.d.ts +17 -0
- package/dist/external-tools/uv/from-download.js +50 -0
- package/dist/external-tools/uv/from-path.d.ts +5 -0
- package/dist/external-tools/uv/from-path.js +22 -0
- package/dist/external-tools/uv/from-vfs.d.ts +7 -0
- package/dist/external-tools/uv/from-vfs.js +26 -0
- package/dist/external-tools/uv/resolve.d.ts +28 -0
- package/dist/external-tools/uv/resolve.js +64 -0
- package/dist/external-tools/uv/types.d.ts +24 -0
- package/dist/external-tools/uv/types.js +2 -0
- package/dist/fleet/repo-config.d.ts +55 -0
- package/dist/fleet/repo-config.js +81 -0
- package/dist/fs/_internal.d.ts +1 -1
- package/dist/fs/_internal.js +1 -1
- package/dist/fs/access.d.ts +2 -0
- package/dist/fs/access.js +2 -0
- package/dist/fs/copy.d.ts +88 -0
- package/dist/fs/copy.js +89 -0
- package/dist/fs/find.js +1 -2
- package/dist/fs/inspect.d.ts +2 -2
- package/dist/fs/read-file.js +3 -4
- package/dist/fs/safe.js +2 -2
- package/dist/git/_internal.js +7 -3
- package/dist/github/commit.d.ts +92 -0
- package/dist/github/commit.js +113 -0
- package/dist/github/ghsa.js +1 -1
- package/dist/github/refs-graphql.js +1 -1
- package/dist/github/refs.js +10 -15
- package/dist/github/request.js +1 -1
- package/dist/github/token.d.ts +5 -2
- package/dist/github/token.js +6 -4
- package/dist/github/workflow-runs.d.ts +107 -0
- package/dist/github/workflow-runs.js +98 -0
- package/dist/globs/_internal.js +1 -1
- package/dist/http-request/_internal.d.ts +1 -1
- package/dist/http-request/browser.d.ts +6 -0
- package/dist/http-request/browser.js +4 -3
- package/dist/http-request/checksum-file.js +1 -1
- package/dist/http-request/download.js +2 -0
- package/dist/http-request/headers.d.ts +1 -1
- package/dist/http-request/headers.js +2 -2
- package/dist/http-request/request-attempt.js +6 -3
- package/dist/http-request/request-types.d.ts +10 -1
- package/dist/http-request/request.js +2 -2
- package/dist/http-request/user-agent.d.ts +23 -2
- package/dist/http-request/user-agent.js +48 -6
- package/dist/integrity.d.ts +127 -78
- package/dist/integrity.js +170 -84
- package/dist/json/format.js +4 -1
- package/dist/logger/_internal.d.ts +13 -15
- package/dist/logger/_internal.js +21 -21
- package/dist/logger/colors.d.ts +10 -5
- package/dist/logger/colors.js +7 -14
- package/dist/logger/console-methods.js +2 -2
- package/dist/logger/console.d.ts +1 -0
- package/dist/logger/console.js +9 -9
- package/dist/logger/node.js +2 -1
- package/dist/logger/symbols-builder.js +7 -8
- package/dist/logger/symbols.js +8 -8
- package/dist/native-messaging/install.js +1 -1
- package/dist/native-messaging/rate-limit.d.ts +4 -1
- package/dist/native-messaging/rate-limit.js +4 -1
- package/dist/node/events.d.ts +3 -0
- package/dist/node/events.js +3 -0
- package/dist/node/fs.d.ts +1 -1
- package/dist/node/module.d.ts +73 -2
- package/dist/node/module.js +97 -12
- package/dist/node/timers-promises.d.ts +3 -0
- package/dist/node/timers-promises.js +3 -0
- package/dist/node/url.d.ts +3 -0
- package/dist/node/url.js +3 -0
- package/dist/npm/meta-cache.d.ts +183 -0
- package/dist/npm/meta-cache.js +318 -0
- package/dist/npm/meta-slice.d.ts +27 -0
- package/dist/npm/meta-slice.js +68 -0
- package/dist/npm/meta-types.d.ts +282 -0
- package/dist/npm/meta-types.js +2 -0
- package/dist/npm/meta.d.ts +125 -0
- package/dist/npm/meta.js +347 -0
- package/dist/npm/registry.d.ts +212 -0
- package/dist/npm/registry.js +284 -0
- package/dist/objects/getters.d.ts +1 -1
- package/dist/objects/getters.js +1 -1
- package/dist/objects/predicates.js +1 -1
- package/dist/packages/exports.js +2 -2
- package/dist/packages/isolation.js +1 -1
- package/dist/packages/manifest.d.ts +29 -0
- package/dist/packages/manifest.js +44 -9
- package/dist/packages/metadata-extensions.js +2 -4
- package/dist/packages/normalize.js +1 -1
- package/dist/packages/provenance.d.ts +8 -0
- package/dist/packages/provenance.js +10 -2
- package/dist/packages/specs.js +1 -1
- package/dist/packages/tarball.js +1 -2
- package/dist/packages/validation.d.ts +0 -10
- package/dist/packages/validation.js +0 -14
- package/dist/paths/_internal.d.ts +1 -7
- package/dist/paths/_internal.js +9 -15
- package/dist/paths/conversion.js +1 -1
- package/dist/paths/exts.d.ts +30 -0
- package/dist/paths/exts.js +30 -0
- package/dist/paths/filenames.d.ts +6 -0
- package/dist/paths/filenames.js +6 -0
- package/dist/paths/globs.d.ts +6 -0
- package/dist/paths/globs.js +6 -0
- package/dist/paths/normalize.js +1 -1
- package/dist/paths/predicates.js +2 -1
- package/dist/paths/resolve.js +19 -14
- package/dist/paths/socket.d.ts +81 -30
- package/dist/paths/socket.js +102 -28
- package/dist/perf/metrics.js +1 -1
- package/dist/perf/report.js +5 -3
- package/dist/pkg-ext/data.js +0 -2
- package/dist/primordials/globals.d.ts +1 -1
- package/dist/primordials/globals.js +1 -1
- package/dist/primordials/headers.d.ts +13 -1
- package/dist/primordials/headers.js +13 -1
- package/dist/primordials/process.d.ts +1 -1
- package/dist/primordials/process.js +1 -1
- package/dist/primordials/url.d.ts +18 -0
- package/dist/primordials/url.js +18 -0
- package/dist/process/spawn/child.js +3 -5
- package/dist/promises/_internal.d.ts +1 -1
- package/dist/promises/_internal.js +1 -2
- package/dist/promises/options.js +3 -3
- package/dist/regexps/spec.js +1 -1
- package/dist/releases/socket-btm-binary-naming.js +12 -1
- package/dist/schema/validate.js +1 -1
- package/dist/secrets/_internal.d.ts +1 -1
- package/dist/secrets/_internal.js +1 -1
- package/dist/secrets/broker.d.ts +35 -0
- package/dist/secrets/broker.js +72 -0
- package/dist/secrets/find.d.ts +8 -6
- package/dist/secrets/find.js +17 -3
- package/dist/secrets/keychain.d.ts +10 -1
- package/dist/secrets/keychain.js +10 -1
- package/dist/secrets/rc.js +1 -1
- package/dist/secrets/socket-api-token.d.ts +1 -1
- package/dist/secrets/socket-api-token.js +1 -1
- package/dist/secrets/types.d.ts +1 -1
- package/dist/smol/detect.js +1 -1
- package/dist/smol/http.d.ts +2 -0
- package/dist/smol/http.js +3 -1
- package/dist/smol/https.d.ts +2 -0
- package/dist/smol/https.js +3 -1
- package/dist/smol/manifest.js +1 -1
- package/dist/smol/path.js +1 -1
- package/dist/smol/primordial.js +1 -1
- package/dist/smol/purl.js +1 -1
- package/dist/smol/versions.js +1 -1
- package/dist/smol/vfs.js +1 -1
- package/dist/sorts/_internal.d.ts +2 -4
- package/dist/sorts/_internal.js +1 -7
- package/dist/sorts/semver.js +2 -2
- package/dist/spinner/create-spinner-class.js +1 -1
- package/dist/spinner/format.js +2 -4
- package/dist/stdio/footer.js +8 -7
- package/dist/stdio/progress.js +1 -1
- package/dist/stdio/prompts.d.ts +8 -23
- package/dist/stdio/prompts.js +28 -52
- package/dist/strings/format.js +1 -1
- package/dist/strings/predicates.d.ts +2 -2
- package/dist/strings/search.js +2 -2
- package/dist/strings/types.d.ts +4 -0
- package/dist/strings/width.d.ts +1 -0
- package/dist/strings/width.js +17 -8
- package/dist/themes/context.d.ts +18 -3
- package/dist/themes/context.js +28 -14
- package/dist/versions/_internal.d.ts +43 -13
- package/dist/versions/_internal.js +27 -15
- package/dist/versions/compare.d.ts +16 -10
- package/dist/versions/compare.js +36 -16
- package/dist/versions/parse.js +1 -1
- package/dist/versions/range.js +3 -2
- package/dist/words/pluralize.js +4 -1
- package/llms.txt +63 -0
- package/package.json +271 -40
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* Socket Lib - Built with rolldown */
|
|
3
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
+
const require_runtime = require('../../_virtual/_rolldown/runtime.js');
|
|
5
|
+
const require_constants_platform = require('../../constants/platform.js');
|
|
6
|
+
const require_process_spawn_child = require('../../process/spawn/child.js');
|
|
7
|
+
const require_paths_socket = require('../../paths/socket.js');
|
|
8
|
+
const require_fs_safe = require('../../fs/safe.js');
|
|
9
|
+
const require_dlx_cache = require('../../dlx/cache.js');
|
|
10
|
+
const require_external_tools_python_pip_install = require('./pip-install.js');
|
|
11
|
+
let node_fs = require("node:fs");
|
|
12
|
+
let node_process = require("node:process");
|
|
13
|
+
node_process = require_runtime.__toESM(node_process);
|
|
14
|
+
let node_path = require("node:path");
|
|
15
|
+
node_path = require_runtime.__toESM(node_path);
|
|
16
|
+
|
|
17
|
+
//#region src/external-tools/python/uv-install.ts
|
|
18
|
+
/**
|
|
19
|
+
* @file Uv project install helpers — the locked-source-of-truth half of the
|
|
20
|
+
* "uv project + dlx materialize" model.
|
|
21
|
+
* uv (Astral's Python package manager) drives a uv PROJECT — a directory with
|
|
22
|
+
* `pyproject.toml` + `uv.lock` (+ optional `[tool.uv] exclude-newer`). The
|
|
23
|
+
* lock manifests every transitive version, so the project is the most
|
|
24
|
+
* locked-down, most-version-pinned form a Python tool install can take.
|
|
25
|
+
* Two entry points, used together:
|
|
26
|
+
*
|
|
27
|
+
* 1. `uvSyncProject` — `uv sync --locked --project <dir>`. Installs the lock's
|
|
28
|
+
* exact closure into the project's own `.venv` and FAILS if `uv.lock` is
|
|
29
|
+
* out of date vs `pyproject.toml` (the `--locked` gate). This is the
|
|
30
|
+
* verification-grade install: it proves the lock resolves.
|
|
31
|
+
* 2. `uvExportMaterialize` — `uv export --locked` → a flat, hash-pinned
|
|
32
|
+
* requirements list, then `uv pip install --target <dir>` into a
|
|
33
|
+
* content-addressed dlx dir (no venv → no symlinks / absolute `home=`, so
|
|
34
|
+
* the result is relocatable + SEA-VFS-embeddable). Mirrors
|
|
35
|
+
* `downloadPipPackage`'s lock-guarded, idempotent shape. Both take an
|
|
36
|
+
* explicit `uvBin` (typically `resolveUv().path`) and never mutate a
|
|
37
|
+
* shared interpreter — the project venv and the dlx target are
|
|
38
|
+
* self-contained.
|
|
39
|
+
*/
|
|
40
|
+
const MAX_RETRIES = 3;
|
|
41
|
+
const WAIT_TICKS = 30;
|
|
42
|
+
/**
|
|
43
|
+
* Export a uv project's locked closure to a flat requirements list, then
|
|
44
|
+
* `uv pip install --target` it into a content-addressed dlx dir. The dlx dir
|
|
45
|
+
* holds plain files (no venv), so it is relocatable and embeddable in a smol
|
|
46
|
+
* binary's VFS — the bundle-safe analog of `uvSyncProject`'s `.venv`.
|
|
47
|
+
*
|
|
48
|
+
* Lock-guarded + idempotent (reuses `pip-install`'s `isAlreadyInstalled` /
|
|
49
|
+
* `isStaleLock`): a non-empty target dir short-circuits, and concurrent callers
|
|
50
|
+
* serialize on a `.installing` sentinel one level up from the target. Throws on
|
|
51
|
+
* a failed uv command or if the lock can't be acquired after MAX_RETRIES.
|
|
52
|
+
*/
|
|
53
|
+
async function uvExportMaterialize(options, retryCount = 0) {
|
|
54
|
+
const opts = {
|
|
55
|
+
__proto__: null,
|
|
56
|
+
...options
|
|
57
|
+
};
|
|
58
|
+
const { projectDir, uvBin } = opts;
|
|
59
|
+
const targetDir = opts.targetDir ?? uvProjectTargetDir(projectDir);
|
|
60
|
+
if (retryCount >= MAX_RETRIES) throw new Error(`uvExportMaterialize: could not acquire install lock after ${MAX_RETRIES} retries for ${targetDir}; a peer may be stuck or the lock is stale — remove it and retry`);
|
|
61
|
+
if (await require_external_tools_python_pip_install.isAlreadyInstalled(targetDir)) return {
|
|
62
|
+
installed: false,
|
|
63
|
+
targetDir
|
|
64
|
+
};
|
|
65
|
+
const lockDir = node_path.default.dirname(targetDir);
|
|
66
|
+
await require_fs_safe.safeMkdir(lockDir, { recursive: true });
|
|
67
|
+
const lockFile = node_path.default.join(lockDir, ".installing");
|
|
68
|
+
try {
|
|
69
|
+
await node_fs.promises.writeFile(lockFile, node_process.default.pid.toString(), { flag: "wx" });
|
|
70
|
+
} catch (e) {
|
|
71
|
+
if (e.code !== "EEXIST") throw e;
|
|
72
|
+
let stale = false;
|
|
73
|
+
try {
|
|
74
|
+
stale = require_external_tools_python_pip_install.isStaleLock(Number.parseInt((await node_fs.promises.readFile(lockFile, "utf8")).trim(), 10));
|
|
75
|
+
} catch {
|
|
76
|
+
stale = true;
|
|
77
|
+
}
|
|
78
|
+
if (stale) {
|
|
79
|
+
await require_fs_safe.safeDelete(lockFile, { force: true });
|
|
80
|
+
return uvExportMaterialize(options, retryCount + 1);
|
|
81
|
+
}
|
|
82
|
+
for (let i = 0; i < WAIT_TICKS; i += 1) {
|
|
83
|
+
await new Promise((resolve) => {
|
|
84
|
+
setTimeout(resolve, 1e3);
|
|
85
|
+
});
|
|
86
|
+
if (await require_external_tools_python_pip_install.isAlreadyInstalled(targetDir)) return {
|
|
87
|
+
installed: false,
|
|
88
|
+
targetDir
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
return uvExportMaterialize(options, retryCount + 1);
|
|
92
|
+
}
|
|
93
|
+
try {
|
|
94
|
+
await require_fs_safe.safeMkdir(targetDir, { recursive: true });
|
|
95
|
+
const requirementsPath = node_path.default.join(lockDir, "requirements.locked.txt");
|
|
96
|
+
await require_process_spawn_child.spawn(uvBin, [
|
|
97
|
+
"export",
|
|
98
|
+
"--locked",
|
|
99
|
+
"--no-emit-project",
|
|
100
|
+
"--no-dev",
|
|
101
|
+
"--project",
|
|
102
|
+
projectDir,
|
|
103
|
+
"--output-file",
|
|
104
|
+
requirementsPath
|
|
105
|
+
], {
|
|
106
|
+
shell: require_constants_platform.WIN32,
|
|
107
|
+
stdio: "inherit"
|
|
108
|
+
});
|
|
109
|
+
await require_process_spawn_child.spawn(uvBin, [
|
|
110
|
+
"pip",
|
|
111
|
+
"install",
|
|
112
|
+
"--target",
|
|
113
|
+
targetDir,
|
|
114
|
+
"--requirement",
|
|
115
|
+
requirementsPath
|
|
116
|
+
], {
|
|
117
|
+
shell: require_constants_platform.WIN32,
|
|
118
|
+
stdio: "inherit"
|
|
119
|
+
});
|
|
120
|
+
await require_fs_safe.safeDelete(requirementsPath, { force: true });
|
|
121
|
+
if (!await require_external_tools_python_pip_install.isAlreadyInstalled(targetDir)) throw new Error(`uvExportMaterialize: uv pip install --target ${targetDir} reported success but the target is still empty`);
|
|
122
|
+
return {
|
|
123
|
+
installed: true,
|
|
124
|
+
targetDir
|
|
125
|
+
};
|
|
126
|
+
} finally {
|
|
127
|
+
await require_fs_safe.safeDelete(lockFile, { force: true });
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Content-addressed dlx dir for a uv project's materialized closure:
|
|
132
|
+
* `~/.socket/_dlx/<cacheKey(projectDir)>/site-packages`. Keyed on the project
|
|
133
|
+
* dir so each project gets an isolated target; the analog of `pipPackageDir`.
|
|
134
|
+
*/
|
|
135
|
+
function uvProjectTargetDir(projectDir) {
|
|
136
|
+
return node_path.default.join(require_paths_socket.getSocketDlxDir(), require_dlx_cache.generateCacheKey(projectDir), "site-packages");
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Run `uv sync --locked` against a uv project. Installs the lock's exact
|
|
140
|
+
* dependency closure into the project's `.venv`; the `--locked` flag turns a
|
|
141
|
+
* lock-vs-manifest drift into a hard failure (uv exits non-zero) rather than a
|
|
142
|
+
* silent re-resolution — this is what makes it verification-grade. Throws when
|
|
143
|
+
* uv exits non-zero (drift, missing lock, or a resolution failure).
|
|
144
|
+
*/
|
|
145
|
+
async function uvSyncProject(options) {
|
|
146
|
+
const opts = {
|
|
147
|
+
__proto__: null,
|
|
148
|
+
...options
|
|
149
|
+
};
|
|
150
|
+
const { projectDir, uvBin } = opts;
|
|
151
|
+
await require_process_spawn_child.spawn(uvBin, [
|
|
152
|
+
"sync",
|
|
153
|
+
...opts.locked === false ? [] : ["--locked"],
|
|
154
|
+
"--project",
|
|
155
|
+
projectDir
|
|
156
|
+
], {
|
|
157
|
+
shell: require_constants_platform.WIN32,
|
|
158
|
+
stdio: "inherit"
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
//#endregion
|
|
163
|
+
exports.uvExportMaterialize = uvExportMaterialize;
|
|
164
|
+
exports.uvProjectTargetDir = uvProjectTargetDir;
|
|
165
|
+
exports.uvSyncProject = uvSyncProject;
|
|
@@ -27,5 +27,8 @@ export interface ResolveSbtOptions {
|
|
|
27
27
|
}
|
|
28
28
|
export declare function cacheKey(options: ResolveSbtOptions | undefined): string;
|
|
29
29
|
export declare function doResolveSbt(options?: ResolveSbtOptions | undefined): Promise<ResolvedSbt | undefined>;
|
|
30
|
+
/**
|
|
31
|
+
* @unused No internal or Socket consumers (exercised only by its unit tests).
|
|
32
|
+
*/
|
|
30
33
|
export declare function resetSbtResolution(): void;
|
|
31
34
|
export declare function resolveSbt(options?: ResolveSbtOptions | undefined): Promise<ResolvedSbt | undefined>;
|
|
@@ -42,6 +42,9 @@ async function doResolveSbt(options) {
|
|
|
42
42
|
if (fromPath) return fromPath;
|
|
43
43
|
if (options?.downloadIfMissing) return require_external_tools_sbt_from_download.sbtFromDownload(options.downloadIfMissing);
|
|
44
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* @unused No internal or Socket consumers (exercised only by its unit tests).
|
|
47
|
+
*/
|
|
45
48
|
/* c8 ignore start - test-only escape hatch. */
|
|
46
49
|
function resetSbtResolution() {
|
|
47
50
|
resolutionCache.clear();
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file `skillspectorFromUv()` — locked-uv-project tier of SkillSpector
|
|
3
|
+
* resolution. Given a uv project dir (a `pyproject.toml` + `uv.lock` that pin
|
|
4
|
+
* the upstream git SHA + its full transitive closure) and a resolved `uv`
|
|
5
|
+
* binary, runs `uv sync --locked` to install that exact closure into the
|
|
6
|
+
* project's `.venv` and returns the `skillspector` entry point. This is the
|
|
7
|
+
* most locked-down tier — every dependency version is manifested in uv.lock,
|
|
8
|
+
* and `--locked` hard-fails on lock drift (vs. `from-dlx`'s pip-from-git-SHA
|
|
9
|
+
* venv, which re-resolves the closure freshly). Returns `undefined` when:
|
|
10
|
+
*
|
|
11
|
+
* - No project dir / uv binary is supplied (the caller didn't opt in).
|
|
12
|
+
* - The project files are absent, or `uv sync --locked` fails (lock drift, no
|
|
13
|
+
* network, missing Python). Idempotent: a second call hits the synced venv
|
|
14
|
+
* (`uv sync` is a no-op when the venv already matches the lock).
|
|
15
|
+
*/
|
|
16
|
+
import type { ResolvedSkillSpector } from './types';
|
|
17
|
+
export interface SkillSpectorFromUvOptions {
|
|
18
|
+
/**
|
|
19
|
+
* Absolute path to the `uv` executable (typically `resolveUv().path`).
|
|
20
|
+
*/
|
|
21
|
+
readonly uvBin: string;
|
|
22
|
+
/**
|
|
23
|
+
* Absolute path to the SkillSpector uv project dir (holds `pyproject.toml` +
|
|
24
|
+
* `uv.lock`). Socket ships this under
|
|
25
|
+
* `setup-security-tools/skillspector/`.
|
|
26
|
+
*/
|
|
27
|
+
readonly projectDir: string;
|
|
28
|
+
}
|
|
29
|
+
export declare function skillspectorFromUv(options: SkillSpectorFromUvOptions): Promise<ResolvedSkillSpector | undefined>;
|
|
30
|
+
export declare function venvEntryPoint(projectDir: string): string;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* Socket Lib - Built with rolldown */
|
|
3
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
+
const require_runtime = require('../../_virtual/_rolldown/runtime.js');
|
|
5
|
+
const require_external_tools_python_uv_install = require('../python/uv-install.js');
|
|
6
|
+
let node_fs = require("node:fs");
|
|
7
|
+
let node_process = require("node:process");
|
|
8
|
+
node_process = require_runtime.__toESM(node_process);
|
|
9
|
+
let node_path = require("node:path");
|
|
10
|
+
node_path = require_runtime.__toESM(node_path);
|
|
11
|
+
|
|
12
|
+
//#region src/external-tools/skillspector/from-uv.ts
|
|
13
|
+
/**
|
|
14
|
+
* @file `skillspectorFromUv()` — locked-uv-project tier of SkillSpector
|
|
15
|
+
* resolution. Given a uv project dir (a `pyproject.toml` + `uv.lock` that pin
|
|
16
|
+
* the upstream git SHA + its full transitive closure) and a resolved `uv`
|
|
17
|
+
* binary, runs `uv sync --locked` to install that exact closure into the
|
|
18
|
+
* project's `.venv` and returns the `skillspector` entry point. This is the
|
|
19
|
+
* most locked-down tier — every dependency version is manifested in uv.lock,
|
|
20
|
+
* and `--locked` hard-fails on lock drift (vs. `from-dlx`'s pip-from-git-SHA
|
|
21
|
+
* venv, which re-resolves the closure freshly). Returns `undefined` when:
|
|
22
|
+
*
|
|
23
|
+
* - No project dir / uv binary is supplied (the caller didn't opt in).
|
|
24
|
+
* - The project files are absent, or `uv sync --locked` fails (lock drift, no
|
|
25
|
+
* network, missing Python). Idempotent: a second call hits the synced venv
|
|
26
|
+
* (`uv sync` is a no-op when the venv already matches the lock).
|
|
27
|
+
*/
|
|
28
|
+
async function skillspectorFromUv(options) {
|
|
29
|
+
const { projectDir, uvBin } = {
|
|
30
|
+
__proto__: null,
|
|
31
|
+
...options
|
|
32
|
+
};
|
|
33
|
+
if (!projectDir || !uvBin) return;
|
|
34
|
+
if (!(0, node_fs.existsSync)(node_path.default.join(projectDir, "pyproject.toml")) || !(0, node_fs.existsSync)(node_path.default.join(projectDir, "uv.lock"))) return;
|
|
35
|
+
try {
|
|
36
|
+
await require_external_tools_python_uv_install.uvSyncProject({
|
|
37
|
+
projectDir,
|
|
38
|
+
uvBin
|
|
39
|
+
});
|
|
40
|
+
} catch {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const entry = venvEntryPoint(projectDir);
|
|
44
|
+
if (!(0, node_fs.existsSync)(entry)) return;
|
|
45
|
+
return {
|
|
46
|
+
path: entry,
|
|
47
|
+
source: "uv"
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function venvEntryPoint(projectDir) {
|
|
51
|
+
return node_process.default.platform === "win32" ? node_path.default.join(projectDir, ".venv", "Scripts", "skillspector.exe") : node_path.default.join(projectDir, ".venv", "bin", "skillspector");
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
//#endregion
|
|
55
|
+
exports.skillspectorFromUv = skillspectorFromUv;
|
|
56
|
+
exports.venvEntryPoint = venvEntryPoint;
|
|
@@ -5,9 +5,13 @@
|
|
|
5
5
|
* 1. VFS — smol binary's embedded skillspector (if packed)
|
|
6
6
|
* 2. PATH — `which skillspector` (pipx-installed binaries land here too; the
|
|
7
7
|
* source field distinguishes `'pipx'` vs `'path'`)
|
|
8
|
-
* 3.
|
|
8
|
+
* 3. UV-project — `uv sync --locked` against a uv project (the most locked-down
|
|
9
|
+
* tier; every transitive version pinned in uv.lock). Only runs when
|
|
10
|
+
* `uvProjectDir` + `uvBin` are supplied.
|
|
11
|
+
* 4. DLX-venv — `~/.socket/_dlx/skillspector/<sha>/` with the pinned SHA (the
|
|
12
|
+
* pip-from-git-SHA fallback when no uv project is available). Returns
|
|
9
13
|
* `undefined` when all enabled sources miss. Memoized per
|
|
10
|
-
* sha+cacheDir+localOnly tuple.
|
|
14
|
+
* sha+cacheDir+uvProjectDir+localOnly tuple.
|
|
11
15
|
*/
|
|
12
16
|
import type { ResolvedSkillSpector } from './types';
|
|
13
17
|
export interface ResolveSkillSpectorOptions {
|
|
@@ -17,9 +21,20 @@ export interface ResolveSkillSpectorOptions {
|
|
|
17
21
|
*/
|
|
18
22
|
readonly sha?: string | undefined;
|
|
19
23
|
/**
|
|
20
|
-
*
|
|
24
|
+
* DLX cache override. Defaults to `~/.socket/_dlx/skillspector/<sha>`.
|
|
21
25
|
*/
|
|
22
26
|
readonly cacheDir?: string | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* UV-project tier: absolute path to a uv project dir (a `pyproject.toml` +
|
|
29
|
+
* `uv.lock` pinning the SHA + its closure). When set together with `uvBin`,
|
|
30
|
+
* the locked-uv tier runs ahead of the DLX-venv tier.
|
|
31
|
+
*/
|
|
32
|
+
readonly uvProjectDir?: string | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* UV-project tier: absolute path to the `uv` executable
|
|
35
|
+
* (typically `resolveUv().path`). Required to run the locked-uv tier.
|
|
36
|
+
*/
|
|
37
|
+
readonly uvBin?: string | undefined;
|
|
23
38
|
/**
|
|
24
39
|
* When true, only the VFS + PATH tiers run. Use for check-mode invocations
|
|
25
40
|
* that want to fail-fast if the tool isn't already installed.
|
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
4
4
|
const require_primordials_map_set = require('../../primordials/map-set.js');
|
|
5
5
|
const require_external_tools_skillspector_from_dlx = require('./from-dlx.js');
|
|
6
6
|
const require_external_tools_skillspector_from_path = require('./from-path.js');
|
|
7
|
+
const require_external_tools_skillspector_from_uv = require('./from-uv.js');
|
|
7
8
|
const require_external_tools_skillspector_from_vfs = require('./from-vfs.js');
|
|
8
9
|
|
|
9
10
|
//#region src/external-tools/skillspector/resolve.ts
|
|
@@ -14,20 +15,24 @@ const require_external_tools_skillspector_from_vfs = require('./from-vfs.js');
|
|
|
14
15
|
* 1. VFS — smol binary's embedded skillspector (if packed)
|
|
15
16
|
* 2. PATH — `which skillspector` (pipx-installed binaries land here too; the
|
|
16
17
|
* source field distinguishes `'pipx'` vs `'path'`)
|
|
17
|
-
* 3.
|
|
18
|
+
* 3. UV-project — `uv sync --locked` against a uv project (the most locked-down
|
|
19
|
+
* tier; every transitive version pinned in uv.lock). Only runs when
|
|
20
|
+
* `uvProjectDir` + `uvBin` are supplied.
|
|
21
|
+
* 4. DLX-venv — `~/.socket/_dlx/skillspector/<sha>/` with the pinned SHA (the
|
|
22
|
+
* pip-from-git-SHA fallback when no uv project is available). Returns
|
|
18
23
|
* `undefined` when all enabled sources miss. Memoized per
|
|
19
|
-
* sha+cacheDir+localOnly tuple.
|
|
24
|
+
* sha+cacheDir+uvProjectDir+localOnly tuple.
|
|
20
25
|
*/
|
|
21
26
|
const resolutionCache = new require_primordials_map_set.MapCtor();
|
|
22
27
|
function cacheKey(options) {
|
|
23
|
-
|
|
28
|
+
const opts = {
|
|
24
29
|
__proto__: null,
|
|
25
30
|
...options
|
|
26
31
|
};
|
|
27
|
-
return `${
|
|
32
|
+
return `${opts.sha ?? ""}|${opts.cacheDir ?? ""}|${opts.uvProjectDir ?? ""}|${opts.localOnly ? "local" : "full"}`;
|
|
28
33
|
}
|
|
29
34
|
async function doResolveSkillSpector(options) {
|
|
30
|
-
|
|
35
|
+
const opts = {
|
|
31
36
|
__proto__: null,
|
|
32
37
|
...options
|
|
33
38
|
};
|
|
@@ -37,10 +42,18 @@ async function doResolveSkillSpector(options) {
|
|
|
37
42
|
/* c8 ignore stop */
|
|
38
43
|
const fromPath = await require_external_tools_skillspector_from_path.skillspectorFromPath();
|
|
39
44
|
if (fromPath) return fromPath;
|
|
40
|
-
if (
|
|
45
|
+
if (opts.localOnly) return;
|
|
46
|
+
if (opts.uvProjectDir && opts.uvBin) {
|
|
47
|
+
const fromUv = await require_external_tools_skillspector_from_uv.skillspectorFromUv({
|
|
48
|
+
projectDir: opts.uvProjectDir,
|
|
49
|
+
uvBin: opts.uvBin
|
|
50
|
+
});
|
|
51
|
+
if (fromUv) return fromUv;
|
|
52
|
+
}
|
|
53
|
+
if (!opts.sha) return;
|
|
41
54
|
return require_external_tools_skillspector_from_dlx.skillspectorFromDlx({
|
|
42
|
-
sha:
|
|
43
|
-
cacheDir:
|
|
55
|
+
sha: opts.sha,
|
|
56
|
+
cacheDir: opts.cacheDir
|
|
44
57
|
});
|
|
45
58
|
}
|
|
46
59
|
/**
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* third-party-skill scanner (sibling to AgentShield); pinned to a git SHA
|
|
4
4
|
* because upstream has no PyPI release or GH tags as of 2026-06-01.
|
|
5
5
|
*/
|
|
6
|
-
export type SkillSpectorSource = 'vfs' | 'pipx' | 'path' | 'dlx';
|
|
6
|
+
export type SkillSpectorSource = 'vfs' | 'pipx' | 'path' | 'uv' | 'dlx';
|
|
7
7
|
/**
|
|
8
8
|
* A resolved SkillSpector installation.
|
|
9
9
|
*/
|
|
@@ -18,6 +18,8 @@ export interface ResolvedSkillSpector {
|
|
|
18
18
|
* - 'vfs' — extracted from the SEA binary's VFS
|
|
19
19
|
* - 'pipx' — `which skillspector` returned a pipx-installed venv binary
|
|
20
20
|
* - 'path' — `which skillspector` returned a non-pipx binary on PATH
|
|
21
|
+
* - 'uv' — `uv sync --locked` against a uv project's .venv (the most
|
|
22
|
+
* locked-down tier; every transitive version pinned in uv.lock)
|
|
21
23
|
* - 'dlx' — created a venv under ~/.socket/_dlx/skillspector/<sha>/
|
|
22
24
|
*/
|
|
23
25
|
readonly source: SkillSpectorSource;
|
|
@@ -17,5 +17,8 @@ export interface ResolveSynpOptions {
|
|
|
17
17
|
}
|
|
18
18
|
export declare function cacheKey(options: ResolveSynpOptions | undefined): string;
|
|
19
19
|
export declare function doResolveSynp(options?: ResolveSynpOptions | undefined): Promise<ResolvedSynp | undefined>;
|
|
20
|
+
/**
|
|
21
|
+
* @unused No internal or Socket consumers (exercised only by its unit tests).
|
|
22
|
+
*/
|
|
20
23
|
export declare function resetSynpResolution(): void;
|
|
21
24
|
export declare function resolveSynp(options?: ResolveSynpOptions | undefined): Promise<ResolvedSynp | undefined>;
|
|
@@ -40,6 +40,9 @@ async function doResolveSynp(options) {
|
|
|
40
40
|
if (fromPath) return fromPath;
|
|
41
41
|
if (options?.downloadIfMissing) return require_external_tools_synp_from_download.synpFromDownload(options.downloadIfMissing);
|
|
42
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* @unused No internal or Socket consumers (exercised only by its unit tests).
|
|
45
|
+
*/
|
|
43
46
|
/* c8 ignore start - test-only escape hatch. */
|
|
44
47
|
function resetSynpResolution() {
|
|
45
48
|
resolutionCache.clear();
|
|
@@ -22,5 +22,8 @@ export interface ResolveTrivyOptions {
|
|
|
22
22
|
}
|
|
23
23
|
export declare function cacheKey(options: ResolveTrivyOptions | undefined): string;
|
|
24
24
|
export declare function doResolveTrivy(options?: ResolveTrivyOptions | undefined): Promise<ResolvedTrivy | undefined>;
|
|
25
|
+
/**
|
|
26
|
+
* @unused No internal or Socket consumers (exercised only by its unit tests).
|
|
27
|
+
*/
|
|
25
28
|
export declare function resetTrivyResolution(): void;
|
|
26
29
|
export declare function resolveTrivy(options?: ResolveTrivyOptions | undefined): Promise<ResolvedTrivy | undefined>;
|
|
@@ -40,6 +40,9 @@ async function doResolveTrivy(options) {
|
|
|
40
40
|
if (fromPath) return fromPath;
|
|
41
41
|
if (options?.downloadIfMissing) return require_external_tools_trivy_from_download.trivyFromDownload(options.downloadIfMissing);
|
|
42
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* @unused No internal or Socket consumers (exercised only by its unit tests).
|
|
45
|
+
*/
|
|
43
46
|
/* c8 ignore start - test-only escape hatch. */
|
|
44
47
|
function resetTrivyResolution() {
|
|
45
48
|
resolutionCache.clear();
|
|
@@ -11,6 +11,9 @@ export interface TrufflehogAssetEntry {
|
|
|
11
11
|
readonly suffix: string;
|
|
12
12
|
}
|
|
13
13
|
export declare const TRUFFLEHOG_ASSET_MAP: Readonly<Record<string, TrufflehogAssetEntry>>;
|
|
14
|
+
/**
|
|
15
|
+
* @unused No internal or Socket consumers (exercised only by its unit tests).
|
|
16
|
+
*/
|
|
14
17
|
export declare function getTrufflehogAssetEntry(platformArch: string): TrufflehogAssetEntry | undefined;
|
|
15
18
|
export interface TrufflehogDownloadOptions {
|
|
16
19
|
/**
|
|
@@ -19,7 +22,7 @@ export interface TrufflehogDownloadOptions {
|
|
|
19
22
|
*/
|
|
20
23
|
version: string;
|
|
21
24
|
/**
|
|
22
|
-
*
|
|
25
|
+
* Socket platform-arch token — looked up in `TRUFFLEHOG_ASSET_MAP`. Returns
|
|
23
26
|
* `undefined` when no entry exists for the target.
|
|
24
27
|
*/
|
|
25
28
|
platformArch: string;
|
|
@@ -37,6 +37,9 @@ const TRUFFLEHOG_ASSET_MAP = require_primordials_object.ObjectFreeze({
|
|
|
37
37
|
suffix: "windows_amd64.tar.gz"
|
|
38
38
|
})
|
|
39
39
|
});
|
|
40
|
+
/**
|
|
41
|
+
* @unused No internal or Socket consumers (exercised only by its unit tests).
|
|
42
|
+
*/
|
|
40
43
|
function getTrufflehogAssetEntry(platformArch) {
|
|
41
44
|
return TRUFFLEHOG_ASSET_MAP[platformArch];
|
|
42
45
|
}
|
|
@@ -26,5 +26,8 @@ export interface ResolveTrufflehogOptions {
|
|
|
26
26
|
}
|
|
27
27
|
export declare function cacheKey(options: ResolveTrufflehogOptions | undefined): string;
|
|
28
28
|
export declare function doResolveTrufflehog(options?: ResolveTrufflehogOptions | undefined): Promise<ResolvedTrufflehog | undefined>;
|
|
29
|
+
/**
|
|
30
|
+
* @unused No internal or Socket consumers (exercised only by its unit tests).
|
|
31
|
+
*/
|
|
29
32
|
export declare function resetTrufflehogResolution(): void;
|
|
30
33
|
export declare function resolveTrufflehog(options?: ResolveTrufflehogOptions | undefined): Promise<ResolvedTrufflehog | undefined>;
|
|
@@ -40,6 +40,9 @@ async function doResolveTrufflehog(options) {
|
|
|
40
40
|
if (fromPath) return fromPath;
|
|
41
41
|
if (options?.downloadIfMissing) return require_external_tools_trufflehog_from_download.trufflehogFromDownload(options.downloadIfMissing);
|
|
42
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* @unused No internal or Socket consumers (exercised only by its unit tests).
|
|
45
|
+
*/
|
|
43
46
|
/* c8 ignore start - test-only escape hatch. */
|
|
44
47
|
function resetTrufflehogResolution() {
|
|
45
48
|
resolutionCache.clear();
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Upstream uv release asset-name mapping per `platform-arch`. uv
|
|
3
|
+
* publishes per-platform archives under
|
|
4
|
+
* https://github.com/astral-sh/uv/releases/download/<X.Y.Z>/. The release tag
|
|
5
|
+
* is the bare semver (no `v` prefix), unlike most upstream projects. Each
|
|
6
|
+
* archive wraps the binary one directory deep (`uv-<triple>/uv[.exe]`), so
|
|
7
|
+
* callers should pass `strip: 1` to the extractor — or, equivalently, look up
|
|
8
|
+
* the binary inside the archive's stem directory.
|
|
9
|
+
*/
|
|
10
|
+
export interface UvAssetEntry {
|
|
11
|
+
/**
|
|
12
|
+
* Full asset filename (no version interpolation — uv asset names are
|
|
13
|
+
* version-free).
|
|
14
|
+
*/
|
|
15
|
+
readonly asset: string;
|
|
16
|
+
}
|
|
17
|
+
export declare const UV_ASSET_MAP: Readonly<Record<string, UvAssetEntry>>;
|
|
18
|
+
export declare function getUvAssetEntry(platformArch: string): UvAssetEntry | undefined;
|
|
19
|
+
export interface UvDownloadOptions {
|
|
20
|
+
/**
|
|
21
|
+
* Uv release version, e.g. `'0.10.11'` (no `v` prefix — astral-sh/uv tags
|
|
22
|
+
* releases as bare semver).
|
|
23
|
+
*/
|
|
24
|
+
version: string;
|
|
25
|
+
/**
|
|
26
|
+
* Socket platform-arch token — looked up in `UV_ASSET_MAP`.
|
|
27
|
+
*/
|
|
28
|
+
platformArch: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Build the GitHub release-asset download URL for an upstream uv binary.
|
|
32
|
+
* Returns `undefined` when no entry exists for the requested platform-arch.
|
|
33
|
+
*
|
|
34
|
+
* Reference: https://github.com/astral-sh/uv/releases.
|
|
35
|
+
*/
|
|
36
|
+
export declare function getUvDownloadUrl(options: UvDownloadOptions): string | undefined;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* Socket Lib - Built with rolldown */
|
|
3
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
+
const require_primordials_object = require('../../primordials/object.js');
|
|
5
|
+
|
|
6
|
+
//#region src/external-tools/uv/asset-names.ts
|
|
7
|
+
/**
|
|
8
|
+
* @file Upstream uv release asset-name mapping per `platform-arch`. uv
|
|
9
|
+
* publishes per-platform archives under
|
|
10
|
+
* https://github.com/astral-sh/uv/releases/download/<X.Y.Z>/. The release tag
|
|
11
|
+
* is the bare semver (no `v` prefix), unlike most upstream projects. Each
|
|
12
|
+
* archive wraps the binary one directory deep (`uv-<triple>/uv[.exe]`), so
|
|
13
|
+
* callers should pass `strip: 1` to the extractor — or, equivalently, look up
|
|
14
|
+
* the binary inside the archive's stem directory.
|
|
15
|
+
*/
|
|
16
|
+
const UV_ASSET_MAP = require_primordials_object.ObjectFreeze({
|
|
17
|
+
__proto__: null,
|
|
18
|
+
"darwin-arm64": require_primordials_object.ObjectFreeze({
|
|
19
|
+
__proto__: null,
|
|
20
|
+
asset: "uv-aarch64-apple-darwin.tar.gz"
|
|
21
|
+
}),
|
|
22
|
+
"darwin-x64": require_primordials_object.ObjectFreeze({
|
|
23
|
+
__proto__: null,
|
|
24
|
+
asset: "uv-x86_64-apple-darwin.tar.gz"
|
|
25
|
+
}),
|
|
26
|
+
"linux-arm64": require_primordials_object.ObjectFreeze({
|
|
27
|
+
__proto__: null,
|
|
28
|
+
asset: "uv-aarch64-unknown-linux-gnu.tar.gz"
|
|
29
|
+
}),
|
|
30
|
+
"linux-arm64-musl": require_primordials_object.ObjectFreeze({
|
|
31
|
+
__proto__: null,
|
|
32
|
+
asset: "uv-aarch64-unknown-linux-musl.tar.gz"
|
|
33
|
+
}),
|
|
34
|
+
"linux-x64": require_primordials_object.ObjectFreeze({
|
|
35
|
+
__proto__: null,
|
|
36
|
+
asset: "uv-x86_64-unknown-linux-gnu.tar.gz"
|
|
37
|
+
}),
|
|
38
|
+
"linux-x64-musl": require_primordials_object.ObjectFreeze({
|
|
39
|
+
__proto__: null,
|
|
40
|
+
asset: "uv-x86_64-unknown-linux-musl.tar.gz"
|
|
41
|
+
}),
|
|
42
|
+
"win-arm64": require_primordials_object.ObjectFreeze({
|
|
43
|
+
__proto__: null,
|
|
44
|
+
asset: "uv-aarch64-pc-windows-msvc.zip"
|
|
45
|
+
}),
|
|
46
|
+
"win-x64": require_primordials_object.ObjectFreeze({
|
|
47
|
+
__proto__: null,
|
|
48
|
+
asset: "uv-x86_64-pc-windows-msvc.zip"
|
|
49
|
+
})
|
|
50
|
+
});
|
|
51
|
+
function getUvAssetEntry(platformArch) {
|
|
52
|
+
return UV_ASSET_MAP[platformArch];
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Build the GitHub release-asset download URL for an upstream uv binary.
|
|
56
|
+
* Returns `undefined` when no entry exists for the requested platform-arch.
|
|
57
|
+
*
|
|
58
|
+
* Reference: https://github.com/astral-sh/uv/releases.
|
|
59
|
+
*/
|
|
60
|
+
function getUvDownloadUrl(options) {
|
|
61
|
+
const { platformArch, version } = {
|
|
62
|
+
__proto__: null,
|
|
63
|
+
...options
|
|
64
|
+
};
|
|
65
|
+
const entry = UV_ASSET_MAP[platformArch];
|
|
66
|
+
if (!entry) return;
|
|
67
|
+
return `https://github.com/astral-sh/uv/releases/download/${version}/` + entry.asset;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
//#endregion
|
|
71
|
+
exports.UV_ASSET_MAP = UV_ASSET_MAP;
|
|
72
|
+
exports.getUvAssetEntry = getUvAssetEntry;
|
|
73
|
+
exports.getUvDownloadUrl = getUvDownloadUrl;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file `uvFromDownload()` — fetches upstream uv and returns a `ResolvedUv`
|
|
3
|
+
* pointing at the extracted binary. uv tarballs wrap the binary in a
|
|
4
|
+
* `<asset-stem>/` directory; the extractor strips that level so the binary
|
|
5
|
+
* sits at the cache-dir root.
|
|
6
|
+
*/
|
|
7
|
+
import type { BinaryDownloader } from '../from-download';
|
|
8
|
+
import type { HashSpec } from '../../integrity';
|
|
9
|
+
import type { ResolvedUv } from './types';
|
|
10
|
+
export interface UvFromDownloadOptions {
|
|
11
|
+
version: string;
|
|
12
|
+
platformArch: string;
|
|
13
|
+
integrity?: HashSpec | undefined;
|
|
14
|
+
cacheDir?: string | undefined;
|
|
15
|
+
downloader?: BinaryDownloader | undefined;
|
|
16
|
+
}
|
|
17
|
+
export declare function uvFromDownload(options: UvFromDownloadOptions): Promise<ResolvedUv | undefined>;
|