opencode-swarm 7.187.1 → 7.187.3
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/cli/{auto-checkpoint-fcp7srhd.js → auto-checkpoint-521fehr3.js} +7 -7
- package/dist/cli/{checkpoint-69m1xg5q.js → checkpoint-czx5eken.js} +12 -12
- package/dist/cli/{coder-settlement-adx7vsa9.js → coder-settlement-skfkfgt7.js} +8 -8
- package/dist/cli/{config-doctor-eaqk3erw.js → config-doctor-t88fd5ra.js} +11 -11
- package/dist/cli/{core-fb33hf6w.js → core-fap9x47g.js} +1 -1
- package/dist/cli/{curation-policy-sr29thf5.js → curation-policy-e1ce7ha8.js} +5 -5
- package/dist/cli/{curator-5xcy10z7.js → curator-b7zzsv98.js} +35 -35
- package/dist/cli/{curator-drift-kz0s2dk3.js → curator-drift-ea11apaw.js} +5 -5
- package/dist/cli/{curator-llm-factory-pc17p6kq.js → curator-llm-factory-758hynyn.js} +35 -35
- package/dist/cli/{doctor-knowledge-receipt-phase-id-dwtppe04.js → doctor-knowledge-receipt-phase-id-5768wb0n.js} +6 -6
- package/dist/cli/{evidence-summary-service-1k2syb6b.js → evidence-summary-service-z2yj87tn.js} +15 -15
- package/dist/cli/{gate-evidence-4vvj9bhj.js → gate-evidence-m90ynftc.js} +5 -5
- package/dist/cli/{guardrail-explain-rxsda43z.js → guardrail-explain-y2g82gqv.js} +36 -36
- package/dist/cli/{guardrail-log-1619tcny.js → guardrail-log-c50qd8sf.js} +6 -6
- package/dist/cli/{guardrail-reset-72zryht1.js → guardrail-reset-h7g9a90e.js} +35 -35
- package/dist/cli/{hive-promoter-yc3xvvq8.js → hive-promoter-wpcn3wyz.js} +35 -35
- package/dist/cli/{index-my8wgyqg.js → index-02nzb100.js} +2 -2
- package/dist/cli/{index-868tmqy5.js → index-10h0jx4e.js} +4 -4
- package/dist/cli/{index-319qcbg7.js → index-45d3vpry.js} +1 -1
- package/dist/cli/{index-p9xke6h7.js → index-468s960k.js} +1 -1
- package/dist/cli/{index-zftyb94k.js → index-4tmk29gc.js} +1 -1
- package/dist/cli/{index-r37b4crx.js → index-5ktekhxk.js} +1 -1
- package/dist/cli/{index-thx02zpn.js → index-5x8zhfsq.js} +3 -3
- package/dist/cli/{index-36y60mjx.js → index-6551m2st.js} +2 -2
- package/dist/cli/{index-0cpa8rnc.js → index-6rdajskg.js} +94 -81
- package/dist/cli/{index-v9y0230d.js → index-7ba0hdg4.js} +1 -1
- package/dist/cli/{index-rs23yv3h.js → index-7fekgghd.js} +7 -7
- package/dist/cli/{index-m2xfxk4e.js → index-7t15ybzn.js} +3 -3
- package/dist/cli/{index-rcmgbtxf.js → index-a5pjm9zc.js} +2 -2
- package/dist/cli/{index-jyxgkp4a.js → index-bkcd3nwh.js} +1 -1
- package/dist/cli/{index-3y0nr248.js → index-by488z8m.js} +3 -3
- package/dist/cli/{index-4pbp654j.js → index-by7x4ty3.js} +35 -35
- package/dist/cli/{index-n55exns2.js → index-e3vbyy10.js} +1 -1
- package/dist/cli/{index-wy6wzwb3.js → index-ez4kkgcd.js} +3 -3
- package/dist/cli/{index-26zs9wsj.js → index-fk7s8btv.js} +2 -2
- package/dist/cli/{index-kaf9mtpc.js → index-h03j41jw.js} +4 -4
- package/dist/cli/{index-f1dxxa1n.js → index-h7p78r0w.js} +4 -4
- package/dist/cli/{index-e9ry78z5.js → index-hrxr48p5.js} +2 -2
- package/dist/cli/{index-fgbm0x7d.js → index-japwz660.js} +1 -1
- package/dist/cli/{index-z4c6bfd5.js → index-ksvm96bz.js} +1 -1
- package/dist/cli/{index-gathbynn.js → index-m3dcecc5.js} +37 -37
- package/dist/cli/{index-2jxyzerw.js → index-mdxrk3az.js} +3 -3
- package/dist/cli/{index-tv84mkce.js → index-mh3nsv7v.js} +2 -2
- package/dist/cli/{index-qmmzyymt.js → index-naxtsh2e.js} +4 -4
- package/dist/cli/{index-c44vm8tc.js → index-npkxp81s.js} +4 -4
- package/dist/cli/{index-n8kqhxay.js → index-nsvm2j4x.js} +1 -1
- package/dist/cli/{index-n45kz69m.js → index-q0am9gm3.js} +1 -1
- package/dist/cli/{index-dx6bhbd6.js → index-sec8fwf1.js} +3 -3
- package/dist/cli/{index-v51qveq8.js → index-v8ytrkrg.js} +4 -4
- package/dist/cli/{index-prqjveey.js → index-w3xapqjq.js} +3 -3
- package/dist/cli/{index-r7d49haj.js → index-w9p41945.js} +1 -1
- package/dist/cli/{index-1hg62y01.js → index-wvkbp1qr.js} +6 -6
- package/dist/cli/{index-6t7ygevg.js → index-xpj149rz.js} +1 -1
- package/dist/cli/{index-hjdeawyp.js → index-yk9vs9pw.js} +2 -2
- package/dist/cli/{index-ywwreanf.js → index-zbv9t6p2.js} +6 -6
- package/dist/cli/{index-t0xcsrsf.js → index-zzgv4jy6.js} +4 -4
- package/dist/cli/index.js +36 -36
- package/dist/cli/{knowledge-escalator-q60ghp3z.js → knowledge-escalator-wzsxp6yg.js} +12 -12
- package/dist/cli/{knowledge-events-hadasxqm.js → knowledge-events-dcchq50n.js} +10 -10
- package/dist/cli/{knowledge-link-93nzznwd.js → knowledge-link-zh9rzesj.js} +4 -4
- package/dist/cli/{knowledge-store-y7vvwa7p.js → knowledge-store-p27r8wa9.js} +5 -5
- package/dist/cli/{knowledge-validator-3tqat3wm.js → knowledge-validator-rmtymth5.js} +7 -7
- package/dist/cli/{mcp-ek3wf04s.js → mcp-jr1rr2zd.js} +1 -1
- package/dist/cli/{model-preflight-gzcmdvs7.js → model-preflight-xzy5x4rt.js} +35 -35
- package/dist/cli/{pending-delegations-54k1mysp.js → pending-delegations-4k740a2c.js} +7 -7
- package/dist/cli/{pr-subscriptions-sx9ch5ra.js → pr-subscriptions-515xdgjj.js} +7 -7
- package/dist/cli/{pr-workflow-gate-yehzpb9x.js → pr-workflow-gate-srpa0mds.js} +35 -35
- package/dist/cli/{runner-verr6er5.js → runner-tk1cmgzt.js} +5 -5
- package/dist/cli/{scan-cursor-0ws87fe6.js → scan-cursor-w89sck5y.js} +6 -6
- package/dist/cli/{schema-hns0x91t.js → schema-1mwgvrv7.js} +1 -1
- package/dist/cli/{scope-persistence-ct6etvdy.js → scope-persistence-qen27qx7.js} +11 -11
- package/dist/cli/{server-hh4vy28k.js → server-rhz44ye9.js} +35 -35
- package/dist/cli/{skill-generator-9fy1nmhb.js → skill-generator-05mxym3d.js} +14 -14
- package/dist/cli/{snapshot-coordination-init-xjdy80bq.js → snapshot-coordination-init-jjegs3v5.js} +35 -35
- package/dist/cli/{speckit-checkoff-06104jte.js → speckit-checkoff-3m04ks95.js} +3 -3
- package/dist/cli/{telemetry-xwj899pd.js → telemetry-vwxbsnye.js} +1 -1
- package/dist/cli/{worktree-collision-ownership-3jefgmkc.js → worktree-collision-ownership-0d73y8h0.js} +7 -7
- package/dist/cli/{worktree-isolation-76wbgtpk.js → worktree-isolation-d0vn38wb.js} +35 -35
- package/dist/index.js +429 -429
- package/dist/models/model-override-state.d.ts +24 -1
- package/dist/models/task-model-routing.d.ts +58 -1
- package/dist/state.d.ts +26 -3
- package/dist/utils/path.d.ts +23 -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[];
|
package/dist/state.d.ts
CHANGED
|
@@ -1249,14 +1249,37 @@ export declare function recordPhaseAgentDispatch(sessionId: string, agentName: s
|
|
|
1249
1249
|
/**
|
|
1250
1250
|
* Atomically replace one task's attributed file list.
|
|
1251
1251
|
*
|
|
1252
|
+
* Callers MUST pass `workspaceDirectory`: omitting it silently drops
|
|
1253
|
+
* absolute entries (issue #2925 review, PRR-014).
|
|
1254
|
+
*
|
|
1255
|
+
* Issue #2925: entries are canonicalized at this write boundary to the
|
|
1256
|
+
* portable form (repo-relative against `workspaceDirectory` when provided,
|
|
1257
|
+
* forward-slashed, win32-case-folded via `normalizePath`); entries that
|
|
1258
|
+
* cannot be proven canonical — absolutes without a base, `..`-escapes —
|
|
1259
|
+
* drop silently (entries are advisory). Legacy snapshot entries bypass this
|
|
1260
|
+
* boundary by design (deserializeModifiedFilesByTask builds the map
|
|
1261
|
+
* directly) and stay readable via read-side canonicalization.
|
|
1262
|
+
*
|
|
1252
1263
|
* Returns false without mutation when the task id is invalid or the bounded
|
|
1253
1264
|
* map has no reclaimable workflow-complete slot.
|
|
1254
1265
|
*/
|
|
1255
|
-
export declare function recordModifiedFilesForTask(session: AgentSessionState, taskId: string, files: readonly string[]): boolean;
|
|
1266
|
+
export declare function recordModifiedFilesForTask(session: AgentSessionState, taskId: string, files: readonly string[], workspaceDirectory?: string): boolean;
|
|
1256
1267
|
/**
|
|
1257
1268
|
* Add one file to a task's attribution without disturbing its existing files.
|
|
1258
|
-
|
|
1259
|
-
|
|
1269
|
+
*
|
|
1270
|
+
* Callers MUST pass `workspaceDirectory`: omitting it silently drops
|
|
1271
|
+
* absolute entries (they cannot be proven in-workspace), with no other
|
|
1272
|
+
* signal (issue #2925 review, PRR-014).
|
|
1273
|
+
*
|
|
1274
|
+
* Issue #2925: the INCOMING entry is canonicalized against
|
|
1275
|
+
* `workspaceDirectory` (same rules as the plural setter); a
|
|
1276
|
+
* non-canonicalizable incoming entry drops silently with a `true` return
|
|
1277
|
+
* (advisory no-op — pre-existing invalid-input/invalid-taskId paths still
|
|
1278
|
+
* return false). Stored legacy raw entries are deliberately NOT
|
|
1279
|
+
* re-canonicalized by an append; they persist verbatim until the task's list
|
|
1280
|
+
* is atomically replaced by a producer.
|
|
1281
|
+
*/
|
|
1282
|
+
export declare function recordModifiedFileForTask(session: AgentSessionState, taskId: string, file: string, workspaceDirectory?: string): boolean;
|
|
1260
1283
|
/**
|
|
1261
1284
|
* Whether a per-task attribution slot EXISTS for the task (present-but-empty
|
|
1262
1285
|
* counts as present). Distinguishes "no record" from "record with zero files"
|
package/dist/utils/path.d.ts
CHANGED
|
@@ -1 +1,24 @@
|
|
|
1
1
|
export declare function normalizePath(p: string): string;
|
|
2
|
+
/**
|
|
3
|
+
* Canonicalize one per-task file-attribution entry to the portable form used
|
|
4
|
+
* by `modifiedFilesByTask` (issue #2925): repo-relative against the writer's
|
|
5
|
+
* workspace directory, forward-slashed, win32-case-folded via
|
|
6
|
+
* {@link normalizePath}.
|
|
7
|
+
*
|
|
8
|
+
* Returns null (drop) for entries that cannot be proven canonical:
|
|
9
|
+
* - absolute input without a `workspaceDirectory` (no base to resolve
|
|
10
|
+
* against — storing it raw is exactly the pre-#2925 defect);
|
|
11
|
+
* - any input whose resolved form escapes the workspace (`..`-prefixed or
|
|
12
|
+
* absolute relative, e.g. a different drive on win32);
|
|
13
|
+
* - relative input with a `..` segment when no base is available (a leading
|
|
14
|
+
* or inner `..` can never appear in a repo-relative path);
|
|
15
|
+
* - empty/whitespace-only input, or a path that collapses to '.' (the
|
|
16
|
+
* workspace root itself is not a file entry).
|
|
17
|
+
*
|
|
18
|
+
* Entries are advisory, so drops are silent by contract (the caller never
|
|
19
|
+
* throws on a dropped entry). The snapshot deserializer
|
|
20
|
+
* (`deserializeModifiedFilesByTask`) intentionally sits OUTSIDE this
|
|
21
|
+
* boundary: legacy raw entries round-trip verbatim from old snapshots and
|
|
22
|
+
* remain covered by read-side canonicalization.
|
|
23
|
+
*/
|
|
24
|
+
export declare function canonicalAttributionPath(raw: string, workspaceDirectory?: string): string | null;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-swarm",
|
|
3
|
-
"version": "7.187.
|
|
3
|
+
"version": "7.187.3",
|
|
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",
|