@yemi33/minions 0.1.2097 → 0.1.2099
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/README.md +1 -1
- package/bin/minions.js +1 -1
- package/dashboard/js/render-dispatch.js +1 -1
- package/docs/distribution.md +1 -1
- package/engine/runtimes/claude.js +0 -25
- package/engine/shared.js +22 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -85,7 +85,7 @@ You can also run scripts directly: `node ~/.minions/engine.js start`, `node ~/.m
|
|
|
85
85
|
minions update
|
|
86
86
|
```
|
|
87
87
|
|
|
88
|
-
One command — pulls the latest npm package and applies the update automatically. Equivalent to `npm
|
|
88
|
+
One command — pulls the latest npm package and applies the update automatically. Equivalent to `npm install -g @yemi33/minions@latest && minions init --force`.
|
|
89
89
|
|
|
90
90
|
**What gets updated:** Engine code (`.js`, `.html`), new playbooks, new agent charters, new docs, `CHANGELOG.md`.
|
|
91
91
|
|
package/bin/minions.js
CHANGED
|
@@ -929,7 +929,7 @@ if (!cmd || cmd === 'help' || cmd === '--help' || cmd === '-h') {
|
|
|
929
929
|
console.log(` Version synced to ${getPkgVersion()} (dev/symlink install — pull from git to update code)`);
|
|
930
930
|
} else {
|
|
931
931
|
try {
|
|
932
|
-
execSync('npm
|
|
932
|
+
execSync('npm install -g @yemi33/minions@latest', { stdio: 'inherit', timeout: 120000 });
|
|
933
933
|
} catch (e) {
|
|
934
934
|
console.error(' npm update failed:', e.message);
|
|
935
935
|
process.exit(1);
|
|
@@ -474,7 +474,7 @@ function renderVersionBanner(version) {
|
|
|
474
474
|
el.title = 'The dashboard process is running older code. Run: minions restart';
|
|
475
475
|
} else if (version.updateAvailable) {
|
|
476
476
|
el.style.cssText = 'font-size:9px;padding:2px 8px;background:rgba(63,185,80,0.1);border:1px solid rgba(63,185,80,0.3);border-radius:4px;color:var(--green);cursor:help';
|
|
477
|
-
el.textContent = 'v' + v + commitLabel + ' — v' + version.latest + ' available. Run: minions update or npm
|
|
477
|
+
el.textContent = 'v' + v + commitLabel + ' — v' + version.latest + ' available. Run: minions update or npm install -g @yemi33/minions@latest';
|
|
478
478
|
el.title = 'A newer version is available on npm. Run minions update to upgrade and restart.';
|
|
479
479
|
} else {
|
|
480
480
|
el.style.cssText = 'font-size:9px;color:var(--muted)';
|
package/docs/distribution.md
CHANGED
|
@@ -78,7 +78,7 @@ Controlled by the `files` field in `package.json`:
|
|
|
78
78
|
|
|
79
79
|
### How updates work
|
|
80
80
|
|
|
81
|
-
- Users run `npm
|
|
81
|
+
- Users run `npm install -g @yemi33/minions@latest` then `minions init --force` to update engine code (avoids the `npm update -g` Windows footgun where the bin shim gets removed mid-update)
|
|
82
82
|
- `npx @yemi33/minions` always fetches the latest version
|
|
83
83
|
|
|
84
84
|
## Auto-Publishing
|
|
@@ -263,31 +263,6 @@ function buildSpawnFlags(opts = {}) {
|
|
|
263
263
|
return flags;
|
|
264
264
|
}
|
|
265
265
|
|
|
266
|
-
function getUserAssetDirs({ homeDir = os.homedir() } = {}) {
|
|
267
|
-
return [path.join(homeDir, '.claude')];
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
function getSkillRoots({ homeDir = os.homedir(), project = null } = {}) {
|
|
271
|
-
const roots = [
|
|
272
|
-
{ scope: 'claude-code', dir: path.join(homeDir, '.claude', 'skills') },
|
|
273
|
-
];
|
|
274
|
-
if (project?.localPath) {
|
|
275
|
-
roots.push({
|
|
276
|
-
scope: 'project',
|
|
277
|
-
projectName: project.name,
|
|
278
|
-
dir: path.join(project.localPath, '.claude', 'skills'),
|
|
279
|
-
});
|
|
280
|
-
}
|
|
281
|
-
return roots;
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
function getSkillWriteTargets({ homeDir = os.homedir(), project = null } = {}) {
|
|
285
|
-
return {
|
|
286
|
-
personal: path.join(homeDir, '.claude', 'skills'),
|
|
287
|
-
project: project?.localPath ? path.join(project.localPath, '.claude', 'skills') : null,
|
|
288
|
-
};
|
|
289
|
-
}
|
|
290
|
-
|
|
291
266
|
// Stamped into every session.json this adapter writes so the pre-spawn resume
|
|
292
267
|
// path can detect "session was produced by a different runtime" — Claude
|
|
293
268
|
// rejects Copilot session IDs (and vice versa) with "No conversation found",
|
package/engine/shared.js
CHANGED
|
@@ -5202,6 +5202,14 @@ function getPrFixAutomationCause({ dispatchKey = '', source = '', task = '' } =
|
|
|
5202
5202
|
return PR_FIX_CAUSE.UNKNOWN;
|
|
5203
5203
|
}
|
|
5204
5204
|
|
|
5205
|
+
// Source-branch head SHA, normalized across hosts. GitHub PRs carry
|
|
5206
|
+
// `headSha`/`headRefOid` (engine/github.js:718-742 keeps both in sync); ADO PRs
|
|
5207
|
+
// carry `_adoSourceCommit`/`headRefOid` (engine/ado.js:1083-1129) and a legacy
|
|
5208
|
+
// `_adoHeadCommit`. Mirrors engine/lifecycle.js:1849 getPrFixBaselineHead.
|
|
5209
|
+
function _prHeadSha(pr) {
|
|
5210
|
+
return String(pr?.headRefOid || pr?.headSha || pr?._adoSourceCommit || pr?._adoHeadCommit || '').trim();
|
|
5211
|
+
}
|
|
5212
|
+
|
|
5205
5213
|
function prFixEvidenceFingerprint(pr, cause = PR_FIX_CAUSE.UNKNOWN) {
|
|
5206
5214
|
const review = pr?.minionsReview || {};
|
|
5207
5215
|
const feedback = pr?.humanFeedback || {};
|
|
@@ -5214,6 +5222,13 @@ function prFixEvidenceFingerprint(pr, cause = PR_FIX_CAUSE.UNKNOWN) {
|
|
|
5214
5222
|
evidence.buildFailReason = pr?.buildFailReason || '';
|
|
5215
5223
|
evidence.buildErrorLog = pr?.buildErrorLog || '';
|
|
5216
5224
|
evidence.buildStatusDetail = pr?._buildStatusDetail || '';
|
|
5225
|
+
// #2979 — head SHA + lastPushedAt are the only fingerprint components that
|
|
5226
|
+
// change across a rebase + force-push. Without them, a no-op-fix pause was
|
|
5227
|
+
// sticky forever because failing pipeline name / fail reason / error log
|
|
5228
|
+
// are unchanged across the push. Existing paused records re-fingerprint on
|
|
5229
|
+
// the next poll and clear naturally when the head moves.
|
|
5230
|
+
evidence.headRefOid = _prHeadSha(pr);
|
|
5231
|
+
evidence.lastPushedAt = pr?.lastPushedAt || '';
|
|
5217
5232
|
} else if (cause === PR_FIX_CAUSE.MERGE_CONFLICT) {
|
|
5218
5233
|
evidence.mergeConflict = !!pr?._mergeConflict;
|
|
5219
5234
|
evidence.mergeStatus = pr?.mergeStatus || '';
|
|
@@ -5223,6 +5238,13 @@ function prFixEvidenceFingerprint(pr, cause = PR_FIX_CAUSE.UNKNOWN) {
|
|
|
5223
5238
|
evidence.lastReviewedAt = pr?.lastReviewedAt || '';
|
|
5224
5239
|
evidence.reviewedAt = review.reviewedAt || '';
|
|
5225
5240
|
evidence.reviewNote = review.note || pr?.reviewNote || '';
|
|
5241
|
+
// #2979 — same rationale as BUILD_FAILURE: review feedback fingerprints
|
|
5242
|
+
// were sticky across force-push because reviewStatus / reviewedAt /
|
|
5243
|
+
// reviewNote don't change when the author rebases. Adding the head SHA
|
|
5244
|
+
// gives REVIEW_FEEDBACK the same natural-unsticking property HUMAN_FEEDBACK
|
|
5245
|
+
// already has via lastProcessedCommentDate.
|
|
5246
|
+
evidence.headRefOid = _prHeadSha(pr);
|
|
5247
|
+
evidence.lastPushedAt = pr?.lastPushedAt || '';
|
|
5226
5248
|
}
|
|
5227
5249
|
return crypto.createHash('sha1').update(JSON.stringify(evidence)).digest('hex').slice(0, 16);
|
|
5228
5250
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2099",
|
|
4
4
|
"description": "Multi-agent AI dev team that runs from ~/.minions/ — five autonomous agents share a single engine, dashboard, and knowledge base",
|
|
5
5
|
"bin": {
|
|
6
6
|
"minions": "bin/minions.js"
|