Skip to content

v6.0.9

Choose a tag to compare

@github-actions github-actions released this 19 Jun 13:17
· 1222 commits to main since this release
Immutable release. Only release title and notes can be modified.
31b4d7c

Added

  • external-tools/uv — uv resolver. Resolves Astral's uv Python package manager across three tiers (embedded VFS, then system PATH, then a downloaded GitHub release), matching the shape of the other external-tools/* tool resolvers. Exports resolveUv, ResolvedUv, UvSource, plus the per-platform asset map and download helpers.
  • external-tools/python/uv-install — reproducible uv-project install helpers. uvSyncProject installs a uv project at its exact pinned versions and refuses to proceed when those have drifted, so every machine gets the same result. uvExportMaterialize installs the same pinned versions into a content-addressed directory with no virtualenv, so the result is relocatable and embeddable in a single-file build. Concurrent callers serialize so two installs can't collide. The Python analog of the npm dlx install model.
  • external-tools/skillspector — pinned-project resolution tier. skillspectorFromUv installs SkillSpector from a fully pinned uv project (every version fixed) and returns its entry point, resolved ahead of the existing git-SHA fallback when a project directory and uv binary are supplied. Adds a 'uv' source to the resolution result.
  • config/layers — generic layered-config reader. readConfigLayers(name, { dirs }) reads a named config file from an ordered list of layer directories (lowest precedence first) and returns the layers that exist; absent or unparseable layers are skipped. mergeConfigArray concatenates one array-valued key across all layers, for lists that higher layers extend rather than replace. It carries no project-convention knowledge: the caller supplies the directories and the merge policy.
  • paths_wheelhouse tool-layout dirs and the agent-clone dir. getSocketRackDir and getSocketRackToolDir locate the racked tool store, getSocketWheelhouseBinDir the PATH-handle directory that points into it, and getSocketRepoClonesDir the directory where agents clone external repos for reference (kept out of the projects tree so sibling-walking tooling never treats a clone as a fleet member).
  • ai — offline/gated-model detection and fall-over. spawnTierWithFallback walks a tier's cross-engine equivalence chain and runs the first engine that is both installed and authenticated, so a request still completes when the preferred model is down, gated, or unkeyed. isModelUnavailable recognizes a down-or-gated model from the engine's actual output rather than a brittle literal-string match. The ai/route resolver and ai/subagent-status reader are exposed as their own entry points.
  • fs/copy — recursive copy with three destination modes. copy(from, to, { mode }) copies a file or directory tree. CopyMode chooses how an existing destination is treated: 'overlay' (the default: overwrite collisions, keep destination-only files), 'pave' (the destination becomes an exact mirror of the source via an atomic sibling-temp-then-rename swap, so no stale files survive and a partial tree is never observed), or 'fill' (no-clobber: add only what is missing, never overwrite). Also accepts filter, dereference, and an abort signal.
  • node/requireFrom — relative require bound to the caller's directory. requireFrom(fromUrl, specifier) resolves a relative specifier (./x, ../y) from the caller's own directory, passed as import.meta.url, so relative loads bind to the right base when modules run unbundled (for example AOT-compiled from source, where each module sits at its own nested path). Builtins and bare packages resolve as before.
  • secrets — proteus broker credential tier. The credential resolver gains a broker layer in the documented order (explicit, then env, then broker, then keychain): it connects to the broker's runtime socket, requests the value, and self-gates. No socket means no broker, so it returns undefined and falls through to the keychain. Async only (absent from resolveSync) and skipped under allowEnvOnly. Existing resolveProviderCredential call sites are unchanged.
  • pathsgetRuntimeSocketPath and getXdgRuntimeDir for daemon sockets. One resolver a daemon and its clients both call to locate a runtime socket: the XDG runtime dir when present, a $TMPDIR/<name>-<uid> fallback, or a named pipe on Windows.
  • llms.txt — discovery index for AI agents. pnpm run docs now also emits a publish-safe llms.txt at the package root that links each export subpath to its shipped .d.mts declaration, giving an agent one file to read after installing. It ships in the published tarball.
  • packages/manifesttrimPublishManifest. Returns a shallow copy of a package.json that omits dev/build-only top-level fields (devDependencies, scripts by default) so a published tarball and its npm metadata stay lean. drop overrides the field set; keep retains a field even when dropped (e.g. a runtime postinstall). The original object is left intact.

Changed

  • integrity — one Hash currency (breaking). Hashes are modeled as a single concept, a Hash carrying algorithm, hex, and sri, rather than an integrity-vs-checksum type duality, so the algorithm is explicit on every value. Adds parseHash (encoding- and length-aware), computeHash (sha512 default), verifyHash(bytes, expected) (verifies against the expected hash's declared algorithm), equalHashes (encoding-agnostic, and never equal across algorithms), makeHash, and HashMismatchError. Breaking: verifyHash now takes (bytes, expected), not (expected, computed), and DlxHashMismatchError is a deprecated alias of HashMismatchError. Back-compat shims remain: checksumToIntegrity, integrityToChecksum, normalizeHash, computeHashes, isChecksum, isIntegrity, parseIntegrity.
  • fleet/repo-config is now a thin wrapper over config/layers. resolveRepoConfig (the fleet default layered under a per-repo override) and mergeRepoConfigArray stay at fleet/repo-config; the generic, convention-free primitives moved to the new config/layers entry. resolveRepoConfig callers see no behavior change.