@yemi33/minions 0.1.1789 → 0.1.1791

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 CHANGED
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.1791 (2026-05-08)
4
+
5
+ ### Features
6
+ - isolate pipeline read-only worktrees (#2204)
7
+
8
+ ## 0.1.1790 (2026-05-08)
9
+
10
+ ### Fixes
11
+ - restrict CC watch creation
12
+
3
13
  ## 0.1.1789 (2026-05-08)
4
14
 
5
15
  ### Other
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "runtime": "copilot",
3
3
  "models": null,
4
- "cachedAt": "2026-05-08T07:37:12.713Z"
4
+ "cachedAt": "2026-05-08T08:36:09.130Z"
5
5
  }
package/engine.js CHANGED
@@ -102,6 +102,11 @@ const mutatePullRequests = shared.mutatePullRequests;
102
102
  const withFileLock = shared.withFileLock;
103
103
 
104
104
  const CHECKPOINT_CAP_FAIL_REASON = 'Exceeded 3 checkpoint-resumes; manual intervention required';
105
+ const READ_ONLY_ROOT_TASK_TYPES = new Set(['meeting', 'ask', 'explore', 'plan-to-prd', 'plan']);
106
+
107
+ function isPipelineBranchName(branchName) {
108
+ return typeof branchName === 'string' && branchName.startsWith('pipeline/');
109
+ }
105
110
 
106
111
  // ─── Dispatch Management (extracted to engine/dispatch.js) ───────────────────
107
112
 
@@ -631,7 +636,7 @@ async function spawnAgent(dispatchItem, config) {
631
636
  // (orphan/timeout retry before first push) would otherwise emit a
632
637
  // "couldn't find remote ref" warn pair on every reuse.
633
638
  await syncReusedWorktree(rootDir, existingWt, branchName, _gitOpts);
634
- } else if (['meeting', 'ask', 'explore', 'plan-to-prd', 'plan'].includes(type)) {
639
+ } else if (READ_ONLY_ROOT_TASK_TYPES.has(type) && !isPipelineBranchName(branchName)) {
635
640
  // Read-only tasks — no worktree needed, run in rootDir
636
641
  log('info', `${type}: read-only task, no worktree needed — running in rootDir`);
637
642
  branchName = null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.1789",
3
+ "version": "0.1.1791",
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"
@@ -129,8 +129,9 @@ Additional actions (all take `id` or `file` as primary key):
129
129
  - Work item ops: delete-work-item (id, source), cancel-work-item (id, source?, reason? — cancel a pending/dispatched/failed item, kills running agent), archive-work-item (id), work-item-feedback (id, rating: up/down, comment), reopen-work-item (id, project[, description] — reopen a done/failed item back to pending)
130
130
  - PRD ops: edit-prd-item, remove-prd-item, reopen-prd-item (id, file — re-dispatches on existing branch)
131
131
  - **create-watch**: target, targetType (pr/work-item), condition (merged/build-fail/build-pass/completed/failed/status-change/any/new-comments/vote-change), interval ("15m", "1h", "30s" — default "5m"), owner (agent id or "human"), description, project, stopAfter (0=run forever, 1=expire on first match, N=expire after N matches), onNotMet (null=do nothing, "notify"=write to inbox each poll while condition not met)
132
- **NEVER use the /loop skill for monitoring tasks.** Always use the `create-watch` action — it persists across engine restarts and appears in the Watches page. /loop runs ephemerally in the session and leaves no trace.
133
- Trigger phrases: user says "keep an eye on X", "watch X every N min", "monitor X", "check X periodically", "ping me when X" always emit `create-watch`.
132
+ **NEVER use the /loop skill for explicit persistent monitoring tasks.** Use the `create-watch` action for those tasks — it persists across engine restarts and appears in the Watches page. /loop runs ephemerally in the session and leaves no trace.
133
+ Explicit watch intent means the human asks for persistent monitoring, periodic checks, or future notification after the current CC turn. Runtime waiting for a long-running task, background command, agent dispatch, build, test, or pipeline outcome is not watch intent and must not create a watch.
134
+ Trigger phrases require that explicit persistent intent: user says "keep an eye on X", "watch X every N min", "monitor X", "check X periodically", "ping me when X" → emit `create-watch`.
134
135
  Example: user says "check PR 1065 build every 15 min until green" → `{"type":"create-watch","target":"1065","targetType":"pr","condition":"build-pass","interval":"15m","stopAfter":1,"description":"Watch PR 1065 build until green"}`
135
136
  Example: user says "ping me every 15 min while build is still failing" → `{"type":"create-watch","target":"1065","targetType":"pr","condition":"build-pass","interval":"15m","stopAfter":1,"onNotMet":"notify","description":"Watch PR 1065 build — notify each poll"}`
136
137
  Example: user says "keep an eye on PR 200 every 5 min" → `{"type":"create-watch","target":"200","targetType":"pr","condition":"any","interval":"5m","stopAfter":0,"description":"Monitor PR 200"}`