opencode-swarm 7.192.1 → 7.192.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 (115) hide show
  1. package/.opencode/skills/critic-gate/SKILL.md +2 -1
  2. package/.opencode/skills/execute/SKILL.md +1 -1
  3. package/README.md +5 -3
  4. package/binaries/win32-arm64/swarm-sandbox-runner.exe +0 -0
  5. package/binaries/win32-x64/swarm-sandbox-runner.exe +0 -0
  6. package/dist/agents/critic.d.ts +2 -2
  7. package/dist/cli/{auto-checkpoint-kkakqktp.js → auto-checkpoint-735m8sz7.js} +8 -8
  8. package/dist/cli/{capability-probe-3mgxcfr9.js → capability-probe-rty1315z.js} +1 -1
  9. package/dist/cli/{checkpoint-cefw75xe.js → checkpoint-ptzc5jev.js} +16 -16
  10. package/dist/cli/{coder-settlement-tgdjczyp.js → coder-settlement-hh5165m1.js} +12 -12
  11. package/dist/cli/{config-doctor-sns7gbj2.js → config-doctor-wzzvhpcr.js} +15 -15
  12. package/dist/cli/{core-q8xvp8bw.js → core-0jarm64k.js} +3 -3
  13. package/dist/cli/{curation-policy-2q5xs0xg.js → curation-policy-yzdznz4z.js} +6 -6
  14. package/dist/cli/{curator-drift-1n3akmda.js → curator-drift-f4aqxz9e.js} +8 -8
  15. package/dist/cli/{curator-mgdsxrpv.js → curator-f7crssw2.js} +43 -43
  16. package/dist/cli/curator-llm-factory-kxnzvhje.js +82 -0
  17. package/dist/cli/{doctor-knowledge-receipt-phase-id-33bp8fcs.js → doctor-knowledge-receipt-phase-id-qvp1h3xv.js} +8 -8
  18. package/dist/cli/{evidence-summary-service-sb888pg8.js → evidence-summary-service-379skych.js} +19 -19
  19. package/dist/cli/{gate-evidence-rmk87c6m.js → gate-evidence-b4cfrrgn.js} +7 -7
  20. package/dist/cli/guardrail-explain-tcnfc3te.js +83 -0
  21. package/dist/cli/{guardrail-log-d18dcweh.js → guardrail-log-xe1evybk.js} +7 -7
  22. package/dist/cli/{guardrail-reset-1xeeetk7.js → guardrail-reset-jwx5hsgp.js} +43 -43
  23. package/dist/cli/{hive-promoter-44grgbq4.js → hive-promoter-nks9a9s8.js} +43 -43
  24. package/dist/cli/{index-xjqa26fs.js → index-0e1nxkte.js} +1 -1
  25. package/dist/cli/{index-63v3gmgr.js → index-1n7sf9gz.js} +2 -2
  26. package/dist/cli/{index-ajp4dabz.js → index-25zjz6kv.js} +5 -5
  27. package/dist/cli/{index-af3nmk6c.js → index-29z0w323.js} +7 -7
  28. package/dist/cli/{index-fsm9gv1p.js → index-2y7y0bxf.js} +43 -43
  29. package/dist/cli/{index-advcaree.js → index-4qreeddq.js} +4 -4
  30. package/dist/cli/{index-nb1c3342.js → index-4tfr4j1a.js} +7 -7
  31. package/dist/cli/{index-k6h66zm3.js → index-4twjbsfw.js} +2 -2
  32. package/dist/cli/{index-xw19x0t7.js → index-5dws7eyb.js} +1 -1
  33. package/dist/cli/{index-t0se5zwe.js → index-5gy5dc2n.js} +2 -2
  34. package/dist/cli/{index-pkgbrrn7.js → index-5s74qd5b.js} +1 -1
  35. package/dist/cli/{index-f32hs2vt.js → index-7a92gwbg.js} +4 -4
  36. package/dist/cli/{index-3txrbsa1.js → index-7bppy3ve.js} +4 -4
  37. package/dist/cli/{index-km4x7yfb.js → index-878ksabw.js} +11 -11
  38. package/dist/cli/{index-6shk3n43.js → index-89826pb5.js} +2 -2
  39. package/dist/cli/{index-ga1pcs49.js → index-8zj647hc.js} +1 -1
  40. package/dist/cli/{index-w52xyp9v.js → index-914wsfyy.js} +2 -2
  41. package/dist/cli/{index-b79a8pc2.js → index-a83gmv2e.js} +2 -2
  42. package/dist/cli/{index-d4cjbm4p.js → index-a9m7h5v0.js} +2 -2
  43. package/dist/cli/{index-50b8f6qz.js → index-asm2r4g2.js} +4 -4
  44. package/dist/cli/{index-yfmgbhwz.js → index-ba87gkb4.js} +20 -6
  45. package/dist/cli/{index-kvtwwj8b.js → index-bgzpw6ge.js} +1 -1
  46. package/dist/cli/{index-2wps5fec.js → index-br28jc6d.js} +3 -3
  47. package/dist/cli/{index-sgxbqba0.js → index-bzfn85kq.js} +119 -55
  48. package/dist/cli/{index-ysazjncb.js → index-cf003krm.js} +6 -6
  49. package/dist/cli/{index-4cm1p2kj.js → index-dt4cjxbz.js} +1 -1
  50. package/dist/cli/{index-f6e44xh2.js → index-dtet46e6.js} +7 -7
  51. package/dist/cli/{index-8bx6vhzk.js → index-e8k0v19e.js} +1 -1
  52. package/dist/cli/{index-mhqh2dc9.js → index-eaess7dm.js} +1 -1
  53. package/dist/cli/{index-r3gphy10.js → index-ejq082zj.js} +5 -5
  54. package/dist/cli/{index-ejfmgkt0.js → index-f54stv77.js} +3 -3
  55. package/dist/cli/{index-t433r606.js → index-fzqn2kk8.js} +2 -2
  56. package/dist/cli/{index-28zgn6sm.js → index-g8jd3h4r.js} +2 -2
  57. package/dist/cli/{index-s81tvz98.js → index-hcsz7bhg.js} +3 -3
  58. package/dist/cli/{index-jdw63xyd.js → index-k96fx4yw.js} +2 -2
  59. package/dist/cli/{index-9b6bxe9b.js → index-mbn4vn3z.js} +1 -1
  60. package/dist/cli/{index-7vnr5cmp.js → index-mtqwyjrg.js} +1 -1
  61. package/dist/cli/{index-025wg2re.js → index-nwswxes7.js} +3 -3
  62. package/dist/cli/{index-cje7tt58.js → index-q0bctx7k.js} +1 -1
  63. package/dist/cli/{index-vf6pqke0.js → index-qp3twbdz.js} +45 -45
  64. package/dist/cli/{index-vt8hk0pt.js → index-qta3x82z.js} +244 -106
  65. package/dist/cli/{index-v3bmeqqh.js → index-w8e73tp0.js} +12 -7
  66. package/dist/cli/{index-0yrsvwdf.js → index-w917g452.js} +6 -6
  67. package/dist/cli/{index-ney8qpg3.js → index-w9y482mp.js} +1 -1
  68. package/dist/cli/{index-edk2sgse.js → index-xen0j48x.js} +2 -2
  69. package/dist/cli/{index-867d9dhf.js → index-xf5v44qh.js} +3 -3
  70. package/dist/cli/{index-bwh9196c.js → index-ypvz2c60.js} +7 -7
  71. package/dist/cli/{index-95hc7xn4.js → index-yte4hqhv.js} +3 -3
  72. package/dist/cli/index.d.ts +2 -2
  73. package/dist/cli/index.js +60 -54
  74. package/dist/cli/{knowledge-escalator-naq700x5.js → knowledge-escalator-gzzr7cy2.js} +14 -14
  75. package/dist/cli/{knowledge-events-mmh5cya6.js → knowledge-events-b16yc189.js} +12 -12
  76. package/dist/cli/{knowledge-link-76egdqc9.js → knowledge-link-a5tvjqdt.js} +5 -5
  77. package/dist/cli/{knowledge-store-9dxr9jb9.js → knowledge-store-arj3by4h.js} +6 -6
  78. package/dist/cli/{knowledge-validator-eze3s6fn.js → knowledge-validator-b3qhjg0t.js} +8 -8
  79. package/dist/cli/{mcp-1x2tpk71.js → mcp-972t0jt0.js} +1 -1
  80. package/dist/cli/{model-preflight-hgb7kf5d.js → model-preflight-f1xvxk6e.js} +43 -43
  81. package/dist/cli/{pending-delegations-zg4q1k5q.js → pending-delegations-fv5xz799.js} +12 -12
  82. package/dist/cli/{pr-subscriptions-zw8aev5s.js → pr-subscriptions-4mcwj33s.js} +12 -12
  83. package/dist/cli/{pr-workflow-gate-dcbpd451.js → pr-workflow-gate-ap5cp211.js} +43 -43
  84. package/dist/cli/{runner-y529qa4d.js → runner-8qybgy4n.js} +6 -6
  85. package/dist/cli/{scan-cursor-pdxmndd0.js → scan-cursor-tceyckdx.js} +7 -7
  86. package/dist/cli/{schema-hzz32642.js → schema-pqevpe3m.js} +1 -1
  87. package/dist/cli/{scope-persistence-h4b6p951.js → scope-persistence-ta6ydymv.js} +15 -15
  88. package/dist/cli/{server-7gd7tqt5.js → server-s9bfax7h.js} +43 -43
  89. package/dist/cli/{skill-generator-7g7sca90.js → skill-generator-xdg4626x.js} +16 -16
  90. package/dist/cli/{snapshot-coordination-init-4q5ykq22.js → snapshot-coordination-init-wn0hnwyv.js} +43 -43
  91. package/dist/cli/{speckit-checkoff-5bfxs8r7.js → speckit-checkoff-8x139jpf.js} +4 -4
  92. package/dist/cli/{telemetry-9szfdfqv.js → telemetry-qaymh4gg.js} +1 -1
  93. package/dist/cli/{workspace-snapshot-nre732xt.js → workspace-snapshot-vfpnxjsp.js} +3 -3
  94. package/dist/cli/{worktree-collision-ownership-327d06qw.js → worktree-collision-ownership-as8hnnff.js} +13 -13
  95. package/dist/cli/{worktree-isolation-zqzs3wkk.js → worktree-isolation-7vrs8t9b.js} +49 -43
  96. package/dist/commands/turbo.d.ts +4 -3
  97. package/dist/config/constants.d.ts +2 -2
  98. package/dist/config/plan-schema.d.ts +16 -0
  99. package/dist/epic/phase-readiness.d.ts +4 -2
  100. package/dist/evaluation/ephemeral-agent-dispatcher.d.ts +11 -0
  101. package/dist/failures/provider-message-error.d.ts +32 -0
  102. package/dist/hooks/delegation-gate/worktree-isolation.d.ts +40 -0
  103. package/dist/hooks/delegation-gate.d.ts +13 -0
  104. package/dist/hooks/extractors.d.ts +2 -0
  105. package/dist/hooks/guardrails/index.d.ts +2 -0
  106. package/dist/hooks/guardrails/parallel-gate-attribution.d.ts +10 -0
  107. package/dist/index.js +415 -412
  108. package/dist/plan/ledger.d.ts +21 -3
  109. package/dist/sandbox/linux/bubblewrap-executor.d.ts +24 -0
  110. package/dist/services/skill-optimizer/store.d.ts +2 -2
  111. package/dist/tools/phase-complete.d.ts +4 -0
  112. package/opencode-swarm.schema.json +1 -1
  113. package/package.json +1 -1
  114. package/dist/cli/curator-llm-factory-tfn0cp68.js +0 -82
  115. package/dist/cli/guardrail-explain-n9ndp99q.js +0 -83
@@ -138,6 +138,14 @@ export interface AwaitingMergeRecord {
138
138
  export declare const awaitingMergeByCallID: Map<string, AwaitingMergeRecord>;
139
139
  export declare const standardWorktreeByCallID: Map<string, StandardWorktreeDispatch>;
140
140
  export declare const standardWorktreeSerializationSessions: Set<string>;
141
+ export declare const laneChildSessionAgents: Map<string, string>;
142
+ export declare function recordLaneChildSession(sessionId: string, agent: string): void;
143
+ /**
144
+ * Refuse a Task dispatch whose `task_id` resumes a lane child session the
145
+ * plugin created for a DIFFERENT agent. Resuming the same agent's session
146
+ * stays allowed; ids the plugin did not create are not judged here.
147
+ */
148
+ export declare function assertTaskIdNotForeignLaneSession(args: Record<string, unknown> | undefined): void;
141
149
  /**
142
150
  * FR-104 SC-111/SC-112: Per-session state tracking for serialization release.
143
151
  * Maps sessionID → serialization state for that session.
@@ -167,6 +175,33 @@ interface CleanupStandardWorktreeResult {
167
175
  cleanedBranch: boolean;
168
176
  preservedRecoveryLane: boolean;
169
177
  }
178
+ /**
179
+ * How long a lane dispatch waits for the worktree lifecycle lock.
180
+ *
181
+ * A holder can keep the lock across a recovery-lane session.create, bounded by
182
+ * `worktree.session_create_timeout_ms` (plus the settle grace), and the
183
+ * stale-lane cleanup after it. The wait therefore follows that budget plus a
184
+ * margin. Up to a 30s session.create budget (the default) it is capped so
185
+ * that the wait, this dispatch's own session.create, its settle grace and the
186
+ * provisioning work still fit in the host hook budget (10s at the default):
187
+ * a dispatch that overruns the hook is abandoned mid-provisioning, while a
188
+ * dispatch that stops here fails cleanly with STANDARD_WORKTREE_LIFECYCLE_BUSY.
189
+ * Above 30s there is no room left and the wait stays at its 10s floor, so the
190
+ * worst case exceeds the hook budget (61s at a 31s budget, 90s at 60s): a
191
+ * session.create budget that long is itself what overruns the hook.
192
+ */
193
+ declare function resolveWorktreeLifecycleLockWaitMs(sessionCreateTimeoutMs: number): number;
194
+ /**
195
+ * Acquire the worktree lifecycle lock, retrying within `waitMs`.
196
+ *
197
+ * The lock is held across the collision check (a git spawn) and the owner
198
+ * write, by every lane being provisioned and by init orphan recovery.
199
+ * `tryAcquireLock` alone gives up after about 310ms (5 retries, 10ms→500ms
200
+ * backoff, no jitter), so parallel coder dispatches that provision lanes at
201
+ * the same moment hard-stopped each other. Retry with jitter until the lock
202
+ * is free or the bounded wait is spent.
203
+ */
204
+ declare function acquireWorktreeLifecycleLockWithin(directory: string, taskId: string, waitMs: number): ReturnType<typeof tryAcquireLock>;
170
205
  export declare function getStandardWorktreeDegradationReason(sessionID: string): {
171
206
  reason: string;
172
207
  at: number;
@@ -411,6 +446,11 @@ export declare const _internals: {
411
446
  /** Background launch durability fallback: tag ownership without racing the child. */
412
447
  preserveBackgroundWorktreeOwnershipForCallId: typeof preserveBackgroundWorktreeOwnershipForCallId;
413
448
  tryAcquireWorktreeLifecycleLock: typeof tryAcquireLock;
449
+ acquireWorktreeLifecycleLockWithin: typeof acquireWorktreeLifecycleLockWithin;
450
+ /** Bounded wait for the lifecycle lock, derived from the session-create budget. */
451
+ resolveWorktreeLifecycleLockWaitMs: typeof resolveWorktreeLifecycleLockWaitMs;
452
+ now: () => number;
453
+ sleep: (ms: number) => Promise<void>;
414
454
  recordWorktreeProvisioningOwner: typeof recordWorktreeProvisioningOwner;
415
455
  removeWorktreeProvisioningOwner: typeof removeWorktreeProvisioningOwner;
416
456
  lookupWorktreeRecoveryAuthoritiesByTask: typeof lookupWorktreeRecoveryAuthoritiesByTask;
@@ -51,6 +51,18 @@ export declare function getPendingCoderScope(directory: string, taskId: string):
51
51
  * circular import `state.ts ↔ delegation-gate.ts`. Called by `resetSwarmState`.
52
52
  */
53
53
  export declare function clearPendingCoderScope(): void;
54
+ /**
55
+ * Whether Turbo may skip the Stage A re-delegation block for `taskId`.
56
+ *
57
+ * Tier 3 is defined by the files a task touches (security-sensitive paths,
58
+ * src/parallel/tier3-classifier.ts), the rule update_task_status already
59
+ * applies to Turbo's Stage B bypass. The gate used to guess it from the task
60
+ * id (`startsWith('3.')`): every phase-3 task was treated as Tier 3 and a
61
+ * security-sensitive task in any other phase was bypassed. Only a task whose
62
+ * planned `files_touched` are known and contain no Tier 3 path is bypassable;
63
+ * an unknown task, an empty file list or an unreadable plan is not.
64
+ */
65
+ declare function turboMayBypassTask(directory: string, taskId: string): Promise<boolean>;
54
66
  /**
55
67
  * Issue #1151: OpenCode v1.16.2 background subagents.
56
68
  *
@@ -539,6 +551,7 @@ export declare const _internals: {
539
551
  buildParallelExecutionGuidance: typeof buildParallelExecutionGuidance;
540
552
  extractTaskFileDirectives: typeof extractTaskFileDirectives;
541
553
  loadPlanJsonOnly: typeof loadPlanJsonOnly;
554
+ turboMayBypassTask: typeof turboMayBypassTask;
542
555
  recordPendingDelegationForBackground: typeof import("../background/pending-delegations.js").recordPendingDelegationDetailed;
543
556
  writeDelegationFallbackForBackground: typeof import("../background/pending-delegations.js").writeDelegationFallback;
544
557
  reserveBackgroundCoderSlotForDispatch: typeof import("../background/pending-delegations.js").reserveBackgroundCoderSlot;
@@ -63,6 +63,8 @@ export declare function extractPatterns(contextContent: string, maxChars?: numbe
63
63
  * never suppress the summary — the honest active phase is reported instead.
64
64
  */
65
65
  export declare function extractCurrentPhaseFromPlan(plan: Plan): string | null;
66
+ /** The sanitized `Phase N: name [STATUS]` label for one phase of the plan. */
67
+ export declare function extractPhaseLabelFromPlan(plan: Plan, phaseId: number): string | null;
66
68
  /**
67
69
  * Parse the stable numeric phase id embedded in a stored phase label.
68
70
  *
@@ -12,7 +12,9 @@ import { resolveEpicGateTaskAttribution } from '../../epic/gate-policy';
12
12
  import { assessSandboxEnforcement, getExecutor } from '../../sandbox/executor';
13
13
  import { dcCheckJunctionCreation } from './destructive-command';
14
14
  import { getMostRecentAssistantText, getProviderFailureFingerprint, isTransientProviderFailureText } from './messages-transform';
15
+ import { resolveParallelGateTaskAttribution } from './parallel-gate-attribution';
15
16
  export declare const _internals: {
17
+ resolveParallelGateTaskAttribution: typeof resolveParallelGateTaskAttribution;
16
18
  extractSwarmIdFromAgentName: typeof extractSwarmIdFromAgentName;
17
19
  getSwarmAgents: typeof getSwarmAgents;
18
20
  getMostRecentAssistantText: typeof getMostRecentAssistantText;
@@ -0,0 +1,10 @@
1
+ export type ParallelGateAttribution = {
2
+ kind: 'none';
3
+ } | {
4
+ kind: 'task';
5
+ taskId: string;
6
+ } | {
7
+ kind: 'unattributable';
8
+ message: string;
9
+ };
10
+ export declare function resolveParallelGateTaskAttribution(directory: string, sessionID: string, files: readonly string[] | null): Promise<ParallelGateAttribution>;