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
@@ -33,7 +33,7 @@ var CONSUMER_COST_ACCOUNTING = Object.freeze([
33
33
  "src/services/cost-accounting.ts:127"
34
34
  ]);
35
35
  var CONSUMER_GATE_STATS = Object.freeze(["src/evaluation/gate-stats.ts:99"]);
36
- var CONSUMER_HEARTBEAT_LISTENER = Object.freeze(["src/telemetry.ts:168"]);
36
+ var CONSUMER_HEARTBEAT_LISTENER = Object.freeze(["src/telemetry.ts:174"]);
37
37
  function defineEntry(kind, input) {
38
38
  const entry = {
39
39
  kind,
@@ -66,7 +66,7 @@ var CATALOG_SOURCE = [
66
66
  category: "lifecycle",
67
67
  severity: "info",
68
68
  privacyClass: "pseudonymous",
69
- producer: "src/telemetry.ts:473",
69
+ producer: "src/telemetry.ts:479",
70
70
  consumers: NO_CONSUMERS,
71
71
  futureOwnerIssue: ISSUE_SINK,
72
72
  retentionOwnerIssue: ISSUE_LIFECYCLE_RETENTION,
@@ -80,7 +80,7 @@ var CATALOG_SOURCE = [
80
80
  category: "lifecycle",
81
81
  severity: "info",
82
82
  privacyClass: "pseudonymous",
83
- producer: "src/telemetry.ts:477",
83
+ producer: "src/telemetry.ts:483",
84
84
  consumers: NO_CONSUMERS,
85
85
  futureOwnerIssue: ISSUE_SINK,
86
86
  retentionOwnerIssue: ISSUE_LIFECYCLE_RETENTION,
@@ -94,7 +94,7 @@ var CATALOG_SOURCE = [
94
94
  category: "lifecycle",
95
95
  severity: "info",
96
96
  privacyClass: "pseudonymous",
97
- producer: "src/telemetry.ts:481",
97
+ producer: "src/telemetry.ts:487",
98
98
  consumers: NO_CONSUMERS,
99
99
  futureOwnerIssue: ISSUE_SINK,
100
100
  retentionOwnerIssue: ISSUE_LIFECYCLE_RETENTION,
@@ -108,7 +108,7 @@ var CATALOG_SOURCE = [
108
108
  category: "lifecycle",
109
109
  severity: "info",
110
110
  privacyClass: "pseudonymous",
111
- producer: "src/telemetry.ts:518",
111
+ producer: "src/telemetry.ts:524",
112
112
  consumers: NO_CONSUMERS,
113
113
  futureOwnerIssue: ISSUE_SINK,
114
114
  retentionOwnerIssue: ISSUE_LIFECYCLE_RETENTION,
@@ -122,7 +122,7 @@ var CATALOG_SOURCE = [
122
122
  category: "lifecycle",
123
123
  severity: "info",
124
124
  privacyClass: "pseudonymous",
125
- producer: "src/telemetry.ts:566",
125
+ producer: "src/telemetry.ts:572",
126
126
  consumers: NO_CONSUMERS,
127
127
  futureOwnerIssue: ISSUE_SINK,
128
128
  retentionOwnerIssue: ISSUE_LIFECYCLE_RETENTION,
@@ -136,7 +136,7 @@ var CATALOG_SOURCE = [
136
136
  category: "lifecycle",
137
137
  severity: "debug",
138
138
  privacyClass: "pseudonymous",
139
- producer: "src/telemetry.ts:735",
139
+ producer: "src/telemetry.ts:754",
140
140
  consumers: CONSUMER_HEARTBEAT_LISTENER,
141
141
  retentionOwnerIssue: ISSUE_LIFECYCLE_RETENTION,
142
142
  requiredWorkflowIds: REQUIRE_SESSION,
@@ -149,7 +149,7 @@ var CATALOG_SOURCE = [
149
149
  category: "lifecycle",
150
150
  severity: "info",
151
151
  privacyClass: "pseudonymous",
152
- producer: "src/telemetry.ts:743",
152
+ producer: "src/telemetry.ts:762",
153
153
  consumers: NO_CONSUMERS,
154
154
  futureOwnerIssue: ISSUE_SINK,
155
155
  retentionOwnerIssue: ISSUE_LIFECYCLE_RETENTION,
@@ -162,7 +162,7 @@ var CATALOG_SOURCE = [
162
162
  category: "lifecycle",
163
163
  severity: "info",
164
164
  privacyClass: "pseudonymous",
165
- producer: "src/telemetry.ts:768",
165
+ producer: "src/telemetry.ts:787",
166
166
  consumers: NO_CONSUMERS,
167
167
  futureOwnerIssue: ISSUE_SINK,
168
168
  retentionOwnerIssue: ISSUE_LIFECYCLE_RETENTION,
@@ -176,7 +176,7 @@ var CATALOG_SOURCE = [
176
176
  category: "delegation",
177
177
  severity: "info",
178
178
  privacyClass: "pseudonymous",
179
- producer: "src/telemetry.ts:485",
179
+ producer: "src/telemetry.ts:491",
180
180
  consumers: NO_CONSUMERS,
181
181
  futureOwnerIssue: ISSUE_SINK,
182
182
  retentionOwnerIssue: ISSUE_LIFECYCLE_RETENTION,
@@ -190,7 +190,7 @@ var CATALOG_SOURCE = [
190
190
  category: "delegation",
191
191
  severity: "info",
192
192
  privacyClass: "pseudonymous",
193
- producer: "src/telemetry.ts:495",
193
+ producer: "src/telemetry.ts:501",
194
194
  consumers: CONSUMER_COST_ACCOUNTING,
195
195
  retentionOwnerIssue: ISSUE_COST_RETENTION,
196
196
  requiredWorkflowIds: REQUIRE_SESSION_AND_TASK,
@@ -203,7 +203,21 @@ var CATALOG_SOURCE = [
203
203
  category: "delegation",
204
204
  severity: "notice",
205
205
  privacyClass: "pseudonymous",
206
- producer: "src/telemetry.ts:599",
206
+ producer: "src/telemetry.ts:605",
207
+ consumers: NO_CONSUMERS,
208
+ futureOwnerIssue: ISSUE_SINK,
209
+ retentionOwnerIssue: ISSUE_LIFECYCLE_RETENTION,
210
+ requiredWorkflowIds: REQUIRE_SESSION,
211
+ otelMapping: "genai"
212
+ }
213
+ ],
214
+ [
215
+ "model_unresolved",
216
+ {
217
+ category: "delegation",
218
+ severity: "warning",
219
+ privacyClass: "pseudonymous",
220
+ producer: "src/telemetry.ts:619",
207
221
  consumers: NO_CONSUMERS,
208
222
  futureOwnerIssue: ISSUE_SINK,
209
223
  retentionOwnerIssue: ISSUE_LIFECYCLE_RETENTION,
@@ -217,7 +231,7 @@ var CATALOG_SOURCE = [
217
231
  category: "gate",
218
232
  severity: "info",
219
233
  privacyClass: "pseudonymous",
220
- producer: "src/telemetry.ts:527",
234
+ producer: "src/telemetry.ts:533",
221
235
  consumers: NO_CONSUMERS,
222
236
  futureOwnerIssue: ISSUE_SINK,
223
237
  retentionOwnerIssue: ISSUE_LIFECYCLE_RETENTION,
@@ -230,7 +244,7 @@ var CATALOG_SOURCE = [
230
244
  category: "gate",
231
245
  severity: "warning",
232
246
  privacyClass: "pseudonymous",
233
- producer: "src/telemetry.ts:544",
247
+ producer: "src/telemetry.ts:550",
234
248
  consumers: NO_CONSUMERS,
235
249
  futureOwnerIssue: ISSUE_SINK,
236
250
  retentionOwnerIssue: ISSUE_LIFECYCLE_RETENTION,
@@ -243,7 +257,7 @@ var CATALOG_SOURCE = [
243
257
  category: "gate",
244
258
  severity: "warning",
245
259
  privacyClass: "sensitive",
246
- producer: "src/telemetry.ts:531",
260
+ producer: "src/telemetry.ts:537",
247
261
  consumers: NO_CONSUMERS,
248
262
  futureOwnerIssue: ISSUE_SINK,
249
263
  retentionOwnerIssue: ISSUE_LIFECYCLE_RETENTION,
@@ -257,7 +271,7 @@ var CATALOG_SOURCE = [
257
271
  category: "gate",
258
272
  severity: "info",
259
273
  privacyClass: "pseudonymous",
260
- producer: "src/telemetry.ts:554",
274
+ producer: "src/telemetry.ts:560",
261
275
  consumers: CONSUMER_GATE_STATS,
262
276
  retentionOwnerIssue: ISSUE_LIFECYCLE_RETENTION,
263
277
  requiredWorkflowIds: REQUIRE_SESSION_AND_TASK
@@ -269,7 +283,7 @@ var CATALOG_SOURCE = [
269
283
  category: "cost",
270
284
  severity: "info",
271
285
  privacyClass: "pseudonymous",
272
- producer: "src/telemetry.ts:570",
286
+ producer: "src/telemetry.ts:576",
273
287
  consumers: NO_CONSUMERS,
274
288
  futureOwnerIssue: ISSUE_SINK,
275
289
  retentionOwnerIssue: ISSUE_COST_RETENTION,
@@ -282,7 +296,7 @@ var CATALOG_SOURCE = [
282
296
  category: "guardrail",
283
297
  severity: "notice",
284
298
  privacyClass: "pseudonymous",
285
- producer: "src/telemetry.ts:589",
299
+ producer: "src/telemetry.ts:595",
286
300
  consumers: NO_CONSUMERS,
287
301
  futureOwnerIssue: ISSUE_SINK,
288
302
  retentionOwnerIssue: ISSUE_SINK,
@@ -295,7 +309,7 @@ var CATALOG_SOURCE = [
295
309
  category: "guardrail",
296
310
  severity: "error",
297
311
  privacyClass: "pseudonymous",
298
- producer: "src/telemetry.ts:614",
312
+ producer: "src/telemetry.ts:633",
299
313
  consumers: NO_CONSUMERS,
300
314
  futureOwnerIssue: ISSUE_SINK,
301
315
  retentionOwnerIssue: ISSUE_SINK,
@@ -308,7 +322,7 @@ var CATALOG_SOURCE = [
308
322
  category: "guardrail",
309
323
  severity: "warning",
310
324
  privacyClass: "pseudonymous",
311
- producer: "src/telemetry.ts:623",
325
+ producer: "src/telemetry.ts:642",
312
326
  consumers: NO_CONSUMERS,
313
327
  futureOwnerIssue: ISSUE_SINK,
314
328
  retentionOwnerIssue: ISSUE_SINK,
@@ -321,7 +335,7 @@ var CATALOG_SOURCE = [
321
335
  category: "guardrail",
322
336
  severity: "warning",
323
337
  privacyClass: "sensitive",
324
- producer: "src/telemetry.ts:627",
338
+ producer: "src/telemetry.ts:646",
325
339
  consumers: NO_CONSUMERS,
326
340
  futureOwnerIssue: ISSUE_SINK,
327
341
  retentionOwnerIssue: ISSUE_SINK,
@@ -334,7 +348,7 @@ var CATALOG_SOURCE = [
334
348
  category: "guardrail",
335
349
  severity: "error",
336
350
  privacyClass: "sensitive",
337
- producer: "src/telemetry.ts:723",
351
+ producer: "src/telemetry.ts:742",
338
352
  consumers: NO_CONSUMERS,
339
353
  futureOwnerIssue: ISSUE_SINK,
340
354
  retentionOwnerIssue: ISSUE_SINK,
@@ -347,7 +361,7 @@ var CATALOG_SOURCE = [
347
361
  category: "guardrail",
348
362
  severity: "warning",
349
363
  privacyClass: "pseudonymous",
350
- producer: "src/telemetry.ts:731",
364
+ producer: "src/telemetry.ts:750",
351
365
  consumers: NO_CONSUMERS,
352
366
  futureOwnerIssue: ISSUE_SINK,
353
367
  retentionOwnerIssue: ISSUE_SINK,
@@ -360,7 +374,7 @@ var CATALOG_SOURCE = [
360
374
  category: "guardrail",
361
375
  severity: "warning",
362
376
  privacyClass: "pseudonymous",
363
- producer: "src/telemetry.ts:753",
377
+ producer: "src/telemetry.ts:772",
364
378
  consumers: NO_CONSUMERS,
365
379
  futureOwnerIssue: ISSUE_SINK,
366
380
  retentionOwnerIssue: ISSUE_SINK,
@@ -373,7 +387,7 @@ var CATALOG_SOURCE = [
373
387
  category: "guardrail",
374
388
  severity: "warning",
375
389
  privacyClass: "pseudonymous",
376
- producer: "src/telemetry.ts:641",
390
+ producer: "src/telemetry.ts:660",
377
391
  consumers: NO_CONSUMERS,
378
392
  futureOwnerIssue: ISSUE_SINK,
379
393
  retentionOwnerIssue: ISSUE_SINK,
@@ -386,7 +400,7 @@ var CATALOG_SOURCE = [
386
400
  category: "guardrail",
387
401
  severity: "warning",
388
402
  privacyClass: "pseudonymous",
389
- producer: "src/telemetry.ts:662",
403
+ producer: "src/telemetry.ts:681",
390
404
  consumers: NO_CONSUMERS,
391
405
  futureOwnerIssue: ISSUE_SINK,
392
406
  retentionOwnerIssue: ISSUE_SINK,
@@ -399,7 +413,7 @@ var CATALOG_SOURCE = [
399
413
  category: "guardrail",
400
414
  severity: "warning",
401
415
  privacyClass: "pseudonymous",
402
- producer: "src/telemetry.ts:676",
416
+ producer: "src/telemetry.ts:695",
403
417
  consumers: NO_CONSUMERS,
404
418
  futureOwnerIssue: ISSUE_SINK,
405
419
  retentionOwnerIssue: ISSUE_SINK,
@@ -412,7 +426,7 @@ var CATALOG_SOURCE = [
412
426
  category: "guardrail",
413
427
  severity: "error",
414
428
  privacyClass: "pseudonymous",
415
- producer: "src/telemetry.ts:693",
429
+ producer: "src/telemetry.ts:712",
416
430
  consumers: NO_CONSUMERS,
417
431
  futureOwnerIssue: ISSUE_SINK,
418
432
  retentionOwnerIssue: ISSUE_SINK,
@@ -425,7 +439,7 @@ var CATALOG_SOURCE = [
425
439
  category: "guardrail",
426
440
  severity: "error",
427
441
  privacyClass: "sensitive",
428
- producer: "src/telemetry.ts:710",
442
+ producer: "src/telemetry.ts:729",
429
443
  consumers: NO_CONSUMERS,
430
444
  futureOwnerIssue: ISSUE_SINK,
431
445
  retentionOwnerIssue: ISSUE_SINK,
@@ -438,7 +452,7 @@ var CATALOG_SOURCE = [
438
452
  category: "prm",
439
453
  severity: "error",
440
454
  privacyClass: "pseudonymous",
441
- producer: "src/telemetry.ts:899",
455
+ producer: "src/telemetry.ts:918",
442
456
  consumers: NO_CONSUMERS,
443
457
  futureOwnerIssue: ISSUE_SINK,
444
458
  retentionOwnerIssue: ISSUE_SINK,
@@ -451,7 +465,7 @@ var CATALOG_SOURCE = [
451
465
  category: "prm",
452
466
  severity: "notice",
453
467
  privacyClass: "pseudonymous",
454
- producer: "src/telemetry.ts:783",
468
+ producer: "src/telemetry.ts:802",
455
469
  consumers: NO_CONSUMERS,
456
470
  futureOwnerIssue: ISSUE_SINK,
457
471
  retentionOwnerIssue: ISSUE_SINK,
@@ -464,7 +478,7 @@ var CATALOG_SOURCE = [
464
478
  category: "prm",
465
479
  severity: "notice",
466
480
  privacyClass: "pseudonymous",
467
- producer: "src/telemetry.ts:797",
481
+ producer: "src/telemetry.ts:816",
468
482
  consumers: NO_CONSUMERS,
469
483
  futureOwnerIssue: ISSUE_SINK,
470
484
  retentionOwnerIssue: ISSUE_SINK,
@@ -477,7 +491,7 @@ var CATALOG_SOURCE = [
477
491
  category: "prm",
478
492
  severity: "warning",
479
493
  privacyClass: "pseudonymous",
480
- producer: "src/telemetry.ts:810",
494
+ producer: "src/telemetry.ts:829",
481
495
  consumers: NO_CONSUMERS,
482
496
  futureOwnerIssue: ISSUE_SINK,
483
497
  retentionOwnerIssue: ISSUE_SINK,
@@ -490,7 +504,7 @@ var CATALOG_SOURCE = [
490
504
  category: "prm",
491
505
  severity: "critical",
492
506
  privacyClass: "pseudonymous",
493
- producer: "src/telemetry.ts:824",
507
+ producer: "src/telemetry.ts:843",
494
508
  consumers: NO_CONSUMERS,
495
509
  futureOwnerIssue: ISSUE_SINK,
496
510
  retentionOwnerIssue: ISSUE_SINK,
@@ -558,7 +572,7 @@ var CATALOG_SOURCE = [
558
572
  category: "plan",
559
573
  severity: "warning",
560
574
  privacyClass: "sensitive",
561
- producer: "src/plan/manager.ts:1842",
575
+ producer: "src/plan/manager.ts:1861",
562
576
  consumers: NO_CONSUMERS,
563
577
  futureOwnerIssue: ISSUE_SINK,
564
578
  retentionOwnerIssue: ISSUE_PLAN_EVIDENCE_RETENTION,
@@ -600,7 +614,7 @@ var CATALOG_SOURCE = [
600
614
  category: "lifecycle",
601
615
  severity: "notice",
602
616
  privacyClass: "operational",
603
- producer: "src/telemetry.ts:861",
617
+ producer: "src/telemetry.ts:880",
604
618
  consumers: NO_CONSUMERS,
605
619
  futureOwnerIssue: ISSUE_SINK,
606
620
  retentionOwnerIssue: ISSUE_SINK
@@ -612,7 +626,7 @@ var CATALOG_SOURCE = [
612
626
  category: "knowledge",
613
627
  severity: "info",
614
628
  privacyClass: "pseudonymous",
615
- producer: "src/hooks/knowledge-receipt-observability.ts:191",
629
+ producer: "src/hooks/knowledge-receipt-observability.ts:197",
616
630
  consumers: NO_CONSUMERS,
617
631
  futureOwnerIssue: ISSUE_SINK,
618
632
  retentionOwnerIssue: ISSUE_LIFECYCLE_RETENTION,
@@ -640,7 +654,7 @@ var CATALOG_SOURCE = [
640
654
  category: "lifecycle",
641
655
  severity: "notice",
642
656
  privacyClass: "operational",
643
- producer: "src/telemetry.ts:883",
657
+ producer: "src/telemetry.ts:902",
644
658
  consumers: NO_CONSUMERS,
645
659
  futureOwnerIssue: ISSUE_SINK,
646
660
  retentionOwnerIssue: ISSUE_SINK,
@@ -907,6 +921,12 @@ var KNOWN_TELEMETRY_KEYS = Object.freeze({
907
921
  "toModel",
908
922
  "reason"
909
923
  ]),
924
+ model_unresolved: Object.freeze([
925
+ "sessionId",
926
+ "agentName",
927
+ "model",
928
+ "detail"
929
+ ]),
910
930
  hard_limit_hit: Object.freeze([
911
931
  "sessionId",
912
932
  "agentName",
@@ -1695,6 +1715,14 @@ var telemetry = {
1695
1715
  reason
1696
1716
  });
1697
1717
  },
1718
+ modelUnresolved(agentName, model, detail) {
1719
+ _internals.emit("model_unresolved", {
1720
+ sessionId: "preflight",
1721
+ agentName,
1722
+ model,
1723
+ detail
1724
+ });
1725
+ },
1698
1726
  hardLimitHit(sessionId, agentName, limitType, value) {
1699
1727
  _internals.emit("hard_limit_hit", {
1700
1728
  sessionId,
@@ -1,11 +1,8 @@
1
1
  // @bun
2
- import {
3
- bunSpawn
4
- } from "./index-zj6t9zgx.js";
5
2
  import {
6
3
  SWARM_WORKTREE_DIR_NAME,
7
4
  init_constants
8
- } from "./index-v3y3qg48.js";
5
+ } from "./index-cpg98bh1.js";
9
6
  import {
10
7
  init_git_executable,
11
8
  resolveGitExecutable
@@ -14,6 +11,9 @@ import {
14
11
  advisoryWarn,
15
12
  init_warning_buffer
16
13
  } from "./index-4rhhvd1a.js";
14
+ import {
15
+ bunSpawn
16
+ } from "./index-zj6t9zgx.js";
17
17
  import {
18
18
  log
19
19
  } from "./index-zgwm4ryv.js";
@@ -92,7 +92,7 @@ var _internals = {
92
92
  symlinkSync: fs.symlinkSync
93
93
  },
94
94
  writeScopeToDisk: async (directory, taskId, files) => {
95
- const { writeScopeToDisk: realWrite } = await import("./scope-persistence-dv6z7n08.js");
95
+ const { writeScopeToDisk: realWrite } = await import("./scope-persistence-mj1w3hqw.js");
96
96
  return realWrite(directory, taskId, files);
97
97
  },
98
98
  writeLaneProfileToDisk: async (_worktreePath, _laneIndex, _envOverrides) => {
@@ -139,6 +139,7 @@ async function removeLaneProfileFromDiskReal(worktreePath, laneIndex) {
139
139
  }
140
140
  }
141
141
  var WORKTREE_TIMEOUT_MS = 30000;
142
+ var WORKTREE_VERIFICATION_TIMEOUT_MS = 5000;
142
143
  var WIN_PATH_BUDGET = 250;
143
144
  var GIT_SPAWN_FAILURE_EXIT_CODE = 1;
144
145
  async function runGit(args, cwd, timeoutMs = WORKTREE_TIMEOUT_MS) {
@@ -399,6 +400,19 @@ async function provisionWorktree(directory, id, sessionId, options) {
399
400
  error: `Failed to create worktree: ${addResult.stderr.trim() || addResult.stdout.trim()}`
400
401
  };
401
402
  }
403
+ const revParseResult = await runGit(["rev-parse", "--git-dir"], worktreePath, WORKTREE_VERIFICATION_TIMEOUT_MS);
404
+ if (revParseResult.exitCode !== 0) {
405
+ const removeResult = await removeWorktree(worktreePath, directory, {
406
+ force: true,
407
+ worktreeDir: options.worktreeDir
408
+ }).catch((removalError) => ({
409
+ error: removalError instanceof Error ? removalError.message : String(removalError)
410
+ }));
411
+ const removalNote = "error" in removeResult ? `The lane could NOT be removed (${removeResult.error}) \u2014 it may collide with the next provisioning attempt; clear ${worktreePath} manually if retries fail.` : "The lane was removed; retry the dispatch.";
412
+ return {
413
+ error: `WORKTREE_VERIFICATION_FAILED: lane ${worktreePath} did not register as a usable git worktree (git rev-parse --git-dir failed in the lane: ${revParseResult.stderr.trim() || revParseResult.stdout.trim() || `exit ${revParseResult.exitCode}`}). ${removalNote}`
414
+ };
415
+ }
402
416
  const strategy = options.depsStrategy ?? "skip";
403
417
  if (strategy !== "skip") {
404
418
  const hostDepDir = path.join(directory, "node_modules");
@@ -2,20 +2,23 @@
2
2
  import {
3
3
  computePlanStructureHash,
4
4
  derivePlanId
5
- } from "./index-apjdytwx.js";
5
+ } from "./index-673axbjx.js";
6
6
  import {
7
7
  unsafePathTextReason
8
8
  } from "./index-556ja8an.js";
9
9
  import {
10
10
  PlanSchema
11
- } from "./index-0pcq32y2.js";
11
+ } from "./index-2vefr1f8.js";
12
+ import {
13
+ validateSwarmPath
14
+ } from "./index-w8pgjr75.js";
12
15
  import {
13
16
  atomicWriteSwarmFile,
14
17
  atomicWriteSwarmFileSync
15
- } from "./index-4evasm2b.js";
18
+ } from "./index-kggqpefz.js";
16
19
  import {
17
20
  assertProjectRoot
18
- } from "./index-pa86tpgt.js";
21
+ } from "./index-bghwrr59.js";
19
22
  import {
20
23
  require_proper_lockfile
21
24
  } from "./index-7g4c7s5r.js";
@@ -195,6 +198,16 @@ function hasScopeBindingDenyOverlay(binding) {
195
198
  const tombstone = scopeBindingTombstones.get(binding.generationId);
196
199
  return Boolean(tombstone && tombstone.bindingId === binding.bindingId && tombstone.revision >= binding.revision && tombstone.lifecycleState !== "live");
197
200
  }
201
+ function hasDeliberateScopeBindingDenyOverlay(binding) {
202
+ const tombstone = scopeBindingTombstones.get(binding.generationId);
203
+ return Boolean(tombstone && tombstone.bindingId === binding.bindingId && tombstone.revision >= binding.revision && tombstone.lifecycleState !== "live" && tombstone.lifecycleState !== "expired");
204
+ }
205
+ function clearSweepTombstoneForRevival(binding) {
206
+ const tombstone = scopeBindingTombstones.get(binding.generationId);
207
+ if (tombstone && tombstone.bindingId === binding.bindingId && tombstone.lifecycleState === "expired" && tombstone.revision <= binding.revision) {
208
+ scopeBindingTombstones.delete(binding.generationId);
209
+ }
210
+ }
198
211
  function installFailedRevocationOverlay(binding, reason) {
199
212
  const current = pendingScopeBindings.get(binding.generationId);
200
213
  if (!current || current.bindingId !== binding.bindingId || current.revision !== binding.revision)
@@ -1428,6 +1441,82 @@ function readCurrentPlan(directory) {
1428
1441
  return null;
1429
1442
  }
1430
1443
  }
1444
+ var SCOPE_BINDING_AUTO_REVIVE_WINDOW_MS = 24 * 60 * 60 * 1000;
1445
+ function appendScopeBindingRevivalEvent(workspace, revived) {
1446
+ try {
1447
+ const eventsPath = validateSwarmPath(workspace, "events.jsonl");
1448
+ fs2.mkdirSync(path2.dirname(eventsPath), { recursive: true });
1449
+ fs2.appendFileSync(eventsPath, `${JSON.stringify({
1450
+ type: "scope_binding_auto_recovered",
1451
+ timestamp: new Date().toISOString(),
1452
+ taskId: revived.taskId,
1453
+ sessionId: revived.ownerSessionId,
1454
+ generationId: revived.generationId,
1455
+ revision: revived.revision,
1456
+ expiresAt: new Date(revived.expiresAt).toISOString()
1457
+ })}
1458
+ `, "utf-8");
1459
+ } catch {}
1460
+ }
1461
+ function attemptIdleScopeBindingRevival(directory, resolution) {
1462
+ if (resolution.status !== "expired")
1463
+ return null;
1464
+ if (resolution.totalCandidates !== 1 || resolution.candidates.length !== 1)
1465
+ return null;
1466
+ const candidate = resolution.candidates[0];
1467
+ if (!candidate)
1468
+ return null;
1469
+ const now = Date.now();
1470
+ if (candidate.lifecycleState !== "live")
1471
+ return null;
1472
+ if (candidate.expiresAt > now)
1473
+ return null;
1474
+ if (now - candidate.expiresAt > SCOPE_BINDING_AUTO_REVIVE_WINDOW_MS)
1475
+ return null;
1476
+ if (hasDeliberateScopeBindingDenyOverlay(candidate))
1477
+ return null;
1478
+ let release;
1479
+ try {
1480
+ const resolvedWorkspace = fs2.realpathSync(directory);
1481
+ assertProjectRoot(resolvedWorkspace);
1482
+ const scopePath = getBindingFilePath(resolvedWorkspace, candidate);
1483
+ if (!isScopesDirSafe(resolvedWorkspace, getScopesDir(resolvedWorkspace)))
1484
+ return null;
1485
+ const lockPath = getGenerationLockPath(scopePath);
1486
+ if (!ensureLockTargetSync(lockPath))
1487
+ return null;
1488
+ release = lockSyncWithBoundedRetry(lockPath);
1489
+ const raw = readBoundedFile(scopePath);
1490
+ if (!raw)
1491
+ return null;
1492
+ const current = validateScopeBindingPayload(resolvedWorkspace, JSON.parse(raw));
1493
+ if (!current || current.bindingId !== candidate.bindingId || current.generationId !== candidate.generationId || current.revision !== candidate.revision || current.lifecycleState !== "live" || current.expiresAt > Date.now() || Date.now() - current.expiresAt > SCOPE_BINDING_AUTO_REVIVE_WINDOW_MS)
1494
+ return null;
1495
+ const revivedAt = Date.now();
1496
+ const revived = {
1497
+ ...current,
1498
+ revision: current.revision + 1,
1499
+ updatedAt: revivedAt,
1500
+ leaseStartedAt: revivedAt,
1501
+ expiresAt: revivedAt + DEFAULT_SCOPE_BINDING_TTL_MS
1502
+ };
1503
+ atomicWriteSync(scopePath, JSON.stringify(revived, null, 2));
1504
+ const verifiedRaw = readBoundedFile(scopePath);
1505
+ const verified = verifiedRaw ? validateScopeBindingPayload(resolvedWorkspace, JSON.parse(verifiedRaw)) : null;
1506
+ if (!verified || verified.revision !== revived.revision || verified.lifecycleState !== "live" || verified.expiresAt !== revived.expiresAt)
1507
+ return null;
1508
+ clearSweepTombstoneForRevival(revived);
1509
+ appendScopeBindingRevivalEvent(resolvedWorkspace, revived);
1510
+ return revived;
1511
+ } catch {
1512
+ return null;
1513
+ } finally {
1514
+ if (release)
1515
+ try {
1516
+ release();
1517
+ } catch {}
1518
+ }
1519
+ }
1431
1520
  function resolveAuthorizedScopeBindingForPlan(input) {
1432
1521
  const resolution = resolveAuthorizedScopeBindingForPlanDetailed(input);
1433
1522
  return resolution.status === "found" ? resolution.binding : null;
@@ -1451,6 +1540,14 @@ function resolveAuthorizedScopeBindingForPlanDetailed(input) {
1451
1540
  const admission = registerScopeBinding(durable.binding);
1452
1541
  return admission.ok ? durable : { status: "overloaded" };
1453
1542
  }
1543
+ if (durable.status === "expired") {
1544
+ const revived = attemptIdleScopeBindingRevival(input.directory, durable);
1545
+ if (revived) {
1546
+ const admission = registerScopeBinding(revived);
1547
+ if (admission.ok)
1548
+ return { status: "found", binding: revived };
1549
+ }
1550
+ }
1454
1551
  if (durable.status !== "not_declared")
1455
1552
  return durable;
1456
1553
  return { status: "not_declared" };
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  atomicWriteFile
4
- } from "./index-6q3agdmr.js";
4
+ } from "./index-j20fzn0w.js";
5
5
  import {
6
6
  init_logger,
7
7
  warn