agentsys 5.10.0 → 5.11.0

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "agentsys",
3
3
  "description": "20 specialized plugins for AI workflow automation - task orchestration, PR workflow, slop detection, code review, drift detection, enhancement analysis, documentation sync, unified static analysis, perf investigations, topic research, agent config linting, cross-tool AI consultation, structured AI debate, workflow pattern learning, codebase onboarding, contributor guidance, and Zig language support",
4
- "version": "5.10.0",
4
+ "version": "5.11.0",
5
5
  "owner": {
6
6
  "name": "Avi Fenesh",
7
7
  "url": "https://github.com/avifenesh"
@@ -27,11 +27,11 @@
27
27
  "source": {
28
28
  "source": "url",
29
29
  "url": "https://github.com/agent-sh/next-task.git",
30
- "ref": "v1.1.1",
31
- "commit": "9aa32b856d81ebeeb6c6ea0ab421c80d6986a7b1"
30
+ "ref": "v1.1.2",
31
+ "commit": "8feba0141a895d651a850cbe724a0e333c24a3a0"
32
32
  },
33
33
  "description": "Master workflow orchestrator: autonomous workflow with model optimization (opus/sonnet/haiku), two-file state management, workflow enforcement gates, 8 specialist agents",
34
- "version": "1.1.1",
34
+ "version": "1.1.2",
35
35
  "category": "productivity",
36
36
  "homepage": "https://github.com/agent-sh/next-task"
37
37
  },
@@ -40,10 +40,11 @@
40
40
  "source": {
41
41
  "source": "url",
42
42
  "url": "https://github.com/agent-sh/prepare-delivery.git",
43
- "commit": "2e8f400115d8df68e6e8e02466a97117c7f86fab"
43
+ "commit": "693d7649501608da49aea8efe610a7029100b8f2",
44
+ "ref": "v0.1.1"
44
45
  },
45
46
  "description": "Pre-ship quality gates: deslop, simplify, agnix, enhance, review loop, delivery validation, docs sync",
46
- "version": "0.1.0",
47
+ "version": "0.1.1",
47
48
  "category": "productivity",
48
49
  "homepage": "https://github.com/agent-sh/prepare-delivery"
49
50
  },
@@ -64,11 +65,11 @@
64
65
  "source": {
65
66
  "source": "url",
66
67
  "url": "https://github.com/agent-sh/ship.git",
67
- "commit": "3e65dcf5f6aa60e8e42baff14eef0c2209302751",
68
- "ref": "v1.1.1"
68
+ "commit": "189da6af2abdf67ab661098af2fc18453fe9e734",
69
+ "ref": "v1.1.2"
69
70
  },
70
71
  "description": "Complete PR workflow: commit to production, skips review when called from next-task, removes task from registry on cleanup, automatic rollback",
71
- "version": "1.1.1",
72
+ "version": "1.1.2",
72
73
  "category": "deployment",
73
74
  "homepage": "https://github.com/agent-sh/ship"
74
75
  },
@@ -77,7 +78,7 @@
77
78
  "source": {
78
79
  "source": "url",
79
80
  "url": "https://github.com/agent-sh/deslop.git",
80
- "commit": "be3ac2396dcabad450e5097e4f22f9f4e166a143"
81
+ "commit": "dc49a5309a104a011439f87b346d1c3b47375db2"
81
82
  },
82
83
  "description": "3-phase AI slop detection: regex patterns (HIGH), multi-pass analyzers (MEDIUM), CLI tools (LOW)",
83
84
  "version": "1.0.0",
@@ -89,10 +90,11 @@
89
90
  "source": {
90
91
  "source": "url",
91
92
  "url": "https://github.com/agent-sh/audit-project.git",
92
- "commit": "a080ebf74184ba3ad2de19100e2b3a818c8a194c"
93
+ "commit": "2c961a84ab5945670be44d6c54eb496099effe48",
94
+ "ref": "v1.0.1"
93
95
  },
94
96
  "description": "Multi-agent iterative code review until zero issues remain",
95
- "version": "1.0.0",
97
+ "version": "1.0.1",
96
98
  "category": "development",
97
99
  "homepage": "https://github.com/agent-sh/audit-project"
98
100
  },
@@ -101,7 +103,7 @@
101
103
  "source": {
102
104
  "source": "url",
103
105
  "url": "https://github.com/agent-sh/drift-detect.git",
104
- "commit": "880c2ce1f0d637a947229281aea9b9a40156b6a4"
106
+ "commit": "e7edd602a0e24ae2bff8e262c58e481aae448944"
105
107
  },
106
108
  "description": "Deep repository analysis to realign project plans with code reality - detects drift, gaps, and creates prioritized reconstruction plans",
107
109
  "version": "1.0.0",
@@ -113,7 +115,7 @@
113
115
  "source": {
114
116
  "source": "url",
115
117
  "url": "https://github.com/agent-sh/enhance.git",
116
- "commit": "081e6b1c90bbd5b7297a18c6d01e86693825c113"
118
+ "commit": "31e7d3861afb20b3d910be957387de23dc3ae854"
117
119
  },
118
120
  "description": "Master enhancement orchestrator: parallel analyzer execution for plugins, agents, docs, CLAUDE.md, and prompts with unified reporting",
119
121
  "version": "1.0.0",
@@ -125,7 +127,7 @@
125
127
  "source": {
126
128
  "source": "url",
127
129
  "url": "https://github.com/agent-sh/sync-docs.git",
128
- "commit": "f8281a98f440577934b67dc9ef3f9da85d56f9de"
130
+ "commit": "961f5e67b583f70a4e0ad3ad83503ab90decc11d"
129
131
  },
130
132
  "description": "Standalone documentation sync: find outdated refs, update CHANGELOG, flag stale examples based on code changes",
131
133
  "version": "1.0.0",
@@ -150,10 +152,11 @@
150
152
  "source": {
151
153
  "source": "url",
152
154
  "url": "https://github.com/agent-sh/perf.git",
153
- "commit": "cc988ec68863a18243297d216e2fcd37802f2296"
155
+ "commit": "189eb15e22bb6678da4d773f1c52b57d8880abff",
156
+ "ref": "v1.0.1"
154
157
  },
155
158
  "description": "Rigorous performance investigation workflow with baselines, profiling, hypotheses, and evidence-backed decisions",
156
- "version": "1.0.0",
159
+ "version": "1.0.1",
157
160
  "category": "development",
158
161
  "homepage": "https://github.com/agent-sh/perf"
159
162
  },
@@ -162,7 +165,7 @@
162
165
  "source": {
163
166
  "source": "url",
164
167
  "url": "https://github.com/agent-sh/learn.git",
165
- "commit": "91983c1fe35b96bcda5360f4155465d69a0b01fc"
168
+ "commit": "e28ea11f4622509d1ae7425fa97f7dd719d43716"
166
169
  },
167
170
  "description": "Research topics online and create comprehensive learning guides with RAG-optimized indexes",
168
171
  "version": "1.0.0",
@@ -187,7 +190,7 @@
187
190
  "source": {
188
191
  "source": "url",
189
192
  "url": "https://github.com/agent-sh/consult.git",
190
- "commit": "71a08ef5566cfb189d5161c2d0e31542d2c99155"
193
+ "commit": "3115688a7c6079a04e8caa0183c1ca020e3d413d"
191
194
  },
192
195
  "description": "Cross-tool AI consultation: get second opinions from Gemini CLI, Codex CLI, Claude Code, OpenCode, or Copilot CLI with model and thinking effort control",
193
196
  "version": "1.0.0",
@@ -199,10 +202,11 @@
199
202
  "source": {
200
203
  "source": "url",
201
204
  "url": "https://github.com/agent-sh/debate.git",
202
- "commit": "95c0333b432aa8b0911e9accccecb219d3bc3ad7"
205
+ "commit": "aba659706bd25f7e394096acb457446e44966711",
206
+ "ref": "v1.0.1"
203
207
  },
204
208
  "description": "Structured multi-round debate between AI tools with proposer/challenger roles and verdict",
205
- "version": "1.0.0",
209
+ "version": "1.0.1",
206
210
  "category": "productivity",
207
211
  "homepage": "https://github.com/agent-sh/debate"
208
212
  },
@@ -224,10 +228,11 @@
224
228
  "source": {
225
229
  "source": "url",
226
230
  "url": "https://github.com/agent-sh/skillers.git",
227
- "commit": "88efb0346b2582a224f3f85db72450b9f3ba7507"
231
+ "commit": "e1c1a9b752c0d20a0a1f83747c26e5dea195b5ae",
232
+ "ref": "v0.2.1"
228
233
  },
229
234
  "description": "Learn from workflow patterns across sessions and suggest skills, hooks, and agents to automate repetitive work",
230
- "version": "1.0.0",
235
+ "version": "0.2.1",
231
236
  "category": "productivity",
232
237
  "homepage": "https://github.com/agent-sh/skillers"
233
238
  },
@@ -236,11 +241,11 @@
236
241
  "source": {
237
242
  "source": "url",
238
243
  "url": "https://github.com/agent-sh/onboard.git",
239
- "ref": "v0.1.0",
240
- "commit": "7444d6475055897498a348639dd0bcb12ba7906b"
244
+ "ref": "v0.1.1",
245
+ "commit": "6c2e47e567aac6249a0df6d15491cbcd42ce7717"
241
246
  },
242
247
  "description": "Codebase onboarding - automated data collection and interactive project orientation",
243
- "version": "0.1.0",
248
+ "version": "0.1.1",
244
249
  "category": "productivity",
245
250
  "homepage": "https://github.com/agent-sh/onboard"
246
251
  },
@@ -249,11 +254,11 @@
249
254
  "source": {
250
255
  "source": "url",
251
256
  "url": "https://github.com/agent-sh/can-i-help.git",
252
- "ref": "v0.1.0",
253
- "commit": "5610a54ce9200577879a0ad8a9dc174133f56abf"
257
+ "ref": "v0.1.1",
258
+ "commit": "f1364158deb359b581d7113a54e8a6aa7a6d8679"
254
259
  },
255
260
  "description": "Find where to contribute to any project - matches developer skills to test gaps, stale docs, bugspots, and open issues",
256
- "version": "0.1.0",
261
+ "version": "0.1.1",
257
262
  "category": "productivity",
258
263
  "homepage": "https://github.com/agent-sh/can-i-help"
259
264
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentsys",
3
- "version": "5.10.0",
3
+ "version": "5.11.0",
4
4
  "description": "Professional-grade slash commands for Claude Code with cross-platform support",
5
5
  "keywords": [
6
6
  "workflow",
package/CHANGELOG.md CHANGED
@@ -9,6 +9,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [5.11.0] - 2026-04-26
13
+
14
+ ### Changed
15
+ - **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-delivery` v0.1.1, `audit-project` v1.0.1, `next-task` v1.1.2, `ship` v1.1.2, `skillers` v0.2.1, `onboard` v0.1.1, `can-i-help` v0.1.1, `perf` v1.0.1, `debate` v1.0.1. Consumers now install from verifiable release tags for these plugins.
16
+
17
+ ### Propagated upstream security fixes
18
+ - 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.
19
+ - prepare-delivery + audit-project: falsePositive review-bypass cap (50% ratio + required reason).
20
+ - next-task: worktree-manager TASK_ID/BASE_BRANCH validation.
21
+ - ship: platform-API health checks instead of log-grep rollback DoS.
22
+ - skillers: transcript redaction pipeline (ported from consult).
23
+ - onboard + can-i-help: explicit argv arrays in collector git invocations.
24
+ - perf: command-parser error message accuracy.
25
+ - debate: SKILL.md routes AI CLI invocations through consult's hardened ACP transport.
26
+
12
27
  ## [5.10.0] - 2026-04-26
13
28
 
14
29
  ### Security
@@ -7,6 +7,37 @@
7
7
  const fs = require('fs');
8
8
  const path = require('path');
9
9
 
10
+ /**
11
+ * Reject symlinks before read/write operations.
12
+ *
13
+ * Security: A hostile repo could symlink a fixable file (e.g. `agent.md`) to a
14
+ * sensitive target (e.g. `~/.ssh/authorized_keys`). A HIGH-certainty auto-fix
15
+ * would then silently overwrite that target. We refuse to follow symlinks on
16
+ * any path we intend to read from or write to, including `.backup` siblings.
17
+ *
18
+ * This is called both before opening and immediately before writing, which
19
+ * narrows - though does not fully close - the TOCTOU window between calls.
20
+ * Node's fs module does not expose a portable `O_NOFOLLOW` open flag, so
21
+ * repeated lstat is the cleanest available mitigation for text-file edits.
22
+ *
23
+ * @param {string} targetPath - Path to check.
24
+ * @throws {Error} If the path exists and is a symlink.
25
+ */
26
+ function assertNotSymlink(targetPath) {
27
+ let stat;
28
+ try {
29
+ stat = fs.lstatSync(targetPath);
30
+ } catch (err) {
31
+ if (err.code === 'ENOENT') return; // Path does not yet exist - fine.
32
+ throw err;
33
+ }
34
+ if (stat.isSymbolicLink()) {
35
+ const err = new Error('target is a symlink; refusing to follow');
36
+ err.code = 'ESYMLINK_REFUSED';
37
+ throw err;
38
+ }
39
+ }
40
+
10
41
  function applyFixes(issues, options = {}) {
11
42
  const { dryRun = false, backup = true } = options;
12
43
 
@@ -59,6 +90,23 @@ function applyFixes(issues, options = {}) {
59
90
  continue;
60
91
  }
61
92
 
93
+ // Security: refuse symlinks before we read, so a hostile repo can't
94
+ // redirect a HIGH-certainty fix at ~/.ssh/authorized_keys or similar.
95
+ try {
96
+ assertNotSymlink(filePath);
97
+ } catch (err) {
98
+ if (err.code === 'ESYMLINK_REFUSED') {
99
+ results.errors.push({
100
+ filePath,
101
+ error: err.message,
102
+ success: false,
103
+ reason: 'target is a symlink; refusing to follow'
104
+ });
105
+ continue;
106
+ }
107
+ throw err;
108
+ }
109
+
62
110
  const content = fs.readFileSync(filePath, 'utf8');
63
111
  let data;
64
112
 
@@ -135,6 +183,8 @@ function applyFixes(issues, options = {}) {
135
183
  // Create backup
136
184
  if (backup) {
137
185
  const backupPath = `${filePath}.backup`;
186
+ // Refuse if the backup slot itself is a pre-existing symlink.
187
+ assertNotSymlink(backupPath);
138
188
  fs.writeFileSync(backupPath, content, 'utf8');
139
189
  }
140
190
 
@@ -145,6 +195,11 @@ function applyFixes(issues, options = {}) {
145
195
  } else {
146
196
  newContent = JSON.stringify(modified, null, 2);
147
197
  }
198
+ // Re-check immediately before write. Narrows the TOCTOU window
199
+ // between the initial lstat and this writeFileSync (an attacker
200
+ // who swaps the regular file for a symlink between calls will
201
+ // be caught here).
202
+ assertNotSymlink(filePath);
148
203
  fs.writeFileSync(filePath, newContent, 'utf8');
149
204
  }
150
205
 
@@ -280,7 +335,14 @@ function restoreFromBackup(filePath) {
280
335
  return false;
281
336
  }
282
337
 
338
+ // Security: refuse if either the backup or the restore target is a
339
+ // symlink. Same threat model as applyFixes - a malicious post-hoc swap
340
+ // could redirect the restore at a sensitive file.
341
+ assertNotSymlink(backupPath);
342
+ assertNotSymlink(filePath);
343
+
283
344
  const backupContent = fs.readFileSync(backupPath, 'utf8');
345
+ assertNotSymlink(filePath);
284
346
  fs.writeFileSync(filePath, backupContent, 'utf8');
285
347
  fs.unlinkSync(backupPath);
286
348
 
@@ -717,5 +779,6 @@ module.exports = {
717
779
  fixAggressiveEmphasis,
718
780
  previewFixes,
719
781
  restoreFromBackup,
720
- cleanupBackups
782
+ cleanupBackups,
783
+ assertNotSymlink
721
784
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentsys",
3
- "version": "5.10.0",
3
+ "version": "5.11.0",
4
4
  "description": "A modular runtime and orchestration system for AI agents - works with Claude Code, OpenCode, and Codex CLI",
5
5
  "main": "lib/platform/detect-platform.js",
6
6
  "type": "commonjs",
package/site/content.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "url": "https://agent-sh.github.io/agentsys",
6
6
  "repo": "https://github.com/agent-sh/agentsys",
7
7
  "npm": "https://www.npmjs.com/package/agentsys",
8
- "version": "5.10.0",
8
+ "version": "5.11.0",
9
9
  "author": "Avi Fenesh",
10
10
  "author_url": "https://github.com/avifenesh"
11
11
  },