opencode-swarm 7.181.0 → 7.181.1

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 (69) hide show
  1. package/binaries/win32-arm64/swarm-sandbox-runner.exe +0 -0
  2. package/binaries/win32-x64/swarm-sandbox-runner.exe +0 -0
  3. package/dist/cli/{coder-settlement-pqrfkm9d.js → coder-settlement-ee8bmg83.js} +4 -4
  4. package/dist/cli/{config-doctor-bjqg57jr.js → config-doctor-mnmxzg86.js} +3 -3
  5. package/dist/cli/{core-3t3dzkrc.js → core-m9yymv84.js} +2 -2
  6. package/dist/cli/{curator-y8qr4xgh.js → curator-7nmwpcxy.js} +22 -22
  7. package/dist/cli/{curator-drift-gay4fx5j.js → curator-drift-q42fr0c9.js} +5 -5
  8. package/dist/cli/{curator-llm-factory-1wx0bd8k.js → curator-llm-factory-s1b2p162.js} +22 -22
  9. package/dist/cli/{evidence-summary-service-jeewwfpg.js → evidence-summary-service-m2b0mxmr.js} +9 -9
  10. package/dist/cli/{gate-evidence-ncnfxz7t.js → gate-evidence-4y2x85g4.js} +3 -3
  11. package/dist/cli/{guardrail-explain-cg9e3rr8.js → guardrail-explain-nvmf3y7j.js} +23 -23
  12. package/dist/cli/{guardrail-log-tjcnpwhv.js → guardrail-log-202rfw7b.js} +4 -4
  13. package/dist/cli/{guardrail-reset-ey81kcdq.js → guardrail-reset-7nt7z18b.js} +22 -22
  14. package/dist/cli/{hive-promoter-ghcynvfv.js → hive-promoter-segsykns.js} +22 -22
  15. package/dist/cli/{index-m31a2q35.js → index-3qhx9dx0.js} +63 -58
  16. package/dist/cli/{index-pb3vrqsf.js → index-4h54k8h3.js} +2 -2
  17. package/dist/cli/{index-06f6h0fv.js → index-908yea8v.js} +1 -1
  18. package/dist/cli/{index-t8hv63wy.js → index-9j5jjqks.js} +1 -1
  19. package/dist/cli/{index-ytxgr424.js → index-a7z6jygf.js} +2 -2
  20. package/dist/cli/{index-gez80bfr.js → index-b2zbak7v.js} +2 -2
  21. package/dist/cli/{index-0vvpe98m.js → index-basp4sxt.js} +1 -1
  22. package/dist/cli/{index-886rpw6w.js → index-cyyvc1cd.js} +1 -1
  23. package/dist/cli/{index-ge1w25n8.js → index-edb3sgxg.js} +2 -2
  24. package/dist/cli/{index-gm67qky7.js → index-g5wjasjn.js} +3 -3
  25. package/dist/cli/{index-rqm075jf.js → index-g9ax7jyf.js} +2 -2
  26. package/dist/cli/{index-s5ghg4kg.js → index-gqe4sm73.js} +1 -1
  27. package/dist/cli/{index-jzg3wrx6.js → index-gydvqmtg.js} +4 -4
  28. package/dist/cli/{index-jysjhvpv.js → index-hxe22tx3.js} +5 -5
  29. package/dist/cli/{index-t5gqdkqx.js → index-jqjdejqe.js} +2 -2
  30. package/dist/cli/{index-xq9gsfsc.js → index-kjstkfgh.js} +3 -3
  31. package/dist/cli/{index-mkpczxy7.js → index-na3br902.js} +22 -22
  32. package/dist/cli/{index-6aj0ej18.js → index-pee6ykkg.js} +1 -1
  33. package/dist/cli/{index-dn0wqvv2.js → index-q1prchye.js} +5 -5
  34. package/dist/cli/{index-n7syegpa.js → index-r6p6x0pb.js} +16 -7
  35. package/dist/cli/{index-pc3cw1xm.js → index-rw0wy2y7.js} +3 -3
  36. package/dist/cli/{index-1rcwsfwz.js → index-rxs0rrv1.js} +24 -24
  37. package/dist/cli/{index-m7havzy4.js → index-tczqm089.js} +1 -1
  38. package/dist/cli/{index-yet4r7kp.js → index-vs83acgx.js} +3 -3
  39. package/dist/cli/{index-w872yykk.js → index-y4zjbrqs.js} +4 -0
  40. package/dist/cli/{index-r1cnmq4j.js → index-yhx94xpr.js} +4 -4
  41. package/dist/cli/{index-wxjvb4vq.js → index-ztph1v9m.js} +1 -1
  42. package/dist/cli/index.js +23 -23
  43. package/dist/cli/{knowledge-escalator-jrkx2b6j.js → knowledge-escalator-r9chkas8.js} +7 -7
  44. package/dist/cli/{knowledge-events-bha1zpbk.js → knowledge-events-5j2n6age.js} +5 -5
  45. package/dist/cli/{knowledge-store-q438tkyd.js → knowledge-store-mybx9bmx.js} +1 -1
  46. package/dist/cli/{knowledge-validator-3nx18fst.js → knowledge-validator-v1sj9tv4.js} +2 -2
  47. package/dist/cli/{mcp-98693syb.js → mcp-7yx5230p.js} +1 -1
  48. package/dist/cli/{model-preflight-61xgqwcs.js → model-preflight-ckvv1arg.js} +1 -1
  49. package/dist/cli/{pending-delegations-nkpvtkz4.js → pending-delegations-amjfmc7t.js} +2 -2
  50. package/dist/cli/{pr-subscriptions-qrvhr6jw.js → pr-subscriptions-rctqs0gk.js} +1 -1
  51. package/dist/cli/{pr-workflow-gate-k44gdrqd.js → pr-workflow-gate-9he8ys4e.js} +22 -22
  52. package/dist/cli/{scan-cursor-qjdn8kv6.js → scan-cursor-pxqkphrh.js} +2 -2
  53. package/dist/cli/{schema-pyax2tq7.js → schema-n8pk3f80.js} +2 -2
  54. package/dist/cli/{scope-persistence-dyc17kze.js → scope-persistence-p992x2yd.js} +6 -6
  55. package/dist/cli/{server-bmzj5vt2.js → server-ywrd2q6z.js} +22 -22
  56. package/dist/cli/{skill-generator-mp29bht6.js → skill-generator-cdppktqx.js} +8 -8
  57. package/dist/cli/{snapshot-coordination-init-azkzphpy.js → snapshot-coordination-init-z42ev5g9.js} +22 -22
  58. package/dist/cli/{speckit-checkoff-1cqfakw2.js → speckit-checkoff-6ynv46bn.js} +4 -4
  59. package/dist/cli/{worktree-collision-ownership-58sab2m6.js → worktree-collision-ownership-65971p3m.js} +2 -2
  60. package/dist/cli/{worktree-isolation-9egt1ccv.js → worktree-isolation-xf7dfc46.js} +22 -22
  61. package/dist/gate-evidence.d.ts +21 -0
  62. package/dist/index.js +31 -31
  63. package/dist/tools/index.d.ts +1 -0
  64. package/dist/tools/manifest.d.ts +1 -0
  65. package/dist/tools/recover-rework-task.d.ts +5 -0
  66. package/dist/tools/tool-metadata.d.ts +4 -0
  67. package/dist/workflow/rework-recovery.d.ts +38 -0
  68. package/dist/workflow/stage-a-repair.d.ts +42 -0
  69. package/package.json +1 -1
@@ -123,6 +123,7 @@ export { executeRecordImplementationReview, record_implementation_review, } from
123
123
  export { executeRecordIssuePublication, record_issue_publication, } from './record-issue-publication';
124
124
  export { executeRecordIssueReproduction, record_issue_reproduction, } from './record-issue-reproduction';
125
125
  export { executeRecordRecurrenceSweep, record_recurrence_sweep, } from './record-recurrence-sweep';
126
+ export { executeRecoverReworkTask, recover_rework_task, } from './recover-rework-task';
126
127
  export { executeRunPrFeedbackStageA, run_pr_feedback_stage_a, } from './run-pr-feedback-stage-a';
127
128
  export { symbols } from './symbols';
128
129
  export { type SyntaxCheckFileResult, type SyntaxCheckInput, type SyntaxCheckResult, syntax_check, syntaxCheck, } from './syntax-check';
@@ -48,6 +48,7 @@ export declare const TOOL_MANIFEST: {
48
48
  submit_pr_review_result: () => ToolDefinition;
49
49
  approve_plan_critic: () => ToolDefinition;
50
50
  approve_retry_sounding_board: () => ToolDefinition;
51
+ recover_rework_task: () => ToolDefinition;
51
52
  prepare_pr_workflow_checkout: () => ToolDefinition;
52
53
  record_implementation_review: () => ToolDefinition;
53
54
  record_issue_publication: () => ToolDefinition;
@@ -0,0 +1,5 @@
1
+ import { createSwarmTool } from './create-tool.js';
2
+ export declare function executeRecoverReworkTask(args: unknown, directory: string, context?: {
3
+ sessionID?: string;
4
+ }): Promise<string>;
5
+ export declare const recover_rework_task: ReturnType<typeof createSwarmTool>;
@@ -177,6 +177,10 @@ export declare const TOOL_METADATA: {
177
177
  description: string;
178
178
  agents: "architect"[];
179
179
  };
180
+ recover_rework_task: {
181
+ description: string;
182
+ agents: "architect"[];
183
+ };
180
184
  prepare_pr_workflow_checkout: {
181
185
  description: string;
182
186
  agents: "architect"[];
@@ -0,0 +1,38 @@
1
+ export interface ReworkRecoverySummary {
2
+ taskId: string;
3
+ generation: number;
4
+ state: string;
5
+ transitionId: string;
6
+ recordedAt: string;
7
+ /**
8
+ * Whether the stage_a_repair audit event actually landed in
9
+ * `.swarm/events.jsonl`. The durable transition is authoritative regardless;
10
+ * this surfaces the best-effort append honestly instead of asserting an
11
+ * audit record that may not exist (issue #2755 review, FB-001).
12
+ */
13
+ auditEventRecorded: boolean;
14
+ }
15
+ /**
16
+ * Architect-supervised recovery from `rework_required` (issue #2755).
17
+ *
18
+ * The mechanical `stage_a_passed` transition deliberately fails closed from
19
+ * `rework_required` (`TASK_WORKFLOW_CODER_MUTATION_REQUIRED`): a genuine code
20
+ * defect must go back through the coder. But a Stage B verdict that failed
21
+ * WITHOUT a code defect (e.g. a tool-argument mistake scored as a verdict —
22
+ * sibling issue #2756) strands a task whose code is correct, reviewed, and
23
+ * green on Stage A checks, with no agent-legal exit; the only other remedy
24
+ * ever offered is the human-only `/swarm recover`, whose repair leg skips
25
+ * this state entirely.
26
+ *
27
+ * This is the audited escape hatch the #2703 precedent
28
+ * (`approve_retry_sounding_board`) established for exactly this class: it
29
+ * writes the SAME durable transition the mechanical path would have written,
30
+ * admitted ONLY by the `supervisedRecovery` flag the reducer accepts from
31
+ * `rework_required`, and records a distinguishable `stage_a_repair` audit
32
+ * event (action `rework_recovered`). Every precondition fails closed; the
33
+ * mechanical path and the `/swarm recover` auto-scan are untouched.
34
+ */
35
+ export declare function forceRecoverReworkTask(directory: string, sessionID: string, options: {
36
+ taskId: string;
37
+ reason?: string;
38
+ }): Promise<ReworkRecoverySummary>;
@@ -21,12 +21,54 @@ export interface StageARepairResult {
21
21
  results: StageARepairOutcome[];
22
22
  truncated: boolean;
23
23
  }
24
+ /**
25
+ * Appends a stage_a_repair lifecycle event to `.swarm/events.jsonl`.
26
+ * Mirrors coder-settlement's appendSettlementEvent contract: best-effort,
27
+ * never throws, appended through the canonical `appendCoreEventSync` seam
28
+ * (which owns `.swarm` creation, lock retry, and torn-tail framing — its
29
+ * single atomic append replaces the former EBUSY/EPERM one-retry), final
30
+ * failure surfaced via criticalWarn so a silently missing audit line is
31
+ * visible. Returns whether the audit line actually landed, so callers on
32
+ * supervised-write paths can surface audit honesty instead of asserting it
33
+ * (issue #2755 review: the recover_rework_task tool must not claim an audit
34
+ * record exists when the append failed).
35
+ */
36
+ export declare function appendStageARepairEvent(directory: string, payload: Record<string, unknown>): Promise<boolean>;
24
37
  export type PreCheckGreennessResult = {
25
38
  green: true;
26
39
  } | {
27
40
  green: false;
28
41
  reason: 'no_pre_check_bundles' | 'pre_check_failed_or_stale';
29
42
  };
43
+ /**
44
+ * Decides whether durable post-settlement Stage A proof exists for a wedged
45
+ * task. "Green" REQUIRES BOTH a secretscan evidence bundle whose latest entry
46
+ * is pass/approved/info with full coverage and zero findings, AND a sast_scan
47
+ * evidence bundle whose latest entry is pass/approved/info. Also requires
48
+ * every considered entry to be newer than the settlement commit when
49
+ * `settledAfterMs` is supplied (a scan taken before the coder's mutation
50
+ * proves nothing about it).
51
+ *
52
+ * Deliberately more conservative than `pre_check_batch`'s own default bar in
53
+ * two edge cases it cannot reproduce from persisted evidence alone: (1) a
54
+ * degraded-but-tolerated SAST run (Semgrep process failure with zero
55
+ * findings) persists an ordinary `verdict: 'fail'` entry structurally
56
+ * indistinguishable from a genuine failure — `failure_kind` is only present
57
+ * on the tool's transient return value, not the persisted bundle — so this
58
+ * function treats it as failing rather than risk silently waving through a
59
+ * scan that never actually completed; (2) a project running with SAST
60
+ * disabled (`sast_enabled: false`) never persists a `sast_scan` bundle at
61
+ * all, so a wedged task from such a project cannot be auto-repaired via this
62
+ * path and needs manual attention. Both are intentional fail-closed
63
+ * trade-offs for a security-relevant repair tool, not bugs — see PR #2316
64
+ * review finding ST-001/UIB-004 for why an absent-SAST-is-fine policy was
65
+ * removed in the first place.
66
+ *
67
+ * Evidence bucket names vs. entry type tags differ for SAST: the scanner
68
+ * persists its bundle under bucket `sast_scan` (see `src/tools/sast-scan.ts`)
69
+ * with individual entries tagged `type: 'sast'`.
70
+ */
71
+ export declare function hasGreenPostSettlementPreCheck(directory: string, settledAfterMs: number | null): Promise<PreCheckGreennessResult>;
30
72
  export interface StageAScanResult {
31
73
  /** One entry per enumerated task, classified in the shared #2665 vocabulary. */
32
74
  results: TaskRecoveryStatus[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-swarm",
3
- "version": "7.181.0",
3
+ "version": "7.181.1",
4
4
  "description": "Architect-centric agentic swarm plugin for OpenCode - hub-and-spoke orchestration with SME consultation, code generation, and QA review",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",