opencode-swarm 7.190.1 → 7.191.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.
- package/.opencode/skills/swarm-pr-review/SKILL.md +2 -2
- package/binaries/win32-arm64/swarm-sandbox-runner.exe +0 -0
- package/binaries/win32-x64/swarm-sandbox-runner.exe +0 -0
- package/dist/cli/{auto-checkpoint-26m3h5f4.js → auto-checkpoint-rdwd6w8t.js} +6 -6
- package/dist/cli/{checkpoint-7a0achpv.js → checkpoint-jvccxnf3.js} +10 -10
- package/dist/cli/{coder-settlement-dsb1t39t.js → coder-settlement-tezdqdzb.js} +4 -4
- package/dist/cli/{config-doctor-9txawzng.js → config-doctor-48ehw0b0.js} +8 -8
- package/dist/cli/{core-kv7jz9ty.js → core-xevv38dk.js} +2 -2
- package/dist/cli/{curator-drift-kxn5sk3z.js → curator-drift-ej1s4fv9.js} +6 -6
- package/dist/cli/{curator-llm-factory-hs2y9kmw.js → curator-llm-factory-bx720pwc.js} +27 -27
- package/dist/cli/{curator-26yzg8wp.js → curator-xckkw7yt.js} +27 -27
- package/dist/cli/{doctor-knowledge-receipt-phase-id-z8wea03e.js → doctor-knowledge-receipt-phase-id-89jrgknr.js} +6 -6
- package/dist/cli/{evidence-summary-service-bg5zq78s.js → evidence-summary-service-b8jqdf13.js} +11 -11
- package/dist/cli/{gate-evidence-0beg9c7r.js → gate-evidence-xcydwkha.js} +3 -3
- package/dist/cli/{guardrail-explain-n8bm0hpm.js → guardrail-explain-wvymt5na.js} +28 -28
- package/dist/cli/{guardrail-log-r2zazmbn.js → guardrail-log-5mmc2y1v.js} +4 -4
- package/dist/cli/{guardrail-reset-0q54t44w.js → guardrail-reset-8nje6gxk.js} +27 -27
- package/dist/cli/{hive-promoter-7dr5b9zv.js → hive-promoter-sd1h9vjg.js} +27 -27
- package/dist/cli/{index-sfjpbnqs.js → index-0331n4t3.js} +27 -27
- package/dist/cli/{index-ay8ggtgr.js → index-25p51rw2.js} +2 -2
- package/dist/cli/{index-bcwmn4d7.js → index-2e2v96yk.js} +1 -1
- package/dist/cli/{index-yy5yyyst.js → index-46fe64s6.js} +5 -5
- package/dist/cli/{index-67a6mk20.js → index-4c7qdtcy.js} +1 -1
- package/dist/cli/{index-rjzn7hf0.js → index-4wsvkvhc.js} +4 -4
- package/dist/cli/{index-fthhppnc.js → index-5y2y23ac.js} +29 -29
- package/dist/cli/{index-xdq6mak1.js → index-7r41s196.js} +1 -1
- package/dist/cli/{index-dbdkh7pq.js → index-7rapcpgx.js} +2 -2
- package/dist/cli/{index-2c47efpt.js → index-9mq96f00.js} +2 -2
- package/dist/cli/{index-1f084tqn.js → index-ap0tkg3v.js} +102 -63
- package/dist/cli/{index-bfyh3gpe.js → index-aw4ex9kn.js} +4 -4
- package/dist/cli/{index-sc7t1tev.js → index-evj271tm.js} +6 -6
- package/dist/cli/{index-spgfs5y7.js → index-hq84mfha.js} +1 -1
- package/dist/cli/{index-4a15347d.js → index-hqdfm79v.js} +1 -1
- package/dist/cli/{index-pkhbd2t5.js → index-j5nhx6e8.js} +1 -0
- package/dist/cli/{index-enq166kw.js → index-kar6wt5k.js} +2 -2
- package/dist/cli/{index-cewpxcwm.js → index-kdsdybmz.js} +5 -5
- package/dist/cli/{index-dnp4qtpf.js → index-ks4h9hag.js} +1 -1
- package/dist/cli/{index-f46dbyew.js → index-mnx6hgh0.js} +3 -3
- package/dist/cli/{index-v3j9fk16.js → index-msz0qtfy.js} +1 -1
- package/dist/cli/{index-hx1fmywk.js → index-n9wg3f7d.js} +2 -2
- package/dist/cli/{index-s8b67e6h.js → index-pksy4nzv.js} +4 -0
- package/dist/cli/{index-efztf4yw.js → index-r27sprvr.js} +1 -1
- package/dist/cli/{index-s9cgnd2z.js → index-rq6tz67x.js} +1 -1
- package/dist/cli/{index-0yrg10jx.js → index-se6v59r8.js} +2 -2
- package/dist/cli/{index-0gve0mkj.js → index-tn2znwwf.js} +3 -3
- package/dist/cli/{index-26e2s6r1.js → index-wxsmmw0j.js} +1 -1
- package/dist/cli/{index-ha0w0a7t.js → index-y6hwrfkt.js} +2 -2
- package/dist/cli/{index-m28dzyy8.js → index-y8ak7me7.js} +3 -3
- package/dist/cli/{index-0z8vdkvg.js → index-ykkpkzf7.js} +2 -2
- package/dist/cli/{index-gqb8etv4.js → index-zr2ywh0s.js} +3 -3
- package/dist/cli/index.js +28 -28
- package/dist/cli/{knowledge-escalator-hdrqt5pj.js → knowledge-escalator-8ppf9pcx.js} +9 -9
- package/dist/cli/{knowledge-events-ttebc8gn.js → knowledge-events-6tqb0a12.js} +7 -7
- package/dist/cli/{knowledge-store-8cxv6w2n.js → knowledge-store-2y8rpsj2.js} +1 -1
- package/dist/cli/{knowledge-validator-kr5xmqpa.js → knowledge-validator-5drk80a9.js} +2 -2
- package/dist/cli/{mcp-jtk79ygp.js → mcp-pehs7fdc.js} +1 -1
- package/dist/cli/{model-preflight-d6tt7479.js → model-preflight-wq4ejsrk.js} +27 -27
- package/dist/cli/{pending-delegations-ttk09f50.js → pending-delegations-6yd5nraz.js} +2 -2
- package/dist/cli/{pr-subscriptions-2kbeezsr.js → pr-subscriptions-a1xd8smp.js} +1 -1
- package/dist/cli/{pr-workflow-gate-3ra6p7k4.js → pr-workflow-gate-prb2tzz7.js} +27 -27
- package/dist/cli/{scan-cursor-zzccy117.js → scan-cursor-waxfq7x5.js} +2 -2
- package/dist/cli/{schema-9prswg1x.js → schema-zx5j97ww.js} +2 -2
- package/dist/cli/{scope-persistence-eqm8vwnx.js → scope-persistence-2q1jzy0h.js} +6 -6
- package/dist/cli/{server-swjre81h.js → server-70mbpd3m.js} +27 -27
- package/dist/cli/{skill-generator-d8dk9vps.js → skill-generator-xarcb8vm.js} +10 -10
- package/dist/cli/{snapshot-coordination-init-f49y0zr0.js → snapshot-coordination-init-cqxsm2rr.js} +27 -27
- package/dist/cli/{speckit-checkoff-pnb6q9gd.js → speckit-checkoff-fgt7fdvj.js} +4 -4
- package/dist/cli/{worktree-collision-ownership-3c7xyc4p.js → worktree-collision-ownership-bk6znw4c.js} +2 -2
- package/dist/cli/{worktree-isolation-jggdf28m.js → worktree-isolation-79jmdq2z.js} +27 -27
- package/dist/config/evidence-schema.d.ts +3 -0
- package/dist/index.js +46 -38
- package/dist/pr-review/render-review-body.d.ts +53 -0
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/manifest.d.ts +1 -0
- package/dist/tools/pr-review-submission.d.ts +10 -0
- package/dist/tools/secretscan.d.ts +26 -4
- package/dist/tools/tool-metadata.d.ts +4 -0
- package/package.json +1 -1
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure PR-review submission body renderer (issue #3096, Workstream C PR 1/2).
|
|
3
|
+
*
|
|
4
|
+
* Renders settled PR-review findings into the GitHub PR Review submission body
|
|
5
|
+
* plus the inline-comment plan. STRICTLY pure: no filesystem, no network, no
|
|
6
|
+
* clock — authorization and transport live in `src/tools/pr-review-submission.ts`
|
|
7
|
+
* so any future preview surface (e.g. #3097 post-abort export) can reuse this
|
|
8
|
+
* module without submission authority.
|
|
9
|
+
*/
|
|
10
|
+
export declare const PR_REVIEW_INLINE_COMMENT_CAP = 20;
|
|
11
|
+
/** GitHub rejects oversized review bodies (~64 KiB); cap the rendered body below it. */
|
|
12
|
+
export declare const PR_REVIEW_BODY_CHAR_CAP = 60000;
|
|
13
|
+
export interface RendererFinding {
|
|
14
|
+
finding_id: string;
|
|
15
|
+
status: string;
|
|
16
|
+
file_line: string;
|
|
17
|
+
evidence: string;
|
|
18
|
+
next_action: string;
|
|
19
|
+
severity?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface RendererCoverage {
|
|
22
|
+
kind: string;
|
|
23
|
+
unresolved_dimensions: string[];
|
|
24
|
+
}
|
|
25
|
+
export interface RenderReviewBodyInput {
|
|
26
|
+
run_id: string;
|
|
27
|
+
pr_head_sha: string;
|
|
28
|
+
verdict?: string;
|
|
29
|
+
base_verification?: string;
|
|
30
|
+
coverage: RendererCoverage;
|
|
31
|
+
findings: RendererFinding[];
|
|
32
|
+
/** Previously posted comment/review bodies; findings whose rendered marker already appears are skipped (AC4 dedupe). */
|
|
33
|
+
existingComments?: string[];
|
|
34
|
+
}
|
|
35
|
+
export interface RenderedInlineComment {
|
|
36
|
+
path: string;
|
|
37
|
+
line: number;
|
|
38
|
+
body: string;
|
|
39
|
+
finding_id: string;
|
|
40
|
+
}
|
|
41
|
+
export interface RenderedReviewBody {
|
|
42
|
+
body: string;
|
|
43
|
+
inlineComments: RenderedInlineComment[];
|
|
44
|
+
/** finding ids skipped because their rendered marker already appears in existingComments. */
|
|
45
|
+
skippedAsPosted: string[];
|
|
46
|
+
/** inline comments dropped by the cap (disclosed in the body). */
|
|
47
|
+
truncatedInlineComments: number;
|
|
48
|
+
/** findings omitted from the body as dismissed (severity NONE at settlement). */
|
|
49
|
+
dismissedCount: number;
|
|
50
|
+
/** true when the body exceeded PR_REVIEW_BODY_CHAR_CAP and was truncated with a disclosure. */
|
|
51
|
+
bodyTruncated: boolean;
|
|
52
|
+
}
|
|
53
|
+
export declare function renderPrReviewSubmissionBody(input: RenderReviewBodyInput): RenderedReviewBody;
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -117,6 +117,7 @@ export { lean_turbo_runner_status } from './lean-turbo-runner-status';
|
|
|
117
117
|
export { lean_turbo_status } from './lean-turbo-status';
|
|
118
118
|
export { lint_spec } from './lint-spec';
|
|
119
119
|
export { mutation_test } from './mutation-test';
|
|
120
|
+
export { executePrReviewSubmission, pr_review_submission, } from './pr-review-submission';
|
|
120
121
|
export { executePreparePrWorkflowCheckout, prepare_pr_workflow_checkout, } from './prepare-pr-workflow-checkout';
|
|
121
122
|
export { executeRebindPrFeedbackHead, rebind_pr_feedback_head, } from './rebind-pr-feedback-head';
|
|
122
123
|
export { executeRecordBranchFreshness, record_branch_freshness, } from './record-branch-freshness';
|
package/dist/tools/manifest.d.ts
CHANGED
|
@@ -72,6 +72,7 @@ export declare const TOOL_MANIFEST: {
|
|
|
72
72
|
plan_conflict_check: () => ToolDefinition;
|
|
73
73
|
prepare_pr_feedback_scope: () => ToolDefinition;
|
|
74
74
|
write_pr_review_artifact: () => ToolDefinition;
|
|
75
|
+
pr_review_submission: () => ToolDefinition;
|
|
75
76
|
write_pr_review_trigger_eval: () => ToolDefinition;
|
|
76
77
|
test_runner: () => ToolDefinition;
|
|
77
78
|
test_impact: () => ToolDefinition;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ExternalToolRunOptions, ExternalToolRunResult } from '../utils/external-tool-runner.js';
|
|
2
|
+
import { createSwarmTool } from './create-tool.js';
|
|
3
|
+
export declare const _internals: {
|
|
4
|
+
resolveGhBinary: () => string | null;
|
|
5
|
+
runExternalTool: (options: ExternalToolRunOptions) => Promise<ExternalToolRunResult>;
|
|
6
|
+
};
|
|
7
|
+
export declare function executePrReviewSubmission(args: unknown, directory: string, context?: {
|
|
8
|
+
sessionID?: string;
|
|
9
|
+
}): Promise<string>;
|
|
10
|
+
export declare const pr_review_submission: ReturnType<typeof createSwarmTool>;
|
|
@@ -18,14 +18,26 @@ export interface SecretscanResult {
|
|
|
18
18
|
count: number;
|
|
19
19
|
files_scanned: number;
|
|
20
20
|
skipped_files: number;
|
|
21
|
+
/**
|
|
22
|
+
* Files suppressed by `.secretscanignore` patterns (#3107, explicit-files
|
|
23
|
+
* path only; optional for legacy producers, treated as 0). Audit/
|
|
24
|
+
* diagnosability counter — never part of the #2918 vacuous-coverage
|
|
25
|
+
* predicate, which keys on policy_skipped_files. The directory path emits
|
|
26
|
+
* literal 0 (traversal prunes at visitation and does not track
|
|
27
|
+
* per-suppression counts — see the caution on policy_skipped_files).
|
|
28
|
+
*/
|
|
29
|
+
ignored_files?: number;
|
|
21
30
|
/**
|
|
22
31
|
* Skips attributable specifically to scan-policy extension exclusion
|
|
23
32
|
* (#2918). The extension-exclusion site in runSecretscanOnFiles is the
|
|
24
33
|
* ONLY increment site: binary-content skips, missing files, invalid
|
|
25
|
-
* entries, and every incomplete
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* allows scanning was
|
|
34
|
+
* entries, .secretscanignore suppressions (#3107), and every incomplete
|
|
35
|
+
* route deliberately do NOT count, so `policy_skipped_files ===
|
|
36
|
+
* requested_files` with zero findings and zero incomplete coverage proves
|
|
37
|
+
* vacuous coverage (nothing the scan policy allows scanning was
|
|
38
|
+
* requested). Ignore-file suppressions count toward skipped_files only —
|
|
39
|
+
* a repo-writable ignore file can never satisfy the vacuous-coverage
|
|
40
|
+
* predicate of the changed-file gate.
|
|
29
41
|
*/
|
|
30
42
|
policy_skipped_files: number;
|
|
31
43
|
/**
|
|
@@ -70,6 +82,16 @@ export declare function runSecretscan(directory: string): Promise<SecretscanResu
|
|
|
70
82
|
* Run secretscan over an explicit, already-selected file set.
|
|
71
83
|
* Used by pre_check_batch so changed-file hard gates share the same detector
|
|
72
84
|
* registry and entropy logic as the standalone scanner.
|
|
85
|
+
*
|
|
86
|
+
* #3107: also reads `.secretscanignore` at the scan root with the same pattern
|
|
87
|
+
* language and precedence as the directory scan (exact names + globs; comments,
|
|
88
|
+
* blanks, and unsafe patterns skipped; ancestor directories prune like
|
|
89
|
+
* traversal). Ignore-matched files that reach the ignore check count toward
|
|
90
|
+
* `skipped_files` only — never `policy_skipped_files` — so the #2918
|
|
91
|
+
* vacuous-coverage fail-closed arm keeps biting on all-ignored batches. One
|
|
92
|
+
* deliberate carve-out: the docs-safe extension-exclusion route is evaluated
|
|
93
|
+
* FIRST (#2918, pinned by test), so an ignore-matched `.md`/`.markdown`/`.mdx`
|
|
94
|
+
* file keeps its extension accounting and the ignore file is inert for it.
|
|
73
95
|
*/
|
|
74
96
|
export declare function runSecretscanOnFiles(files: string[], directory: string,
|
|
75
97
|
/**
|
|
@@ -273,6 +273,10 @@ export declare const TOOL_METADATA: {
|
|
|
273
273
|
description: string;
|
|
274
274
|
agents: "architect"[];
|
|
275
275
|
};
|
|
276
|
+
pr_review_submission: {
|
|
277
|
+
description: string;
|
|
278
|
+
agents: "architect"[];
|
|
279
|
+
};
|
|
276
280
|
prepare_pr_feedback_scope: {
|
|
277
281
|
description: string;
|
|
278
282
|
agents: "architect"[];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-swarm",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.191.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",
|