opencode-swarm 7.107.0 → 7.107.2

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 (39) hide show
  1. package/dist/agents/explorer.d.ts +2 -2
  2. package/dist/cli/curator-6zvpn7fs.js +51 -0
  3. package/dist/cli/curator-drift-6ad8mxxb.js +211 -0
  4. package/dist/cli/curator-llm-factory-r3m5e7n8.js +31 -0
  5. package/dist/cli/{evidence-summary-service-zhw4rkjb.js → evidence-summary-service-7nwhd8s4.js} +4 -3
  6. package/dist/cli/{explorer-rwfvbbx5.js → explorer-ksr3xq7n.js} +1 -1
  7. package/dist/cli/{guardrail-explain-6xt0pb56.js → guardrail-explain-zajegz3a.js} +13 -11
  8. package/dist/cli/hive-promoter-nwcsha2j.js +39 -0
  9. package/dist/cli/{index-ydgy7vg5.js → index-09xpycan.js} +31 -5
  10. package/dist/cli/{index-fhw0jm5c.js → index-168p3bfr.js} +22952 -21022
  11. package/dist/cli/index-357p0baj.js +719 -0
  12. package/dist/cli/{index-vwyjkzgs.js → index-9wstcavp.js} +1 -1
  13. package/dist/cli/index-c8s9a3zh.js +73 -0
  14. package/dist/cli/{index-25pev4e7.js → index-f12bmedv.js} +132 -843
  15. package/dist/cli/{index-wa6at603.js → index-jr54w7pb.js} +1 -1
  16. package/dist/cli/{index-v90bnn0f.js → index-r87xhtmx.js} +14 -12
  17. package/dist/cli/{index-e9n3xsk0.js → index-t4hbye3v.js} +1 -1
  18. package/dist/cli/index.js +12 -10
  19. package/dist/cli/{pending-delegations-dvprsdfy.js → pending-delegations-46xf2n2e.js} +2 -2
  20. package/dist/cli/{pr-subscriptions-zfxjtyzw.js → pr-subscriptions-3c34rnm1.js} +3 -3
  21. package/dist/cli/{skill-generator-99rrfwae.js → skill-generator-y6mmq8n5.js} +1 -1
  22. package/dist/commands/curate.d.ts +38 -1
  23. package/dist/commands/handoff.d.ts +2 -1
  24. package/dist/commands/registry.d.ts +6 -6
  25. package/dist/config/bundled-skills.d.ts +3 -5
  26. package/dist/hooks/curator-postmortem.d.ts +52 -3
  27. package/dist/hooks/curator.d.ts +2 -1
  28. package/dist/index.js +438 -393
  29. package/dist/session/snapshot-writer.d.ts +4 -0
  30. package/dist/tools/external-skill-discover.d.ts +11 -0
  31. package/dist/tools/pre-check-batch.d.ts +4 -0
  32. package/dist/turbo/lean/evidence.d.ts +22 -0
  33. package/dist/turbo/lean/integration.d.ts +6 -1
  34. package/dist/turbo/lean/reviewer.d.ts +6 -1
  35. package/dist/turbo/lean/runner.d.ts +10 -1
  36. package/dist/utils/untrusted-markdown.d.ts +1 -0
  37. package/dist/worktree/merge.d.ts +1 -0
  38. package/package.json +1 -1
  39. package/dist/cli/{index-7ztmmqpt.js → index-mpe0yk9s.js} +3 -3
@@ -20,6 +20,10 @@ export interface SerializedAgentSession {
20
20
  lastCoderDelegationTaskId: string | null;
21
21
  currentTaskId: string | null;
22
22
  turboMode: boolean;
23
+ turboStrategy?: 'standard' | 'lean';
24
+ leanTurboActive?: boolean;
25
+ leanTurboCurrentPhase?: number;
26
+ epicModeActive?: boolean;
23
27
  gateLog: Record<string, string[]>;
24
28
  reviewerCallCount: Record<string, number>;
25
29
  lastGateFailure: {
@@ -18,4 +18,15 @@ export declare const _internals: {
18
18
  computeSha256: (content: string) => string;
19
19
  uuid: () => string;
20
20
  };
21
+ declare function normalizeHostname(hostname: string): string;
22
+ declare function isUnsafeIpv4(hostname: string): boolean;
23
+ declare function isUnsafeIpv6(hostname: string): boolean;
24
+ declare function assertSafeFetchUrl(rawUrl: string): void;
21
25
  export declare const external_skill_discover: ReturnType<typeof createSwarmTool>;
26
+ export declare const _test_exports: {
27
+ isUnsafeIpv4: typeof isUnsafeIpv4;
28
+ isUnsafeIpv6: typeof isUnsafeIpv6;
29
+ assertSafeFetchUrl: typeof assertSafeFetchUrl;
30
+ normalizeHostname: typeof normalizeHostname;
31
+ };
32
+ export {};
@@ -7,8 +7,12 @@ import type { tool } from '@opencode-ai/plugin';
7
7
  import type { PluginConfig } from '../config';
8
8
  import type { LintResult } from './lint';
9
9
  import type { QualityBudgetResult } from './quality-budget';
10
+ import { qualityBudget } from './quality-budget';
10
11
  import type { SastScanFinding, SastScanResult } from './sast-scan';
11
12
  import type { SecretscanErrorResult, SecretscanResult } from './secretscan';
13
+ export declare const _internals: {
14
+ qualityBudget: typeof qualityBudget;
15
+ };
12
16
  export interface PreCheckBatchInput {
13
17
  /** List of specific files to check (optional) */
14
18
  files?: string[];
@@ -11,8 +11,24 @@ export interface LaneEvidence {
11
11
  error?: string;
12
12
  agent?: string;
13
13
  sessionId?: string;
14
+ mergeBackFailure?: {
15
+ laneId: string;
16
+ branchName?: string;
17
+ worktreePath: string;
18
+ status: 'failed' | 'partial' | 'conflict';
19
+ reason: string;
20
+ committedHash?: string;
21
+ conflictFiles?: string[];
22
+ };
14
23
  }
15
24
  import type { LeanTurboConfig } from '../../config/schema';
25
+ export interface ValidationArtifact {
26
+ status: 'unknown' | 'passed' | 'failed';
27
+ command?: string;
28
+ stdoutTail?: string;
29
+ stderrTail?: string;
30
+ summary?: string;
31
+ }
16
32
  /**
17
33
  * Aggregated evidence for an entire Lean Turbo phase.
18
34
  */
@@ -35,6 +51,12 @@ export interface PhaseEvidence {
35
51
  reviewerVerdict?: 'APPROVED' | 'NEEDS_REVISION' | 'REJECTED';
36
52
  /** Critic verdict */
37
53
  criticVerdict?: 'APPROVED' | 'NEEDS_REVISION' | 'REJECTED' | 'ESCALATE_TO_HUMAN';
54
+ /** Bounded raw validation artifacts for reviewer/critic evidence packages */
55
+ validationArtifacts?: {
56
+ build?: ValidationArtifact;
57
+ test?: ValidationArtifact;
58
+ lint?: ValidationArtifact;
59
+ };
38
60
  /** Snapshot of lean turbo config used for this phase */
39
61
  configSnapshot?: LeanTurboConfig;
40
62
  /** ISO timestamp when phase evidence was written (distinct from startedAt/completedAt) */
@@ -1,4 +1,4 @@
1
- import { type LaneEvidence, listLaneEvidence, readPhaseEvidence } from './evidence';
1
+ import { type LaneEvidence, listLaneEvidence, readPhaseEvidence, type ValidationArtifact } from './evidence';
2
2
  /**
3
3
  * Configuration options for phase critic dispatch.
4
4
  */
@@ -74,6 +74,11 @@ interface CriticPackage {
74
74
  completedLanes: number;
75
75
  failedLanes: number;
76
76
  };
77
+ validationArtifacts?: {
78
+ build?: ValidationArtifact;
79
+ test?: ValidationArtifact;
80
+ lint?: ValidationArtifact;
81
+ };
77
82
  degradationSummary: {
78
83
  totalDegraded: number;
79
84
  resolvedDegraded: number;
@@ -1,4 +1,4 @@
1
- import { type LaneEvidence, listLaneEvidence, readPhaseEvidence } from './evidence';
1
+ import { type LaneEvidence, listLaneEvidence, readPhaseEvidence, type ValidationArtifact } from './evidence';
2
2
  import { readPersisted } from './state';
3
3
  /**
4
4
  * Configuration options for phase reviewer dispatch.
@@ -63,6 +63,11 @@ interface ReviewPackage {
63
63
  failedLanes: number;
64
64
  };
65
65
  buildStatus: 'unknown' | 'passed' | 'failed';
66
+ validationArtifacts?: {
67
+ build?: ValidationArtifact;
68
+ test?: ValidationArtifact;
69
+ lint?: ValidationArtifact;
70
+ };
66
71
  degradationSummary: {
67
72
  totalDegraded: number;
68
73
  resolvedDegraded: number;
@@ -21,7 +21,7 @@ import { loadFullAutoRunState } from '../../full-auto/state';
21
21
  import { acquireLaneLocks, releaseLaneLocks } from '../../parallel/file-locks';
22
22
  import { loadPlanJsonOnly } from '../../plan/manager';
23
23
  import { hasActiveFullAuto } from '../../state';
24
- import { writeLaneEvidence } from './evidence';
24
+ import { writeLaneEvidence, writePhaseEvidence } from './evidence';
25
25
  import { attemptMergeBackFromDirty, getMergeStrategy, mergeLaneBranch, postMergeCleanup, startupOrphanRecovery } from './merge-back';
26
26
  import { planLeanTurboLanes } from './planner';
27
27
  import type { LeanTurboLane } from './state';
@@ -96,6 +96,12 @@ export interface LaneDispatchResult {
96
96
  export interface MergeBackFailureInfo {
97
97
  /** Lane identifier */
98
98
  laneId: string;
99
+ /** Lane branch preserved for recovery */
100
+ branchName?: string;
101
+ /** Lane worktree preserved for recovery */
102
+ worktreePath: string;
103
+ /** Merge-back failure class */
104
+ status: 'failed' | 'partial' | 'conflict';
99
105
  /** Human-readable reason for the merge-back failure */
100
106
  reason: string;
101
107
  /** Conflict files if the failure was a merge conflict */
@@ -188,6 +194,7 @@ export declare class LeanTurboRunner {
188
194
  hasActiveFullAuto: typeof hasActiveFullAuto;
189
195
  loadFullAutoRunState: typeof loadFullAutoRunState;
190
196
  writeLaneEvidence: typeof writeLaneEvidence;
197
+ writePhaseEvidence: typeof writePhaseEvidence;
191
198
  /** Timeout for lane dispatch (session.create + session.prompt) in ms. Undefined = no timeout. */
192
199
  laneDispatchTimeoutMs: number | undefined;
193
200
  provisionWorktree: typeof provisionWorktree;
@@ -338,6 +345,8 @@ export declare class LeanTurboRunner {
338
345
  * @returns Array of MergeBackFailureInfo for lanes where merge-back failed
339
346
  */
340
347
  private _sequentialWorktreeCleanup;
348
+ private _buildIntegratedDiffSummary;
349
+ private _writePhaseEvidenceSafely;
341
350
  /**
342
351
  * Select the next available agent using round-robin.
343
352
  */
@@ -0,0 +1 @@
1
+ export declare function neutralizeUntrustedMarkdown(content: string, sourceLabel?: string): string;
@@ -66,6 +66,7 @@ export interface DirtyMergePartial {
66
66
  autoCommitted: boolean;
67
67
  cleaned: boolean;
68
68
  message: string;
69
+ conflictFiles?: string[];
69
70
  }
70
71
  export interface DirtyMergeFailure {
71
72
  failed: true;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-swarm",
3
- "version": "7.107.0",
3
+ "version": "7.107.2",
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",
@@ -1,10 +1,10 @@
1
1
  // @bun
2
- import {
3
- readCachedTextFile
4
- } from "./index-jtqkh8jf.js";
5
2
  import {
6
3
  SwarmError
7
4
  } from "./index-5e4e2hvv.js";
5
+ import {
6
+ readCachedTextFile
7
+ } from "./index-jtqkh8jf.js";
8
8
  import {
9
9
  warn
10
10
  } from "./index-zgwm4ryv.js";