opencode-swarm 7.145.0 → 7.145.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 (105) hide show
  1. package/.opencode/skills/phase-wrap/SKILL.md +3 -2
  2. package/README.md +5 -1
  3. package/dist/background/workspace-snapshot.d.ts +29 -0
  4. package/dist/cli/{config-doctor-dzsv3pqy.js → config-doctor-j1r33f4q.js} +3 -3
  5. package/dist/cli/{core-qkh9me8x.js → core-c2zrd384.js} +4 -4
  6. package/dist/cli/{curation-policy-5x6346tf.js → curation-policy-xv0j8zyt.js} +6 -6
  7. package/dist/cli/{curator-zssndq5x.js → curator-gk2kmrk1.js} +31 -31
  8. package/dist/cli/{curator-llm-factory-q5p4578g.js → curator-llm-factory-sat3mn5n.js} +31 -31
  9. package/dist/cli/{evidence-summary-service-dqcpapj8.js → evidence-summary-service-0mhx0t0v.js} +14 -14
  10. package/dist/cli/{gate-evidence-bkdqryqg.js → gate-evidence-a5adh55x.js} +9 -9
  11. package/dist/cli/{guardrail-explain-kspf83x5.js → guardrail-explain-r50fery8.js} +32 -32
  12. package/dist/cli/{guardrail-log-qg4sq6gr.js → guardrail-log-p69eys6d.js} +4 -4
  13. package/dist/cli/{hive-promoter-3h7dhnek.js → hive-promoter-ay8a7sct.js} +31 -31
  14. package/dist/cli/{index-wk54ey3h.js → index-0a0asz2s.js} +1 -1
  15. package/dist/cli/{index-2dnqazyr.js → index-1g87esfp.js} +2 -2
  16. package/dist/cli/{index-0pcq32y2.js → index-2vefr1f8.js} +1 -1
  17. package/dist/cli/{index-fp464as8.js → index-4p3qfb05.js} +1 -1
  18. package/dist/cli/{index-77ef8gye.js → index-5e5a1y2r.js} +1 -1
  19. package/dist/cli/{index-0jr9zn34.js → index-612rr70a.js} +2 -2
  20. package/dist/cli/{index-apjdytwx.js → index-673axbjx.js} +3 -3
  21. package/dist/cli/{index-qfawexc8.js → index-6wf75rcm.js} +6 -6
  22. package/dist/cli/{index-k6pdsct6.js → index-7y5akvc9.js} +1 -1
  23. package/dist/cli/{index-hfzcztv6.js → index-9080b3de.js} +34 -34
  24. package/dist/cli/{index-v64kjqvg.js → index-917z76qr.js} +25 -18
  25. package/dist/cli/{index-ffdwj1an.js → index-97psh79d.js} +1 -1
  26. package/dist/cli/{index-kp87kr1a.js → index-9gt8g2qj.js} +4 -4
  27. package/dist/cli/{index-4e5a28h7.js → index-b9kxxd6k.js} +2 -2
  28. package/dist/cli/{index-pa86tpgt.js → index-bghwrr59.js} +1 -1
  29. package/dist/cli/{index-6ezbzd5e.js → index-cb2qtetk.js} +682 -181
  30. package/dist/cli/{index-v3y3qg48.js → index-cpg98bh1.js} +17 -1
  31. package/dist/cli/{index-c13ttmak.js → index-cxn95n7q.js} +180 -32
  32. package/dist/cli/{index-7g276m9m.js → index-czde45km.js} +3 -3
  33. package/dist/cli/{index-zfhe7vbb.js → index-gpnv14kq.js} +2 -2
  34. package/dist/cli/{index-6q3agdmr.js → index-j20fzn0w.js} +2 -2
  35. package/dist/cli/{index-mkks7jwg.js → index-jgb7mq2y.js} +4 -4
  36. package/dist/cli/{index-h4hasck4.js → index-jpppcckq.js} +4 -4
  37. package/dist/cli/{index-4evasm2b.js → index-kggqpefz.js} +5 -5
  38. package/dist/cli/{index-s6cwsnrw.js → index-n55a28zr.js} +254 -36
  39. package/dist/cli/{index-b3xret0a.js → index-ncfjxz9n.js} +5 -5
  40. package/dist/cli/{index-e00wbqw5.js → index-np4ytvvv.js} +2 -2
  41. package/dist/cli/{index-jy9bwa9k.js → index-nsr5b69r.js} +2 -2
  42. package/dist/cli/{index-zz5qsjd1.js → index-qyvjp0bq.js} +66 -38
  43. package/dist/cli/{index-6hqhyb0f.js → index-rk80jhef.js} +19 -5
  44. package/dist/cli/{index-4zwjc9sb.js → index-vav705md.js} +101 -4
  45. package/dist/cli/{index-s72naw1j.js → index-x8pm918t.js} +1 -1
  46. package/dist/cli/{index-b30x236n.js → index-z9yhhk6q.js} +96 -8
  47. package/dist/cli/index.js +32 -32
  48. package/dist/cli/{knowledge-escalator-w1mbaktt.js → knowledge-escalator-22apj3dj.js} +14 -14
  49. package/dist/cli/{knowledge-events-a0dj6gy6.js → knowledge-events-bx8xba9z.js} +12 -12
  50. package/dist/cli/{knowledge-link-mzdjvjsd.js → knowledge-link-82ew2yc4.js} +5 -5
  51. package/dist/cli/{knowledge-store-8kk3rghx.js → knowledge-store-nc71kfsg.js} +6 -6
  52. package/dist/cli/{knowledge-validator-91ym56e0.js → knowledge-validator-g8ne80v6.js} +8 -8
  53. package/dist/cli/model-preflight-7ea00h34.js +170 -0
  54. package/dist/cli/{pending-delegations-6vsrmw5w.js → pending-delegations-kkrczqv7.js} +3 -3
  55. package/dist/cli/{pr-subscriptions-zc3skxde.js → pr-subscriptions-2xn238xt.js} +3 -3
  56. package/dist/cli/{runner-jj32v8bk.js → runner-pqsf809k.js} +6 -6
  57. package/dist/cli/{scan-cursor-12jxwd14.js → scan-cursor-6ksgv514.js} +7 -7
  58. package/dist/cli/{schema-nq9tcz87.js → schema-mpcm7nje.js} +2 -2
  59. package/dist/cli/{scope-persistence-dv6z7n08.js → scope-persistence-mj1w3hqw.js} +11 -8
  60. package/dist/cli/{skill-generator-drscnzq9.js → skill-generator-gsa6qwwt.js} +16 -16
  61. package/dist/cli/{telemetry-z54dgdrh.js → telemetry-t109dhv7.js} +1 -1
  62. package/dist/cli/{workspace-snapshot-q21mgbsh.js → workspace-snapshot-kznz5e13.js} +4 -2
  63. package/dist/cli/{worktree-collision-ownership-rfyyjjct.js → worktree-collision-ownership-2jtg2my1.js} +8 -8
  64. package/dist/cli/{worktree-isolation-4tehtym5.js → worktree-isolation-ajzyp2gm.js} +33 -31
  65. package/dist/config/schema.d.ts +2 -2
  66. package/dist/evidence/task-gate-repair.d.ts +26 -0
  67. package/dist/evidence/task-gate-requirements.d.ts +20 -0
  68. package/dist/gate-evidence.d.ts +7 -0
  69. package/dist/hooks/delegation-gate/worktree-isolation.d.ts +4 -0
  70. package/dist/hooks/knowledge-receipt-ledger-storage.d.ts +2 -0
  71. package/dist/hooks/knowledge-receipt-ledger.d.ts +72 -3
  72. package/dist/hooks/knowledge-receipt-observability.d.ts +1 -1
  73. package/dist/hooks/phase-complete-directive-gate.d.ts +9 -0
  74. package/dist/index.js +566 -546
  75. package/dist/observability/catalog.d.ts +2 -2
  76. package/dist/plan/manager.d.ts +8 -0
  77. package/dist/review/diff-source.d.ts +30 -0
  78. package/dist/review/engine.d.ts +1 -0
  79. package/dist/review/evidence.d.ts +16 -2
  80. package/dist/review/phase-runner.d.ts +1 -0
  81. package/dist/scope/scope-binding.d.ts +16 -0
  82. package/dist/services/model-preflight.d.ts +151 -0
  83. package/dist/services/session-reflection.d.ts +24 -0
  84. package/dist/telemetry.d.ts +12 -1
  85. package/dist/tools/completion-verify.d.ts +2 -0
  86. package/dist/tools/convene-council.d.ts +1 -1
  87. package/dist/tools/index.d.ts +4 -0
  88. package/dist/tools/manifest.d.ts +4 -0
  89. package/dist/tools/phase-complete/gates/final-review-gate.d.ts +3 -3
  90. package/dist/tools/phase-complete/gates/types.d.ts +2 -2
  91. package/dist/tools/phase-complete/preflight-report.d.ts +66 -0
  92. package/dist/tools/phase-complete/snapshot-identity.d.ts +1 -0
  93. package/dist/tools/phase-complete.d.ts +66 -3
  94. package/dist/tools/placeholder-scan.d.ts +64 -0
  95. package/dist/tools/record-directive-override.d.ts +14 -0
  96. package/dist/tools/repair-gate-evidence.d.ts +6 -0
  97. package/dist/tools/repair-knowledge-receipt-ledger.d.ts +27 -0
  98. package/dist/tools/run-phase-review.d.ts +37 -0
  99. package/dist/tools/sast-scan.d.ts +6 -0
  100. package/dist/tools/submit-phase-council-verdicts.d.ts +1 -1
  101. package/dist/tools/tool-metadata.d.ts +32 -16
  102. package/dist/tools/write-final-council-evidence.d.ts +1 -1
  103. package/dist/tools/write-retro.d.ts +2 -0
  104. package/package.json +1 -1
  105. package/dist/cli/{curator-drift-yn5d0mvq.js → curator-drift-r50x1rac.js} +1 -1
@@ -36,8 +36,72 @@ export interface PlaceholderScanResult {
36
36
  files_with_findings: number;
37
37
  };
38
38
  }
39
+ /**
40
+ * Classify a single expression node as a "constant literal" for stub-skeleton
41
+ * detection. Returns true for nodes whose source text is one of:
42
+ * - `null`, `true`, `false` (JS/TS keywords; Python `none`/`True`/`False` differ)
43
+ * - `number` literals (e.g. `0`, `1`)
44
+ * - `string` literals (e.g. `""`)
45
+ * - `array` literals (e.g. `[]`)
46
+ * - `object` literals (e.g. `{}`)
47
+ * - `unary_expression` with operator `-` and number operand (e.g. `-1`)
48
+ * - `identifier` (a named constant reference, e.g. `CONFIG_DEFAULTS`)
49
+ * - `template_string` with NO `template_substitution` children
50
+ * (i.e. `\`hello\`` is constant; `\`hello ${world}\`` is not)
51
+ *
52
+ * Note: Python's `none`/`True`/`False`/`integer`/`float`/`string`/`list`/
53
+ * `dictionary`/`tuple` map to tree-sitter-python grammar node types and
54
+ * follow the same classification rules.
55
+ */
56
+ declare function isConstantLiteralNode(node: any): boolean;
57
+ /**
58
+ * Determine whether a function's body (or expression body) is a "stub
59
+ * skeleton" — exactly one effective statement, and that statement is a
60
+ * constant return (or, for expression-bodied arrows, the body expression
61
+ * itself is a constant).
62
+ *
63
+ * Returns true when the function IS a stub skeleton.
64
+ * Returns false when the function has substantive subsequent behavior
65
+ * (the constant return is a guard clause, not a stub).
66
+ */
67
+ declare function isStubSkeletonFunction(fnNode: any): boolean;
68
+ /**
69
+ * Walk a tree-sitter root node and collect the line numbers of all function
70
+ * bodies whose structure is NOT a pure stub skeleton. These are the lines
71
+ * where a regex `code-stub-return` finding should be suppressed, because
72
+ * the function has substantive subsequent behavior and the constant return
73
+ * is a guard clause.
74
+ *
75
+ * For expression-bodied arrows (where the body's range equals the arrow's
76
+ * own range), we add only the lines that are INSIDE the body expression
77
+ * itself, NOT the entire arrow's range — otherwise a curried arrow like
78
+ * `const f = () => () => null;` would suppress the inner stub's finding
79
+ * (because the outer arrow's range covers the inner arrow too).
80
+ *
81
+ * Recognized function-like node types:
82
+ * - TS/JS: `function_declaration`, `generator_function_declaration`,
83
+ * `method_definition`, `arrow_function`, `function_expression`,
84
+ * `generator_function`
85
+ * - Python: `function_definition`
86
+ *
87
+ * `method_definition` nodes with no body (abstract/declared methods) are
88
+ * skipped. Getters and setters classify by their body like normal methods.
89
+ */
90
+ declare function collectNonStubBodyLines(rootNode: any): Set<number>;
39
91
  /**
40
92
  * Scan files for placeholder content (TODO/FIXME comments, stub implementations, etc.)
41
93
  */
42
94
  export declare function placeholderScan(input: PlaceholderScanInput, directory: string): Promise<PlaceholderScanResult>;
43
95
  export declare const placeholder_scan: ReturnType<typeof tool>;
96
+ /**
97
+ * Internal seam for direct testing of the body-shape walker without
98
+ * exercising the full placeholderScan pipeline. Mirrors the `_internals`
99
+ * pattern from `src/lang/backends/typescript.ts:343-351` (AGENTS.md
100
+ * invariant 7 — DI over `mock.module`).
101
+ */
102
+ export declare const _internals: {
103
+ readonly collectNonStubBodyLines: typeof collectNonStubBodyLines;
104
+ readonly isStubSkeletonFunction: typeof isStubSkeletonFunction;
105
+ readonly isConstantLiteralNode: typeof isConstantLiteralNode;
106
+ };
107
+ export {};
@@ -0,0 +1,14 @@
1
+ import type { ToolContext, ToolDefinition } from '@opencode-ai/plugin/tool';
2
+ import { recordDirectiveOverrides } from '../hooks/phase-complete-directive-gate.js';
3
+ import { loadPlan } from '../plan/manager.js';
4
+ export interface RecordDirectiveOverrideArgs {
5
+ directive_ids: string[];
6
+ justification: string;
7
+ phase: number;
8
+ }
9
+ export declare const recordDirectiveOverrideInternals: {
10
+ loadPlan: typeof loadPlan;
11
+ recordDirectiveOverrides: typeof recordDirectiveOverrides;
12
+ };
13
+ export declare function executeRecordDirectiveOverride(args: RecordDirectiveOverrideArgs, directory: string, ctx?: Pick<ToolContext, 'sessionID' | 'agent'>): Promise<Record<string, unknown>>;
14
+ export declare const record_directive_override: ToolDefinition;
@@ -0,0 +1,6 @@
1
+ import type { ToolContext, ToolDefinition } from '@opencode-ai/plugin/tool';
2
+ import { type RepairGateEvidenceArgs } from '../evidence/task-gate-repair.js';
3
+ export declare function executeRepairGateEvidence(args: RepairGateEvidenceArgs & {
4
+ working_directory?: string;
5
+ }, directory: string, _ctx?: ToolContext): Promise<import("../evidence/task-gate-repair.js").RepairGateEvidenceResult>;
6
+ export declare const repair_gate_evidence: ToolDefinition;
@@ -0,0 +1,27 @@
1
+ import type { ToolContext, ToolDefinition } from '@opencode-ai/plugin/tool';
2
+ import { type RepairKnowledgeReceiptLedgerInput } from '../hooks/knowledge-receipt-ledger.js';
3
+ export declare function executeRepairKnowledgeReceiptLedger(args: RepairKnowledgeReceiptLedgerInput & {
4
+ working_directory?: string;
5
+ }, directory: string, _ctx?: ToolContext): Promise<{
6
+ success: boolean;
7
+ message: string;
8
+ errors: string[];
9
+ code?: undefined;
10
+ } | {
11
+ success: boolean;
12
+ message: string;
13
+ errors: string[];
14
+ code: import("../hooks/knowledge-receipt-ledger-storage.js").ReceiptStoreErrorCode | "legacy_unverifiable";
15
+ } | {
16
+ ok: true;
17
+ status: "validated_projection" | "repaired_authority" | "pending_re_evaluation";
18
+ pending_re_evaluation: boolean;
19
+ repair_id?: string;
20
+ salvage_through_seq: number;
21
+ salvage_through_hash: string;
22
+ success: boolean;
23
+ message: string;
24
+ errors?: undefined;
25
+ code?: undefined;
26
+ }>;
27
+ export declare const repair_knowledge_receipt_ledger: ToolDefinition;
@@ -0,0 +1,37 @@
1
+ import type { ToolDefinition } from '@opencode-ai/plugin/tool';
2
+ import { loadPluginConfigWithMeta as loadPluginConfigWithMeta_import } from '../config/index.js';
3
+ import type { ReviewModelDispatcher } from '../review/contracts.js';
4
+ import { type ReviewAgentModelRegistry } from '../review/runtime.js';
5
+ export interface RunPhaseReviewArgs {
6
+ phase: number;
7
+ sessionID: string;
8
+ is_final_plan_phase?: boolean;
9
+ }
10
+ export interface RunPhaseReviewResult {
11
+ success: boolean;
12
+ trigger?: 'phase_completion' | 'plan_completion';
13
+ status?: 'completed' | 'clean' | 'error';
14
+ blocked?: boolean;
15
+ blockReason?: string;
16
+ scopeHash?: string;
17
+ manifestHash?: string;
18
+ scopeComplete?: boolean;
19
+ evidencePath?: string;
20
+ receiptPath?: string;
21
+ message: string;
22
+ }
23
+ /**
24
+ * Test-only dependency-injection seam.
25
+ * @tool-opt-out Test-only dependency-injection seam; not a public tool.
26
+ */
27
+ export declare const _internals: {
28
+ loadPluginConfigWithMeta: typeof loadPluginConfigWithMeta_import;
29
+ };
30
+ export declare function executeRunPhaseReview(directory: string, args: RunPhaseReviewArgs, options?: {
31
+ dispatcher?: ReviewModelDispatcher;
32
+ generatedAgentNames?: readonly string[];
33
+ agentModelRegistry?: ReviewAgentModelRegistry;
34
+ activeAgentName?: string;
35
+ }): Promise<RunPhaseReviewResult>;
36
+ export declare function createRunPhaseReviewTool(dispatcher?: ReviewModelDispatcher, generatedAgentNames?: readonly string[], agentModelRegistry?: ReviewAgentModelRegistry, getActiveAgentName?: (sessionID: string) => string | undefined): ToolDefinition;
37
+ export declare const run_phase_review: ToolDefinition;
@@ -59,6 +59,12 @@ export interface SastScanResult {
59
59
  medium: number;
60
60
  low: number;
61
61
  };
62
+ /**
63
+ * Issue #2271 bug 3: present when every input was skipped for having no
64
+ * SAST language profile (non-code diff) — the scan passed because there
65
+ * was nothing to scan, and this counts the skipped non-code inputs.
66
+ */
67
+ files_skipped_non_code?: number;
62
68
  };
63
69
  /** 'baseline_captured' when capture_baseline:true succeeded */
64
70
  status?: 'baseline_captured' | 'baseline_merged';
@@ -8,9 +8,9 @@ export declare const ArgsSchema: z.ZodObject<{
8
8
  verdicts: z.ZodArray<z.ZodObject<{
9
9
  agent: z.ZodEnum<{
10
10
  reviewer: "reviewer";
11
+ test_engineer: "test_engineer";
11
12
  critic: "critic";
12
13
  explorer: "explorer";
13
- test_engineer: "test_engineer";
14
14
  sme: "sme";
15
15
  }>;
16
16
  verdict: z.ZodEnum<{
@@ -34,7 +34,7 @@ export interface ToolMeta {
34
34
  export declare const TOOL_METADATA: {
35
35
  diff: {
36
36
  description: string;
37
- agents: ("reviewer" | "critic_oversight" | "critic_finding_validator" | "coder" | "test_engineer" | "architect")[];
37
+ agents: ("coder" | "reviewer" | "test_engineer" | "critic_oversight" | "critic_finding_validator" | "architect")[];
38
38
  prWorkflow: {
39
39
  modes: ("PR_REVIEW" | "PR_FEEDBACK")[];
40
40
  capability: "observe";
@@ -66,7 +66,7 @@ export declare const TOOL_METADATA: {
66
66
  };
67
67
  imports: {
68
68
  description: string;
69
- agents: ("reviewer" | "critic" | "critic_finding_validator" | "coder" | "test_engineer" | "architect" | "sme" | "researcher" | "docs" | "docs_design" | "critic_sounding_board" | "critic_drift_verifier" | "critic_hallucination_verifier")[];
69
+ agents: ("coder" | "reviewer" | "test_engineer" | "critic" | "critic_finding_validator" | "architect" | "sme" | "researcher" | "docs" | "docs_design" | "critic_sounding_board" | "critic_drift_verifier" | "critic_hallucination_verifier")[];
70
70
  prWorkflow: {
71
71
  modes: ("PR_REVIEW" | "PR_FEEDBACK")[];
72
72
  capability: "observe";
@@ -74,7 +74,7 @@ export declare const TOOL_METADATA: {
74
74
  };
75
75
  lint: {
76
76
  description: string;
77
- agents: ("reviewer" | "critic_finding_validator" | "coder" | "architect")[];
77
+ agents: ("coder" | "reviewer" | "critic_finding_validator" | "architect")[];
78
78
  prWorkflow: {
79
79
  modes: "PR_REVIEW"[];
80
80
  capability: "validate";
@@ -114,11 +114,11 @@ export declare const TOOL_METADATA: {
114
114
  };
115
115
  symbols: {
116
116
  description: string;
117
- agents: ("reviewer" | "critic" | "critic_finding_validator" | "coder" | "test_engineer" | "architect" | "sme" | "researcher" | "docs" | "docs_design" | "designer" | "critic_sounding_board" | "critic_drift_verifier" | "critic_hallucination_verifier" | "spec_writer")[];
117
+ agents: ("coder" | "reviewer" | "test_engineer" | "critic" | "critic_finding_validator" | "architect" | "sme" | "researcher" | "docs" | "docs_design" | "designer" | "critic_sounding_board" | "critic_drift_verifier" | "critic_hallucination_verifier" | "spec_writer")[];
118
118
  };
119
119
  complexity_hotspots: {
120
120
  description: string;
121
- agents: ("reviewer" | "critic" | "critic_oversight" | "critic_finding_validator" | "explorer" | "test_engineer" | "architect" | "sme" | "researcher" | "critic_sounding_board" | "critic_drift_verifier" | "critic_hallucination_verifier")[];
121
+ agents: ("reviewer" | "test_engineer" | "critic" | "critic_oversight" | "critic_finding_validator" | "explorer" | "architect" | "sme" | "researcher" | "critic_sounding_board" | "critic_drift_verifier" | "critic_hallucination_verifier")[];
122
122
  };
123
123
  schema_drift: {
124
124
  description: string;
@@ -210,7 +210,7 @@ export declare const TOOL_METADATA: {
210
210
  };
211
211
  pkg_audit: {
212
212
  description: string;
213
- agents: ("reviewer" | "critic_oversight" | "critic_finding_validator" | "test_engineer" | "architect" | "critic_hallucination_verifier")[];
213
+ agents: ("reviewer" | "test_engineer" | "critic_oversight" | "critic_finding_validator" | "architect" | "critic_hallucination_verifier")[];
214
214
  prWorkflow: {
215
215
  modes: "PR_REVIEW"[];
216
216
  capability: "validate";
@@ -238,7 +238,7 @@ export declare const TOOL_METADATA: {
238
238
  };
239
239
  test_runner: {
240
240
  description: string;
241
- agents: ("reviewer" | "critic_finding_validator" | "test_engineer" | "architect")[];
241
+ agents: ("reviewer" | "test_engineer" | "critic_finding_validator" | "architect")[];
242
242
  prWorkflow: {
243
243
  modes: "PR_REVIEW"[];
244
244
  capability: "validate";
@@ -246,7 +246,7 @@ export declare const TOOL_METADATA: {
246
246
  };
247
247
  test_impact: {
248
248
  description: string;
249
- agents: ("reviewer" | "critic_oversight" | "critic_finding_validator" | "test_engineer" | "architect")[];
249
+ agents: ("reviewer" | "test_engineer" | "critic_oversight" | "critic_finding_validator" | "architect")[];
250
250
  prWorkflow: {
251
251
  modes: ("PR_REVIEW" | "PR_FEEDBACK")[];
252
252
  capability: "observe";
@@ -282,7 +282,7 @@ export declare const TOOL_METADATA: {
282
282
  };
283
283
  retrieve_summary: {
284
284
  description: string;
285
- agents: ("reviewer" | "critic" | "critic_finding_validator" | "coder" | "test_engineer" | "architect" | "sme" | "docs" | "docs_design" | "designer" | "critic_sounding_board" | "critic_drift_verifier" | "critic_hallucination_verifier" | "critic_architecture_supervisor" | "spec_writer")[];
285
+ agents: ("coder" | "reviewer" | "test_engineer" | "critic" | "critic_finding_validator" | "architect" | "sme" | "docs" | "docs_design" | "designer" | "critic_sounding_board" | "critic_drift_verifier" | "critic_hallucination_verifier" | "critic_architecture_supervisor" | "spec_writer")[];
286
286
  prWorkflow: {
287
287
  modes: ("PR_REVIEW" | "PR_FEEDBACK")[];
288
288
  capability: "observe";
@@ -304,6 +304,22 @@ export declare const TOOL_METADATA: {
304
304
  description: string;
305
305
  agents: "architect"[];
306
306
  };
307
+ run_phase_review: {
308
+ description: string;
309
+ agents: "architect"[];
310
+ };
311
+ repair_gate_evidence: {
312
+ description: string;
313
+ agents: "architect"[];
314
+ };
315
+ repair_knowledge_receipt_ledger: {
316
+ description: string;
317
+ agents: "architect"[];
318
+ };
319
+ record_directive_override: {
320
+ description: string;
321
+ agents: "architect"[];
322
+ };
307
323
  save_plan: {
308
324
  description: string;
309
325
  agents: "architect"[];
@@ -362,7 +378,7 @@ export declare const TOOL_METADATA: {
362
378
  };
363
379
  knowledge_recall: {
364
380
  description: string;
365
- agents: ("reviewer" | "critic" | "critic_oversight" | "critic_finding_validator" | "explorer" | "coder" | "test_engineer" | "architect" | "sme" | "docs" | "docs_design" | "designer" | "critic_sounding_board" | "critic_drift_verifier" | "critic_hallucination_verifier" | "critic_architecture_supervisor" | "curator_init" | "curator_phase" | "skill_improver" | "spec_writer")[];
381
+ agents: ("coder" | "reviewer" | "test_engineer" | "critic" | "critic_oversight" | "critic_finding_validator" | "explorer" | "architect" | "sme" | "docs" | "docs_design" | "designer" | "critic_sounding_board" | "critic_drift_verifier" | "critic_hallucination_verifier" | "critic_architecture_supervisor" | "curator_init" | "curator_phase" | "skill_improver" | "spec_writer")[];
366
382
  };
367
383
  knowledge_remove: {
368
384
  description: string;
@@ -378,11 +394,11 @@ export declare const TOOL_METADATA: {
378
394
  };
379
395
  search: {
380
396
  description: string;
381
- agents: ("reviewer" | "critic_oversight" | "critic_finding_validator" | "explorer" | "coder" | "test_engineer" | "architect" | "sme" | "researcher" | "docs" | "docs_design" | "designer" | "critic_hallucination_verifier" | "skill_improver" | "spec_writer")[];
397
+ agents: ("coder" | "reviewer" | "test_engineer" | "critic_oversight" | "critic_finding_validator" | "explorer" | "architect" | "sme" | "researcher" | "docs" | "docs_design" | "designer" | "critic_hallucination_verifier" | "skill_improver" | "spec_writer")[];
382
398
  };
383
399
  ast_grep: {
384
400
  description: string;
385
- agents: ("explorer" | "coder" | "test_engineer" | "architect" | "sme" | "researcher" | "docs" | "docs_design" | "critic_hallucination_verifier" | "spec_writer")[];
401
+ agents: ("coder" | "test_engineer" | "explorer" | "architect" | "sme" | "researcher" | "docs" | "docs_design" | "critic_hallucination_verifier" | "spec_writer")[];
386
402
  };
387
403
  actionlint_scan: {
388
404
  description: string;
@@ -434,7 +450,7 @@ export declare const TOOL_METADATA: {
434
450
  };
435
451
  repo_map: {
436
452
  description: string;
437
- agents: ("reviewer" | "critic" | "critic_oversight" | "critic_finding_validator" | "explorer" | "coder" | "architect" | "critic_sounding_board" | "critic_drift_verifier" | "critic_hallucination_verifier" | "critic_architecture_supervisor")[];
453
+ agents: ("coder" | "reviewer" | "critic" | "critic_oversight" | "critic_finding_validator" | "explorer" | "architect" | "critic_sounding_board" | "critic_drift_verifier" | "critic_hallucination_verifier" | "critic_architecture_supervisor")[];
438
454
  prWorkflow: {
439
455
  modes: ("PR_REVIEW" | "PR_FEEDBACK")[];
440
456
  capability: "observe";
@@ -502,7 +518,7 @@ export declare const TOOL_METADATA: {
502
518
  };
503
519
  knowledge_receipt: {
504
520
  description: string;
505
- agents: ("reviewer" | "critic" | "critic_finding_validator" | "coder" | "test_engineer" | "architect" | "sme" | "docs" | "docs_design" | "designer" | "critic_sounding_board" | "critic_drift_verifier" | "critic_hallucination_verifier" | "critic_architecture_supervisor" | "curator_init" | "curator_phase" | "skill_improver" | "spec_writer")[];
521
+ agents: ("coder" | "reviewer" | "test_engineer" | "critic" | "critic_finding_validator" | "architect" | "sme" | "docs" | "docs_design" | "designer" | "critic_sounding_board" | "critic_drift_verifier" | "critic_hallucination_verifier" | "critic_architecture_supervisor" | "curator_init" | "curator_phase" | "skill_improver" | "spec_writer")[];
506
522
  };
507
523
  knowledge_archive: {
508
524
  description: string;
@@ -522,7 +538,7 @@ export declare const TOOL_METADATA: {
522
538
  };
523
539
  swarm_command: {
524
540
  description: string;
525
- agents: ("reviewer" | "critic" | "critic_finding_validator" | "explorer" | "coder" | "test_engineer" | "architect" | "sme" | "researcher" | "docs" | "docs_design" | "designer")[];
541
+ agents: ("coder" | "reviewer" | "test_engineer" | "critic" | "critic_finding_validator" | "explorer" | "architect" | "sme" | "researcher" | "docs" | "docs_design" | "designer")[];
526
542
  };
527
543
  dispatch_lanes: {
528
544
  description: string;
@@ -538,7 +554,7 @@ export declare const TOOL_METADATA: {
538
554
  };
539
555
  summarize_work: {
540
556
  description: string;
541
- agents: ("explorer" | "coder" | "test_engineer" | "architect" | "sme" | "researcher" | "docs" | "docs_design" | "designer")[];
557
+ agents: ("coder" | "test_engineer" | "explorer" | "architect" | "sme" | "researcher" | "docs" | "docs_design" | "designer")[];
542
558
  };
543
559
  write_architecture_supervisor_evidence: {
544
560
  description: string;
@@ -9,9 +9,9 @@ export declare const ArgsSchema: z.ZodObject<{
9
9
  verdicts: z.ZodArray<z.ZodObject<{
10
10
  agent: z.ZodEnum<{
11
11
  reviewer: "reviewer";
12
+ test_engineer: "test_engineer";
12
13
  critic: "critic";
13
14
  explorer: "explorer";
14
- test_engineer: "test_engineer";
15
15
  sme: "sme";
16
16
  }>;
17
17
  verdict: z.ZodEnum<{
@@ -12,6 +12,8 @@ import type { ToolDefinition } from '@opencode-ai/plugin/tool';
12
12
  export interface WriteRetroArgs {
13
13
  /** The phase number being completed (maps to phase_number in schema) */
14
14
  phase: number;
15
+ /** Explicit phase verdict recorded by the retrospective gate */
16
+ verdict?: 'pass' | 'fail';
15
17
  /** Human-readable phase summary (maps to summary in BaseEvidenceSchema) */
16
18
  summary: string;
17
19
  /** Count of tasks completed */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-swarm",
3
- "version": "7.145.0",
3
+ "version": "7.145.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",
@@ -6,13 +6,13 @@ import {
6
6
  readEffectiveSpecSync
7
7
  } from "./index-9ss2m4rs.js";
8
8
  import"./index-n832052r.js";
9
+ import"./index-4rhhvd1a.js";
9
10
  import {
10
11
  readSwarmFileAsync,
11
12
  validateSwarmPath
12
13
  } from "./index-w8pgjr75.js";
13
14
  import"./index-z6xqpmqg.js";
14
15
  import"./index-zj6t9zgx.js";
15
- import"./index-4rhhvd1a.js";
16
16
  import"./index-zjygnfay.js";
17
17
  import"./index-bpmtbmy9.js";
18
18
  import {