opencode-swarm 7.187.2 → 7.188.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/README.md +18 -1
- package/binaries/win32-arm64/swarm-sandbox-runner.exe +0 -0
- package/binaries/win32-x64/swarm-sandbox-runner.exe +0 -0
- package/dist/background/delegation-lifecycle.d.ts +4 -0
- package/dist/cli/{auto-checkpoint-2xmptd5t.js → auto-checkpoint-hm3qjke6.js} +7 -7
- package/dist/cli/{checkpoint-2y7z19y5.js → checkpoint-z3eprns8.js} +12 -12
- package/dist/cli/{coder-settlement-s4d28fa6.js → coder-settlement-enhpgjdh.js} +8 -8
- package/dist/cli/{config-doctor-312afzhr.js → config-doctor-pfwj6c8d.js} +11 -11
- package/dist/cli/{core-2bywxc4w.js → core-r7ypbkzn.js} +1 -1
- package/dist/cli/{curation-policy-sr29thf5.js → curation-policy-v64ctcbd.js} +5 -5
- package/dist/cli/{curator-drift-xx8pp4g9.js → curator-drift-4e9p7afg.js} +5 -5
- package/dist/cli/{curator-llm-factory-4g2nvr76.js → curator-llm-factory-gnx5wyx0.js} +35 -35
- package/dist/cli/{curator-dvhf6jex.js → curator-m1f5tpmq.js} +35 -35
- package/dist/cli/{doctor-knowledge-receipt-phase-id-m239pgbz.js → doctor-knowledge-receipt-phase-id-mdvra07t.js} +6 -6
- package/dist/cli/{evidence-summary-service-9et04fjh.js → evidence-summary-service-64nqgkaw.js} +15 -15
- package/dist/cli/{gate-evidence-73vj3bgm.js → gate-evidence-22eweae0.js} +5 -5
- package/dist/cli/{guardrail-explain-8n4fx9zv.js → guardrail-explain-e6z5x5jt.js} +36 -36
- package/dist/cli/{guardrail-log-9gmfvnd7.js → guardrail-log-x53wpnp0.js} +6 -6
- package/dist/cli/{guardrail-reset-k3mrq25e.js → guardrail-reset-zr13a010.js} +35 -35
- package/dist/cli/{hive-promoter-bp3rz0q6.js → hive-promoter-knbj0apv.js} +35 -35
- package/dist/cli/{index-b308erem.js → index-00mqbc83.js} +3 -3
- package/dist/cli/{index-3ckfawjf.js → index-0dvkbkhg.js} +3 -3
- package/dist/cli/{index-jyxgkp4a.js → index-0v2svrev.js} +1 -1
- package/dist/cli/{index-m1vsqmyr.js → index-170k2yeh.js} +1 -1
- package/dist/cli/{index-3g3n9fjq.js → index-1wzsp7ag.js} +3 -3
- package/dist/cli/{index-f6pft90q.js → index-2bdebshy.js} +3 -3
- package/dist/cli/{index-3y0nr248.js → index-41v699sv.js} +3 -3
- package/dist/cli/{index-dx6bhbd6.js → index-4htcpbs4.js} +70 -51
- package/dist/cli/{index-y81jjedn.js → index-4ws5agzc.js} +6 -6
- package/dist/cli/{index-pqffq9mm.js → index-64s3825r.js} +2 -2
- package/dist/cli/{index-wpxy7099.js → index-6j6fmw3r.js} +1 -1
- package/dist/cli/{index-kc635w60.js → index-6qef1jtq.js} +4 -4
- package/dist/cli/{index-33345434.js → index-6zpfvs4t.js} +3 -3
- package/dist/cli/{index-85cx1mmb.js → index-78ag9dsc.js} +4 -4
- package/dist/cli/{index-6t7ygevg.js → index-7sbyvk99.js} +1 -1
- package/dist/cli/{index-b5tthmy2.js → index-7vrnbtsk.js} +1 -1
- package/dist/cli/{index-z04d01pv.js → index-8b0gmpm6.js} +7 -7
- package/dist/cli/{index-j5db3v56.js → index-8tqt8fbf.js} +4 -4
- package/dist/cli/{index-exj7czz9.js → index-8xzsncfk.js} +4 -4
- package/dist/cli/{index-xs070yr9.js → index-9yw1fgpp.js} +2 -2
- package/dist/cli/{index-tq6sbcys.js → index-aahk3yq1.js} +157 -108
- package/dist/cli/{index-4g39nne8.js → index-af1qsczg.js} +2 -2
- package/dist/cli/{index-e9ry78z5.js → index-b9pz70d0.js} +2 -2
- package/dist/cli/{index-tngc1erw.js → index-bd4agttq.js} +2 -2
- package/dist/cli/{index-dqberkr3.js → index-dfyjz036.js} +77 -11
- package/dist/cli/{index-jh9nrshe.js → index-ggdwbsc3.js} +1 -1
- package/dist/cli/{index-9jafghwk.js → index-j5ecgr3f.js} +35 -35
- package/dist/cli/{index-26zs9wsj.js → index-jd3hvnqn.js} +2 -2
- package/dist/cli/{index-tkm2rj27.js → index-jj222n0z.js} +1 -1
- package/dist/cli/{index-310h5192.js → index-k333nq26.js} +2 -2
- package/dist/cli/{index-v9y0230d.js → index-mb1reyw3.js} +1 -1
- package/dist/cli/{index-w0bvez8c.js → index-nf22t88g.js} +1 -1
- package/dist/cli/{index-tmp07h7b.js → index-qe3e6z5c.js} +37 -37
- package/dist/cli/{index-n8kqhxay.js → index-rwabrcsg.js} +1 -1
- package/dist/cli/{index-xv0t2sed.js → index-txecan4h.js} +14 -9
- package/dist/cli/{index-rtdxyjrg.js → index-w4309fkk.js} +6 -6
- package/dist/cli/{index-n55exns2.js → index-x73e0zkb.js} +1 -1
- package/dist/cli/{index-efbhea00.js → index-xgr0rjhh.js} +1 -1
- package/dist/cli/{index-7fxy1s86.js → index-zwbheerv.js} +4 -4
- package/dist/cli/{index-n45kz69m.js → index-zwgh0gty.js} +1 -1
- package/dist/cli/index.js +36 -36
- package/dist/cli/{knowledge-escalator-fnqctvxz.js → knowledge-escalator-w043k3ah.js} +12 -12
- package/dist/cli/{knowledge-events-mr1vh3nb.js → knowledge-events-krd8ndqh.js} +10 -10
- package/dist/cli/{knowledge-link-93nzznwd.js → knowledge-link-9gx2djyd.js} +4 -4
- package/dist/cli/{knowledge-store-dxy4s9k6.js → knowledge-store-0x9ejztz.js} +5 -5
- package/dist/cli/{knowledge-validator-gy39attk.js → knowledge-validator-y7pr7h3g.js} +7 -7
- package/dist/cli/{mcp-bxb59wsq.js → mcp-tf5b5aqa.js} +1 -1
- package/dist/cli/{model-preflight-2kje0sp0.js → model-preflight-pt6n1re7.js} +35 -35
- package/dist/cli/{pending-delegations-fm2nx2k0.js → pending-delegations-rqfgnay0.js} +7 -7
- package/dist/cli/{pr-subscriptions-g4f9rehb.js → pr-subscriptions-1frpr34c.js} +7 -7
- package/dist/cli/{pr-workflow-gate-qtq1wq95.js → pr-workflow-gate-dhzvaqj8.js} +35 -35
- package/dist/cli/{runner-verr6er5.js → runner-x8sbydkw.js} +5 -5
- package/dist/cli/{scan-cursor-8taj944f.js → scan-cursor-nm6h3gdd.js} +6 -6
- package/dist/cli/{schema-yxq3bjmd.js → schema-4fxm5b9r.js} +1 -1
- package/dist/cli/{scope-persistence-jppvjncr.js → scope-persistence-3hs7yy2b.js} +11 -11
- package/dist/cli/{server-2s7wqg9e.js → server-tmjef10y.js} +35 -35
- package/dist/cli/{skill-generator-pyf95aqw.js → skill-generator-qk0gpwhq.js} +14 -14
- package/dist/cli/{snapshot-coordination-init-8gbxw9sa.js → snapshot-coordination-init-pqsgthaa.js} +35 -35
- package/dist/cli/{speckit-checkoff-x2z0jamv.js → speckit-checkoff-9kx59cdb.js} +3 -3
- package/dist/cli/{telemetry-xwj899pd.js → telemetry-d0j31j5d.js} +1 -1
- package/dist/cli/{worktree-collision-ownership-455bdcnk.js → worktree-collision-ownership-d890zzka.js} +7 -7
- package/dist/cli/{worktree-isolation-8x4p7tvm.js → worktree-isolation-45hj9jy7.js} +35 -35
- package/dist/commands/close/align-stage.d.ts +26 -0
- package/dist/commands/close/context.d.ts +8 -0
- package/dist/commands/close/internals.d.ts +1 -1
- package/dist/commands/destructive-purge.d.ts +55 -27
- package/dist/commands/registry.d.ts +1 -1
- package/dist/hooks/knowledge-validator.d.ts +18 -1
- package/dist/index.js +25 -24
- package/dist/models/model-override-state.d.ts +24 -1
- package/dist/models/task-model-routing.d.ts +58 -1
- package/dist/observability/catalog.d.ts +3 -3
- package/dist/telemetry.d.ts +15 -1
- package/dist/tools/repo-map.d.ts +4 -0
- package/package.json +1 -1
|
@@ -42,6 +42,29 @@ export declare function normalizeModelChain(primaryModel: string | undefined, fa
|
|
|
42
42
|
export declare function resolveScopedModelSelection(scope: ScopedModelOverrideKey, chain: NormalizedModelChain, now?: number): ScopedModelSelection;
|
|
43
43
|
export declare function advanceScopedModelSelection(scope: ScopedModelOverrideKey, chain: NormalizedModelChain, expectedGeneration: number, now?: number): ScopedModelAdvanceResult;
|
|
44
44
|
export declare function resetScopedModelSelection(scope: ScopedModelOverrideKey, expectedGeneration?: number): boolean;
|
|
45
|
-
|
|
45
|
+
/**
|
|
46
|
+
* Issue #2989: non-seeding read of a scoped selection for read-side
|
|
47
|
+
* consumers (the primary-session chat-boundary override).
|
|
48
|
+
*
|
|
49
|
+
* Unlike {@link resolveScopedModelSelection}, this NEVER creates or resets an
|
|
50
|
+
* entry: an absent key, an expired entry, or a stored signature that does not
|
|
51
|
+
* match the current chain all read as `undefined` (stale entries stay stale —
|
|
52
|
+
* the advance path owns reseeding). A PRESENT, signature-matching entry is
|
|
53
|
+
* touched (its `updatedAt` is refreshed), so an actively-used session's
|
|
54
|
+
* selection stays alive and an idle session's selection expires via the TTL.
|
|
55
|
+
*/
|
|
56
|
+
export declare function peekScopedModelSelection(scope: ScopedModelOverrideKey, chain: NormalizedModelChain, now?: number): ScopedModelSelection | undefined;
|
|
57
|
+
export interface ClearScopedModelSelectionsOptions {
|
|
58
|
+
/**
|
|
59
|
+
* Issue #2989: when false, primary-session scopes (the sentinel
|
|
60
|
+
* empty-string `invocationID` used by the session-scoped fallback) are
|
|
61
|
+
* preserved. The per-invocation boundary clear
|
|
62
|
+
* (`clearPendingTaskModelRoutesForSession(..., 'invocation')`) uses this
|
|
63
|
+
* so a primary session's fallback selection stays sticky across turns;
|
|
64
|
+
* the session-end clear keeps the default (clear everything).
|
|
65
|
+
*/
|
|
66
|
+
primaryScopes?: boolean;
|
|
67
|
+
}
|
|
68
|
+
export declare function clearScopedModelSelectionsForSession(sessionID: string, opts?: ClearScopedModelSelectionsOptions): void;
|
|
46
69
|
export declare function getScopedModelSelectionSnapshot(): readonly ScopedModelSelectionSnapshotEntry[];
|
|
47
70
|
export declare function resetScopedModelSelectionStateForTests(): void;
|
|
@@ -61,7 +61,64 @@ export declare function registerPendingTaskModelRoute(input: PendingTaskModelRou
|
|
|
61
61
|
export declare function bindPendingTaskModelRouteChild(input: BindTaskModelRouteChildInput, now?: number): PendingTaskModelRouteSnapshotEntry | undefined;
|
|
62
62
|
export declare function advancePendingTaskModelRoute(input: AdvanceTaskModelRouteInput): TaskModelRouteAdvanceResult | undefined;
|
|
63
63
|
export declare function resolveTaskChatModelOverride(input: ResolveTaskChatModelOverrideInput): Promise<TaskChatModelOverrideResolution>;
|
|
64
|
-
export
|
|
64
|
+
export interface AdvanceSessionFallbackSelectionInput {
|
|
65
|
+
sessionID: string;
|
|
66
|
+
role: string;
|
|
67
|
+
swarmID?: string;
|
|
68
|
+
primaryModel?: string;
|
|
69
|
+
fallbackModels?: Iterable<string | null | undefined>;
|
|
70
|
+
now?: number;
|
|
71
|
+
}
|
|
72
|
+
export interface SessionFallbackAdvanceResult {
|
|
73
|
+
accepted: boolean;
|
|
74
|
+
exhausted: boolean;
|
|
75
|
+
fallbackIndex: number;
|
|
76
|
+
modelString?: string;
|
|
77
|
+
scope: ScopedModelOverrideKey;
|
|
78
|
+
}
|
|
79
|
+
export interface ResolveSessionChatModelOverrideInput {
|
|
80
|
+
sessionID: string;
|
|
81
|
+
role: string;
|
|
82
|
+
swarmID?: string;
|
|
83
|
+
primaryModel?: string;
|
|
84
|
+
fallbackModels?: Iterable<string | null | undefined>;
|
|
85
|
+
now?: number;
|
|
86
|
+
}
|
|
87
|
+
export interface SessionChatModelOverrideResolution {
|
|
88
|
+
status: 'override' | 'primary' | 'exhausted' | 'missing';
|
|
89
|
+
model?: ModelOverrideParts;
|
|
90
|
+
modelString?: string;
|
|
91
|
+
fallbackIndex?: number;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Issue #2989: advance the primary-session (host-driven) fallback chain for
|
|
95
|
+
* a session with no Task route. Seed-then-advance mirrors
|
|
96
|
+
* {@link advancePendingTaskModelRoute}'s flow: `resolveScopedModelSelection`
|
|
97
|
+
* seeds a fresh entry at fallbackIndex 0, `advanceScopedModelSelection` moves
|
|
98
|
+
* it forward (clamped at chain end, where `exhausted` becomes true).
|
|
99
|
+
*/
|
|
100
|
+
export declare function advanceSessionFallbackSelection(input: AdvanceSessionFallbackSelectionInput): SessionFallbackAdvanceResult;
|
|
101
|
+
/**
|
|
102
|
+
* Issue #2989: non-seeding read of the primary-session fallback selection
|
|
103
|
+
* for the chat-boundary override. `missing` covers no-selection/no-fallbacks
|
|
104
|
+
* (and stale-signature entries, which read as absent and are left alone);
|
|
105
|
+
* `exhausted` never throws here — a primary session's user message must
|
|
106
|
+
* never be blocked by the plugin.
|
|
107
|
+
*/
|
|
108
|
+
export declare function resolveSessionChatModelOverride(input: ResolveSessionChatModelOverrideInput): SessionChatModelOverrideResolution;
|
|
109
|
+
/**
|
|
110
|
+
* Issue #2989 review (F-001): record the exact `input.agent` string at the
|
|
111
|
+
* chat boundary so the session.error no-route branch can resolve the same
|
|
112
|
+
* identity (the activeAgent pointer is reset by Task-tool completions).
|
|
113
|
+
*/
|
|
114
|
+
export declare function recordSessionChatAgent(sessionID: string, agentName: string): void;
|
|
115
|
+
/**
|
|
116
|
+
* Issue #2989 review (F-001): the chat-boundary-recorded agent name for a
|
|
117
|
+
* session, or undefined when no chat.message has been seen for it in this
|
|
118
|
+
* process.
|
|
119
|
+
*/
|
|
120
|
+
export declare function resolveSessionChatAgent(sessionID: string): string | undefined;
|
|
121
|
+
export declare function clearPendingTaskModelRoutesForSession(sessionID: string, mode?: 'session' | 'invocation'): void;
|
|
65
122
|
export declare function getPendingTaskModelRouteSnapshot(): readonly PendingTaskModelRouteSnapshotEntry[];
|
|
66
123
|
export declare function getTaskModelRoutingStateSnapshot(): {
|
|
67
124
|
routes: readonly PendingTaskModelRouteSnapshotEntry[];
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The event catalog (issue #2029).
|
|
3
3
|
*
|
|
4
|
-
* Exactly
|
|
5
|
-
* `src/telemetry.ts:
|
|
4
|
+
* Exactly 66 entries, matching the `TelemetryEvent` union at
|
|
5
|
+
* `src/telemetry.ts:27-210`. Thirty-eight predate the #2029 contract; the 39th is
|
|
6
6
|
* `agent_conflict_detected` (previously emitted through a force-cast past the
|
|
7
7
|
* type system), the 40th is `close_archive_result` (issue #2030 — the
|
|
8
8
|
* structured close/archive result event), the 41st is the bounded diagnostic
|
|
@@ -89,7 +89,7 @@ export interface CatalogEntry {
|
|
|
89
89
|
/**
|
|
90
90
|
* Whether an event of this kind must carry `trace.parentSpanId`.
|
|
91
91
|
*
|
|
92
|
-
* `false` for all
|
|
92
|
+
* `false` for all 66 entries today, and that is a truthful statement about
|
|
93
93
|
* the current system rather than a placeholder: no producer supplies a
|
|
94
94
|
* parent span, so `createObservation` never sets one. Setting this to `true`
|
|
95
95
|
* for a kind whose producer cannot supply a parent would make every
|
package/dist/telemetry.d.ts
CHANGED
|
@@ -41,7 +41,7 @@ export type TelemetryEvent = 'session_started' | 'session_ended' | 'agent_activa
|
|
|
41
41
|
* `prm_hard_stop` TRIGGER emitted by `src/prm/escalation.ts`. A trigger with
|
|
42
42
|
* no matching delivery means the containment never reached the agent.
|
|
43
43
|
*/
|
|
44
|
-
| 'prm_hard_stop_delivered' | 'agent_conflict_detected' | 'close_archive_result' | 'knowledge_receipt_transition' | 'knowledge_maintenance' | 'residue_health' | 'context_telemetry_health' | 'skill_usage_health' | 'core_events_health' | 'shell_audit_health' | 'trajectory_health' | 'learning_health_alarm' | 'pr_subscription_health' | 'execution_attempt_recorded' | 'council_attempt' | 'council_round_transition' | 'council_attempt_unscoped' | 'context_source_attribution' | 'verdict_row_pipe_recovery' | 'training_vault_health';
|
|
44
|
+
| 'prm_hard_stop_delivered' | 'agent_conflict_detected' | 'close_archive_result' | 'knowledge_receipt_transition' | 'knowledge_maintenance' | 'residue_health' | 'context_telemetry_health' | 'skill_usage_health' | 'core_events_health' | 'shell_audit_health' | 'trajectory_health' | 'learning_health_alarm' | 'pr_subscription_health' | 'execution_attempt_recorded' | 'council_attempt' | 'council_round_transition' | 'council_attempt_unscoped' | 'context_source_attribution' | 'verdict_row_pipe_recovery' | 'training_vault_health' | 'plan_recovery_superseded';
|
|
45
45
|
/** Stable classification for how a reviewer-gate decision was established. */
|
|
46
46
|
export type ReviewerGateEvidenceKind = 'genuine' | 'fallback' | 'data_quality' | 'block';
|
|
47
47
|
/**
|
|
@@ -527,6 +527,20 @@ export declare const telemetry: {
|
|
|
527
527
|
token_budget_used: number;
|
|
528
528
|
omitted_context_count: number;
|
|
529
529
|
}): void;
|
|
530
|
+
/**
|
|
531
|
+
* Issue #2794 — plan-recovery supersession count, emitted exactly once per
|
|
532
|
+
* snapshot-coordination initialization attempt that settles superseded
|
|
533
|
+
* (settlement chokepoint in src/session/snapshot-coordination-init.ts).
|
|
534
|
+
* Counts ONLY — a within-process cumulative `count` and the closed
|
|
535
|
+
* two-value `trigger` vocabulary (`plan_recovery` = the typed
|
|
536
|
+
* PlanRecoverySupersededError path; `coordination_fence` = any
|
|
537
|
+
* generation-fence outcome) — no paths, no session or project identity,
|
|
538
|
+
* matching the observability contract's no-content-in-metrics rule.
|
|
539
|
+
*/
|
|
540
|
+
planRecoverySuperseded(data: {
|
|
541
|
+
count: number;
|
|
542
|
+
trigger: "plan_recovery" | "coordination_fence";
|
|
543
|
+
}): void;
|
|
530
544
|
};
|
|
531
545
|
/**
|
|
532
546
|
* Test-only dependency-injection seam. Production code calls
|
package/dist/tools/repo-map.d.ts
CHANGED
|
@@ -218,6 +218,10 @@ export declare const _internals: {
|
|
|
218
218
|
token_budget_used: number;
|
|
219
219
|
omitted_context_count: number;
|
|
220
220
|
}): void;
|
|
221
|
+
planRecoverySuperseded(data: {
|
|
222
|
+
count: number;
|
|
223
|
+
trigger: "plan_recovery" | "coordination_fence";
|
|
224
|
+
}): void;
|
|
221
225
|
};
|
|
222
226
|
};
|
|
223
227
|
export declare const repo_map: ReturnType<typeof createSwarmTool>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-swarm",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.188.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",
|