opencode-swarm 7.144.0 → 7.144.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 (84) hide show
  1. package/dist/agents/architect.d.ts +65 -0
  2. package/dist/agents/coder.d.ts +1 -0
  3. package/dist/agents/critic.d.ts +1 -0
  4. package/dist/agents/explorer.d.ts +1 -0
  5. package/dist/agents/reviewer.d.ts +1 -0
  6. package/dist/cli/{ast-diff-ypptrcan.js → ast-diff-wbjcazfx.js} +5 -3
  7. package/dist/cli/{config-doctor-7gy47evn.js → config-doctor-7dfvxwjb.js} +3 -3
  8. package/dist/cli/{core-cpcspaw5.js → core-dwmwdc4y.js} +2 -2
  9. package/dist/cli/{curator-llm-factory-fyjmgxyp.js → curator-llm-factory-rrs1q4hg.js} +20 -20
  10. package/dist/cli/{curator-v97jnwn2.js → curator-w213v33y.js} +20 -20
  11. package/dist/cli/{evidence-summary-service-79mtxzhd.js → evidence-summary-service-t7n2h1he.js} +7 -7
  12. package/dist/cli/{explorer-18353rhn.js → explorer-zvk5kbcb.js} +3 -1
  13. package/dist/cli/{gate-evidence-kgyqz1g1.js → gate-evidence-xvxn603y.js} +3 -3
  14. package/dist/cli/{guardrail-explain-9ry66z5g.js → guardrail-explain-v1mwsnkq.js} +21 -21
  15. package/dist/cli/{guardrail-log-fe6smme1.js → guardrail-log-dn03dpz2.js} +4 -4
  16. package/dist/cli/{hive-promoter-vwq1dbh1.js → hive-promoter-asjtj7ga.js} +20 -20
  17. package/dist/cli/{index-8xertnqz.js → index-333kvewd.js} +4 -4
  18. package/dist/cli/{index-xmzmeknp.js → index-70ha9e09.js} +2 -1
  19. package/dist/cli/{index-269b52r3.js → index-7ca3a6gj.js} +3 -3
  20. package/dist/cli/{index-5n69863d.js → index-7ryh498h.js} +1 -173
  21. package/dist/cli/{index-vb9cpaz4.js → index-av0f6mm0.js} +5 -5
  22. package/dist/cli/{index-jqabjy7t.js → index-ckrasab9.js} +4 -4
  23. package/dist/cli/{index-jvbfrwt2.js → index-d55crzd4.js} +1 -1
  24. package/dist/cli/index-ddpkwdcb.js +176 -0
  25. package/dist/cli/{index-1pr8x10a.js → index-dg2w0wr4.js} +3 -3
  26. package/dist/cli/{index-tfkfyshg.js → index-dhh2j2nd.js} +2 -7
  27. package/dist/cli/{index-0ck3e366.js → index-g1c5fgaw.js} +1 -1
  28. package/dist/cli/{index-d45yrzkg.js → index-g2ajae1z.js} +2 -2
  29. package/dist/cli/{index-3q9w6e6v.js → index-h3z64mhz.js} +6 -2
  30. package/dist/cli/{index-6p09gyra.js → index-hqvt3mhk.js} +1 -1
  31. package/dist/cli/{index-evvbmbbv.js → index-jb4tchvy.js} +2 -2
  32. package/dist/cli/{index-rd2082y4.js → index-jsfghpy2.js} +2 -2
  33. package/dist/cli/{index-mw6p3nt6.js → index-m6wv2qdr.js} +1 -1
  34. package/dist/cli/{index-ewzmjm7m.js → index-ne8cfgw5.js} +1 -1
  35. package/dist/cli/{index-j1scj25g.js → index-nretd4qn.js} +6659 -1725
  36. package/dist/cli/{index-ez18gjk2.js → index-p3tnmkvc.js} +3 -3
  37. package/dist/cli/{index-3v3dxf75.js → index-qpt8ahph.js} +196 -93
  38. package/dist/cli/{index-e70d3xr7.js → index-tg9fn2dy.js} +22 -22
  39. package/dist/cli/{index-jqsfsqbx.js → index-whezv7vc.js} +4 -0
  40. package/dist/cli/{index-4905hd2m.js → index-wx8zdh4a.js} +6 -1
  41. package/dist/cli/{index-d45d4zyq.js → index-y95nwsge.js} +1 -1
  42. package/dist/cli/{index-zv4pwyas.js → index-zr370283.js} +3 -3
  43. package/dist/cli/index.js +22 -36
  44. package/dist/cli/{knowledge-escalator-rmy3jcx4.js → knowledge-escalator-cg19dhe5.js} +7 -7
  45. package/dist/cli/{knowledge-events-1tqpbwvj.js → knowledge-events-yzvysaqd.js} +5 -5
  46. package/dist/cli/{knowledge-store-389ck792.js → knowledge-store-6f77xpmm.js} +1 -1
  47. package/dist/cli/{knowledge-validator-kvtk6633.js → knowledge-validator-4b28zdxa.js} +2 -2
  48. package/dist/cli/{runtime-te94z1zb.js → runtime-x10qb3z1.js} +3 -2
  49. package/dist/cli/{scan-cursor-ahgm4f5p.js → scan-cursor-nqbb1xt6.js} +2 -2
  50. package/dist/cli/{schema-epdq7ykx.js → schema-jj2pb6zp.js} +2 -2
  51. package/dist/cli/{scope-persistence-37s9n40v.js → scope-persistence-63nasq0z.js} +5 -5
  52. package/dist/cli/{skill-generator-4d2t5gem.js → skill-generator-nsymtdqm.js} +8 -8
  53. package/dist/cli/tree-sitter-431q1bka.js +26 -0
  54. package/dist/cli/{worktree-isolation-4628yaka.js → worktree-isolation-g54kxw6x.js} +20 -20
  55. package/dist/config/constants.d.ts +1 -1
  56. package/dist/config/schema.d.ts +8 -0
  57. package/dist/hooks/review-receipt-scope.d.ts +42 -15
  58. package/dist/hooks/reviewer-scope-file-fingerprint.d.ts +58 -6
  59. package/dist/hooks/reviewer-scope-lifecycle.d.ts +9 -1
  60. package/dist/hooks/reviewer-scope-mergeback.d.ts +23 -0
  61. package/dist/index.d.ts +3 -0
  62. package/dist/index.js +564 -522
  63. package/dist/memory/config.d.ts +6 -0
  64. package/dist/memory/consolidation.d.ts +2 -0
  65. package/dist/memory/gateway.d.ts +12 -1
  66. package/dist/memory/index.d.ts +6 -4
  67. package/dist/memory/jsonl-migration.d.ts +28 -3
  68. package/dist/memory/local-jsonl-provider.d.ts +16 -1
  69. package/dist/memory/maintenance.d.ts +5 -0
  70. package/dist/memory/memory-family-migration.d.ts +12 -0
  71. package/dist/memory/outcome-events.d.ts +24 -0
  72. package/dist/memory/provider.d.ts +7 -1
  73. package/dist/memory/reflection-injection.d.ts +1 -0
  74. package/dist/memory/reflection-service.d.ts +68 -0
  75. package/dist/memory/reflection.d.ts +41 -0
  76. package/dist/memory/schema.d.ts +13 -1
  77. package/dist/memory/sqlite-provider.d.ts +18 -1
  78. package/dist/memory/types.d.ts +19 -1
  79. package/dist/state.d.ts +107 -2
  80. package/dist/tools/index.d.ts +1 -0
  81. package/dist/tools/manifest.d.ts +1 -0
  82. package/dist/tools/swarm-memory-outcome.d.ts +11 -0
  83. package/dist/tools/tool-metadata.d.ts +4 -0
  84. package/package.json +1 -1
package/dist/state.d.ts CHANGED
@@ -80,6 +80,27 @@ export interface TaskWorkflowCacheEntry {
80
80
  * never evicted to make room.
81
81
  */
82
82
  export declare const MAX_TRACKED_TASK_FILE_ATTRIBUTIONS = 128;
83
+ /** Typed per-file capture failure retained on a generation (issue #2100). */
84
+ export interface ReviewerScopeCaptureFailure {
85
+ file: string;
86
+ code: string;
87
+ retryable: boolean;
88
+ attempts: number;
89
+ at: number;
90
+ }
91
+ /**
92
+ * Merge-back provenance for lane-captured generations. `verified` records the
93
+ * primary-checkout match that makes the generation reviewable from the primary
94
+ * root; the failure arm retains an actionable typed reason instead of
95
+ * relabeling the generation as generic reviewer-stale.
96
+ */
97
+ export type ReviewerScopeMergebackState = {
98
+ verifiedAt: number;
99
+ primaryWorkspaceIdentity: string;
100
+ } | {
101
+ failedAt: number;
102
+ reason: string;
103
+ };
83
104
  /** Exact lifecycle state for one coder generation and its paired reviewer. */
84
105
  export interface ReviewerScopeGeneration {
85
106
  taskId: string;
@@ -87,14 +108,21 @@ export interface ReviewerScopeGeneration {
87
108
  generation: number;
88
109
  sessionIncarnation: string;
89
110
  background: boolean;
111
+ /** Canonical root every capture/equality site must use (lane or primary). */
112
+ captureDirectory: string;
113
+ /** Canonical workspace identity of `captureDirectory` (issue #2100 root correctness). */
114
+ workspaceIdentity: string;
90
115
  declaredFiles: string[];
91
116
  modifiedFiles: string[];
92
117
  modifiedFileFingerprints: import('./hooks/reviewer-scope-file-fingerprint.js').ReviewerScopeFileFingerprint[];
93
- status: 'collecting' | 'ready' | 'claimed';
118
+ /** Last typed capture failure per file; cleared when that file later captures. */
119
+ captureFailures: ReviewerScopeCaptureFailure[];
120
+ status: 'collecting' | 'ready' | 'claimed' | 'no_change' | 'mergeback_pending' | 'mergeback_mismatch';
94
121
  createdAt: number;
95
122
  readyAt?: number;
96
123
  reviewerCallID?: string;
97
124
  reviewerDispatchScope?: ReviewerScopeDispatchSnapshot;
125
+ mergeback?: ReviewerScopeMergebackState;
98
126
  }
99
127
  export interface ReviewerScopeDispatchSnapshot {
100
128
  hash: string;
@@ -121,6 +149,8 @@ export interface ReviewerScopeOwnershipTombstone extends ReviewerScopeGeneration
121
149
  parentSessionID: string;
122
150
  taskId: string;
123
151
  background: true;
152
+ captureDirectory: string;
153
+ workspaceIdentity: string;
124
154
  declaredFiles: string[];
125
155
  modifiedFiles: string[];
126
156
  modifiedFileFingerprints: import('./hooks/reviewer-scope-file-fingerprint.js').ReviewerScopeFileFingerprint[];
@@ -742,6 +772,10 @@ export declare function startReviewerScopeGeneration(input: {
742
772
  coderCallID: string;
743
773
  background?: boolean;
744
774
  declaredFiles?: string[];
775
+ /** Canonical root post-write capture must read from (lane or primary). */
776
+ captureDirectory: string;
777
+ /** Canonical workspace identity of `captureDirectory` (scope-binding identity). */
778
+ workspaceIdentity: string;
745
779
  createdAt?: number;
746
780
  }): ReviewerScopeGeneration | null;
747
781
  /** Route one child-observed write to its exact parent/task/coder generation. */
@@ -755,6 +789,7 @@ export declare function recordReviewerScopeGenerationFile(input: {
755
789
  /**
756
790
  * Record the bounded post-write state only after a guarded child write returns
757
791
  * successfully. Pre-write routing in modifiedFiles remains authorization metadata.
792
+ * A successful capture clears any retained typed failure for that file.
758
793
  */
759
794
  export declare function recordReviewerScopeGenerationFileFingerprint(input: {
760
795
  parentSessionID: string;
@@ -762,12 +797,71 @@ export declare function recordReviewerScopeGenerationFileFingerprint(input: {
762
797
  coderCallID: string;
763
798
  fingerprint: import('./hooks/reviewer-scope-file-fingerprint.js').ReviewerScopeFileFingerprint;
764
799
  }): boolean;
765
- /** Mark the exact coder call terminal; background running placeholders do not call this. */
800
+ /**
801
+ * Retain the LAST typed capture failure per file (upsert by file, bounded at
802
+ * the generation file cap). Failures are diagnostic recovery metadata — they
803
+ * never invalidate a generation by themselves.
804
+ */
805
+ export declare function recordReviewerScopeGenerationCaptureFailure(input: {
806
+ parentSessionID: string;
807
+ taskId: string;
808
+ coderCallID: string;
809
+ file: string;
810
+ code: string;
811
+ retryable: boolean;
812
+ at?: number;
813
+ }): boolean;
814
+ /**
815
+ * Mark the exact coder call terminal. Transactional publication (issue #2100
816
+ * contract E): `ready` is published only when every observed file has exactly
817
+ * one exact fingerprint — a half-populated fingerprint array is never exposed
818
+ * as reviewable. Incomplete generations stay `collecting` (recoverable).
819
+ */
766
820
  export declare function markReviewerScopeGenerationReady(input: {
767
821
  parentSessionID: string;
768
822
  taskId: string;
769
823
  coderCallID: string;
770
824
  readyAt?: number;
825
+ /** Canonical identity of the primary checkout; a lane-rooted generation is not reviewable from it until merge-back verification repoints the root. */
826
+ primaryWorkspaceIdentity?: string;
827
+ }): boolean;
828
+ /** Truthful no-change terminal: zero observed writes, verified zero diff (issue #2100 contract F). */
829
+ export declare function markReviewerScopeGenerationNoChange(input: {
830
+ parentSessionID: string;
831
+ taskId: string;
832
+ coderCallID: string;
833
+ at?: number;
834
+ }): boolean;
835
+ /**
836
+ * A lane-captured generation awaits merge-back verification before it is
837
+ * reviewable from the primary root. Conflicts/deferred merges retain the
838
+ * generation here — they are never relabeled as generic reviewer-stale.
839
+ */
840
+ export declare function markReviewerScopeGenerationMergebackPending(input: {
841
+ parentSessionID: string;
842
+ taskId?: string;
843
+ coderCallID: string;
844
+ at?: number;
845
+ }): boolean;
846
+ /**
847
+ * Pure state transition for merge-back settlement: a verified primary match
848
+ * publishes `ready`; a typed reason retains the generation as
849
+ * `mergeback_mismatch` for an actionable architect retry.
850
+ */
851
+ export declare function settleReviewerScopeMergeback(input: {
852
+ parentSessionID: string;
853
+ taskId?: string;
854
+ coderCallID: string;
855
+ outcome: {
856
+ verified: true;
857
+ primaryWorkspaceIdentity: string;
858
+ primaryDirectory: string;
859
+ at?: number;
860
+ } | {
861
+ verified: false;
862
+ reason: string;
863
+ at?: number;
864
+ };
771
865
  }): boolean;
772
866
  /** Read one exact coder generation for terminal guardrail/evidence checks. */
773
867
  export declare function getReviewerScopeGenerationForCoderCall(input: {
@@ -782,6 +876,17 @@ export declare function peekReadyReviewerScopeGeneration(input: {
782
876
  taskId: string;
783
877
  now?: number;
784
878
  }): ReviewerScopeGeneration | null;
879
+ /**
880
+ * Inspect the single generation for a task in a NON-reviewable status
881
+ * (`no_change` | `mergeback_pending` | `mergeback_mismatch`) so lifecycle
882
+ * denials can name the exact typed recovery action instead of generic stale.
883
+ */
884
+ export declare function peekReviewerScopeGenerationByStatus(input: {
885
+ parentSessionID: string;
886
+ taskId: string;
887
+ status: 'no_change' | 'mergeback_pending' | 'mergeback_mismatch';
888
+ now?: number;
889
+ }): ReviewerScopeGeneration | null;
785
890
  /**
786
891
  * Claim the only ready generation for an exact task after every blocking
787
892
  * reviewer before-hook has passed. Ambiguity fails closed to no receipt.
@@ -79,6 +79,7 @@ export { run_stale_reconciliation } from './stale-reconciliation';
79
79
  export { submit_phase_council_verdicts } from './submit-phase-council-verdicts';
80
80
  export { summarize_work } from './summarize-work';
81
81
  export { createSwarmCommandTool, swarm_command } from './swarm-command';
82
+ export { swarm_memory_outcome } from './swarm-memory-outcome';
82
83
  export { swarm_memory_propose } from './swarm-memory-propose';
83
84
  export { swarm_memory_recall } from './swarm-memory-recall';
84
85
  export { write_architecture_supervisor_evidence } from './write-architecture-supervisor-evidence';
@@ -122,6 +122,7 @@ export declare const TOOL_MANIFEST: {
122
122
  knowledge_archive: () => ToolDefinition;
123
123
  swarm_memory_recall: () => ToolDefinition;
124
124
  swarm_memory_propose: () => ToolDefinition;
125
+ swarm_memory_outcome: () => ToolDefinition;
125
126
  swarm_command: () => ToolDefinition;
126
127
  dispatch_lanes: () => ToolDefinition;
127
128
  dispatch_lanes_async: () => ToolDefinition;
@@ -0,0 +1,11 @@
1
+ import { loadPluginConfigWithMeta } from '../config';
2
+ import { createMemoryGateway, recordOutcomeWithReflection } from '../memory';
3
+ import { getAgentSession } from '../state';
4
+ import { createSwarmTool } from './create-tool';
5
+ export declare const swarm_memory_outcome: ReturnType<typeof createSwarmTool>;
6
+ export declare const _internals: {
7
+ loadPluginConfigWithMeta: typeof loadPluginConfigWithMeta;
8
+ createMemoryGateway: typeof createMemoryGateway;
9
+ getAgentSession: typeof getAgentSession;
10
+ recordOutcomeWithReflection: typeof recordOutcomeWithReflection;
11
+ };
@@ -516,6 +516,10 @@ export declare const TOOL_METADATA: {
516
516
  description: string;
517
517
  agents: never[];
518
518
  };
519
+ swarm_memory_outcome: {
520
+ description: string;
521
+ agents: never[];
522
+ };
519
523
  swarm_command: {
520
524
  description: string;
521
525
  agents: ("reviewer" | "critic" | "critic_finding_validator" | "explorer" | "coder" | "test_engineer" | "architect" | "sme" | "researcher" | "docs" | "docs_design" | "designer")[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-swarm",
3
- "version": "7.144.0",
3
+ "version": "7.144.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",