opencode-swarm 7.193.0 → 7.195.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 (116) hide show
  1. package/.opencode/skills/commit-pr/SKILL.md +8 -0
  2. package/.opencode/skills/issue-tracer/references/acceptance-checks.md +20 -0
  3. package/.opencode/skills/issue-tracer/references/full-resolution-contract.md +12 -0
  4. package/.opencode/skills/swarm-pr-feedback/SKILL.md +2 -2
  5. package/.opencode/skills/swarm-pr-feedback/references/operational-gotchas.md +18 -0
  6. package/.opencode/skills/swarm-pr-review/SKILL.md +11 -10
  7. package/.opencode/skills/swarm-pr-review/references/counterbalancing.md +68 -0
  8. package/.opencode/skills/swarm-pr-review/references/findings-persistence-contract.md +21 -0
  9. package/.opencode/skills/swarm-pr-review/references/parser-dry-run.md +11 -0
  10. package/.opencode/skills/swarm-pr-review/references/prompt-templates.md +8 -0
  11. package/README.md +1 -1
  12. package/binaries/win32-arm64/swarm-sandbox-runner.exe +0 -0
  13. package/binaries/win32-x64/swarm-sandbox-runner.exe +0 -0
  14. package/dist/background/pending-delegations.d.ts +8 -0
  15. package/dist/background/pr-review-collection-receipt.d.ts +7 -1
  16. package/dist/background/pr-review-contract.d.ts +10 -0
  17. package/dist/cli/{auto-checkpoint-taay16xe.js → auto-checkpoint-anf21wwa.js} +9 -9
  18. package/dist/cli/{checkpoint-6229g3jq.js → checkpoint-ngdw2qx2.js} +17 -17
  19. package/dist/cli/{coder-settlement-hexmmefv.js → coder-settlement-bqb059y2.js} +13 -13
  20. package/dist/cli/{config-doctor-3ghvthh5.js → config-doctor-vetg215g.js} +16 -16
  21. package/dist/cli/{core-0k7t9fw0.js → core-8qgvsm6x.js} +4 -4
  22. package/dist/cli/{curation-policy-8j6qn6nt.js → curation-policy-5hm6328s.js} +6 -6
  23. package/dist/cli/{curator-drift-a5142x0d.js → curator-drift-3gjycbkv.js} +9 -9
  24. package/dist/cli/{curator-kwwnkyr7.js → curator-hh0n9wgz.js} +43 -43
  25. package/dist/cli/curator-llm-factory-d17ybmgm.js +82 -0
  26. package/dist/cli/{doctor-knowledge-receipt-phase-id-11nsf9tz.js → doctor-knowledge-receipt-phase-id-1d465vkg.js} +9 -9
  27. package/dist/cli/{evidence-summary-service-y2ykc6ta.js → evidence-summary-service-rkd3yc5x.js} +20 -20
  28. package/dist/cli/{gate-evidence-cd5299js.js → gate-evidence-wtjrerkh.js} +8 -8
  29. package/dist/cli/guardrail-explain-8xh3r0dn.js +83 -0
  30. package/dist/cli/{guardrail-log-g6krx0s2.js → guardrail-log-jrey2myg.js} +8 -8
  31. package/dist/cli/{guardrail-reset-a3xv675m.js → guardrail-reset-m5qbg30j.js} +43 -43
  32. package/dist/cli/{hive-promoter-90svfzvs.js → hive-promoter-36yhdfre.js} +43 -43
  33. package/dist/cli/{index-5ev6f1gj.js → index-1hcjxz6w.js} +5 -5
  34. package/dist/cli/{index-6dn16dre.js → index-3k65kdfp.js} +13 -11
  35. package/dist/cli/{index-x2phyvcv.js → index-479kf368.js} +4 -4
  36. package/dist/cli/{index-5rkh69f3.js → index-4gmxdkcd.js} +2 -2
  37. package/dist/cli/{index-bg19b84s.js → index-5gf2wx2c.js} +7 -7
  38. package/dist/cli/{index-qh93qjc2.js → index-6183at3v.js} +2 -2
  39. package/dist/cli/{index-1p24bfn2.js → index-6vpqe4ws.js} +5 -5
  40. package/dist/cli/{index-ma71x1aa.js → index-780g1hht.js} +5 -5
  41. package/dist/cli/{index-jx80ed6g.js → index-7kbpzg05.js} +318 -95
  42. package/dist/cli/{index-mtqwyjrg.js → index-7rtq2t5n.js} +1 -1
  43. package/dist/cli/{index-vbp35frb.js → index-82aj6gaj.js} +3 -3
  44. package/dist/cli/{index-prvancd0.js → index-8448vj9w.js} +2 -2
  45. package/dist/cli/{index-d2emv8ap.js → index-863hst4e.js} +3 -3
  46. package/dist/cli/{index-db786kn6.js → index-9teqkkp4.js} +43 -43
  47. package/dist/cli/{index-bkpyff61.js → index-akb436kn.js} +4 -4
  48. package/dist/cli/{index-0e318vgt.js → index-app2rmxv.js} +1 -1
  49. package/dist/cli/{index-tr47q89d.js → index-bftpd2m5.js} +4 -4
  50. package/dist/cli/{index-rd9th57y.js → index-bpq6z8qe.js} +4 -4
  51. package/dist/cli/{index-cs0p582p.js → index-c4hx57tz.js} +5 -5
  52. package/dist/cli/{index-668npagp.js → index-c5xvm318.js} +1 -1
  53. package/dist/cli/{index-ngk8hpc3.js → index-c6hyd8hg.js} +1 -1
  54. package/dist/cli/{index-vg8sxg12.js → index-crz772sx.js} +1 -1
  55. package/dist/cli/{index-6s3ab22d.js → index-dfrcc46h.js} +2 -2
  56. package/dist/cli/{index-he2nyr7x.js → index-epdzvp4w.js} +11 -11
  57. package/dist/cli/{index-ymnathfr.js → index-fk4j26km.js} +7 -7
  58. package/dist/cli/{index-ndec8akq.js → index-gc0aeth5.js} +2 -2
  59. package/dist/cli/{index-fd6b9f38.js → index-ghckhk16.js} +2 -2
  60. package/dist/cli/{index-4mq8r4be.js → index-gns3gc87.js} +4 -4
  61. package/dist/cli/{index-5n760fzn.js → index-gz16dke1.js} +6 -6
  62. package/dist/cli/{index-3xj89bf0.js → index-h7275akd.js} +45 -45
  63. package/dist/cli/{index-cpt38e0e.js → index-ha8xc5d3.js} +2 -2
  64. package/dist/cli/{index-py8wpe81.js → index-hqrkr9ag.js} +2 -2
  65. package/dist/cli/{index-w2vbaczx.js → index-hy2fqapm.js} +1 -1
  66. package/dist/cli/{index-st80sjg7.js → index-j8t1g5qd.js} +1 -1
  67. package/dist/cli/{index-ntmnse4d.js → index-jatgbm7k.js} +1 -1
  68. package/dist/cli/{index-1dx5zyss.js → index-jn4mmhqc.js} +2 -2
  69. package/dist/cli/{index-nz6ehpjn.js → index-kmvy5fr8.js} +4 -4
  70. package/dist/cli/{index-84k9zzv1.js → index-kphy4we7.js} +1 -1
  71. package/dist/cli/{index-7njm9jk1.js → index-necqa5bj.js} +2 -2
  72. package/dist/cli/{index-bgtfvst1.js → index-peyz4k9k.js} +1 -1
  73. package/dist/cli/{index-3atkcqpb.js → index-ry5g9s8d.js} +1 -1
  74. package/dist/cli/{index-jxs9qnad.js → index-tc8x0zc5.js} +4 -4
  75. package/dist/cli/{index-e8k0v19e.js → index-xmbtwtgw.js} +1 -1
  76. package/dist/cli/{index-nktwf2xm.js → index-xs9cn3c0.js} +6 -6
  77. package/dist/cli/{index-hfssjyxs.js → index-yf2z4j7s.js} +2 -2
  78. package/dist/cli/{index-hfnyykvm.js → index-ypkfhqbc.js} +7 -7
  79. package/dist/cli/{index-r3mffz78.js → index-yryy781f.js} +4 -4
  80. package/dist/cli/{index-4gacy6y6.js → index-z59414gv.js} +2 -2
  81. package/dist/cli/index.js +44 -44
  82. package/dist/cli/{knowledge-escalator-2d7g3hs0.js → knowledge-escalator-6sgrjbcj.js} +15 -15
  83. package/dist/cli/{knowledge-events-hjeaevc9.js → knowledge-events-hztjt63y.js} +13 -13
  84. package/dist/cli/{knowledge-link-srnt95wh.js → knowledge-link-8bn2b7vr.js} +5 -5
  85. package/dist/cli/{knowledge-store-g9cb2m0v.js → knowledge-store-3sd2034v.js} +6 -6
  86. package/dist/cli/{knowledge-validator-dghf9pcj.js → knowledge-validator-3fe82zy4.js} +8 -8
  87. package/dist/cli/{mcp-f5myvd7r.js → mcp-spbx3efe.js} +1 -1
  88. package/dist/cli/{model-preflight-4w4wd6dj.js → model-preflight-k2bw7rt1.js} +43 -43
  89. package/dist/cli/{pending-delegations-adm6gf3n.js → pending-delegations-kcvd9t41.js} +14 -12
  90. package/dist/cli/{pr-subscriptions-n1hks854.js → pr-subscriptions-nqby87en.js} +12 -12
  91. package/dist/cli/{pr-workflow-gate-59cr6gve.js → pr-workflow-gate-cgbc0x1z.js} +59 -43
  92. package/dist/cli/{runner-b2e89cp1.js → runner-rt2smh14.js} +6 -6
  93. package/dist/cli/{scan-cursor-t26xmfhd.js → scan-cursor-sphr9phs.js} +7 -7
  94. package/dist/cli/{schema-cr120ar5.js → schema-x892aatt.js} +2 -2
  95. package/dist/cli/{scope-persistence-mrnz8j43.js → scope-persistence-n9xksct2.js} +16 -16
  96. package/dist/cli/{server-mwk6zn83.js → server-am2y11yn.js} +43 -43
  97. package/dist/cli/{skill-generator-svs4k0g8.js → skill-generator-p71b6h5k.js} +17 -17
  98. package/dist/cli/{snapshot-coordination-init-xzrahhsb.js → snapshot-coordination-init-x9b4t9sk.js} +43 -43
  99. package/dist/cli/{speckit-checkoff-g2qrb1tn.js → speckit-checkoff-xp9vsp9k.js} +5 -5
  100. package/dist/cli/{telemetry-qaymh4gg.js → telemetry-vapc5q4p.js} +1 -1
  101. package/dist/cli/{workspace-snapshot-p69t9zn7.js → workspace-snapshot-e3kw9kpg.js} +3 -3
  102. package/dist/cli/{worktree-collision-ownership-d145wmpg.js → worktree-collision-ownership-2pmyww6g.js} +13 -13
  103. package/dist/cli/{worktree-isolation-pt1rws6p.js → worktree-isolation-379tmkta.js} +43 -43
  104. package/dist/commands/registry.d.ts +1 -1
  105. package/dist/epic/start.d.ts +8 -5
  106. package/dist/hooks/pr-workflow-gate.d.ts +190 -0
  107. package/dist/host/v2/session-client.d.ts +96 -0
  108. package/dist/host/v2/types.d.ts +7 -5
  109. package/dist/index.js +36 -32
  110. package/dist/pr-review/legacy-transcript-adapter.d.ts +54 -0
  111. package/dist/pr-review/render-review-body.d.ts +20 -0
  112. package/dist/tools/dispatch-lanes.d.ts +16 -1
  113. package/dist/tools/pr-workflow-status.d.ts +24 -1
  114. package/package.json +1 -1
  115. package/dist/cli/curator-llm-factory-8gt3mvg9.js +0 -82
  116. package/dist/cli/guardrail-explain-hpgecr7x.js +0 -83
@@ -52,6 +52,14 @@ export interface PrReviewItemClaim {
52
52
  * Reviewer claims only — this is what a critic batch binds to per item.
53
53
  */
54
54
  rowDigest?: string;
55
+ /**
56
+ * Issue #2906: reviewer claims only. Whether this item's verdict was stable
57
+ * across the counterbalanced presentation orders — 'agree' when both the A
58
+ * and B passes produced the same (classification, severity) pair, 'disagree'
59
+ * when they flipped, 'single' when fewer than two marked orders observed the
60
+ * item. The label describes cross-order evidence, not winner provenance.
61
+ */
62
+ orderAgreement?: 'agree' | 'disagree' | 'single';
55
63
  }
56
64
  export interface PrReviewPhaseComposition {
57
65
  /** Item id -> winning claim. Most recent successful lane per item wins. */
@@ -59,6 +67,19 @@ export interface PrReviewPhaseComposition {
59
67
  requiredInventory: string[];
60
68
  unclaimed: string[];
61
69
  contributingBatchIds: string[];
70
+ /**
71
+ * Issue #2906 review finding F-04: reviewer phase only (empty for critic).
72
+ * Batch ids that recorded at least one ORDER OBSERVATION the agreement
73
+ * labels read — a strictly different contribution than a claim. A batch
74
+ * whose newer counterbalanced pass claimed every item contributes no claim
75
+ * yet still supplies the second marked order every `agree`/`disagree`
76
+ * label is computed from, so a capacity prune that retains only claim
77
+ * contributors would silently degrade those labels to `single`. The prune
78
+ * retains these ids as well; an older batch whose observations were
79
+ * already recorded by a newer batch of the same order is absent (its
80
+ * removal cannot change any label).
81
+ */
82
+ orderObservingBatchIds: string[];
62
83
  diagnostics: string[];
63
84
  }
64
85
  /** Validation-batch shape, as the transcript composition reads it. */
@@ -87,6 +108,8 @@ export interface PrReviewTranscriptBatchCoherence {
87
108
  reviewerItemBindings?: Record<string, string>;
88
109
  /** Key encoding for reviewerItemBindings; absent means legacy raw item IDs. */
89
110
  reviewerItemBindingKeyEncoding?: 'prefixed-v1';
111
+ /** Issue #2906: reviewer batches only — the counterbalanced presentation order. */
112
+ presentationOrder?: 'A' | 'B';
90
113
  }
91
114
  /** Settled PR_FEEDBACK verification batch, as the adapter reads it. */
92
115
  export interface PrReviewTranscriptFeedbackVerification {
@@ -95,6 +118,20 @@ export interface PrReviewTranscriptFeedbackVerification {
95
118
  laneId: string;
96
119
  }>;
97
120
  }
121
+ /**
122
+ * One journaled `write_pr_review_artifact` rejection (issue #3098 — the
123
+ * verdict-lane mirror of the #2859 submit-rejection journal). Structural twin
124
+ * of the gate's `PrReviewVerdictRejectionRecord`; declared locally because the
125
+ * adapter cannot import the gate.
126
+ */
127
+ export interface PrReviewVerdictRejectionEntry {
128
+ sessionId: string;
129
+ laneId?: string;
130
+ workflowLane?: string;
131
+ boundary?: 'post_explorer' | 'post_reviewer' | 'post_critic';
132
+ at: number;
133
+ message: string;
134
+ }
98
135
  /**
99
136
  * The PR-review slice of the owning gate's `PrWorkflowGateState`: exactly the
100
137
  * fields the moved conversion/composition machinery reads directly. The gate's
@@ -104,6 +141,7 @@ export interface PrReviewTranscriptState {
104
141
  sessionID: string;
105
142
  prReviewBatchCoherence?: Record<string, PrReviewTranscriptBatchCoherence>;
106
143
  prFeedbackVerifications?: PrReviewTranscriptFeedbackVerification[];
144
+ prReviewVerdictRejections?: PrReviewVerdictRejectionEntry[];
107
145
  }
108
146
  /** The gate-context surface the transcript composition consumes (full ctx is gate-owned). */
109
147
  export interface PrReviewTranscriptContext {
@@ -133,6 +171,16 @@ export interface PrReviewTranscriptGateHelpers {
133
171
  batchMayContributeClaims(directory: string, state: PrReviewTranscriptState, batch: PrReviewTranscriptBatch, phase: PrReviewComposablePhase, requiredInventory: readonly string[], forbiddenSubagentSessionIds: ReadonlySet<string>, reviewerClaims: ReadonlyMap<string, PrReviewItemClaim> | undefined, ctx: PrReviewTranscriptContext): boolean;
134
172
  recordsPassingBatchIntegrity(directory: string, state: PrReviewTranscriptState, batchId: string, expectedLanes: ReadonlyArray<PrReviewTranscriptLane>, expectedMode: string, validatedAt: string, checkWorkflowLane?: boolean, forbiddenSubagentSessionIds?: ReadonlySet<string>, diagnostics?: string[]): PrReviewTranscriptQualifiedBatchRecord[];
135
173
  loadArtifactPassingLaneIntegrity(directory: string, state: PrReviewTranscriptState, record: BackgroundDelegationRecord, expectedMode: string, expectedWorkflowLane: string, expectedRevisionDigest: string, diagnostics?: string[]): LaneOutputArtifact | null;
174
+ /**
175
+ * Issue #3098: newest journaled `write_pr_review_artifact` rejection
176
+ * attributable to a lane (workflowLane/laneId join keys). Bound by the
177
+ * gate, which owns the journal's reader.
178
+ */
179
+ latestPrReviewVerdictRejectionForLane(state: PrReviewTranscriptState, matchers: {
180
+ workflowLane?: string;
181
+ laneIds?: readonly string[];
182
+ boundary?: 'post_explorer' | 'post_reviewer' | 'post_critic';
183
+ }): string | undefined;
136
184
  }
137
185
  export declare function bindPrReviewTranscriptAdapterHelpers(helpers: PrReviewTranscriptGateHelpers): void;
138
186
  /**
@@ -161,6 +209,12 @@ export declare function reviewerItemBindingKey(itemId: string): string;
161
209
  * complete claim set is unbounded blocking I/O for no verdict change — first
162
210
  * write wins, and every required item has already been written.
163
211
  *
212
+ * Issue #2906 adds ONE bounded exception: when the claim set completes but
213
+ * marked presentation orders remain, the scan continues only far enough to
214
+ * collect the ORDER OBSERVATIONS of the remaining batches, which no later
215
+ * batch can supply. That remainder is bounded by the same
216
+ * `MAX_WORKFLOW_BATCHES` window and changes no claim.
217
+ *
164
218
  * `exhaustive` turns the exit off for the batch GC, which prunes a reviewer
165
219
  * batch on "it contributed no claim". Being precise about what that buys: with
166
220
  * *this* exit condition the two scans yield the same `contributingBatchIds`,
@@ -17,6 +17,12 @@ export interface RendererFinding {
17
17
  evidence: string;
18
18
  next_action: string;
19
19
  severity?: string;
20
+ /**
21
+ * Issue #2906: order-stability of this finding's reviewer verdict across
22
+ * counterbalanced presentation orders. Only 'disagree' renders a marker
23
+ * (the token `order-unstable`); 'agree'/'single'/absent render nothing.
24
+ */
25
+ order_agreement?: string;
20
26
  }
21
27
  export interface RendererCoverage {
22
28
  kind: string;
@@ -29,6 +35,15 @@ export interface RenderReviewBodyInput {
29
35
  base_verification?: string;
30
36
  coverage: RendererCoverage;
31
37
  findings: RendererFinding[];
38
+ /**
39
+ * Issue #2906: order-unstable findings whose FINAL settled status keeps
40
+ * them out of `findings` (a DISPROVED row is not a finding and is never
41
+ * published as one). They are still order-unstable — the reviewer verdict
42
+ * flipped with presentation order — so they get their own section and are
43
+ * counted. Suppressing them entirely hid exactly the signal the
44
+ * counterbalancing control exists to produce.
45
+ */
46
+ order_unstable_suppressed?: RendererFinding[];
32
47
  /** Previously posted comment/review bodies; findings whose rendered marker already appears are skipped (AC4 dedupe). */
33
48
  existingComments?: string[];
34
49
  }
@@ -47,6 +62,11 @@ export interface RenderedReviewBody {
47
62
  truncatedInlineComments: number;
48
63
  /** findings omitted from the body as dismissed (severity NONE at settlement). */
49
64
  dismissedCount: number;
65
+ /**
66
+ * Issue #2906: findings rendered with the order-unstable marker — their
67
+ * reviewer verdict flipped across counterbalanced presentation orders.
68
+ */
69
+ orderUnstableCount: number;
50
70
  /** true when the body exceeded PR_REVIEW_BODY_CHAR_CAP and was truncated with a disclosure. */
51
71
  bodyTruncated: boolean;
52
72
  }
@@ -682,7 +682,7 @@ interface PrReviewReceiptFallbackState {
682
682
  }>;
683
683
  }
684
684
  declare function resolvePrReviewReceiptFallbacksFromState(records: readonly BackgroundDelegationRecord[], state: PrReviewReceiptFallbackState): ReadonlyMap<string, PrReviewVerdictCollectionReceipt>;
685
- declare function appendPrReviewCollectionReceipt(record: BackgroundDelegationRecord, result: BackgroundDelegationResult, receipt: PrReviewVerdictCollectionReceipt): BackgroundDelegationResult | null;
685
+ declare function appendPrReviewCollectionReceipt(record: BackgroundDelegationRecord, result: BackgroundDelegationResult, receipt: PrReviewVerdictCollectionReceipt, presentationOrder?: 'A' | 'B'): BackgroundDelegationResult | null;
686
686
  declare function parsePrReviewCollectionReceipt(record: BackgroundDelegationRecord): PrReviewVerdictCollectionReceipt | null;
687
687
  declare function recordToLaneResult(record: BackgroundDelegationRecord, batchId: string, deliveryContext?: LaneResultDeliveryContext): DispatchLaneResult;
688
688
  declare function buildReadOnlyTools(mode?: string): ReadOnlyToolPermissions;
@@ -749,6 +749,21 @@ declare function applyPrWorkflowPromptContract(lanes: DispatchLaneSpec[], option
749
749
  revisionDigest?: string;
750
750
  scope?: string;
751
751
  callerFocus?: string;
752
+ /**
753
+ * Issue #2906: reviewer lanes only. 'A' renders assigned_item_ids in
754
+ * canonical sorted order, 'B' in the exact reverse, plus a
755
+ * presentation_order contract line. Undefined is exactly absent —
756
+ * prompts stay byte-identical to the pre-#2906 rendering.
757
+ */
758
+ presentationOrder?: 'A' | 'B';
759
+ /**
760
+ * Issue #2906: critic lanes only. Item ids whose verdicts flipped across
761
+ * counterbalanced reviewer passes; rendered as an
762
+ * order_unstable_item_ids line (intersected with the lane's assigned
763
+ * ids; '(none)' when the intersection is empty). Undefined is exactly
764
+ * absent — no line is rendered.
765
+ */
766
+ orderUnstableItemIds?: string[];
752
767
  }): ApplyCommonPromptResult;
753
768
  declare function formatError(error: unknown): string;
754
769
  declare function buildLaneSessionCreateArgs(directory: string, lane: DispatchLaneSpec, context: Pick<DispatchLanesExecutionContext, 'sessionID'>): {
@@ -1,4 +1,4 @@
1
- import { readDelegationsDetailed } from '../background/pending-delegations';
1
+ import { findByBatchIdDetailed, readDelegationsDetailed } from '../background/pending-delegations';
2
2
  import { resolveCurrentGitHeadAsync, resolveIsWorkingTreeCleanAsync } from '../background/workspace-snapshot';
3
3
  import { classifyPrWorkflowGitState } from '../git/pr-workflow-state';
4
4
  import { isPrWorkflowAutoWakeSuppressed } from '../hooks/pr-workflow-auto-wake';
@@ -14,12 +14,30 @@ import { createSwarmTool } from './create-tool';
14
14
  * severed at the boundary instead of leaving a lone surrogate.
15
15
  */
16
16
  declare function truncateToByteBudget(value: string, maxBytes: number): string;
17
+ /**
18
+ * Lightweight neutralizer for short, author-influenced Git strings (branch
19
+ * names, remote URLs, changed paths). A PR branch/remote is attacker-controlled
20
+ * text; this strips control characters and the markdown/HTML metacharacters that
21
+ * could break a downstream renderer, then bounds the length. It deliberately
22
+ * does NOT use the heavyweight `neutralizeUntrustedMarkdown` fenced wrapper,
23
+ * which is for large prose blobs, not single structured fields.
24
+ */
25
+ declare function boundUntrusted(value: string, maxLen: number): string;
17
26
  /**
18
27
  * Bounded, killable, non-interactive Git read (AGENTS.md invariant 3). Array
19
28
  * form, explicit cwd, ignored stdin, capped stdout, timeout, best-effort kill in
20
29
  * finally. Never runs a PR-controlled script — only fixed read verbs are passed.
21
30
  */
22
31
  declare function runGitCapture(directory: string, args: string[]): Promise<string | null>;
32
+ /**
33
+ * Bound a one-line finding summary for display: strip control characters and
34
+ * the markdown/HTML metacharacters (same character classes as
35
+ * {@link boundUntrusted} — receipt fields are lane-agent-authored text and a
36
+ * schema cap bounds length, not content), collapse whitespace, then cap to
37
+ * the char limit without splitting a surrogate pair (code-point-aware, unlike
38
+ * a bare `slice`).
39
+ */
40
+ declare function boundFindingLine(line: string): string;
23
41
  declare function resolveWorkflowGateSession(directory: string, sessionID: string): Promise<string | null>;
24
42
  export declare const pr_workflow_status: ReturnType<typeof createSwarmTool>;
25
43
  /** Test seam mirroring gh-evidence's `_internals` (issue #507 DI convention). */
@@ -34,5 +52,10 @@ export declare const _internals: {
34
52
  classifyGitState: typeof classifyPrWorkflowGitState;
35
53
  truncateToByteBudget: typeof truncateToByteBudget;
36
54
  resolveWorkflowGateSession: typeof resolveWorkflowGateSession;
55
+ /** Batch receipt lookup for the lane-coverage projection (F-01 test seam). */
56
+ findByBatchIdDetailed: typeof findByBatchIdDetailed;
57
+ /** Pure field sanitizers (direct hostile-input unit suites). */
58
+ boundUntrusted: typeof boundUntrusted;
59
+ boundFindingLine: typeof boundFindingLine;
37
60
  };
38
61
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-swarm",
3
- "version": "7.193.0",
3
+ "version": "7.195.0",
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,82 +0,0 @@
1
- // @bun
2
- import {
3
- createCuratorLLMDelegate
4
- } from "./index-jx80ed6g.js";
5
- import"./index-bkpyff61.js";
6
- import"./index-4mq8r4be.js";
7
- import"./index-ma71x1aa.js";
8
- import"./index-j2vv0h13.js";
9
- import"./index-668npagp.js";
10
- import"./index-7njm9jk1.js";
11
- import"./index-txdagbh7.js";
12
- import"./index-prvancd0.js";
13
- import"./index-rdec0y3z.js";
14
- import"./index-d2emv8ap.js";
15
- import"./index-ymnathfr.js";
16
- import"./index-r3mffz78.js";
17
- import"./index-5n760fzn.js";
18
- import"./index-fd6b9f38.js";
19
- import"./index-hfnyykvm.js";
20
- import"./index-cjapb4hy.js";
21
- import"./index-6s3ab22d.js";
22
- import"./index-pt7h91zc.js";
23
- import"./index-q7sjgr1y.js";
24
- import"./index-nktwf2xm.js";
25
- import"./index-he2nyr7x.js";
26
- import"./index-6b295cas.js";
27
- import"./index-9nyqt3kb.js";
28
- import"./index-bgtfvst1.js";
29
- import"./index-v3bmwmqw.js";
30
- import"./index-4gacy6y6.js";
31
- import"./index-nz6ehpjn.js";
32
- import"./index-x2phyvcv.js";
33
- import"./index-g4fs6z4e.js";
34
- import"./index-6dn16dre.js";
35
- import"./index-tr47q89d.js";
36
- import"./index-cs0p582p.js";
37
- import"./index-m9zzj4ee.js";
38
- import"./index-84k9zzv1.js";
39
- import"./index-2s7dvzff.js";
40
- import"./index-jxs9qnad.js";
41
- import"./index-w2vbaczx.js";
42
- import"./index-rtry5xyf.js";
43
- import"./index-vbp35frb.js";
44
- import"./index-g22dps7x.js";
45
- import"./index-0725jpp7.js";
46
- import"./index-1p24bfn2.js";
47
- import"./index-5ev6f1gj.js";
48
- import"./index-qh93qjc2.js";
49
- import"./index-st80sjg7.js";
50
- import"./index-vg8sxg12.js";
51
- import"./index-0e318vgt.js";
52
- import"./index-ry16d01s.js";
53
- import"./index-rdm3px0g.js";
54
- import"./index-7pmbnjvj.js";
55
- import"./index-ndec8akq.js";
56
- import"./index-bg19b84s.js";
57
- import"./index-vzm6zre7.js";
58
- import"./index-ae75rja9.js";
59
- import"./index-3atkcqpb.js";
60
- import"./index-5rkh69f3.js";
61
- import"./index-e8k0v19e.js";
62
- import"./index-t7hmqgjy.js";
63
- import"./index-mtqwyjrg.js";
64
- import"./index-fzpt2djt.js";
65
- import"./index-ejhxgyvm.js";
66
- import"./index-7g4c7s5r.js";
67
- import"./index-hfssjyxs.js";
68
- import"./index-gx2vp8gx.js";
69
- import"./index-ngk8hpc3.js";
70
- import"./index-zxdawwc7.js";
71
- import"./index-1dx5zyss.js";
72
- import"./index-py8wpe81.js";
73
- import"./index-bk5tah7q.js";
74
- import"./index-gknz3bv1.js";
75
- import"./index-zpsr8rpc.js";
76
- import"./index-bzfn85kq.js";
77
- import"./index-9rwhas09.js";
78
- import"./index-zgwm4ryv.js";
79
- import"./index-a76rekgs.js";
80
- export {
81
- createCuratorLLMDelegate
82
- };
@@ -1,83 +0,0 @@
1
- // @bun
2
- import {
3
- handleGuardrailExplain
4
- } from "./index-cpt38e0e.js";
5
- import"./index-jx80ed6g.js";
6
- import"./index-bkpyff61.js";
7
- import"./index-4mq8r4be.js";
8
- import"./index-ma71x1aa.js";
9
- import"./index-j2vv0h13.js";
10
- import"./index-668npagp.js";
11
- import"./index-7njm9jk1.js";
12
- import"./index-txdagbh7.js";
13
- import"./index-prvancd0.js";
14
- import"./index-rdec0y3z.js";
15
- import"./index-d2emv8ap.js";
16
- import"./index-ymnathfr.js";
17
- import"./index-r3mffz78.js";
18
- import"./index-5n760fzn.js";
19
- import"./index-fd6b9f38.js";
20
- import"./index-hfnyykvm.js";
21
- import"./index-cjapb4hy.js";
22
- import"./index-6s3ab22d.js";
23
- import"./index-pt7h91zc.js";
24
- import"./index-q7sjgr1y.js";
25
- import"./index-nktwf2xm.js";
26
- import"./index-he2nyr7x.js";
27
- import"./index-6b295cas.js";
28
- import"./index-9nyqt3kb.js";
29
- import"./index-bgtfvst1.js";
30
- import"./index-v3bmwmqw.js";
31
- import"./index-4gacy6y6.js";
32
- import"./index-nz6ehpjn.js";
33
- import"./index-x2phyvcv.js";
34
- import"./index-g4fs6z4e.js";
35
- import"./index-6dn16dre.js";
36
- import"./index-tr47q89d.js";
37
- import"./index-cs0p582p.js";
38
- import"./index-m9zzj4ee.js";
39
- import"./index-84k9zzv1.js";
40
- import"./index-2s7dvzff.js";
41
- import"./index-jxs9qnad.js";
42
- import"./index-w2vbaczx.js";
43
- import"./index-rtry5xyf.js";
44
- import"./index-vbp35frb.js";
45
- import"./index-g22dps7x.js";
46
- import"./index-0725jpp7.js";
47
- import"./index-1p24bfn2.js";
48
- import"./index-5ev6f1gj.js";
49
- import"./index-qh93qjc2.js";
50
- import"./index-st80sjg7.js";
51
- import"./index-vg8sxg12.js";
52
- import"./index-0e318vgt.js";
53
- import"./index-ry16d01s.js";
54
- import"./index-rdm3px0g.js";
55
- import"./index-7pmbnjvj.js";
56
- import"./index-ndec8akq.js";
57
- import"./index-bg19b84s.js";
58
- import"./index-vzm6zre7.js";
59
- import"./index-ae75rja9.js";
60
- import"./index-3atkcqpb.js";
61
- import"./index-5rkh69f3.js";
62
- import"./index-e8k0v19e.js";
63
- import"./index-t7hmqgjy.js";
64
- import"./index-mtqwyjrg.js";
65
- import"./index-fzpt2djt.js";
66
- import"./index-ejhxgyvm.js";
67
- import"./index-7g4c7s5r.js";
68
- import"./index-hfssjyxs.js";
69
- import"./index-gx2vp8gx.js";
70
- import"./index-ngk8hpc3.js";
71
- import"./index-zxdawwc7.js";
72
- import"./index-1dx5zyss.js";
73
- import"./index-py8wpe81.js";
74
- import"./index-bk5tah7q.js";
75
- import"./index-gknz3bv1.js";
76
- import"./index-zpsr8rpc.js";
77
- import"./index-bzfn85kq.js";
78
- import"./index-9rwhas09.js";
79
- import"./index-zgwm4ryv.js";
80
- import"./index-a76rekgs.js";
81
- export {
82
- handleGuardrailExplain
83
- };