Releases: agent-sh/agentsys
Releases · agent-sh/agentsys
v5.12.0
Propagated upstream releases
- agent-core v0.4.4 (fixer.js symlink + TOCTOU) -> v0.4.5 (client-side SLSA verification + sync allowlist) synced into all 13 consumers.
- agent-analyzer v0.8.0 -> v0.8.1 (cargo-deny CI).
- prepare-delivery v0.1.2, audit-project v1.0.2 (reviewer-contract markers + orchestrator blocked handling).
v5.11.0
Changed
- Upgraded marketplace sub-plugin pins from SHA-only to tag+SHA after each downstream plugin cut security releases. Post-run totals: 12 pinned to tags, 8 fell back to default-branch SHA (up from 7/13 in v5.10.0). New tag pins in this wave:
prepare-deliveryv0.1.1,audit-projectv1.0.1,next-taskv1.1.2,shipv1.1.2,skillersv0.2.1,onboardv0.1.1,can-i-helpv0.1.1,perfv1.0.1,debatev1.0.1. Consumers now install from verifiable release tags for these plugins.
Propagated upstream security fixes
- agent-core v0.4.4 synced into all 13 consumers via
lib/: fixer.js symlink + TOCTOU guards (#14 agent-core), earlier v0.4.3 code-point-safe truncate + sync-workflow test-file exclusion, v0.4.2 additive sync + upstreamed workflow-state/queries, v0.4.1 binary SHA-256 + zip-slip defenses. - prepare-delivery + audit-project: falsePositive review-bypass cap (50% ratio + required reason).
- next-task: worktree-manager TASK_ID/BASE_BRANCH validation.
- ship: platform-API health checks instead of log-grep rollback DoS.
- skillers: transcript redaction pipeline (ported from consult).
- onboard + can-i-help: explicit argv arrays in collector git invocations.
- perf: command-parser error message accuracy.
- debate: SKILL.md routes AI CLI invocations through consult's hardened ACP transport.
v5.10.0
Security
- Marketplace supply-chain hardening (#347) - pin every
source: "url"sub-plugin entry in.claude-plugin/marketplace.jsonto an immutable commit SHA (plus release tag when one exists) instead of tracking default branches. Unpinnedsource: "url"entries previously letclaude plugin installfollow the remote's default branch, meaning any sub-plugin compromise would ship code to every user on their next install. Newscripts/pin-marketplace.jsresolvesv<version>tags to commit SHAs viagh api repos/.../git/ref/tags/<tag>(annotated tags are dereferenced to the underlying commit), rejects ambiguous array responses, and falls back to default-branch HEAD SHA when the desired tag does not yet exist. Covered by__tests__/pin-marketplace.test.js. - Reusable CI workflow SHA-pinned (#347) -
agent-sh/.github/.github/workflows/agnix.yml@mainpinned to an explicit commit SHA so a compromise of the shared workflows repo cannot silently change agentsys's CI behavior. - Release workflow shell injection hardening (#347) - replaced 5 shell blocks that interpolated
${{ inputs.version }}/${{ github.event.inputs.* }}directly into bash withenv:block wiring; values are now read as shell variables so a malicious tag/input cannot break out of the command string. - Removed self-referential npm dependency (#347) - the
"agentsys": "^5.0.0"entry inpackage.json/package-lock.jsonhad no functional purpose and could confuse resolvers. agent-analyzerbinary downloader security (#350, synced from agent-core) -lib/binary/index.jsnow requires a matching.sha256sidecar, computes and verifies SHA-256 before extraction (with an explicitskipChecksumescape hatch for local dev), and extracts into an isolated scratch directory with archive-path-traversal defenses: reject absolute paths, UNC paths, drive letters,..segments, and symlinks; copy only the expected binary into the final install location; scrub the scratch tree afterward. Windows extraction moved fromExpand-Archivecommand strings to a-FilePowerShell script with env-var argument passing so paths containing spaces are handled safely. Covered bylib/binary/index.test.js.
Changed
- Marketplace pins upgraded to release tags - post-#347, re-ran
scripts/pin-marketplace.jsafter the downstream plugins cut tagged releases:agnix: default-branch SHA ->v0.22.1(tag + commit)web-ctl: default-branch SHA ->v1.1.0(tag + commit)ship: default-branch SHA ->v1.1.1(tag + commit)- Running totals: 7 plugins pinned to tag + SHA, 13 still on default-branch SHA pending their first release tag.
- Bumped
versionfields inmarketplace.jsonforagnix,web-ctl, andshipto match the latest published tags so futurepin-marketplace.jsruns resolve to the correct refs.
v5.9.1
Changed
- agnix marketplace entry - bumped from 1.0.0 to 1.1.0 and updated description from "385 rules" to "414 rules" to reflect agnix v0.22.0 (414 validation rules, additive
schema --fixandtools check/detectsubcommands). Updatedsite/content.jsonversion highlight to match.
v5.9.0
Added
zig-lspplugin - Zig language server (ZLS) integration for Claude Code'sLSPtool. Maps.zigand.zonto languagezig; enablesenable_build_on_saveso post-edit diagnostics surface real type errors (not just parser errors); 30 s startup timeout, restart-on-crash with cap. Plugin is config-only - no slash commands, no agents, no skills - the harness's built-inLSPtool dispatches automatically oncezlsis onPATH. Marketplace entry under categorydevelopment. Source: https://github.com/agent-sh/zig-lsp- Marketplace plugin count 19 -> 20 in
.claude-plugin/marketplace.jsondescription,scripts/plugins.txt, andsite/content.jsonstats.
v5.8.6
Added
@agentsys/lib'srepoIntel.queriesmodule - typed wrappers over everyagent-analyzer repo-intel query <type>subcommand (28 functions). Consumer plugins can now callrequire('@agentsys/lib').repoIntel.queries.hotspots(cwd, { limit: 20 })instead of constructing raw CLI argv themselves. Functions returned in JSON match the binary's output shape per query.- 4 new graph-derived query wrappers for the analyzer-graph crate landed in agent-analyzer v0.4.0:
communities(cwd)- lists Louvain-discovered file clusters (the natural feature areas, independent of directory layout)boundaries(cwd, { limit })- files bridging multiple communities by betweenness centrality (architectural seams - highest-leverage files for refactoring)areaOf(cwd, file)- which community a file belongs tocommunityHealth(cwd, id)- composite per-community roll-up (size, total/recent changes, bug-fix rate, AI ratio, stale-owner count)
Changed
ANALYZER_MIN_VERSIONbumped 0.3.0 -> 0.4.0 to match agent-analyzer v0.4.0 which adds the graph subcommands. Older binaries get auto-upgraded on first call bylib/binary.ensureBinary().
v5.8.5
Fixed
- Hardcoded developer paths in web-ctl skills (#333) - replaced 76 occurrences of
/Users/avifen/.agentsys/plugins/web-ctl/scripts/web-ctl.jswith~/.agentsys/...across.kiro/skills/web-auth/SKILL.md(16 sites) and.kiro/skills/web-browse/SKILL.md(60 sites). The original absolute path only existed on the maintainer's machine, so every CLI example silently failed for any other user. The portable form matches the install path documented inmeta/skills/maintain-cross-platform/SKILL.mdand works for both shell copy-paste and agent execution (Bash tool'sbash -cperforms tilde expansion). preparelifecycle hook auto-installed git hooks on everynpm install(#334) - moved hook installation from npm'spreparescript to an explicitsetup-hooksscript so consumers no longer get hooks injected as a side effect ofnpm install. Documented opt-in flow inCONTRIBUTING.md. Also removed the no-op pre-commit placeholder (it just wrote a comment file - lib/ sync is handled by agent-core CI now), so only the actually-active pre-push hook (preflight +/enhancereminder + release-tag validation) is installed.npm versionlifecycle dropped downstream version stamps (#339, #342) - replacedgit add -A(which would sweep unrelated working-tree changes into the version commit) with an explicit allowlist covering every filestamp-version.jswrites plus npm's own lockfile andCHANGELOG.md:package.json,package-lock.json,.claude-plugin/plugin.json,.claude-plugin/marketplace.json,site/content.json,CHANGELOG.md. Preserves the original intent (no working-tree sweep) while keeping all version manifests consistent afternpm version. (CHANGELOG.md added per gemini-code-assist review on #342 - the developer manually edits CHANGELOG before each release, so it must be in the allowlist ornpm version's auto-commit drops the changelog entry.)
Changed
js-yamldependency range tightened from^4.1.1to~4.1.1(#335) - blocks unintended4.xminor bumps while still allowing4.1.xpatch updates so runtime security fixes flow in automatically. Lockfile root entry synced to match.
v5.8.4
Fixed
- tasks.json atomic optimistic locking (#331) - Concurrent
/next-taskand/shipruns could silently lose claims or leave stale registry entries due to unguarded read-modify-write ontasks.json. Fix uses_version+ per-write_writerIdoptimistic locking (mirrors existingflow.jsonpattern): write atomically via rename, re-read and verify both fields match before declaring success, retry up to 5× with jitter on mismatch. - tasks.json schema unification -
worktree-managerwrote{ version, tasks[] }whileworkflow-state.jsread{ active }, causing claim exclusion indiscover-tasksto always return an empty set. Unified schema is{ active, tasks[], _version, _writerId }with on-read normalization of both legacy formats — no migration needed. - Silent corruption risk -
readTasks()now throws on corrupted JSON instead of returning a safe default, preventingupdateTasksfrom silently overwriting potentially recoverable data. - Agent prompt raw file writes -
worktree-managerPhase 6 and Cleanup Reference replaced inlinefs.writeFileSyncwithworkflowState.claimTask()/workflowState.releaseTask()library calls that are atomic and retry-safe.
Added
updateTasks(mutatorFn)- optimistic-lock loop fortasks.jsonmutations (mirrorsupdateFlow)claimTask(entry, projectPath)- atomic upsert intotasks[]registry for worktree-managerreleaseTask(taskId, projectPath)- atomic removal fromtasks[]registry for ship/abort; idempotent
v5.8.3
Fixed
- next-task v1.1.1 - SubagentStop hook now only fires during active /next-task workflows, not on every subagent stop (#325). Cross-platform guard script replaces unconditional prompt injection that wasted 136K+ tokens per unrelated agent.
Changed
- Bump next-task marketplace version to 1.1.1
v5.8.2
Added
- Codex CLI plugin manifest (
.codex-plugin/plugin.json) for native Codex discovery
Fixed
- Flaky stale items test - use >= 99 threshold for date boundary tolerance