opencode-swarm 7.188.5 → 7.188.7

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 (91) hide show
  1. package/README.md +2 -2
  2. package/binaries/win32-arm64/swarm-sandbox-runner.exe +0 -0
  3. package/binaries/win32-x64/swarm-sandbox-runner.exe +0 -0
  4. package/dist/cli/{auto-checkpoint-6z6dhqak.js → auto-checkpoint-1z9d2jrk.js} +8 -8
  5. package/dist/cli/{checkpoint-99vqentz.js → checkpoint-f8165pv4.js} +13 -13
  6. package/dist/cli/{coder-settlement-07dkrqvy.js → coder-settlement-gaby6spt.js} +9 -9
  7. package/dist/cli/{config-doctor-0pqexbab.js → config-doctor-4wgw6nak.js} +12 -12
  8. package/dist/cli/{core-zx4az38t.js → core-y89texpp.js} +2 -2
  9. package/dist/cli/{curation-policy-nxcx99yp.js → curation-policy-65ckmmd5.js} +5 -5
  10. package/dist/cli/{curator-drift-0ne6gnj0.js → curator-drift-rpwrx355.js} +6 -6
  11. package/dist/cli/{curator-llm-factory-gdedzs6k.js → curator-llm-factory-1qbcj7vs.js} +36 -36
  12. package/dist/cli/{curator-s08eqma1.js → curator-tkz65fvw.js} +36 -36
  13. package/dist/cli/{doctor-knowledge-receipt-phase-id-kpzaepq8.js → doctor-knowledge-receipt-phase-id-11q7en6t.js} +7 -7
  14. package/dist/cli/{evidence-summary-service-xadab4ym.js → evidence-summary-service-hn7vdm45.js} +16 -16
  15. package/dist/cli/{gate-evidence-c3d7ewv4.js → gate-evidence-sxh3r64f.js} +6 -6
  16. package/dist/cli/{guardrail-explain-enbr5ne9.js → guardrail-explain-e0wbeyk1.js} +37 -37
  17. package/dist/cli/{guardrail-log-0g59n4ae.js → guardrail-log-gzrj46h0.js} +7 -7
  18. package/dist/cli/{guardrail-reset-e0m3p15n.js → guardrail-reset-7z62s1j5.js} +36 -36
  19. package/dist/cli/{hive-promoter-1jb0t5g2.js → hive-promoter-88d95wk8.js} +36 -36
  20. package/dist/cli/{index-3b71hf2k.js → index-03ad14qc.js} +2 -2
  21. package/dist/cli/{index-sg2agtt5.js → index-0j5ggeem.js} +1 -1
  22. package/dist/cli/{index-j9swvmt3.js → index-1xa8wq76.js} +1 -1
  23. package/dist/cli/{index-txr48a64.js → index-2vtrjm19.js} +38 -38
  24. package/dist/cli/{index-vn8phy76.js → index-2wctq2hn.js} +1 -1
  25. package/dist/cli/{index-br33a6v7.js → index-5102w44y.js} +3 -3
  26. package/dist/cli/{index-98zfmfnn.js → index-61kszszd.js} +4 -4
  27. package/dist/cli/{index-0cdkb7e8.js → index-7eajwwfg.js} +4 -4
  28. package/dist/cli/{index-w5p9crxx.js → index-7k9hdn0b.js} +4 -4
  29. package/dist/cli/{index-03ng9y76.js → index-7zyktm9f.js} +7 -7
  30. package/dist/cli/{index-wx43mc8h.js → index-8q8783g0.js} +1 -1
  31. package/dist/cli/{index-8f0j6kf2.js → index-8sqyx5rh.js} +3 -3
  32. package/dist/cli/{index-z11watrb.js → index-8xabhfwr.js} +2 -2
  33. package/dist/cli/{index-ykaaejka.js → index-9czp2dcg.js} +3 -3
  34. package/dist/cli/{index-9qbn3chx.js → index-9tes309n.js} +1 -1
  35. package/dist/cli/{index-85npnq5t.js → index-a4s5yrdd.js} +4 -4
  36. package/dist/cli/{index-d95b3yce.js → index-c016phsk.js} +6 -6
  37. package/dist/cli/{index-4ak3ewt2.js → index-c937rpbm.js} +3 -3
  38. package/dist/cli/{index-h83221w1.js → index-d3rjvm9e.js} +3 -3
  39. package/dist/cli/{index-dd258pfn.js → index-eh0sg1pz.js} +4 -4
  40. package/dist/cli/{index-4m7cywkf.js → index-emh69vk9.js} +90 -77
  41. package/dist/cli/{index-9f7y0rym.js → index-ffmw6af9.js} +36 -36
  42. package/dist/cli/{index-cjekszvy.js → index-g39cmzpj.js} +600 -4
  43. package/dist/cli/{index-jevq7a7b.js → index-ghjg1rxe.js} +2 -2
  44. package/dist/cli/{index-5nwfz9bn.js → index-hh7pa3yk.js} +1 -1
  45. package/dist/cli/{index-jc2ndtdt.js → index-k8sarme1.js} +1 -1
  46. package/dist/cli/{index-p746x44z.js → index-kap459mr.js} +4 -4
  47. package/dist/cli/{index-bjh6cw86.js → index-m9g7s9ee.js} +4 -4
  48. package/dist/cli/{index-3jn6155r.js → index-pnfd3s7s.js} +1 -1
  49. package/dist/cli/{index-hq7mfqe5.js → index-q9kefh33.js} +1 -1
  50. package/dist/cli/{index-ar33mkxc.js → index-rw0c6qtt.js} +4 -4
  51. package/dist/cli/{index-f1wqew85.js → index-snwj9ptc.js} +2 -2
  52. package/dist/cli/{index-4zran0jk.js → index-twb3f4tk.js} +1 -1
  53. package/dist/cli/{index-dmdg2zay.js → index-wrdktgpy.js} +2 -2
  54. package/dist/cli/{index-1tgkj4mf.js → index-xj3k6x1h.js} +2 -2
  55. package/dist/cli/{index-n7vy4gb3.js → index-xsdphmet.js} +6 -6
  56. package/dist/cli/{index-vktygb4k.js → index-y3sk68m5.js} +2 -2
  57. package/dist/cli/{index-1kd2cbcz.js → index-y8z9x87e.js} +3 -3
  58. package/dist/cli/{index-fbwerevq.js → index-yj1cwps4.js} +1 -1
  59. package/dist/cli/{index-dmnvgc03.js → index-ytms8x1h.js} +4 -4
  60. package/dist/cli/{index-bstjg81q.js → index-zfbxfm2m.js} +33 -33
  61. package/dist/cli/index.js +37 -37
  62. package/dist/cli/{knowledge-escalator-c65r55bv.js → knowledge-escalator-ejfb2e7c.js} +13 -13
  63. package/dist/cli/{knowledge-events-exc94dr2.js → knowledge-events-3fzfehwy.js} +11 -11
  64. package/dist/cli/{knowledge-link-kgt3zx0c.js → knowledge-link-h4pdcnya.js} +4 -4
  65. package/dist/cli/{knowledge-store-b2qm637m.js → knowledge-store-swxk4tr6.js} +5 -5
  66. package/dist/cli/{knowledge-validator-44pn1xrn.js → knowledge-validator-0a1at9gm.js} +7 -7
  67. package/dist/cli/{mcp-6qjt8ey7.js → mcp-0ah7s1j0.js} +1 -1
  68. package/dist/cli/{model-preflight-dh9dadg8.js → model-preflight-nfvapzyj.js} +80 -36
  69. package/dist/cli/{pending-delegations-vcqw78d8.js → pending-delegations-hynywgkj.js} +7 -7
  70. package/dist/cli/{pr-subscriptions-2vp2sxjb.js → pr-subscriptions-k86p5qcn.js} +7 -7
  71. package/dist/cli/{pr-workflow-gate-cy24tc3c.js → pr-workflow-gate-3ett6hjh.js} +36 -36
  72. package/dist/cli/{runner-zeqpd2c2.js → runner-4hfmp1ag.js} +5 -5
  73. package/dist/cli/{scan-cursor-3hyz0qnh.js → scan-cursor-9961dhv1.js} +6 -6
  74. package/dist/cli/{schema-4s2nnpqt.js → schema-s5zbnzmv.js} +2 -2
  75. package/dist/cli/{scope-persistence-1bvaeene.js → scope-persistence-2w562h83.js} +12 -12
  76. package/dist/cli/{server-zb4j57w6.js → server-vrk0k61v.js} +36 -36
  77. package/dist/cli/{skill-generator-fqh79jr7.js → skill-generator-bfcjzp20.js} +15 -15
  78. package/dist/cli/{snapshot-coordination-init-v50k6v2v.js → snapshot-coordination-init-8ykpp5m6.js} +36 -36
  79. package/dist/cli/{speckit-checkoff-mcxxpmy4.js → speckit-checkoff-3x52vw64.js} +4 -4
  80. package/dist/cli/{telemetry-eq1cwq2x.js → telemetry-kvhe94gs.js} +1 -1
  81. package/dist/cli/{worktree-collision-ownership-fk6spbrf.js → worktree-collision-ownership-kjw1pqfc.js} +7 -7
  82. package/dist/cli/{worktree-isolation-ht89tqrc.js → worktree-isolation-xdgm4ekx.js} +36 -36
  83. package/dist/config/consumers.d.ts +35 -0
  84. package/dist/host/v2/events.d.ts +19 -1
  85. package/dist/host/v2/model-apply.d.ts +39 -0
  86. package/dist/host/v2/setup.d.ts +0 -35
  87. package/dist/index.js +16 -16
  88. package/dist/models/task-model-routing.d.ts +8 -0
  89. package/dist/services/model-preflight.d.ts +24 -0
  90. package/dist/utils/provider-error-classification.d.ts +30 -4
  91. package/package.json +1 -1
@@ -8,14 +8,14 @@ import {
8
8
  protectedRoots,
9
9
  redactDecisionLineForArchive,
10
10
  stableCanonicalStringify
11
- } from "./index-w5p9crxx.js";
11
+ } from "./index-7k9hdn0b.js";
12
12
  import {
13
13
  detectStraySwarmDirs,
14
14
  readDoctorArtifact,
15
15
  removeStraySwarmDir,
16
16
  resolvePlanParallelizationFlag,
17
17
  runConfigDoctor
18
- } from "./index-cjekszvy.js";
18
+ } from "./index-g39cmzpj.js";
19
19
  import {
20
20
  archiveEvidence,
21
21
  checkRequirementCoverage,
@@ -27,7 +27,7 @@ import {
27
27
  sanitizeTaskId,
28
28
  saveEvidence,
29
29
  validateProjectRoot
30
- } from "./index-1kd2cbcz.js";
30
+ } from "./index-y8z9x87e.js";
31
31
  import {
32
32
  JAVA_SYMBOL_GRAMMAR,
33
33
  LANGUAGE_REGISTRY,
@@ -48,7 +48,7 @@ import {
48
48
  runEvaluation,
49
49
  runExternalTool,
50
50
  withDisposableWorktree
51
- } from "./index-jc2ndtdt.js";
51
+ } from "./index-k8sarme1.js";
52
52
  import {
53
53
  EvaluationTaskV1Schema,
54
54
  GateAuditManifestV1Schema,
@@ -65,7 +65,7 @@ import {
65
65
  saveGateAuditResult,
66
66
  savePromotionDecision,
67
67
  saveTaskSetSnapshot
68
- } from "./index-z11watrb.js";
68
+ } from "./index-8xabhfwr.js";
69
69
  import {
70
70
  canonicalHash,
71
71
  canonicalJson,
@@ -81,7 +81,7 @@ import {
81
81
  alreadyCuratedThisGeneration,
82
82
  claimNextScanBatch,
83
83
  resolveCohortId
84
- } from "./index-f1wqew85.js";
84
+ } from "./index-snwj9ptc.js";
85
85
  import {
86
86
  CURATOR_CONSOLIDATION_PROMPT,
87
87
  CURATOR_INIT_PROMPT,
@@ -100,13 +100,13 @@ import {
100
100
  getGroupCommitWriter,
101
101
  importLegacyJsonl,
102
102
  readPriorDriftReports
103
- } from "./index-3jn6155r.js";
103
+ } from "./index-pnfd3s7s.js";
104
104
  import {
105
105
  assertNoUnsettledCoderDispatch,
106
106
  listCoderSettlementWalStates,
107
107
  recoverCoderSettlement,
108
108
  recoverStaleCoderSettlements
109
- } from "./index-ar33mkxc.js";
109
+ } from "./index-rw0c6qtt.js";
110
110
  import {
111
111
  BUNDLED_PROJECT_SKILL_ROOT,
112
112
  DEFAULT_SKILL_MIN_CONFIDENCE,
@@ -127,11 +127,11 @@ import {
127
127
  retireSkill,
128
128
  selectCandidateEntries,
129
129
  syncBundledProjectSkillsIfMissingAsync
130
- } from "./index-4ak3ewt2.js";
130
+ } from "./index-c937rpbm.js";
131
131
  import {
132
132
  buildEscalationBriefing,
133
133
  readRecentEscalations
134
- } from "./index-n7vy4gb3.js";
134
+ } from "./index-xsdphmet.js";
135
135
  import {
136
136
  parsePorcelainV2Snapshot,
137
137
  resolveCommitCountSince,
@@ -180,7 +180,7 @@ import {
180
180
  sweepStale,
181
181
  unsubscribe,
182
182
  updateSnapshot
183
- } from "./index-ykaaejka.js";
183
+ } from "./index-9czp2dcg.js";
184
184
  import {
185
185
  WORKTREE_LIFECYCLE_LOCK_FILE,
186
186
  recordWorktreeProvisioningOwner,
@@ -211,7 +211,7 @@ import {
211
211
  resolveWorkingDirectory,
212
212
  swarmOverwriteCandidates,
213
213
  trackedDirtyCandidates
214
- } from "./index-85npnq5t.js";
214
+ } from "./index-a4s5yrdd.js";
215
215
  import {
216
216
  MAX_TRANSIENT_RETRIES,
217
217
  PlanRecoverySupersededError,
@@ -238,7 +238,7 @@ import {
238
238
  transientBackoff,
239
239
  updateTaskStatus,
240
240
  withPlanLifecycleLock
241
- } from "./index-03ng9y76.js";
241
+ } from "./index-7zyktm9f.js";
242
242
  import {
243
243
  containsControlChars,
244
244
  containsPathTraversal,
@@ -254,7 +254,7 @@ import {
254
254
  resolveSpeckitProjection,
255
255
  validateSpeckit,
256
256
  writeProjectedSpecSync
257
- } from "./index-vn8phy76.js";
257
+ } from "./index-2wctq2hn.js";
258
258
  import {
259
259
  clearWorktreeMergeStatus,
260
260
  getAllWorktreeMergeFailures,
@@ -285,7 +285,7 @@ import {
285
285
  transitionTaskWorkflowEvidenceWithStatus,
286
286
  withTaskEvidenceTransaction,
287
287
  writeWorkflowWalFile
288
- } from "./index-8f0j6kf2.js";
288
+ } from "./index-8sqyx5rh.js";
289
289
  import {
290
290
  isPathUnderSwarmWorktreeBase,
291
291
  listLiveLaneOwners,
@@ -294,7 +294,7 @@ import {
294
294
  recordLiveLaneOwner,
295
295
  removeWorktree,
296
296
  resolveWorktreeBaseDir
297
- } from "./index-1tgkj4mf.js";
297
+ } from "./index-xj3k6x1h.js";
298
298
  import {
299
299
  DEFAULT_STALE_DELEGATION_TIMEOUT_MS,
300
300
  DELEGATION_COMPACTION_HIGH_WATER_BYTES,
@@ -328,7 +328,7 @@ import {
328
328
  scanBackgroundCoderReservationsForAdmission,
329
329
  scanDelegationsForRecovery,
330
330
  sweepStaleDelegations
331
- } from "./index-0cdkb7e8.js";
331
+ } from "./index-7eajwwfg.js";
332
332
  import {
333
333
  MAX_EVENT_LOG_ENTRIES,
334
334
  _internals,
@@ -340,7 +340,7 @@ import {
340
340
  recordHiveKnowledgeEvent,
341
341
  recordKnowledgeEvent,
342
342
  resolveKnowledgeEventsPath
343
- } from "./index-p746x44z.js";
343
+ } from "./index-kap459mr.js";
344
344
  import {
345
345
  commitDisplayedMembership,
346
346
  commitEmptyRetrieval,
@@ -353,7 +353,7 @@ import {
353
353
  queryLiveMemberships,
354
354
  reconcilePhaseClose,
355
355
  recordPhaseCloseIntent
356
- } from "./index-98zfmfnn.js";
356
+ } from "./index-61kszszd.js";
357
357
  import {
358
358
  sanitizeContextText
359
359
  } from "./index-m9zzj4ee.js";
@@ -384,18 +384,18 @@ import {
384
384
  validateActionableFields,
385
385
  validateLesson,
386
386
  validateSkillPath
387
- } from "./index-bjh6cw86.js";
387
+ } from "./index-m9g7s9ee.js";
388
388
  import {
389
389
  MAX_CURATION_PROPOSALS,
390
390
  authorizeCuration,
391
391
  buildConfigFingerprintInput
392
- } from "./index-hq7mfqe5.js";
392
+ } from "./index-q9kefh33.js";
393
393
  import {
394
394
  cohortConfigFingerprint
395
395
  } from "./index-rtry5xyf.js";
396
396
  import {
397
397
  resolveWorktreeIsolationConfig
398
- } from "./index-br33a6v7.js";
398
+ } from "./index-5102w44y.js";
399
399
  import {
400
400
  RetrospectiveEvidenceSchema
401
401
  } from "./index-kbkk7vnh.js";
@@ -407,7 +407,7 @@ import {
407
407
  clearScopeBindings,
408
408
  readAuthoritativeScopeBindingSet,
409
409
  readDeclaredScopeFilesFromBindings
410
- } from "./index-vktygb4k.js";
410
+ } from "./index-y3sk68m5.js";
411
411
  import {
412
412
  clearPlanLedgerForReset,
413
413
  computePlanStructureHash,
@@ -423,7 +423,7 @@ import {
423
423
  replayFromLedgerWithStatus,
424
424
  resolvePlanningProfile,
425
425
  takeSnapshotEvent
426
- } from "./index-dmnvgc03.js";
426
+ } from "./index-ytms8x1h.js";
427
427
  import {
428
428
  CORE_EVENT_LOCKED,
429
429
  appendCoreEventSync,
@@ -433,7 +433,7 @@ import {
433
433
  hasSpecDriftAuditEvent,
434
434
  hasTaskRepairAuditEvent,
435
435
  readCoreEvents
436
- } from "./index-dmdg2zay.js";
436
+ } from "./index-wrdktgpy.js";
437
437
  import {
438
438
  DEFAULT_QA_GATES,
439
439
  computeProfileHash,
@@ -481,7 +481,7 @@ import {
481
481
  observeModelLimitResolution,
482
482
  observeStoreHealth,
483
483
  readLearningHealth
484
- } from "./index-j9swvmt3.js";
484
+ } from "./index-1xa8wq76.js";
485
485
  import {
486
486
  appendKnowledge,
487
487
  appendRejectedLesson,
@@ -512,7 +512,7 @@ import {
512
512
  transactFile,
513
513
  transactKnowledge,
514
514
  wordBigrams
515
- } from "./index-d95b3yce.js";
515
+ } from "./index-c016phsk.js";
516
516
  import {
517
517
  readTailJsonl,
518
518
  readTailJsonlDetailed,
@@ -533,13 +533,13 @@ import {
533
533
  resolveLinkDir,
534
534
  sanitizeLinkId,
535
535
  writeLinkPointer
536
- } from "./index-wx43mc8h.js";
536
+ } from "./index-8q8783g0.js";
537
537
  import {
538
538
  atomicWriteFile
539
- } from "./index-5nwfz9bn.js";
539
+ } from "./index-hh7pa3yk.js";
540
540
  import {
541
541
  withEvidenceLock
542
- } from "./index-4zran0jk.js";
542
+ } from "./index-twb3f4tk.js";
543
543
  import {
544
544
  assertProjectRoot
545
545
  } from "./index-t7hmqgjy.js";
@@ -553,7 +553,7 @@ import {
553
553
  pseudonymousRef,
554
554
  resolveLineageSalt,
555
555
  telemetry
556
- } from "./index-h83221w1.js";
556
+ } from "./index-d3rjvm9e.js";
557
557
  import {
558
558
  SESSION_KEY_SEPARATOR,
559
559
  canonicalRootKey,
@@ -593,7 +593,7 @@ import {
593
593
  loadGateOverrides,
594
594
  loadPluginConfig,
595
595
  loadPluginConfigWithMeta
596
- } from "./index-9qbn3chx.js";
596
+ } from "./index-9tes309n.js";
597
597
  import {
598
598
  addDeferredWarning,
599
599
  advisoryWarn,
@@ -625,7 +625,7 @@ import {
625
625
  resolveContextWindow,
626
626
  resolveGeneratedAgentRole,
627
627
  stripKnownSwarmPrefix
628
- } from "./index-jevq7a7b.js";
628
+ } from "./index-ghjg1rxe.js";
629
629
  import {
630
630
  AGENT_TOOL_MAP,
631
631
  ALL_AGENT_NAMES,
@@ -648,7 +648,7 @@ import {
648
648
  init_agent_names,
649
649
  init_constants,
650
650
  init_tool_metadata
651
- } from "./index-bstjg81q.js";
651
+ } from "./index-zfbxfm2m.js";
652
652
  import {
653
653
  KNOWLEDGE_SCHEMA_VERSION,
654
654
  OUTCOME_BLOCK_THRESHOLD,
@@ -3414,7 +3414,7 @@ async function importLegacyPrWorkflowGateStateIfNeeded(directory, sessionID, all
3414
3414
  return null;
3415
3415
  throw error2;
3416
3416
  }
3417
- const legacy = allowSalvagedImport ? (await (await import("./pr-workflow-gate-cy24tc3c.js")).readPrWorkflowGateStateForRecovery(directory, sessionID))?.state ?? null : await readPrWorkflowGateStateFileFromDisk(filePath, sessionID);
3417
+ const legacy = allowSalvagedImport ? (await (await import("./pr-workflow-gate-3ett6hjh.js")).readPrWorkflowGateStateForRecovery(directory, sessionID))?.state ?? null : await readPrWorkflowGateStateFileFromDisk(filePath, sessionID);
3418
3418
  if (!legacy)
3419
3419
  return null;
3420
3420
  const namespace = workflowGateStateCoordinationNamespace(sessionID);
@@ -3501,7 +3501,7 @@ async function deleteStateWhileLocked(directory, sessionID, options = {}) {
3501
3501
  let recoveryState = null;
3502
3502
  if (!currentAuthoritative) {
3503
3503
  if (options.allowSalvagedRead) {
3504
- const { readPrWorkflowGateStateForRecovery } = await import("./pr-workflow-gate-cy24tc3c.js");
3504
+ const { readPrWorkflowGateStateForRecovery } = await import("./pr-workflow-gate-3ett6hjh.js");
3505
3505
  recoveryState = (await readPrWorkflowGateStateForRecovery(directory, normalizedSessionID))?.state ?? null;
3506
3506
  }
3507
3507
  if (!recoveryState) {
@@ -15074,7 +15074,7 @@ function isLaneOwnedByCurrentSession(branchName, expectedSessionId) {
15074
15074
  return extracted === expectedSessionId;
15075
15075
  }
15076
15076
  async function inspectStandardWorktreeCollisionOwnership(identity) {
15077
- const collisionOwnership = await import("./worktree-collision-ownership-fk6spbrf.js");
15077
+ const collisionOwnership = await import("./worktree-collision-ownership-kjw1pqfc.js");
15078
15078
  return collisionOwnership.inspectStandardWorktreeCollisionOwnership(identity);
15079
15079
  }
15080
15080
  async function runRecoveryGit(directory, args, timeoutMs = 15000) {
@@ -15500,7 +15500,7 @@ async function precreateStandardWorktreeSession(args) {
15500
15500
  const laneProfile = computeLaneRuntimeProfile(worktreeConfig.runtime_isolation, laneIndex, handle.worktreePath);
15501
15501
  if (laneProfile) {
15502
15502
  try {
15503
- const { writeLaneProfileToDiskReal } = await import("./core-zx4az38t.js");
15503
+ const { writeLaneProfileToDiskReal } = await import("./core-y89texpp.js");
15504
15504
  await writeLaneProfileToDiskReal(handle.worktreePath, laneProfile.laneIndex, laneProfile.envOverrides);
15505
15505
  } catch {}
15506
15506
  }
@@ -16479,7 +16479,7 @@ async function finishStandardWorktreeDispatch(directory, dispatch, config, callI
16479
16479
  }
16480
16480
  clearWorktreeMergeStatus(statusKey);
16481
16481
  try {
16482
- const { removeLaneProfileFromDiskReal } = await import("./core-zx4az38t.js");
16482
+ const { removeLaneProfileFromDiskReal } = await import("./core-y89texpp.js");
16483
16483
  await removeLaneProfileFromDiskReal(dispatch.handle.worktreePath, dispatch.laneIndex);
16484
16484
  } catch {}
16485
16485
  const state = serializationStateBySessionID.get(dispatch.parentSessionID);
@@ -16881,7 +16881,8 @@ function extractStatusCode(errorMsg) {
16881
16881
  }
16882
16882
  return null;
16883
16883
  }
16884
- var TRANSIENT_MODEL_ERROR_PATTERN = /rate.?limit|429|500|502|503|504|529|timeout|overloaded|model.?not.?found|temporarily.?unavailable|provider[_\s-]?unavailable|server.?error|network.?connection.?lost|connection.?(refused|reset|timeout|lost)|bad.?gateway|gateway.?timeout|internal.?server.?error|service.?unavailable|ECONNRESET|ECONNREFUSED|ETIMEDOUT|EPIPE|ENOTFOUND|broken.?pipe|dns(?:[\s_-]+(?:resolution)?)?[\s_-]+fail|name.?not.?resolved|EAI_AGAIN/i;
16884
+ var TRANSIENT_MODEL_ERROR_PATTERN = /rate.?limit|429|500|502|503|504|529|timeout|overloaded|model.?not.?found|model.?unavailable|temporarily.?unavailable|provider[_\s-]?unavailable|server.?error|network.?connection.?lost|connection.?(refused|reset|timeout|lost)|bad.?gateway|gateway.?timeout|internal.?server.?error|service.?unavailable|ECONNRESET|ECONNREFUSED|ETIMEDOUT|EPIPE|ENOTFOUND|broken.?pipe|dns(?:[\s_-]+(?:resolution)?)?[\s_-]+fail|name.?not.?resolved|EAI_AGAIN/i;
16885
+ var MODEL_UNAVAILABLE_PATTERN = /model.?unavailable/i;
16885
16886
  var QUOTA_ERROR_PATTERN = /quota|usage.?limit|insufficient.?(?:quota|credits?)|\b402\b|payment.?required|credit.?balance|out of credits|billing.?(?:hard.?)?limit/i;
16886
16887
  var REQUEST_SHAPE_REJECTION_PATTERN = /\b(?:single|one|only|exactly)[^.]{0,48}?\bsystem\s+messages?\b|\bmultiple\s+system\s+messages?\b|\bsystem\s+messages?\s+(?:are\s+)?not\s+supported\b/i;
16887
16888
  function isTransientProviderError(signal) {
@@ -17586,6 +17587,18 @@ function classifyProviderFailure(error2, action2) {
17586
17587
  statusCode
17587
17588
  });
17588
17589
  }
17590
+ if (MODEL_UNAVAILABLE_PATTERN.test(signal)) {
17591
+ return buildRecord({
17592
+ source: "provider",
17593
+ category: "provider.unavailable",
17594
+ retryClass: "retry_fallback",
17595
+ risk: "medium",
17596
+ action: action2,
17597
+ display: signal,
17598
+ code,
17599
+ statusCode
17600
+ });
17601
+ }
17589
17602
  if (statusCode !== undefined && TRANSIENT_STATUS_CODES.has(statusCode) || TRANSIENT_MODEL_ERROR_PATTERN.test(signal)) {
17590
17603
  return buildRecord({
17591
17604
  source: "provider",
@@ -24046,7 +24059,7 @@ function clearCriticalShownIds(sessionID) {
24046
24059
  async function rehydratePrSubscriptions(sessionID, directory) {
24047
24060
  const map = new Map;
24048
24061
  try {
24049
- const { listActive: listActive2 } = await import("./pr-subscriptions-2vp2sxjb.js");
24062
+ const { listActive: listActive2 } = await import("./pr-subscriptions-k86p5qcn.js");
24050
24063
  const records = await listActive2(directory);
24051
24064
  for (const record of records) {
24052
24065
  if (record.sessionID !== sessionID)
@@ -40593,9 +40606,9 @@ function hashContent(content) {
40593
40606
  return createHash27("sha1").update(content).digest("hex");
40594
40607
  }
40595
40608
  async function loadConfigForPolicyCurator(directory) {
40596
- const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-4s2nnpqt.js");
40609
+ const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-s5zbnzmv.js");
40597
40610
  try {
40598
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-dd258pfn.js");
40611
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-eh0sg1pz.js");
40599
40612
  const { config: loadedConfig } = loadPluginConfigWithMeta2(directory);
40600
40613
  return KnowledgeConfigSchema2.parse(loadedConfig.knowledge ?? {});
40601
40614
  } catch {
@@ -43653,7 +43666,7 @@ async function resolveCuratorLLMDelegate(directory, mode, sessionId) {
43653
43666
  const seam = _internals38.createCuratorLLMDelegate;
43654
43667
  if (seam)
43655
43668
  return seam(directory, mode, sessionId);
43656
- const { createCuratorLLMDelegate } = await import("./curator-llm-factory-gdedzs6k.js");
43669
+ const { createCuratorLLMDelegate } = await import("./curator-llm-factory-1qbcj7vs.js");
43657
43670
  return createCuratorLLMDelegate(directory, mode, sessionId);
43658
43671
  }
43659
43672
  async function reconcileCloseTerminalStateForPlan(directory, targetPlan, options) {
@@ -44048,7 +44061,7 @@ async function runFinalizeStage(ctx) {
44048
44061
  }
44049
44062
  }
44050
44063
  try {
44051
- const { CuratorConfigSchema: CCS } = await import("./schema-4s2nnpqt.js");
44064
+ const { CuratorConfigSchema: CCS } = await import("./schema-s5zbnzmv.js");
44052
44065
  const { config: pmLoadedConfig } = _internals38.loadPluginConfigWithMeta(ctx.directory);
44053
44066
  const curatorCfg = CCS.parse(pmLoadedConfig.curator ?? {});
44054
44067
  if (curatorCfg.enabled && curatorCfg.postmortem_enabled) {
@@ -46285,7 +46298,7 @@ function serializeAgentSession(s) {
46285
46298
  }
46286
46299
  async function writeSnapshot(directory, state) {
46287
46300
  try {
46288
- const { ensureSnapshotCoordinationReady } = await import("./snapshot-coordination-init-v50k6v2v.js");
46301
+ const { ensureSnapshotCoordinationReady } = await import("./snapshot-coordination-init-8ykpp5m6.js");
46289
46302
  await ensureSnapshotCoordinationReady(directory);
46290
46303
  const snapshot = {
46291
46304
  version: 3,
@@ -49295,7 +49308,7 @@ function planMerges(active, threshold, maxComparisons, maxMerges) {
49295
49308
  };
49296
49309
  }
49297
49310
  async function sweepActiveNearDuplicates(directory, options = {}) {
49298
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-dd258pfn.js");
49311
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-eh0sg1pz.js");
49299
49312
  const { config } = loadPluginConfigWithMeta2(directory);
49300
49313
  const sweepConfig = config.learning?.dedup_sweep;
49301
49314
  if (sweepConfig?.enabled === false)
@@ -50419,7 +50432,7 @@ async function runCuratorPhase(directory, phase, agentsDispatched, config, knowl
50419
50432
  }
50420
50433
  if (config.skill_generation_enabled === true && skillCandidates.length > 0) {
50421
50434
  try {
50422
- const skillModule = await import("./skill-generator-fqh79jr7.js");
50435
+ const skillModule = await import("./skill-generator-bfcjzp20.js");
50423
50436
  for (const cand of skillCandidates) {
50424
50437
  if (cand.confidence < (config.min_skill_confidence ?? DEFAULT_SKILL_MIN_CONFIDENCE)) {
50425
50438
  continue;
@@ -50891,7 +50904,7 @@ async function applyCuratorKnowledgeUpdates(directory, recommendations, knowledg
50891
50904
  } catch {}
50892
50905
  }
50893
50906
  if (contradictedEntries.length > 0 && knowledgeConfig.contradiction_threshold_action === "quarantine") {
50894
- const { maybeQuarantineOnContradiction } = await import("./knowledge-escalator-c65r55bv.js");
50907
+ const { maybeQuarantineOnContradiction } = await import("./knowledge-escalator-ejfb2e7c.js");
50895
50908
  for (const { id } of contradictedEntries) {
50896
50909
  try {
50897
50910
  await maybeQuarantineOnContradiction(directory, id, knowledgeConfig.contradiction_quarantine_threshold, knowledgeConfig.contradiction_quarantine_window_days);
@@ -51723,7 +51736,7 @@ async function runCuratorPostMortem(directory, options = {}) {
51723
51736
  warnings.push("Failed to collect knowledge summary.");
51724
51737
  }
51725
51738
  try {
51726
- const { getScanStatus } = await import("./scan-cursor-3hyz0qnh.js");
51739
+ const { getScanStatus } = await import("./scan-cursor-9961dhv1.js");
51727
51740
  const scanStatus = await getScanStatus(directory);
51728
51741
  if (scanStatus.remaining_estimate > 0) {
51729
51742
  warnings.push(`Fair scan: reviewed ${knowledgeSummary.length} entries this sweep (generation ${scanStatus.generation}); ${scanStatus.remaining_estimate} more eligible entries will be visited in future curation sweeps.`);
@@ -51895,9 +51908,9 @@ var _internals56 = {
51895
51908
  verifyPostMortemKnowledgeActions,
51896
51909
  repairPostMortemActions,
51897
51910
  loadDefaultKnowledgeConfig: async (directory) => {
51898
- const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-4s2nnpqt.js");
51911
+ const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-s5zbnzmv.js");
51899
51912
  try {
51900
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-dd258pfn.js");
51913
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-eh0sg1pz.js");
51901
51914
  const loaded = loadPluginConfigWithMeta2(directory);
51902
51915
  return KnowledgeConfigSchema2.parse(loaded.config.knowledge ?? {});
51903
51916
  } catch {
@@ -51905,11 +51918,11 @@ var _internals56 = {
51905
51918
  }
51906
51919
  },
51907
51920
  applyCuratorKnowledgeUpdates: async (directory, recommendations, knowledgeConfig, generation) => {
51908
- const { applyCuratorKnowledgeUpdates: applyCuratorKnowledgeUpdates2 } = await import("./curator-s08eqma1.js");
51921
+ const { applyCuratorKnowledgeUpdates: applyCuratorKnowledgeUpdates2 } = await import("./curator-tkz65fvw.js");
51909
51922
  return applyCuratorKnowledgeUpdates2(directory, recommendations, knowledgeConfig, generation);
51910
51923
  },
51911
51924
  checkHivePromotions: async (entries2, knowledgeConfig, directory) => {
51912
- const { checkHivePromotions } = await import("./hive-promoter-1jb0t5g2.js");
51925
+ const { checkHivePromotions } = await import("./hive-promoter-88d95wk8.js");
51913
51926
  return checkHivePromotions(entries2, knowledgeConfig, directory);
51914
51927
  },
51915
51928
  applyProposalTriage: async (directory, triage) => {
@@ -51918,7 +51931,7 @@ var _internals56 = {
51918
51931
  activateProposal,
51919
51932
  listSkills: listSkills2,
51920
51933
  sanitizeSlug
51921
- } = await import("./skill-generator-fqh79jr7.js");
51934
+ } = await import("./skill-generator-bfcjzp20.js");
51922
51935
  const result = {
51923
51936
  approved: [],
51924
51937
  rejected: [],
@@ -51960,7 +51973,7 @@ var _internals56 = {
51960
51973
  return result;
51961
51974
  },
51962
51975
  readPriorDriftReports: async (directory) => {
51963
- const { readPriorDriftReports: readPriorDriftReports2 } = await import("./curator-drift-0ne6gnj0.js");
51976
+ const { readPriorDriftReports: readPriorDriftReports2 } = await import("./curator-drift-rpwrx355.js");
51964
51977
  return readPriorDriftReports2(directory);
51965
51978
  },
51966
51979
  readSwarmKnowledge: (directory) => readKnowledge(resolveSwarmKnowledgePath(directory))
@@ -60404,7 +60417,7 @@ function wireCloseInternals() {
60404
60417
  archiveEvidence,
60405
60418
  endAgentSession,
60406
60419
  flushAndDrainTelemetry: async () => {
60407
- const { flushAndDrainTelemetry } = await import("./telemetry-eq1cwq2x.js");
60420
+ const { flushAndDrainTelemetry } = await import("./telemetry-kvhe94gs.js");
60408
60421
  return flushAndDrainTelemetry();
60409
60422
  },
60410
60423
  finalizeContextTelemetry,
@@ -61763,9 +61776,9 @@ var _internals66 = {
61763
61776
  loadPluginConfigWithMeta,
61764
61777
  loadCuratorDeps: async () => {
61765
61778
  const [{ CuratorConfigSchema }, curator, { createCuratorLLMDelegate }] = await Promise.all([
61766
- import("./schema-4s2nnpqt.js"),
61767
- import("./curator-s08eqma1.js"),
61768
- import("./curator-llm-factory-gdedzs6k.js")
61779
+ import("./schema-s5zbnzmv.js"),
61780
+ import("./curator-tkz65fvw.js"),
61781
+ import("./curator-llm-factory-1qbcj7vs.js")
61769
61782
  ]);
61770
61783
  return { CuratorConfigSchema, curator, createCuratorLLMDelegate };
61771
61784
  }
@@ -64163,7 +64176,7 @@ async function computeCurationDiagnostics(directory, entries2) {
64163
64176
  let scanCompleted = false;
64164
64177
  let scanRemaining = 0;
64165
64178
  try {
64166
- const { getScanStatus } = await import("./scan-cursor-3hyz0qnh.js");
64179
+ const { getScanStatus } = await import("./scan-cursor-9961dhv1.js");
64167
64180
  const status = await getScanStatus(directory);
64168
64181
  scanGeneration = status.generation;
64169
64182
  scanCompleted = status.completed;
@@ -64171,19 +64184,19 @@ async function computeCurationDiagnostics(directory, entries2) {
64171
64184
  } catch {}
64172
64185
  let configMatch = null;
64173
64186
  try {
64174
- const { isLinked: isLinked2 } = await import("./knowledge-link-kgt3zx0c.js");
64187
+ const { isLinked: isLinked2 } = await import("./knowledge-link-h4pdcnya.js");
64175
64188
  if (isLinked2(directory)) {
64176
- const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-4s2nnpqt.js");
64189
+ const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-s5zbnzmv.js");
64177
64190
  let config;
64178
64191
  try {
64179
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-dd258pfn.js");
64192
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-eh0sg1pz.js");
64180
64193
  const loaded = loadPluginConfigWithMeta2(directory);
64181
64194
  config = KnowledgeConfigSchema2.parse(loaded.config.knowledge ?? {});
64182
64195
  } catch {
64183
64196
  config = KnowledgeConfigSchema2.parse({});
64184
64197
  }
64185
64198
  const { cohortConfigFingerprint: cohortConfigFingerprint2 } = await import("./config-fingerprint-v22xh5a2.js");
64186
- const { buildConfigFingerprintInput: buildConfigFingerprintInput2, readCohortConfigFingerprint } = await import("./curation-policy-nxcx99yp.js");
64199
+ const { buildConfigFingerprintInput: buildConfigFingerprintInput2, readCohortConfigFingerprint } = await import("./curation-policy-65ckmmd5.js");
64187
64200
  const currentFp = cohortConfigFingerprint2(buildConfigFingerprintInput2(config));
64188
64201
  const cohortFp = await readCohortConfigFingerprint(directory);
64189
64202
  configMatch = cohortFp === null ? null : currentFp === cohortFp;
@@ -65632,7 +65645,7 @@ async function handleDoctorCommand(directory, args) {
65632
65645
  const result = runConfigDoctor(config, directory, planParallelizationEnabled);
65633
65646
  let output;
65634
65647
  if (enableAutoFix && result.hasAutoFixableIssues) {
65635
- const { runConfigDoctorWithFixes } = await import("./config-doctor-0pqexbab.js");
65648
+ const { runConfigDoctorWithFixes } = await import("./config-doctor-4wgw6nak.js");
65636
65649
  const fixResult = await runConfigDoctorWithFixes(directory, config, true, {
65637
65650
  applyLossy: true
65638
65651
  });
@@ -65670,7 +65683,7 @@ async function handleDoctorCommand(directory, args) {
65670
65683
  `;
65671
65684
  }
65672
65685
  try {
65673
- const { runModelPreflight } = await import("./model-preflight-dh9dadg8.js");
65686
+ const { runModelPreflight } = await import("./model-preflight-nfvapzyj.js");
65674
65687
  const preflight = await runModelPreflight(config, swarmState.opencodeClient, { generatedAgentNames: swarmState.generatedAgentNames });
65675
65688
  const missingSelection = preflight.resolutions.filter((resolution) => resolution.status === "missing-selection");
65676
65689
  const unresolved = preflight.catalogAvailable ? preflight.resolutions.filter((resolution) => resolution.status === "unresolved") : [];
@@ -65704,7 +65717,7 @@ async function handleDoctorCommand(directory, args) {
65704
65717
  }
65705
65718
  } catch {}
65706
65719
  try {
65707
- const { renderKnowledgeReceiptPhaseIdSection } = await import("./doctor-knowledge-receipt-phase-id-kpzaepq8.js");
65720
+ const { renderKnowledgeReceiptPhaseIdSection } = await import("./doctor-knowledge-receipt-phase-id-11q7en6t.js");
65708
65721
  output += await renderKnowledgeReceiptPhaseIdSection(directory, enableAutoFix);
65709
65722
  } catch {}
65710
65723
  const strayDirs = detectStraySwarmDirs(directory);
@@ -66601,7 +66614,7 @@ async function handleEvidenceCommand(directory, args) {
66601
66614
  return formatTaskEvidenceMarkdown(evidenceData);
66602
66615
  }
66603
66616
  async function handleEvidenceSummaryCommand(directory) {
66604
- const { buildEvidenceSummary } = await import("./evidence-summary-service-xadab4ym.js");
66617
+ const { buildEvidenceSummary } = await import("./evidence-summary-service-hn7vdm45.js");
66605
66618
  const artifact = await buildEvidenceSummary(directory);
66606
66619
  if (!artifact) {
66607
66620
  return "No plan found. Run `/swarm plan` to check plan status.";
@@ -91048,7 +91061,7 @@ function createCuratorLLMDelegate(directory, mode = "init", sessionId) {
91048
91061
  }
91049
91062
  const sdkOpts = signal ? { signal } : {};
91050
91063
  try {
91051
- const { getSwarmAgents: getSwarmAgents2, resolveFallbackModel: resolveFallbackModel2 } = await import("./index-9f7y0rym.js");
91064
+ const { getSwarmAgents: getSwarmAgents2, resolveFallbackModel: resolveFallbackModel2 } = await import("./index-ffmw6af9.js");
91052
91065
  const createResult = await client.session.create({
91053
91066
  ...sessionId ? {
91054
91067
  body: {
@@ -93385,7 +93398,7 @@ async function cancelPrFeedbackLoopUnlocked(directory, sessionID, reason) {
93385
93398
  clearedEvents: []
93386
93399
  };
93387
93400
  try {
93388
- const { cancelPrFeedbackPublication: cancelPrFeedbackPublication2 } = await import("./pr-workflow-gate-cy24tc3c.js");
93401
+ const { cancelPrFeedbackPublication: cancelPrFeedbackPublication2 } = await import("./pr-workflow-gate-3ett6hjh.js");
93389
93402
  await cancelPrFeedbackPublication2(directory, sessionID, reason);
93390
93403
  } catch (err) {
93391
93404
  warn(`[pr-feedback-loop] cancelPrFeedbackPublication failed (fail-open): ${err instanceof Error ? err.message : String(err)}`);
@@ -107126,7 +107139,7 @@ async function runValidationWithTransientRetry(input, candidateContent, baseline
107126
107139
  if (!input.dispatcher) {
107127
107140
  throw new Error("no evaluation dispatcher available (cannot run validation)");
107128
107141
  }
107129
- const { createModelEvaluationExecutor: createModelEvaluationExecutor2 } = await import("./runner-zeqpd2c2.js");
107142
+ const { createModelEvaluationExecutor: createModelEvaluationExecutor2 } = await import("./runner-4hfmp1ag.js");
107130
107143
  const executor = createModelEvaluationExecutor2(input.dispatcher, input.sessionId);
107131
107144
  const result = await withProtectedSetIntegrity([evalInputRoot, ...protectedRoots(input.directory)], () => _internals128.evaluateCandidateV1({
107132
107145
  projectRoot: input.directory,
@@ -109755,7 +109768,7 @@ function buildDetailedHelp(commandName, entry) {
109755
109768
  async function handleHelpCommand(ctx) {
109756
109769
  const targetCommand = ctx.args.join(" ");
109757
109770
  if (!targetCommand) {
109758
- const { buildHelpText } = await import("./index-txr48a64.js");
109771
+ const { buildHelpText } = await import("./index-2vtrjm19.js");
109759
109772
  return buildHelpText();
109760
109773
  }
109761
109774
  const tokens = targetCommand.split(/\s+/);
@@ -109769,7 +109782,7 @@ async function handleHelpCommand(ctx) {
109769
109782
  > Note: \`/swarm ${resolved.key}\` is a deprecated alias for \`/swarm ${aliasTarget}\`.` : detailed;
109770
109783
  }
109771
109784
  const similar = _internals27.findSimilarCommands(targetCommand);
109772
- const { buildHelpText: fullHelp } = await import("./index-txr48a64.js");
109785
+ const { buildHelpText: fullHelp } = await import("./index-2vtrjm19.js");
109773
109786
  if (similar.length > 0) {
109774
109787
  return `Command '/swarm ${targetCommand}' not found.
109775
109788
 
@@ -110097,7 +110110,7 @@ var COMMAND_REGISTRY = {
110097
110110
  },
110098
110111
  "guardrail explain": {
110099
110112
  handler: async (ctx) => {
110100
- const { handleGuardrailExplain } = await import("./guardrail-explain-enbr5ne9.js");
110113
+ const { handleGuardrailExplain } = await import("./guardrail-explain-e0wbeyk1.js");
110101
110114
  return handleGuardrailExplain(ctx.directory, ctx.args);
110102
110115
  },
110103
110116
  description: "Dry-run: show what the guardrails would do to a command or write target (executes nothing)",
@@ -110107,7 +110120,7 @@ var COMMAND_REGISTRY = {
110107
110120
  },
110108
110121
  "guardrail reset": {
110109
110122
  handler: async (ctx) => {
110110
- const { handleGuardrailReset } = await import("./guardrail-reset-e0m3p15n.js");
110123
+ const { handleGuardrailReset } = await import("./guardrail-reset-7z62s1j5.js");
110111
110124
  return handleGuardrailReset(ctx.args, ctx.sessionID);
110112
110125
  },
110113
110126
  description: "Reset one exact active invocation/action circuit after repair",
@@ -110128,7 +110141,7 @@ var COMMAND_REGISTRY = {
110128
110141
  },
110129
110142
  "guardrail-log": {
110130
110143
  handler: async (ctx) => {
110131
- const { handleGuardrailLog } = await import("./guardrail-log-0g59n4ae.js");
110144
+ const { handleGuardrailLog } = await import("./guardrail-log-gzrj46h0.js");
110132
110145
  return handleGuardrailLog(ctx.directory, ctx.args);
110133
110146
  },
110134
110147
  description: "Read the guardrail decision log (use --blocks-only for blocks)",