opencode-swarm 7.114.8 → 7.115.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.
Files changed (32) hide show
  1. package/.opencode/skills/ci-fix-monitor/SKILL.md +8 -13
  2. package/.opencode/skills/commit-pr/SKILL.md +4 -0
  3. package/.opencode/skills/execute/SKILL.md +2 -0
  4. package/.opencode/skills/swarm-ci-monitor/SKILL.md +5 -0
  5. package/.opencode/skills/swarm-pr-feedback/SKILL.md +2 -0
  6. package/.opencode/skills/writing-tests/SKILL.md +2 -0
  7. package/README.md +1 -0
  8. package/dist/cli/{config-doctor-jy3mdh9t.js → config-doctor-htzxe394.js} +2 -2
  9. package/dist/cli/{curator-qj970412.js → curator-hpc4tsjv.js} +4 -4
  10. package/dist/cli/{curator-llm-factory-ez48eq02.js → curator-llm-factory-6n9sgaj8.js} +4 -4
  11. package/dist/cli/{guardrail-explain-x2vaxp6s.js → guardrail-explain-hecpd738.js} +5 -5
  12. package/dist/cli/{guardrail-log-84wnx273.js → guardrail-log-dzbqcgz9.js} +3 -3
  13. package/dist/cli/{hive-promoter-ysk5edzw.js → hive-promoter-0kfb4vjk.js} +4 -4
  14. package/dist/cli/{index-z718bgxe.js → index-2etc05tv.js} +6 -6
  15. package/dist/cli/{index-yfedche9.js → index-8j5d3ytd.js} +1 -1
  16. package/dist/cli/{index-ry8nwsq6.js → index-m0rce3x6.js} +2 -2
  17. package/dist/cli/{index-7jmrbp68.js → index-m43zgtjn.js} +1 -1
  18. package/dist/cli/{index-cs5765s2.js → index-m766gvdt.js} +640 -583
  19. package/dist/cli/{index-9bsmzfk3.js → index-m7hc7nn7.js} +5 -1
  20. package/dist/cli/{index-a45jq4b7.js → index-nvc0nsvg.js} +6 -1
  21. package/dist/cli/index.js +4 -4
  22. package/dist/cli/{schema-aymfdrsb.js → schema-bqn7g3ez.js} +3 -1
  23. package/dist/commands/ci-monitor.d.ts +18 -0
  24. package/dist/commands/registry.d.ts +8 -0
  25. package/dist/config/index.d.ts +2 -2
  26. package/dist/config/schema.d.ts +9 -0
  27. package/dist/config/skill-mirrors.d.ts +10 -1
  28. package/dist/index.js +214 -160
  29. package/dist/tools/apply-patch.d.ts +21 -0
  30. package/dist/utils/fuzzy-match.d.ts +115 -0
  31. package/dist/utils/sequence-matcher.d.ts +83 -0
  32. package/package.json +1 -1
@@ -5,21 +5,8 @@ description: >
5
5
  Monitor CI on a PR, diagnose failures, fix them, and re-push until green.
6
6
  Covers reading CI logs, classifying failure types (check-title, package-check,
7
7
  test failures, lint), determining the correct fix, and re-pushing.
8
- triggers:
9
- - ci check failure
10
- - fix ci
11
- - monitor ci
12
- generated_from_knowledge: []
13
- source_knowledge_ids: []
14
- generated_at: 2026-07-02T02:35:49.945Z
15
- confidence: 0.60
16
- status: active
17
- version: 6
18
- skill_origin: generated
19
8
  ---
20
9
 
21
- <!-- generated by opencode-swarm skill-generator. Do not edit by hand; edits will be preserved on regeneration only with controlled update mode. -->
22
-
23
10
  # CI Fix & Monitor Protocol
24
11
 
25
12
  Activates when the user asks to monitor CI, fix CI failures, or resolve red
@@ -201,3 +188,11 @@ the stall state to the user rather than waiting indefinitely.
201
188
  Do NOT declare victory until ALL required checks pass. A check in `skipped`
202
189
  state is acceptable only if the same check was skipped on the base branch
203
190
  (i.e. the workflow gates on a path filter). Confirm this explicitly.
191
+
192
+ ## Standalone retry bound
193
+
194
+ When this skill is invoked directly (not composed via `swarm-ci-monitor`'s
195
+ own 5-iteration counter), cap fix-push cycles at 5 iterations. If the PR is
196
+ still not green after 5 fix-push cycles, stop and escalate to the user with
197
+ the last failing check and a short log excerpt rather than looping
198
+ indefinitely.
@@ -79,6 +79,8 @@ git status --short
79
79
 
80
80
  On Windows, prefer temporary save branches over `git stash`. If you must stash, use `git stash push --include-untracked` and verify the stash contents.
81
81
 
82
+ If this changeset edited any SKILL.md file's wording, also run `file:.swarm/bundled-skills/skill-edit-validation/SKILL.md`'s content-assertion sweep before committing, to catch stale test assertions.
83
+
82
84
  ## Step 1 - Commit and PR titles
83
85
 
84
86
  Use `<type>(<scope>): <description>` exactly.
@@ -549,6 +551,8 @@ checks to rerun. Re-check before claiming final green or merge-readiness.
549
551
 
550
552
  ### Merge queue (current-base validation)
551
553
 
554
+ Read `file:.swarm/bundled-skills/merge-queue-readiness/SKILL.md` for the full pre-queue merge-group CI simulation protocol.
555
+
552
556
  When `main` has a GitHub **merge queue** enabled, do not rebase or force-push a PR
553
557
  *solely because `main` advanced*. Once required checks and review are green, add the
554
558
  PR to the merge queue; GitHub re-runs the required workflows against the queued
@@ -111,6 +111,8 @@ Treating pre_check_batch as a substitute for the active swarm's reviewer agent i
111
111
 
112
112
  When `council_mode` is OFF, the standard Stage B flow (steps 5j-5l: reviewer + test_engineer) runs as normal.
113
113
 
114
+ For set-dispatch reviewer/test_engineer verdict rows that must be attributed to plan tasks, read `file:.swarm/bundled-skills/gate-attribution/SKILL.md`. Before re-dispatching a coder for a task that already has a lane (any prior dispatch status), read `file:.swarm/bundled-skills/worktree-retry-cleanup/SKILL.md`.
115
+
114
116
  5j. the active swarm's reviewer agent - General review. REJECTED before the configured QA retry limit → coder retry. REJECTED at the configured QA retry limit → escalate.
115
117
  → REQUIRED: Print "reviewer: [APPROVED | REJECTED — reason]"
116
118
  5k. Security gate: if change matches TIER 3 criteria OR content contains SECURITY_KEYWORDS OR secretscan has ANY findings OR sast_scan has ANY findings at or above threshold → MUST delegate the active swarm's reviewer agent security-only review. REJECTED before the configured QA retry limit → coder retry. REJECTED at the configured QA retry limit → escalate to user.
@@ -241,6 +241,11 @@ already ran once in this invocation.
241
241
  directly per Step 5 as an "un-approval" terminal, do not loop back to
242
242
  Step 2.
243
243
 
244
+ Optional pre-queue simulation: `file:.swarm/bundled-skills/merge-queue-readiness/SKILL.md`
245
+ covers running `/swarm ci-simulate` before entering a merge queue. It is a
246
+ fast local signal, not a substitute for this step's live re-checks above —
247
+ run it in addition to, never instead of, Step 3.
248
+
244
249
  ## Step 4 — Merge
245
250
 
246
251
  ### 4a. Execute the merge
@@ -239,6 +239,8 @@ branches or prior work sessions.
239
239
 
240
240
  ## Batch Collection (mandatory before any fix)
241
241
 
242
+ Read `file:.swarm/bundled-skills/ci-failure-batching/SKILL.md` for the full batch collection and fix protocol before proceeding.
243
+
242
244
  Issue #1746: 8+ push cycles where 3–4 would have sufficed with batching.
243
245
  The anti-pattern: iterating check-by-check, proposing a fix for one failure,
244
246
  pushing, waiting for CI, then discovering the next failure. Each cycle costs
@@ -617,6 +617,8 @@ authority checks:
617
617
 
618
618
  `scripts/check-test-file-cap.sh` enforces the **500-line cap** per test file (FR-006) as a **diff-scoped ratchet**: new test files over 500 lines and existing over-cap files that grew fail the quality gate and block PR merge. Pre-existing over-cap files not touched by the PR are non-blocking. Escape hatch: `TEST_CAP_ENFORCE=0` soft-warns (use only for a deliberate growth PR).
619
619
 
620
+ For the full splitting protocol (describe-block extraction, shared helper management, pure-function extraction, mock isolation verification, cascading-split detection), read `file:.swarm/bundled-skills/test-file-split/SKILL.md`.
621
+
620
622
  ### Checking file length
621
623
 
622
624
  ```bash
package/README.md CHANGED
@@ -1115,6 +1115,7 @@ Control how tool outputs are summarized for LLM context.
1115
1115
  | `/swarm issue <issue-url\|owner/repo#N\|N> [--plan] [--trace] [--no-repro]` | Ingest a GitHub issue for localization and resolution |
1116
1116
  | `/swarm pr-review <pr-url\|owner/repo#N\|N> [--council] [instructions...]` | Structured deep PR review with parallel lanes, reviewer confirmation, and critic challenge |
1117
1117
  | `/swarm pr-feedback [<pr-url\|owner/repo#N\|N>] [instructions...]` | Ingest and close known PR feedback (review comments, CI failures, conflicts) without a fresh review |
1118
+ | `/swarm ci-monitor <pr-url\|owner/repo#N\|N>` | Drive an already-reviewed, approved PR to green and merged (monitor CI, fix, merge; max 5 fix cycles) |
1118
1119
  | `/swarm pr subscribe <pr-url\|owner/repo#N\|N>` | Subscribe current session to PR monitoring (session-scoped); requires `pr_monitor.enabled: true` |
1119
1120
  | `/swarm pr unsubscribe <pr-url\|owner/repo#N\|N>` | Remove session's subscription to a PR |
1120
1121
  | `/swarm pr status` | List active PR subscriptions for current session with relative timestamps (the `bunx opencode-swarm run pr status` CLI has no session context, so it lists subscriptions across all sessions) |
@@ -12,8 +12,8 @@ import {
12
12
  shouldRunOnStartup,
13
13
  writeBackupArtifact,
14
14
  writeDoctorArtifact
15
- } from "./index-9bsmzfk3.js";
16
- import"./index-a45jq4b7.js";
15
+ } from "./index-m7hc7nn7.js";
16
+ import"./index-nvc0nsvg.js";
17
17
  import"./index-bfwt3abw.js";
18
18
  import"./index-5e4e2hvv.js";
19
19
  import"./index-p0arc26j.js";
@@ -14,11 +14,11 @@ import {
14
14
  runCuratorInit,
15
15
  runCuratorPhase,
16
16
  writeCuratorSummary
17
- } from "./index-cs5765s2.js";
18
- import"./index-yfedche9.js";
17
+ } from "./index-m766gvdt.js";
18
+ import"./index-8j5d3ytd.js";
19
19
  import"./index-c8s9a3zh.js";
20
- import"./index-9bsmzfk3.js";
21
- import"./index-a45jq4b7.js";
20
+ import"./index-m7hc7nn7.js";
21
+ import"./index-nvc0nsvg.js";
22
22
  import"./index-yrrqs4b0.js";
23
23
  import"./index-scww5b77.js";
24
24
  import"./index-ga4ta3cr.js";
@@ -1,11 +1,11 @@
1
1
  // @bun
2
2
  import {
3
3
  createCuratorLLMDelegate
4
- } from "./index-cs5765s2.js";
5
- import"./index-yfedche9.js";
4
+ } from "./index-m766gvdt.js";
5
+ import"./index-8j5d3ytd.js";
6
6
  import"./index-c8s9a3zh.js";
7
- import"./index-9bsmzfk3.js";
8
- import"./index-a45jq4b7.js";
7
+ import"./index-m7hc7nn7.js";
8
+ import"./index-nvc0nsvg.js";
9
9
  import"./index-yrrqs4b0.js";
10
10
  import"./index-scww5b77.js";
11
11
  import"./index-ga4ta3cr.js";
@@ -1,12 +1,12 @@
1
1
  // @bun
2
2
  import {
3
3
  handleGuardrailExplain
4
- } from "./index-ry8nwsq6.js";
5
- import"./index-cs5765s2.js";
6
- import"./index-yfedche9.js";
4
+ } from "./index-m0rce3x6.js";
5
+ import"./index-m766gvdt.js";
6
+ import"./index-8j5d3ytd.js";
7
7
  import"./index-c8s9a3zh.js";
8
- import"./index-9bsmzfk3.js";
9
- import"./index-a45jq4b7.js";
8
+ import"./index-m7hc7nn7.js";
9
+ import"./index-nvc0nsvg.js";
10
10
  import"./index-yrrqs4b0.js";
11
11
  import"./index-scww5b77.js";
12
12
  import"./index-ga4ta3cr.js";
@@ -1,9 +1,9 @@
1
1
  // @bun
2
2
  import {
3
3
  handleGuardrailLog
4
- } from "./index-7jmrbp68.js";
5
- import"./index-yfedche9.js";
6
- import"./index-a45jq4b7.js";
4
+ } from "./index-m43zgtjn.js";
5
+ import"./index-8j5d3ytd.js";
6
+ import"./index-nvc0nsvg.js";
7
7
  import"./index-bfwt3abw.js";
8
8
  import"./index-5e4e2hvv.js";
9
9
  import"./index-p0arc26j.js";
@@ -6,11 +6,11 @@ import {
6
6
  isHiveEligible,
7
7
  promoteFromSwarm,
8
8
  promoteToHive
9
- } from "./index-cs5765s2.js";
10
- import"./index-yfedche9.js";
9
+ } from "./index-m766gvdt.js";
10
+ import"./index-8j5d3ytd.js";
11
11
  import"./index-c8s9a3zh.js";
12
- import"./index-9bsmzfk3.js";
13
- import"./index-a45jq4b7.js";
12
+ import"./index-m7hc7nn7.js";
13
+ import"./index-nvc0nsvg.js";
14
14
  import"./index-yrrqs4b0.js";
15
15
  import"./index-scww5b77.js";
16
16
  import"./index-ga4ta3cr.js";
@@ -1,10 +1,10 @@
1
1
  // @bun
2
2
  import {
3
3
  handleGuardrailExplain
4
- } from "./index-ry8nwsq6.js";
4
+ } from "./index-m0rce3x6.js";
5
5
  import {
6
6
  handleGuardrailLog
7
- } from "./index-7jmrbp68.js";
7
+ } from "./index-m43zgtjn.js";
8
8
  import {
9
9
  COMMAND_REGISTRY,
10
10
  SWARM_COMMAND_TOOL_ALLOWLIST,
@@ -81,15 +81,15 @@ import {
81
81
  handleWriteRetroCommand,
82
82
  normalizeSwarmCommandInput,
83
83
  resolveCommand
84
- } from "./index-cs5765s2.js";
85
- import"./index-yfedche9.js";
84
+ } from "./index-m766gvdt.js";
85
+ import"./index-8j5d3ytd.js";
86
86
  import"./index-c8s9a3zh.js";
87
- import"./index-9bsmzfk3.js";
87
+ import"./index-m7hc7nn7.js";
88
88
  import {
89
89
  AGENT_TOOL_MAP,
90
90
  ORCHESTRATOR_NAME,
91
91
  stripKnownSwarmPrefix
92
- } from "./index-a45jq4b7.js";
92
+ } from "./index-nvc0nsvg.js";
93
93
  import"./index-yrrqs4b0.js";
94
94
  import"./index-scww5b77.js";
95
95
  import"./index-ga4ta3cr.js";
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  stripKnownSwarmPrefix
4
- } from "./index-a45jq4b7.js";
4
+ } from "./index-nvc0nsvg.js";
5
5
  import {
6
6
  init_logger,
7
7
  warn
@@ -12,14 +12,14 @@ import {
12
12
  detectPosixWrites,
13
13
  detectWindowsWrites,
14
14
  resolveWriteTargets
15
- } from "./index-cs5765s2.js";
15
+ } from "./index-m766gvdt.js";
16
16
  import {
17
17
  checkFileAuthority,
18
18
  classifyFile,
19
19
  isInDeclaredScope,
20
20
  redactPath,
21
21
  redactShellCommand
22
- } from "./index-yfedche9.js";
22
+ } from "./index-8j5d3ytd.js";
23
23
 
24
24
  // src/services/guardrail-explain-service.ts
25
25
  import path from "path";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  redactPath,
4
4
  redactShellCommand
5
- } from "./index-yfedche9.js";
5
+ } from "./index-8j5d3ytd.js";
6
6
 
7
7
  // src/services/guardrail-log-service.ts
8
8
  import * as fs from "fs/promises";