ryco-cli 0.1.6 → 0.1.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 (152) hide show
  1. package/dist/{AzureDevOpsSourceControlProvider-6holYS_D.cjs → AzureDevOpsSourceControlProvider-5exivY-1.cjs} +2 -2
  2. package/dist/{AzureDevOpsSourceControlProvider-CC2_COxP.mjs → AzureDevOpsSourceControlProvider-CF5LuCHp.mjs} +2 -2
  3. package/dist/{BitbucketSourceControlProvider-a0IsNFyG.cjs → BitbucketSourceControlProvider-1GWENqcl.cjs} +2 -2
  4. package/dist/{BitbucketSourceControlProvider-CYR_BD1d.mjs → BitbucketSourceControlProvider-CKH09tfT.mjs} +2 -2
  5. package/dist/{ClaudeDriver-C6tQNEWO.cjs → ClaudeDriver-BXLdjrht.cjs} +177 -4
  6. package/dist/{ClaudeDriver-D3nsxwH9.mjs → ClaudeDriver-WwWFTu61.mjs} +178 -5
  7. package/dist/{CodexDriver-BILrJG8o.mjs → CodexDriver-93-TmCrO.mjs} +6 -5
  8. package/dist/{CodexDriver-ms_YgFD7.cjs → CodexDriver-BboMT9uk.cjs} +5 -4
  9. package/dist/{CodexTextGeneration-CHEgoANm.cjs → CodexTextGeneration-0pRbJji3.cjs} +2 -2
  10. package/dist/{CodexTextGeneration-BIKHl7E3.mjs → CodexTextGeneration-BU9Myn87.mjs} +3 -3
  11. package/dist/{CopilotDriver-CmD3Ffyl.mjs → CopilotDriver-BASi8pJ0.mjs} +4 -4
  12. package/dist/{CopilotDriver-B0--ZwIK.cjs → CopilotDriver-DCsv-17W.cjs} +3 -3
  13. package/dist/{CursorDriver-DTVPXZ-R.cjs → CursorDriver-BTSiM3A8.cjs} +161 -14
  14. package/dist/{CursorDriver-CbeaIbdb.mjs → CursorDriver-D5LvIqUk.mjs} +162 -15
  15. package/dist/{ForgejoSourceControlProvider-DwAog76b.cjs → ForgejoSourceControlProvider-BTXRDCGB.cjs} +2 -2
  16. package/dist/{ForgejoSourceControlProvider-DX6d9gvz.mjs → ForgejoSourceControlProvider-e-4hvvZ_.mjs} +2 -2
  17. package/dist/{GitHubSourceControlProvider-C-LGwho3.mjs → GitHubSourceControlProvider-26IofDAO.mjs} +2 -2
  18. package/dist/{GitHubSourceControlProvider-9lJFzjsu.cjs → GitHubSourceControlProvider-DWmwkA_y.cjs} +2 -2
  19. package/dist/{GitLabSourceControlProvider-CvKA74lg.cjs → GitLabSourceControlProvider-D-YHnxRe.cjs} +2 -2
  20. package/dist/{GitLabSourceControlProvider-CkeT2aEx.mjs → GitLabSourceControlProvider-DePct78W.mjs} +2 -2
  21. package/dist/{OpenCodeDriver-ClWtCk0j.mjs → OpenCodeDriver-BhvLOmvn.mjs} +325 -38
  22. package/dist/{OpenCodeDriver-CXUsnl5o.cjs → OpenCodeDriver-CVeZ4n9-.cjs} +324 -37
  23. package/dist/{SourceControlProviderDiscoveryCatalog-_rg0mc1o.cjs → SourceControlProviderDiscoveryCatalog-DeFR5xH3.cjs} +1 -64
  24. package/dist/{SourceControlProviderDiscoveryCatalog-yMDer_Yh.mjs → SourceControlProviderDiscoveryCatalog-mJV_Xitr.mjs} +3 -48
  25. package/dist/bin.cjs +1280 -519
  26. package/dist/bin.mjs +1234 -474
  27. package/dist/client/assets/{AnimatedHeight-DgItDSis.js → AnimatedHeight-BSU0lzYs.js} +1 -1
  28. package/dist/client/assets/AppearanceSettings-D7q0ujGK.js +1 -0
  29. package/dist/client/assets/{BranchToolbar.logic-C_xHEt9C.js → BranchToolbar.logic-CZIFSvhd.js} +1 -1
  30. package/dist/client/assets/ChatRightPanel-CWHOIuiQ.js +188 -0
  31. package/dist/client/assets/{ChatThreadRouteView-CV6ETYG5.js → ChatThreadRouteView-bA7xWXzc.js} +1 -1
  32. package/dist/client/assets/{CommandPaletteDialog-C_H7R8S5.js → CommandPaletteDialog-DNYaVOZO.js} +1 -1
  33. package/dist/client/assets/CompositeRoot-B_KEfCUE.js +1 -0
  34. package/dist/client/assets/ConnectionsSettings-CLZPbx_K.js +1 -0
  35. package/dist/client/assets/{DiagnosticsSettings-B340S_mq.js → DiagnosticsSettings-DtzPCb6N.js} +1 -1
  36. package/dist/client/assets/{DialogHandle-BJY7cHCV.js → DialogHandle-DuHnmWoE.js} +1 -1
  37. package/dist/client/assets/{DialogRoot-Ej1FVk-_.js → DialogRoot-BV25qAcA.js} +1 -1
  38. package/dist/client/assets/DialogTitle-DQsi-RTa.js +1 -0
  39. package/dist/client/assets/DialogTrigger-D0fA01C6.js +1 -0
  40. package/dist/client/assets/{DialogViewport-DvjAl76K.js → DialogViewport-CMV_BePU.js} +1 -1
  41. package/dist/client/assets/{DraftChatThreadRouteView-pOkyeKPS.js → DraftChatThreadRouteView-BoiKnrii.js} +1 -1
  42. package/dist/client/assets/{JetBrainsIcons-DTTF47I0.js → JetBrainsIcons-BcPxJlMf.js} +1 -1
  43. package/dist/client/assets/{KeybindingsSettings-CW3RRi-7.js → KeybindingsSettings-LuI98pdF.js} +1 -1
  44. package/dist/client/assets/McpServersSettings-BFMuWYVV.js +6 -0
  45. package/dist/client/assets/{NoActiveThreadState-DVHwrkCp.js → NoActiveThreadState-C2q_O1kP.js} +1 -1
  46. package/dist/client/assets/{OpinionatedPluginsSettings-Cjj23Fs4.js → OpinionatedPluginsSettings-Bqwct37O.js} +1 -1
  47. package/dist/client/assets/{ProjectFavicon-TDP7HRfn.js → ProjectFavicon-D2imiJ8M.js} +1 -1
  48. package/dist/client/assets/{ProviderUpdateLaunchNotification.logic-6TpFsmiI.js → ProviderUpdateLaunchNotification.logic-CJgA--nK.js} +1 -1
  49. package/dist/client/assets/ProvidersSettingsPanel-B97vbeu6.js +1 -0
  50. package/dist/client/assets/{RedactedSensitiveText-BfoVjPsE.js → RedactedSensitiveText-B2GFTyfq.js} +1 -1
  51. package/dist/client/assets/RootAppShell-C1xTR98P.js +12 -0
  52. package/dist/client/assets/SettingsDialog-Q0Q8O5oH.js +2 -0
  53. package/dist/client/assets/SourceControlSettings-KAvoPTNi.js +1 -0
  54. package/dist/client/assets/StatisticsPanel-BzsQ444K.js +64 -0
  55. package/dist/client/assets/{ThreadStatusIndicators-B0leIJGD.js → ThreadStatusIndicators-Cw_jLVQf.js} +1 -1
  56. package/dist/client/assets/{ThreadTerminalDrawer-COq2Fk17.js → ThreadTerminalDrawer-D1WnSemH.js} +17 -17
  57. package/dist/client/assets/ThreadWorkspacePanel-L4qCPTOA.js +166 -0
  58. package/dist/client/assets/{alert-dialog-lMfKpG2t.js → alert-dialog-CNmKa0BK.js} +1 -1
  59. package/dist/client/assets/chart-column-BWSKYZ_a.js +1 -0
  60. package/dist/client/assets/{chatThreadActions-PPyTj_x0.js → chatThreadActions-TtDsiwDC.js} +1 -1
  61. package/dist/client/assets/chevron-up-zopJ_99l.js +1 -0
  62. package/dist/client/assets/{clamp-JiD4IZ0Z.js → clamp-Ds6WJu8j.js} +1 -1
  63. package/dist/client/assets/{clipboard-copy-CYBLSG2q.js → clipboard-copy-BoJGpdmJ.js} +1 -1
  64. package/dist/client/assets/clock-CzUHThzk.js +1 -0
  65. package/dist/client/assets/{commandPaletteStore-uVfCD7zE.js → commandPaletteStore-KebG835b.js} +1 -1
  66. package/dist/client/assets/composerDraftStore-DpPEQ6BN.js +21 -0
  67. package/dist/client/assets/{desktopUpdateAtoms-X6uM5SoD.js → desktopUpdateAtoms-BQ0GGEfM.js} +1 -1
  68. package/dist/client/assets/{download-DLBlpp4h.js → download-CUiRE0N9.js} +1 -1
  69. package/dist/client/assets/{draft-input-dLlVMl5P.js → draft-input-CwpGDtoT.js} +1 -1
  70. package/dist/client/assets/editorPreferences-jN7DKbyt.js +1 -0
  71. package/dist/client/assets/{empty-DlLY-Hhj.js → empty-CBuXePtg.js} +1 -1
  72. package/dist/client/assets/{group-zDBPF7rR.js → group-BpZvxjG5.js} +1 -1
  73. package/dist/client/assets/{index-Dq8sT2lF.js → index-BKzXTNJ_.js} +2 -2
  74. package/dist/client/assets/{input-B9-RWT56.js → input-CgDawd6k.js} +1 -1
  75. package/dist/client/assets/kbd-QYSL97CK.js +1 -0
  76. package/dist/client/assets/{keybindings-Dx4Nc1vY.js → keybindings-CUTRYI_A.js} +1 -1
  77. package/dist/client/assets/{keyboard-DDTWQkr0.js → keyboard-DFFiI7JY.js} +1 -1
  78. package/dist/client/assets/{keyedQuery-Ds4OGhX2.js → keyedQuery-DiOCbGH0.js} +0 -0
  79. package/dist/client/assets/{main-DxfpmoKJ.js → main-BgFGju3e.js} +3 -3
  80. package/dist/client/assets/main-D0UFdwts.css +2 -0
  81. package/dist/client/assets/{palette-BQcz-ZYV.js → palette-BXCL909c.js} +1 -1
  82. package/dist/client/assets/{play-QloDGe4R.js → play-DI2LZohg.js} +1 -1
  83. package/dist/client/assets/plus-DzgIfHUF.js +1 -0
  84. package/dist/client/assets/projectAtoms-DXXpuERK.js +1 -0
  85. package/dist/client/assets/providerDriverMeta-CRNNp0q3.js +1 -0
  86. package/dist/client/assets/providerIconUtils-D-DFhem2.js +47 -0
  87. package/dist/client/assets/radio-group-_PPYg3YY.js +1 -0
  88. package/dist/client/assets/{refresh-cw-DkBMGllm.js → refresh-cw-BsQTNBXl.js} +1 -1
  89. package/dist/client/assets/{resolveAriaLabelledBy-DDfIbj05.js → resolveAriaLabelledBy-CRHo_s16.js} +1 -1
  90. package/dist/client/assets/{rightPanelRouteSearch-DfuWVvXN.js → rightPanelRouteSearch-CfmZ7osj.js} +1 -1
  91. package/dist/client/assets/{scale-BActunFu.js → scale-DDEJ-tvn.js} +1 -1
  92. package/dist/client/assets/{scroll-area-D-YOUG02.js → scroll-area-HgsI-ErG.js} +1 -1
  93. package/dist/client/assets/{separator-TInKeIDo.js → separator-ClnL4mUB.js} +1 -1
  94. package/dist/client/assets/{server-BtEG3NAw.js → server-Bbs3L-6_.js} +1 -1
  95. package/dist/client/assets/{session-logic-DNf1aXq_.js → session-logic-CKQkgIwo.js} +1 -1
  96. package/dist/client/assets/settingsDialogStore-SG-W1q0A.js +1 -0
  97. package/dist/client/assets/{settingsLayout-D22Mm0u3.js → settingsLayout-G5xVm-ZT.js} +1 -1
  98. package/dist/client/assets/sidebar-_u7SGgmC.js +1 -0
  99. package/dist/client/assets/sidebarStatusText-BTYnwflG.js +1 -0
  100. package/dist/client/assets/{skeleton-DWaac_qp.js → skeleton-CmUvhZGP.js} +1 -1
  101. package/dist/client/assets/{storeSelectors-Cx1IYPA4.js → storeSelectors-DhJRpdiw.js} +1 -1
  102. package/dist/client/assets/threadSelectionStore-ygmA4DNA.js +1 -0
  103. package/dist/client/assets/toast-DmA_ziPT.js +1 -0
  104. package/dist/client/assets/toggle-DGS7tKuj.js +1 -0
  105. package/dist/client/assets/{toggle-group-CnLjaHSL.js → toggle-group-Dtv1ZUFW.js} +1 -1
  106. package/dist/client/assets/{tokenModePresentation-BSYdIvBm.js → tokenModePresentation-Dor1DnBx.js} +1 -1
  107. package/dist/client/assets/{trash-2-BI5xcbsm.js → trash-2-C2G3VGoV.js} +1 -1
  108. package/dist/client/assets/{triangle-alert-DJef_Uvh.js → triangle-alert-Bpz3xGu5.js} +1 -1
  109. package/dist/client/assets/{undo-2-DeZ2cMGS.js → undo-2-C3rtxuqZ.js} +1 -1
  110. package/dist/client/assets/{useHandleNewThread-XB82O6SA.js → useHandleNewThread-ypSbzG0P.js} +1 -1
  111. package/dist/client/assets/useLabelableId-Bc7KEnHU.js +1 -0
  112. package/dist/client/assets/{useNavigate-B2tgshhW.js → useNavigate-_4hWGSey.js} +1 -1
  113. package/dist/client/assets/useTheme-HcKmBfpF.js +1 -0
  114. package/dist/client/assets/{vscode-icons-DM9qFoEr.js → vscode-icons-DdSTtxYd.js} +1 -1
  115. package/dist/client/assets/{wrench-je4QOyG-.js → wrench-C4jdis40.js} +1 -1
  116. package/dist/client/assets/x-CG2WU63t.js +1 -0
  117. package/dist/client/index.html +1 -1
  118. package/dist/{collectUint8StreamText-C2z5Y8tF.mjs → collectUint8StreamText-Lv4GGI79.mjs} +269 -14
  119. package/dist/{collectUint8StreamText-TCG6xW_P.cjs → collectUint8StreamText-uNXVRHOf.cjs} +291 -12
  120. package/dist/{makeManagedServerProvider-DPFw9gV_.cjs → makeManagedServerProvider-3SD-Q5xh.cjs} +1 -1
  121. package/dist/{makeManagedServerProvider-BXO8QvzC.mjs → makeManagedServerProvider-CkPEptun.mjs} +1 -1
  122. package/package.json +1 -1
  123. package/dist/client/assets/AppearanceSettings-BlsMFBvJ.js +0 -1
  124. package/dist/client/assets/ChatRightPanel-CThudBb1.js +0 -188
  125. package/dist/client/assets/CompositeRoot-DjnzUIwC.js +0 -1
  126. package/dist/client/assets/ConnectionsSettings-hArR4Oe3.js +0 -1
  127. package/dist/client/assets/DialogTitle-H1yIMmA9.js +0 -1
  128. package/dist/client/assets/DialogTrigger-BHMq_K2G.js +0 -1
  129. package/dist/client/assets/McpServersSettings-dQ3BzOWY.js +0 -6
  130. package/dist/client/assets/ProvidersSettingsPanel-D15EeWAq.js +0 -1
  131. package/dist/client/assets/RootAppShell-CWBPSA2w.js +0 -12
  132. package/dist/client/assets/SettingsDialog-oJCE5foT.js +0 -2
  133. package/dist/client/assets/SourceControlSettings-CPnlMxNm.js +0 -1
  134. package/dist/client/assets/ThreadWorkspacePanel-qF9y6QT9.js +0 -166
  135. package/dist/client/assets/composerDraftStore-D12lUSfh.js +0 -21
  136. package/dist/client/assets/editorPreferences-BLeEBSD_.js +0 -1
  137. package/dist/client/assets/folder-open-DMjz0lpx.js +0 -1
  138. package/dist/client/assets/kbd-aeSsjiPI.js +0 -1
  139. package/dist/client/assets/main-C57RhHZ_.css +0 -2
  140. package/dist/client/assets/plus-4Oy56d-3.js +0 -1
  141. package/dist/client/assets/projectAtoms-DUEBb7Zz.js +0 -1
  142. package/dist/client/assets/providerDriverMeta-Dwi6Zqgd.js +0 -1
  143. package/dist/client/assets/providerIconUtils-uhWb4bdg.js +0 -47
  144. package/dist/client/assets/radio-group-DHyQlLeX.js +0 -1
  145. package/dist/client/assets/settingsDialogStore-BINi7pdD.js +0 -1
  146. package/dist/client/assets/sidebar-DHwNQmWp.js +0 -1
  147. package/dist/client/assets/threadSelectionStore-C0ig4405.js +0 -1
  148. package/dist/client/assets/toast-DE7a4wkW.js +0 -1
  149. package/dist/client/assets/toggle-BIW4AyPY.js +0 -1
  150. package/dist/client/assets/useLabelableId-DBAgv9qQ.js +0 -1
  151. package/dist/client/assets/useTheme-Dv42Z8uy.js +0 -1
  152. package/dist/client/assets/x-fI9snvD3.js +0 -1
@@ -37,6 +37,7 @@ makeEntityId("RuntimeSessionId");
37
37
  const RuntimeItemId = makeEntityId("RuntimeItemId");
38
38
  const RuntimeRequestId = makeEntityId("RuntimeRequestId");
39
39
  const RuntimeTaskId = makeEntityId("RuntimeTaskId");
40
+ const RuntimeSubagentId = makeEntityId("RuntimeSubagentId");
40
41
  const ApprovalRequestId = makeEntityId("ApprovalRequestId");
41
42
  const CheckpointRef = makeEntityId("CheckpointRef");
42
43
  //#endregion
@@ -873,6 +874,8 @@ const MODEL_SLUG_ALIASES_BY_PROVIDER = {
873
874
  "gpt-5.3-spark": "gpt-5.3-codex-spark"
874
875
  },
875
876
  [CLAUDE_DRIVER_KIND]: {
877
+ fable: "claude-fable-5",
878
+ "fable-5": "claude-fable-5",
876
879
  opus: "claude-opus-4-8",
877
880
  "opus-4.8": "claude-opus-4-8",
878
881
  "claude-opus-4.8": "claude-opus-4-8",
@@ -3364,6 +3367,10 @@ effect.Schema.Literals([
3364
3367
  "task.started",
3365
3368
  "task.progress",
3366
3369
  "task.completed",
3370
+ "subagent.started",
3371
+ "subagent.updated",
3372
+ "subagent.completed",
3373
+ "subagent.message.delta",
3367
3374
  "hook.started",
3368
3375
  "hook.progress",
3369
3376
  "hook.completed",
@@ -3413,6 +3420,10 @@ const UserInputResolvedType = effect.Schema.Literal("user-input.resolved");
3413
3420
  const TaskStartedType = effect.Schema.Literal("task.started");
3414
3421
  const TaskProgressType = effect.Schema.Literal("task.progress");
3415
3422
  const TaskCompletedType = effect.Schema.Literal("task.completed");
3423
+ const SubagentStartedType = effect.Schema.Literal("subagent.started");
3424
+ const SubagentUpdatedType = effect.Schema.Literal("subagent.updated");
3425
+ const SubagentCompletedType = effect.Schema.Literal("subagent.completed");
3426
+ const SubagentMessageDeltaType = effect.Schema.Literal("subagent.message.delta");
3416
3427
  const HookStartedType = effect.Schema.Literal("hook.started");
3417
3428
  const HookProgressType = effect.Schema.Literal("hook.progress");
3418
3429
  const HookCompletedType = effect.Schema.Literal("hook.completed");
@@ -3571,6 +3582,59 @@ const TaskCompletedPayload = effect.Schema.Struct({
3571
3582
  summary: effect.Schema.optional(TrimmedNonEmptyStringSchema$1),
3572
3583
  usage: effect.Schema.optional(effect.Schema.Unknown)
3573
3584
  });
3585
+ const RuntimeSubagentOrigin = effect.Schema.Literals(["native", "inferred"]);
3586
+ const RuntimeSubagentCapability = effect.Schema.Literals(["transcript", "summary"]);
3587
+ const RuntimeSubagentStatus = effect.Schema.Literals([
3588
+ "starting",
3589
+ "running",
3590
+ "completed",
3591
+ "failed",
3592
+ "stopped"
3593
+ ]);
3594
+ const SubagentRef = effect.Schema.Struct({
3595
+ subagentId: RuntimeSubagentId,
3596
+ origin: RuntimeSubagentOrigin,
3597
+ capability: RuntimeSubagentCapability,
3598
+ label: effect.Schema.optional(TrimmedNonEmptyStringSchema$1),
3599
+ description: effect.Schema.optional(TrimmedNonEmptyStringSchema$1),
3600
+ providerSessionId: effect.Schema.optional(TrimmedNonEmptyStringSchema$1),
3601
+ providerThreadId: effect.Schema.optional(TrimmedNonEmptyStringSchema$1),
3602
+ providerTaskId: effect.Schema.optional(RuntimeTaskId),
3603
+ parentProviderItemId: effect.Schema.optional(ProviderItemId),
3604
+ metadata: effect.Schema.optional(UnknownRecordSchema)
3605
+ });
3606
+ const SubagentStartedPayload = effect.Schema.Struct({ subagent: SubagentRef });
3607
+ const SubagentUpdatedPayload = effect.Schema.Struct({
3608
+ subagent: SubagentRef,
3609
+ status: effect.Schema.optional(RuntimeSubagentStatus),
3610
+ summary: effect.Schema.optional(TrimmedNonEmptyStringSchema$1),
3611
+ detail: effect.Schema.optional(TrimmedNonEmptyStringSchema$1),
3612
+ usage: effect.Schema.optional(effect.Schema.Unknown)
3613
+ });
3614
+ const SubagentCompletedPayload = effect.Schema.Struct({
3615
+ subagent: SubagentRef,
3616
+ status: effect.Schema.Literals([
3617
+ "completed",
3618
+ "failed",
3619
+ "stopped"
3620
+ ]),
3621
+ summary: effect.Schema.optional(TrimmedNonEmptyStringSchema$1),
3622
+ usage: effect.Schema.optional(effect.Schema.Unknown)
3623
+ });
3624
+ const SubagentMessageDeltaPayload = effect.Schema.Struct({
3625
+ subagentId: RuntimeSubagentId,
3626
+ delta: effect.Schema.String,
3627
+ streamKind: effect.Schema.optional(RuntimeContentStreamKind),
3628
+ role: effect.Schema.optional(effect.Schema.Literals([
3629
+ "assistant",
3630
+ "user",
3631
+ "system"
3632
+ ])),
3633
+ providerSessionId: effect.Schema.optional(TrimmedNonEmptyStringSchema$1),
3634
+ providerThreadId: effect.Schema.optional(TrimmedNonEmptyStringSchema$1),
3635
+ providerMessageId: effect.Schema.optional(TrimmedNonEmptyStringSchema$1),
3636
+ contentIndex: effect.Schema.optional(effect.Schema.Int)
3637
+ });
3574
3638
  const HookStartedPayload = effect.Schema.Struct({
3575
3639
  hookId: TrimmedNonEmptyStringSchema$1,
3576
3640
  hookName: TrimmedNonEmptyStringSchema$1,
@@ -3812,6 +3876,26 @@ const ProviderRuntimeTaskCompletedEvent = effect.Schema.Struct({
3812
3876
  type: TaskCompletedType,
3813
3877
  payload: TaskCompletedPayload
3814
3878
  });
3879
+ const ProviderRuntimeSubagentStartedEvent = effect.Schema.Struct({
3880
+ ...ProviderRuntimeEventBase.fields,
3881
+ type: SubagentStartedType,
3882
+ payload: SubagentStartedPayload
3883
+ });
3884
+ const ProviderRuntimeSubagentUpdatedEvent = effect.Schema.Struct({
3885
+ ...ProviderRuntimeEventBase.fields,
3886
+ type: SubagentUpdatedType,
3887
+ payload: SubagentUpdatedPayload
3888
+ });
3889
+ const ProviderRuntimeSubagentCompletedEvent = effect.Schema.Struct({
3890
+ ...ProviderRuntimeEventBase.fields,
3891
+ type: SubagentCompletedType,
3892
+ payload: SubagentCompletedPayload
3893
+ });
3894
+ const ProviderRuntimeSubagentMessageDeltaEvent = effect.Schema.Struct({
3895
+ ...ProviderRuntimeEventBase.fields,
3896
+ type: SubagentMessageDeltaType,
3897
+ payload: SubagentMessageDeltaPayload
3898
+ });
3815
3899
  const ProviderRuntimeHookStartedEvent = effect.Schema.Struct({
3816
3900
  ...ProviderRuntimeEventBase.fields,
3817
3901
  type: HookStartedType,
@@ -3929,6 +4013,10 @@ effect.Schema.Union([
3929
4013
  ProviderRuntimeTaskStartedEvent,
3930
4014
  ProviderRuntimeTaskProgressEvent,
3931
4015
  ProviderRuntimeTaskCompletedEvent,
4016
+ ProviderRuntimeSubagentStartedEvent,
4017
+ ProviderRuntimeSubagentUpdatedEvent,
4018
+ ProviderRuntimeSubagentCompletedEvent,
4019
+ ProviderRuntimeSubagentMessageDeltaEvent,
3932
4020
  ProviderRuntimeHookStartedEvent,
3933
4021
  ProviderRuntimeHookProgressEvent,
3934
4022
  ProviderRuntimeHookCompletedEvent,
@@ -4085,7 +4173,7 @@ const GitStatusPollIntervalMs = effect_Schema.Literals([
4085
4173
  3e5
4086
4174
  ]);
4087
4175
  const ClientSettingsSchema = effect_Schema.Struct({
4088
- autoOpenPlanSidebar: effect_Schema.Boolean.pipe(effect_Schema.withDecodingDefault(effect.Effect.succeed(true))),
4176
+ autoOpenPlanSidebar: effect_Schema.Boolean.pipe(effect_Schema.withDecodingDefault(effect.Effect.succeed(false))),
4089
4177
  confirmThreadArchive: effect_Schema.Boolean.pipe(effect_Schema.withDecodingDefault(effect.Effect.succeed(false))),
4090
4178
  confirmThreadDelete: effect_Schema.Boolean.pipe(effect_Schema.withDecodingDefault(effect.Effect.succeed(true))),
4091
4179
  dismissedProviderUpdateNotificationKeys: effect_Schema.Array(TrimmedNonEmptyString).pipe(effect_Schema.withDecodingDefault(effect.Effect.succeed([]))),
@@ -4251,6 +4339,7 @@ const ObservabilitySettings = effect_Schema.Struct({
4251
4339
  });
4252
4340
  const ServerSettings = effect_Schema.Struct({
4253
4341
  enableAssistantStreaming: effect_Schema.Boolean.pipe(effect_Schema.withDecodingDefault(effect.Effect.succeed(false))),
4342
+ enableProviderUpdateChecks: effect_Schema.Boolean.pipe(effect_Schema.withDecodingDefault(effect.Effect.succeed(true))),
4254
4343
  defaultThreadEnvMode: ThreadEnvMode.pipe(effect_Schema.withDecodingDefault(effect.Effect.succeed("local"))),
4255
4344
  defaultAgentTokenMode: AgentTokenMode.pipe(effect_Schema.withDecodingDefault(effect.Effect.succeed(DEFAULT_AGENT_TOKEN_MODE))),
4256
4345
  addProjectBaseDirectory: TrimmedString.pipe(effect_Schema.withDecodingDefault(effect.Effect.succeed(""))),
@@ -4321,6 +4410,7 @@ const OpenCodeSettingsPatch = effect_Schema.Struct({
4321
4410
  });
4322
4411
  const ServerSettingsPatch = effect_Schema.Struct({
4323
4412
  enableAssistantStreaming: effect_Schema.optionalKey(effect_Schema.Boolean),
4413
+ enableProviderUpdateChecks: effect_Schema.optionalKey(effect_Schema.Boolean),
4324
4414
  defaultThreadEnvMode: effect_Schema.optionalKey(ThreadEnvMode),
4325
4415
  defaultAgentTokenMode: effect_Schema.optionalKey(AgentTokenMode),
4326
4416
  addProjectBaseDirectory: effect_Schema.optionalKey(effect_Schema.String),
@@ -4826,6 +4916,110 @@ var DiagnosticsError = class extends effect.Schema.TaggedErrorClass()("Diagnosti
4826
4916
  }
4827
4917
  };
4828
4918
  //#endregion
4919
+ //#region ../../packages/contracts/src/statistics.ts
4920
+ /**
4921
+ * Usage statistics surfaced in Settings → Statistics.
4922
+ *
4923
+ * The server returns the finest sensible granularity — one bucket per
4924
+ * `(date, project, model)` — and the client pivots/filters those buckets into
4925
+ * every chart (totals, per-model, per-project, time series) without re-fetching.
4926
+ * Token counts and timings are derived on demand from the existing projection
4927
+ * tables; no dedicated statistics tables exist.
4928
+ */
4929
+ /** Selectable time window for the dashboard (client-side slicing of buckets). */
4930
+ const StatisticsRange = effect.Schema.Literals([
4931
+ "7d",
4932
+ "30d",
4933
+ "90d",
4934
+ "all"
4935
+ ]);
4936
+ effect.Schema.Struct({
4937
+ projectId: effect.Schema.optional(effect.Schema.NullOr(ProjectId)),
4938
+ model: effect.Schema.optional(effect.Schema.NullOr(effect.Schema.String)),
4939
+ provider: effect.Schema.optional(effect.Schema.NullOr(effect.Schema.String)),
4940
+ range: effect.Schema.optional(StatisticsRange)
4941
+ });
4942
+ /**
4943
+ * A model that appears in the data, with its best-effort provider driver kind.
4944
+ * String fields are plain `Schema.String` (not non-empty): these are
4945
+ * server-derived display values, and relaxing them keeps a stray empty/legacy
4946
+ * value from failing success-encoding and crashing the whole RPC.
4947
+ */
4948
+ const StatisticsModelRef = effect.Schema.Struct({
4949
+ model: effect.Schema.String,
4950
+ provider: effect.Schema.optional(effect.Schema.String)
4951
+ });
4952
+ const StatisticsProjectRef = effect.Schema.Struct({
4953
+ id: ProjectId,
4954
+ title: effect.Schema.String
4955
+ });
4956
+ /**
4957
+ * One row per `(date, project, model)`. Numeric fields are plain numbers (sums)
4958
+ * to stay permissive — a provider that reports fractional usage will not fail
4959
+ * decoding.
4960
+ */
4961
+ const StatisticsDailyBucket = effect.Schema.Struct({
4962
+ /** Calendar day in UTC, formatted YYYY-MM-DD. */
4963
+ date: effect.Schema.String,
4964
+ projectId: ProjectId,
4965
+ model: effect.Schema.String,
4966
+ provider: effect.Schema.optional(effect.Schema.String),
4967
+ inputTokens: effect.Schema.Number,
4968
+ outputTokens: effect.Schema.Number,
4969
+ cachedInputTokens: effect.Schema.Number,
4970
+ reasoningTokens: effect.Schema.Number,
4971
+ turns: effect.Schema.Number,
4972
+ activeMs: effect.Schema.Number,
4973
+ toolUses: effect.Schema.Number,
4974
+ filesChanged: effect.Schema.Number,
4975
+ additions: effect.Schema.Number,
4976
+ deletions: effect.Schema.Number,
4977
+ commits: effect.Schema.Number,
4978
+ pushes: effect.Schema.Number,
4979
+ threadsCreated: effect.Schema.Number
4980
+ });
4981
+ const StatisticsWorktreeSummary = effect.Schema.Struct({
4982
+ created: effect.Schema.Number,
4983
+ archived: effect.Schema.Number,
4984
+ active: effect.Schema.Number,
4985
+ openPrs: effect.Schema.Number
4986
+ });
4987
+ const StatisticsTotals = effect.Schema.Struct({
4988
+ inputTokens: effect.Schema.Number,
4989
+ outputTokens: effect.Schema.Number,
4990
+ cachedInputTokens: effect.Schema.Number,
4991
+ reasoningTokens: effect.Schema.Number,
4992
+ totalTokens: effect.Schema.Number,
4993
+ turns: effect.Schema.Number,
4994
+ activeMs: effect.Schema.Number,
4995
+ toolUses: effect.Schema.Number,
4996
+ filesChanged: effect.Schema.Number,
4997
+ additions: effect.Schema.Number,
4998
+ deletions: effect.Schema.Number,
4999
+ commits: effect.Schema.Number,
5000
+ pushes: effect.Schema.Number,
5001
+ threads: effect.Schema.Number,
5002
+ projects: effect.Schema.Number
5003
+ });
5004
+ /**
5005
+ * How per-day/per-model token figures were attributed:
5006
+ * - `per-turn-delta`: exact, one definitive delta per (thread, turn).
5007
+ * - `thread-cumulative`: approximate, a thread's cumulative total attributed to
5008
+ * its primary model and last-activity day (fallback when deltas are absent).
5009
+ */
5010
+ const StatisticsTokenAttribution = effect.Schema.Literals(["per-turn-delta", "thread-cumulative"]);
5011
+ const StatisticsSnapshot = effect.Schema.Struct({
5012
+ generatedAt: IsoDateTime,
5013
+ /** Earliest activity date observed, useful for the "all time" label. */
5014
+ earliestActivityAt: effect.Schema.optional(IsoDateTime),
5015
+ projects: effect.Schema.Array(StatisticsProjectRef),
5016
+ models: effect.Schema.Array(StatisticsModelRef),
5017
+ dailyBuckets: effect.Schema.Array(StatisticsDailyBucket),
5018
+ worktrees: StatisticsWorktreeSummary,
5019
+ totals: StatisticsTotals,
5020
+ tokenAttribution: effect.Schema.optional(StatisticsTokenAttribution)
5021
+ });
5022
+ //#endregion
4829
5023
  //#region ../../packages/contracts/src/opinionatedPlugins.ts
4830
5024
  const OpinionatedPluginId = effect.Schema.Literals([
4831
5025
  "rtk",
@@ -5214,6 +5408,16 @@ const VcsStatusChangeRequest = effect.Schema.Struct({
5214
5408
  headRef: TrimmedNonEmptyStringSchema,
5215
5409
  state: VcsStatusChangeRequestState
5216
5410
  });
5411
+ /** A per-file diff summary plus its rolled-up insertion/deletion totals. */
5412
+ const VcsStatusDiffTotals = effect.Schema.Struct({
5413
+ files: effect.Schema.Array(effect.Schema.Struct({
5414
+ path: TrimmedNonEmptyStringSchema,
5415
+ insertions: NonNegativeInt,
5416
+ deletions: NonNegativeInt
5417
+ })),
5418
+ insertions: NonNegativeInt,
5419
+ deletions: NonNegativeInt
5420
+ });
5217
5421
  const VcsStatusLocalShape = {
5218
5422
  isRepo: effect.Schema.Boolean,
5219
5423
  sourceControlProvider: effect.Schema.optional(SourceControlProviderInfo),
@@ -5221,15 +5425,15 @@ const VcsStatusLocalShape = {
5221
5425
  isDefaultRef: effect.Schema.Boolean,
5222
5426
  refName: effect.Schema.NullOr(TrimmedNonEmptyStringSchema),
5223
5427
  hasWorkingTreeChanges: effect.Schema.Boolean,
5224
- workingTree: effect.Schema.Struct({
5225
- files: effect.Schema.Array(effect.Schema.Struct({
5226
- path: TrimmedNonEmptyStringSchema,
5227
- insertions: NonNegativeInt,
5228
- deletions: NonNegativeInt
5229
- })),
5230
- insertions: NonNegativeInt,
5231
- deletions: NonNegativeInt
5232
- })
5428
+ /** Uncommitted (staged + unstaged) working-tree changes. */
5429
+ workingTree: VcsStatusDiffTotals,
5430
+ /**
5431
+ * Committed changes on this branch relative to its base (merge-base of the
5432
+ * default branch and HEAD, i.e. `git diff base...HEAD` — the same set a PR
5433
+ * shows). Counts committed work whether or not it has been pushed. Omitted on
5434
+ * the default branch (nothing to compare against) and by non-git drivers.
5435
+ */
5436
+ committed: effect.Schema.optional(VcsStatusDiffTotals)
5233
5437
  };
5234
5438
  const VcsStatusRemoteShape = {
5235
5439
  hasUpstream: effect.Schema.Boolean,
@@ -5659,6 +5863,7 @@ const WS_METHODS = {
5659
5863
  serverCheckOpinionatedPlugins: "server.checkOpinionatedPlugins",
5660
5864
  serverInstallOpinionatedPlugin: "server.installOpinionatedPlugin",
5661
5865
  serverGetDiagnosticsSnapshot: "server.getDiagnosticsSnapshot",
5866
+ serverGetStatistics: "server.getStatistics",
5662
5867
  mcpListWorkspaces: "mcp.listWorkspaces",
5663
5868
  mcpListServers: "mcp.listServers",
5664
5869
  mcpUpsertServer: "mcp.upsertServer",
@@ -5838,6 +6043,11 @@ const WsServerGetDiagnosticsSnapshotRpc = effect_unstable_rpc_Rpc.make(WS_METHOD
5838
6043
  success: DiagnosticsSnapshot,
5839
6044
  error: effect.Schema.Union([DiagnosticsError, AuthRpcError])
5840
6045
  });
6046
+ const WsServerGetStatisticsRpc = effect_unstable_rpc_Rpc.make(WS_METHODS.serverGetStatistics, {
6047
+ payload: effect.Schema.Struct({}),
6048
+ success: StatisticsSnapshot,
6049
+ error: AuthRpcError
6050
+ });
5841
6051
  const WsServerDiscoverSourceControlRpc = effect_unstable_rpc_Rpc.make(WS_METHODS.serverDiscoverSourceControl, {
5842
6052
  payload: effect.Schema.Struct({}),
5843
6053
  success: SourceControlDiscoveryResult,
@@ -5957,7 +6167,7 @@ const WsSourceControlListChangeRequestsRpc = effect_unstable_rpc_Rpc.make(WS_MET
5957
6167
  query: effect.Schema.optional(effect.Schema.String)
5958
6168
  }),
5959
6169
  success: effect.Schema.Array(ChangeRequest),
5960
- error: SourceControlProviderError
6170
+ error: effect.Schema.Union([SourceControlProviderError, AuthRpcError])
5961
6171
  });
5962
6172
  const WsSourceControlSearchChangeRequestsRpc = effect_unstable_rpc_Rpc.make(WS_METHODS.sourceControlSearchChangeRequests, {
5963
6173
  payload: effect.Schema.Struct({
@@ -6369,7 +6579,52 @@ const WsSubscribeAuthAccessRpc = effect_unstable_rpc_Rpc.make(WS_METHODS.subscri
6369
6579
  error: AuthRpcError,
6370
6580
  stream: true
6371
6581
  });
6372
- const WsRpcGroup = effect_unstable_rpc_RpcGroup.make(WsServerGetConfigRpc, WsServerGetAdvertisedEndpointsRpc, WsServerGetDiagnosticsMetricsRpc, WsServerRefreshProvidersRpc, WsServerUpdateProviderRpc, WsServerUpsertKeybindingRpc, WsKeybindingsReplaceCustomRpc, WsServerGetSettingsRpc, WsServerUpdateSettingsRpc, WsServerGetDiagnosticsSnapshotRpc, WsServerDiscoverSourceControlRpc, WsServerListOpinionatedPluginsRpc, WsServerCheckOpinionatedPluginsRpc, WsServerInstallOpinionatedPluginRpc, WsMcpListWorkspacesRpc, WsMcpListServersRpc, WsMcpUpsertServerRpc, WsMcpSetServerEnabledRpc, WsMcpRemoveServerRpc, WsMcpReloadServersRpc, WsMcpStartOauthLoginRpc, WsSourceControlLookupRepositoryRpc, WsSourceControlSearchRepositoriesRpc, WsSourceControlCloneRepositoryRpc, WsSourceControlPublishRepositoryRpc, WsSourceControlListIssuesRpc, WsSourceControlGetIssueRpc, WsSourceControlSearchIssuesRpc, WsSourceControlListChangeRequestsRpc, WsSourceControlSearchChangeRequestsRpc, WsSourceControlGetChangeRequestDetailRpc, WsSourceControlGetChangeRequestDiffRpc, WsSourceControlCreateIssueRpc, WsSourceControlAddIssueCommentRpc, WsSourceControlAddIssueCommentReactionRpc, WsSourceControlAddChangeRequestCommentRpc, WsSourceControlAddChangeRequestCommentReactionRpc, WsSourceControlListIssueLabelsRpc, WsSourceControlListIssueAssigneesRpc, WsSourceControlListWorkflowRunsRpc, WsSourceControlGetWorkflowRunJobsRpc, WsSourceControlGetWorkflowJobLogRpc, WsSourceControlRerunWorkflowRpc, WsTextGenerationGenerateIssueContentRpc, WsTextGenerationGenerateBranchNameRpc, WsAtlassianListConnectionsRpc, WsAtlassianStartOAuthRpc, WsAtlassianDisconnectRpc, WsAtlassianRefreshRpc, WsAtlassianListResourcesRpc, WsAtlassianGetProjectLinkRpc, WsAtlassianSaveProjectLinkRpc, WsAtlassianSaveManualBitbucketTokenRpc, WsAtlassianSaveManualJiraTokenRpc, WsWorkItemsListProjectsRpc, WsWorkItemsListRpc, WsWorkItemsSearchRpc, WsWorkItemsGetRpc, WsWorkItemsAddCommentRpc, WsWorkItemsEditCommentRpc, WsWorkItemsUpdateRpc, WsWorkItemsListTransitionsRpc, WsWorkItemsTransitionRpc, WsProjectsListEntriesRpc, WsProjectsSearchEntriesRpc, WsProjectsReadFileRpc, WsProjectsWriteFileRpc, WsProjectsStageFileReferenceRpc, WsShellOpenInEditorRpc, WsFilesystemBrowseRpc, WsSubscribeVcsStatusRpc, WsVcsPullRpc, WsVcsRefreshStatusRpc, WsGitRunStackedActionRpc, WsGitResolvePullRequestRpc, WsGitPreparePullRequestThreadRpc, WsGitCreateWorktreeForProjectRpc, WsGitFindWorktreeForOriginRpc, WsGitArchiveWorktreeRpc, WsGitRestoreWorktreeRpc, WsGitDeleteWorktreeRpc, WsThreadsSetManualBucketRpc, WsThreadsSetManualPositionRpc, WsWorktreesSetManualPositionRpc, WsProjectsInitializeGitRpc, WsVcsListRefsRpc, WsVcsCreateWorktreeRpc, WsVcsRemoveWorktreeRpc, WsVcsCreateRefRpc, WsVcsSwitchRefRpc, WsVcsInitRpc, WsTerminalOpenRpc, WsTerminalWriteRpc, WsTerminalResizeRpc, WsTerminalClearRpc, WsTerminalRestartRpc, WsTerminalCloseRpc, WsSubscribeTerminalEventsRpc, WsSubscribeServerConfigRpc, WsSubscribeServerLifecycleRpc, WsSubscribeAuthAccessRpc, WsOrchestrationDispatchCommandRpc, WsOrchestrationGetTurnDiffRpc, WsOrchestrationGetFullThreadDiffRpc, WsOrchestrationReplayEventsRpc, WsOrchestrationReplayEventsPageRpc, WsOrchestrationSubscribeShellRpc, WsOrchestrationSubscribeThreadRpc);
6582
+ const WsRpcGroup = effect_unstable_rpc_RpcGroup.make(WsServerGetConfigRpc, WsServerGetAdvertisedEndpointsRpc, WsServerGetDiagnosticsMetricsRpc, WsServerGetStatisticsRpc, WsServerRefreshProvidersRpc, WsServerUpdateProviderRpc, WsServerUpsertKeybindingRpc, WsKeybindingsReplaceCustomRpc, WsServerGetSettingsRpc, WsServerUpdateSettingsRpc, WsServerGetDiagnosticsSnapshotRpc, WsServerDiscoverSourceControlRpc, WsServerListOpinionatedPluginsRpc, WsServerCheckOpinionatedPluginsRpc, WsServerInstallOpinionatedPluginRpc, WsMcpListWorkspacesRpc, WsMcpListServersRpc, WsMcpUpsertServerRpc, WsMcpSetServerEnabledRpc, WsMcpRemoveServerRpc, WsMcpReloadServersRpc, WsMcpStartOauthLoginRpc, WsSourceControlLookupRepositoryRpc, WsSourceControlSearchRepositoriesRpc, WsSourceControlCloneRepositoryRpc, WsSourceControlPublishRepositoryRpc, WsSourceControlListIssuesRpc, WsSourceControlGetIssueRpc, WsSourceControlSearchIssuesRpc, WsSourceControlListChangeRequestsRpc, WsSourceControlSearchChangeRequestsRpc, WsSourceControlGetChangeRequestDetailRpc, WsSourceControlGetChangeRequestDiffRpc, WsSourceControlCreateIssueRpc, WsSourceControlAddIssueCommentRpc, WsSourceControlAddIssueCommentReactionRpc, WsSourceControlAddChangeRequestCommentRpc, WsSourceControlAddChangeRequestCommentReactionRpc, WsSourceControlListIssueLabelsRpc, WsSourceControlListIssueAssigneesRpc, WsSourceControlListWorkflowRunsRpc, WsSourceControlGetWorkflowRunJobsRpc, WsSourceControlGetWorkflowJobLogRpc, WsSourceControlRerunWorkflowRpc, WsTextGenerationGenerateIssueContentRpc, WsTextGenerationGenerateBranchNameRpc, WsAtlassianListConnectionsRpc, WsAtlassianStartOAuthRpc, WsAtlassianDisconnectRpc, WsAtlassianRefreshRpc, WsAtlassianListResourcesRpc, WsAtlassianGetProjectLinkRpc, WsAtlassianSaveProjectLinkRpc, WsAtlassianSaveManualBitbucketTokenRpc, WsAtlassianSaveManualJiraTokenRpc, WsWorkItemsListProjectsRpc, WsWorkItemsListRpc, WsWorkItemsSearchRpc, WsWorkItemsGetRpc, WsWorkItemsAddCommentRpc, WsWorkItemsEditCommentRpc, WsWorkItemsUpdateRpc, WsWorkItemsListTransitionsRpc, WsWorkItemsTransitionRpc, WsProjectsListEntriesRpc, WsProjectsSearchEntriesRpc, WsProjectsReadFileRpc, WsProjectsWriteFileRpc, WsProjectsStageFileReferenceRpc, WsShellOpenInEditorRpc, WsFilesystemBrowseRpc, WsSubscribeVcsStatusRpc, WsVcsPullRpc, WsVcsRefreshStatusRpc, WsGitRunStackedActionRpc, WsGitResolvePullRequestRpc, WsGitPreparePullRequestThreadRpc, WsGitCreateWorktreeForProjectRpc, WsGitFindWorktreeForOriginRpc, WsGitArchiveWorktreeRpc, WsGitRestoreWorktreeRpc, WsGitDeleteWorktreeRpc, WsThreadsSetManualBucketRpc, WsThreadsSetManualPositionRpc, WsWorktreesSetManualPositionRpc, WsProjectsInitializeGitRpc, WsVcsListRefsRpc, WsVcsCreateWorktreeRpc, WsVcsRemoveWorktreeRpc, WsVcsCreateRefRpc, WsVcsSwitchRefRpc, WsVcsInitRpc, WsTerminalOpenRpc, WsTerminalWriteRpc, WsTerminalResizeRpc, WsTerminalClearRpc, WsTerminalRestartRpc, WsTerminalCloseRpc, WsSubscribeTerminalEventsRpc, WsSubscribeServerConfigRpc, WsSubscribeServerLifecycleRpc, WsSubscribeAuthAccessRpc, WsOrchestrationDispatchCommandRpc, WsOrchestrationGetTurnDiffRpc, WsOrchestrationGetFullThreadDiffRpc, WsOrchestrationReplayEventsRpc, WsOrchestrationReplayEventsPageRpc, WsOrchestrationSubscribeShellRpc, WsOrchestrationSubscribeThreadRpc);
6583
+ //#endregion
6584
+ //#region ../../packages/shared/src/schemaJson.ts
6585
+ const decodeJsonResult = (schema) => {
6586
+ const decode = effect.Schema.decodeExit(effect.Schema.fromJsonString(schema));
6587
+ return (input) => {
6588
+ const result = decode(input);
6589
+ if (effect.Exit.isFailure(result)) return effect.Result.fail(result.cause);
6590
+ return effect.Result.succeed(result.value);
6591
+ };
6592
+ };
6593
+ const formatSchemaError = (cause) => {
6594
+ const squashed = effect.Cause.squash(cause);
6595
+ return effect.Schema.isSchemaError(squashed) ? effect.SchemaIssue.makeFormatterDefault()(squashed.issue) : effect.Cause.pretty(cause);
6596
+ };
6597
+ /**
6598
+ * A `Getter` that parses a lenient JSON string (tolerating trailing commas
6599
+ * and JS-style comments) into an unknown value.
6600
+ *
6601
+ * Mirrors `SchemaGetter.parseJson()` but uses `parseLenientJson` instead
6602
+ * of `JSON.parse`.
6603
+ */
6604
+ const parseLenientJsonGetter = effect.SchemaGetter.onSome((input) => effect.Effect.try({
6605
+ try: () => {
6606
+ let stripped = input.replace(/("(?:[^"\\]|\\.)*")|\/\/[^\n]*/g, (match, stringLiteral) => stringLiteral ? match : "");
6607
+ stripped = stripped.replace(/("(?:[^"\\]|\\.)*")|\/\*[\s\S]*?\*\//g, (match, stringLiteral) => stringLiteral ? match : "");
6608
+ stripped = stripped.replace(/,(\s*[}\]])/g, "$1");
6609
+ return effect.Option.some(JSON.parse(stripped));
6610
+ },
6611
+ catch: (e) => new effect.SchemaIssue.InvalidValue(effect.Option.some(input), { message: String(e) })
6612
+ }));
6613
+ /**
6614
+ * Schema transformation: lenient JSONC string ↔ unknown.
6615
+ *
6616
+ * Same API as `SchemaTransformation.fromJsonString`, but the decode side
6617
+ * strips trailing commas and JS-style comments before parsing.
6618
+ * Encoding produces strict JSON via `JSON.stringify`.
6619
+ */
6620
+ const fromLenientJsonString = new effect.SchemaTransformation.Transformation(parseLenientJsonGetter, effect.SchemaGetter.stringifyJson());
6621
+ /**
6622
+ * Build a schema that decodes a lenient JSON string into `A`.
6623
+ *
6624
+ * Drop-in replacement for `Schema.fromJsonString(schema)` that tolerates
6625
+ * trailing commas and comments in the input.
6626
+ */
6627
+ const fromLenientJson = (schema) => effect.Schema.String.pipe(effect.Schema.decodeTo(schema, fromLenientJsonString));
6373
6628
  //#endregion
6374
6629
  //#region src/stream/collectUint8StreamText.ts
6375
6630
  const collectUint8StreamText = (input) => {
@@ -7124,6 +7379,12 @@ Object.defineProperty(exports, "RuntimeRequestId", {
7124
7379
  return RuntimeRequestId;
7125
7380
  }
7126
7381
  });
7382
+ Object.defineProperty(exports, "RuntimeSubagentId", {
7383
+ enumerable: true,
7384
+ get: function() {
7385
+ return RuntimeSubagentId;
7386
+ }
7387
+ });
7127
7388
  Object.defineProperty(exports, "RuntimeTaskId", {
7128
7389
  enumerable: true,
7129
7390
  get: function() {
@@ -7460,12 +7721,30 @@ Object.defineProperty(exports, "collectUint8StreamText", {
7460
7721
  return collectUint8StreamText;
7461
7722
  }
7462
7723
  });
7724
+ Object.defineProperty(exports, "decodeJsonResult", {
7725
+ enumerable: true,
7726
+ get: function() {
7727
+ return decodeJsonResult;
7728
+ }
7729
+ });
7463
7730
  Object.defineProperty(exports, "defaultInstanceIdForDriver", {
7464
7731
  enumerable: true,
7465
7732
  get: function() {
7466
7733
  return defaultInstanceIdForDriver;
7467
7734
  }
7468
7735
  });
7736
+ Object.defineProperty(exports, "formatSchemaError", {
7737
+ enumerable: true,
7738
+ get: function() {
7739
+ return formatSchemaError;
7740
+ }
7741
+ });
7742
+ Object.defineProperty(exports, "fromLenientJson", {
7743
+ enumerable: true,
7744
+ get: function() {
7745
+ return fromLenientJson;
7746
+ }
7747
+ });
7469
7748
  Object.defineProperty(exports, "isProviderDriverKind", {
7470
7749
  enumerable: true,
7471
7750
  get: function() {
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  const require_chunk = require("./chunk-jM1PLTSZ.cjs");
4
- const require_collectUint8StreamText = require("./collectUint8StreamText-TCG6xW_P.cjs");
4
+ const require_collectUint8StreamText = require("./collectUint8StreamText-uNXVRHOf.cjs");
5
5
  const require_bin = require("./bin.cjs");
6
6
  let effect = require("effect");
7
7
  let effect_Semaphore = require("effect/Semaphore");
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { v as TextGenerationError } from "./collectUint8StreamText-C2z5Y8tF.mjs";
3
+ import { x as TextGenerationError } from "./collectUint8StreamText-Lv4GGI79.mjs";
4
4
  import { n as ignoreProviderBackgroundCause } from "./bin.mjs";
5
5
  import { Effect, Equal, Fiber, PubSub, Ref, Schema, Stream } from "effect";
6
6
  import * as Semaphore$1 from "effect/Semaphore";
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "ryco": "dist/bin.mjs"
10
10
  },
11
11
  "type": "module",
12
- "version": "0.1.6",
12
+ "version": "0.1.7",
13
13
  "engines": {
14
14
  "node": "^22.16 || ^23.11 || >=24.10"
15
15
  },
@@ -1 +0,0 @@
1
- import{i as e,t}from"./react-PSPkXoKo.js";import{t as n}from"./compiler-runtime-BNrXlsa1.js";import{Ni as r,O as i,Sr as a,Xr as o,Yr as s,br as c}from"./composerDraftStore-D12lUSfh.js";import{i as l,p as u}from"./toast-DE7a4wkW.js";import{D as d,G as f,H as p,S as m,Tt as h,U as g,W as _,_ as v,b as y,or as b,x,z as S}from"./providerIconUtils-uhWb4bdg.js";import{n as C,r as w,t as T}from"./scale-BActunFu.js";import{t as E}from"./clipboard-copy-CYBLSG2q.js";import{t as D}from"./download-DLBlpp4h.js";import{t as O}from"./palette-BQcz-ZYV.js";import{t as k}from"./plus-4Oy56d-3.js";import{t as A}from"./trash-2-BI5xcbsm.js";import{t as j}from"./x-fI9snvD3.js";import{t as M}from"./input-B9-RWT56.js";import{A as N,D as P,E as F,M as I,N as L,O as ee,P as R,T as te,_ as z,a as ne,b as re,c as ie,d as ae,f as B,g as V,h as oe,i as se,j as H,k as ce,l as le,m as ue,o as de,p as fe,r as pe,s as me,t as he,u as ge,v as _e,w as ve,x as U,y as W}from"./useTheme-Dv42Z8uy.js";import{n as G,t as K}from"./toggle-group-CnLjaHSL.js";import{a as ye,i as be,n as xe,o as Se,r as Ce,s as we,t as Te}from"./alert-dialog-lMfKpG2t.js";import{i as q,n as Ee,r as J,t as Y}from"./settingsLayout-D22Mm0u3.js";var X=o(`baseline`,[[`path`,{d:`M4 20h16`,key:`14thso`}],[`path`,{d:`m6 16 6-12 6 12`,key:`1b4byz`}],[`path`,{d:`M8 12h8`,key:`1wcyev`}]]),De=o(`code-xml`,[[`path`,{d:`m18 16 4-4-4-4`,key:`1inbqp`}],[`path`,{d:`m6 8-4 4 4 4`,key:`15zrgr`}],[`path`,{d:`m14.5 4-5 16`,key:`e7oirm`}]]),Oe=o(`gauge`,[[`path`,{d:`m12 14 4-4`,key:`9kzdfg`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`,key:`19p75a`}]]),ke=o(`radius`,[[`path`,{d:`M20.34 17.52a10 10 0 1 0-2.82 2.82`,key:`fydyku`}],[`circle`,{cx:`19`,cy:`19`,r:`2`,key:`17f5cg`}],[`path`,{d:`m13.41 13.41 4.18 4.18`,key:`1gqbwc`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}]]),Ae=o(`type`,[[`path`,{d:`M12 4v16`,key:`1654pz`}],[`path`,{d:`M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2`,key:`e0r10z`}],[`path`,{d:`M9 20h6`,key:`s66wpe`}]]),je=o(`upload`,[[`path`,{d:`M12 3v12`,key:`1x0j5s`}],[`path`,{d:`m17 8-5-5-5 5`,key:`7q97r8`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}]]),Z=e(t(),1),Q=n(),Me=`.rycotheme.json`,Ne=/[^a-z0-9-_]+/gi;function Pe(e){let t=(e.name||e.id).trim().replace(Ne,`-`).replace(/^-+|-+$/g,``);return`${t.length>0?t:e.id||`theme`}${Me}`}function Fe(e){let t={id:e.id,name:e.name};return e.description&&(t.description=e.description),e.light&&(t.light={...e.light}),e.dark&&(t.dark={...e.dark}),JSON.stringify(t,null,2)}function Ie(e){let t;try{t=JSON.parse(e)}catch(e){throw Error(`Could not parse theme JSON: ${e instanceof Error?e.message:`invalid JSON`}`,{cause:e})}if(!fe(t))throw Error(`Theme JSON does not match the schema (need string id/name and string-only light/dark tokens).`);let n={id:t.id,name:t.name,builtIn:!1};return t.description&&(n.description=t.description),t.light&&(n.light={...t.light}),t.dark&&(n.dark={...t.dark}),n}function Le(e,t=`rename`){let n=Ie(e);if(!ge().find(e=>e.id===n.id))return se(n),{theme:n,action:`added`};if(ae(n.id)||t===`rename`){let e={...n,id:le(n.id)};return se(e),{theme:e,action:`renamed`}}return _e(n.id,n),{theme:n,action:`replaced`}}typeof TextEncoder>`u`||new TextEncoder,typeof TextDecoder>`u`||new TextDecoder;async function Re(e){let t=Fe(e);if(typeof navigator>`u`||!navigator.clipboard)throw Error(`Clipboard API not available in this environment.`);await navigator.clipboard.writeText(t)}function ze(e){if(typeof document>`u`||typeof URL>`u`||typeof Blob>`u`)throw Error(`Download not supported in this environment.`);let t=new Blob([Fe(e)],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=Pe(e),r.rel=`noopener`,document.body.append(r),r.click(),r.remove(),URL.revokeObjectURL(n)}async function Be(e,t={}){let n=Le(await e.text(),t.collision??`rename`);return t.activate&&(z(n.theme.id),ne(n.theme)),n}var $=r();function Ve(e,t,n){return e<t?t:e>n?n:e}function He(e){let t=e.trim().replace(/^#/,``),n;if(t.length===3)n=t.split(``).map(e=>`${e}${e}`).join(``);else if(t.length===6)n=t;else return null;return/^[0-9a-fA-F]{6}$/.test(n)?{r:Number.parseInt(n.slice(0,2),16),g:Number.parseInt(n.slice(2,4),16),b:Number.parseInt(n.slice(4,6),16)}:null}function Ue({r:e,g:t,b:n}){let r=e=>Ve(Math.round(e),0,255).toString(16).padStart(2,`0`);return`#${r(e)}${r(t)}${r(n)}`}function We({r:e,g:t,b:n}){let r=e/255,i=t/255,a=n/255,o=Math.max(r,i,a),s=o-Math.min(r,i,a),c=0;s!==0&&(c=o===r?60*((i-a)/s%6):o===i?60*((a-r)/s+2):60*((r-i)/s+4)),c<0&&(c+=360);let l=o===0?0:s/o;return{h:c,s:l,v:o}}function Ge({h:e,s:t,v:n}){let r=n*t,i=(e%360+360)%360/60,a=r*(1-Math.abs(i%2-1)),o=0,s=0,c=0;i<1?[o,s,c]=[r,a,0]:i<2?[o,s,c]=[a,r,0]:i<3?[o,s,c]=[0,r,a]:i<4?[o,s,c]=[0,a,r]:i<5?[o,s,c]=[a,0,r]:[o,s,c]=[r,0,a];let l=n-r;return{r:(o+l)*255,g:(s+l)*255,b:(c+l)*255}}function Ke(e){let t=(0,Q.c)(71),{value:n,onChange:r,children:i,side:o,align:s,ariaLabel:c,triggerClassName:l}=e,u=o===void 0?`bottom`:o,d=s===void 0?`start`:s,f;t[0]===n?f=t[1]:(f=()=>{let e=He(n);return e?We(e):{h:0,s:0,v:0}},t[0]=n,t[1]=f);let[p,h]=(0,Z.useState)(f),[g,_]=(0,Z.useState)(n),[v,b]=(0,Z.useState)(!1),S=(0,Z.useRef)(null),C=(0,Z.useRef)(null),w=(0,Z.useRef)(r),T=(0,Z.useRef)(p.h),E;t[2]===r?E=t[3]:(E=()=>{w.current=r},t[2]=r,t[3]=E),(0,Z.useEffect)(E);let D,O;t[4]===p.h?(D=t[5],O=t[6]):(D=()=>{T.current=p.h},O=[p.h],t[4]=p.h,t[5]=D,t[6]=O),(0,Z.useEffect)(D,O);let k;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(k=()=>{if(S.current=null,C.current===null)return;let e=C.current;C.current=null,w.current(e)},t[7]=k):k=t[7];let A=k,j;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(j=e=>{C.current=e,S.current===null&&(S.current=requestAnimationFrame(A))},t[8]=j):j=t[8];let N=j,P,F;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(F=()=>()=>{if(S.current!==null&&(cancelAnimationFrame(S.current),S.current=null),C.current!==null){let e=C.current;C.current=null,w.current(e)}},P=[],t[9]=P,t[10]=F):(P=t[9],F=t[10]),(0,Z.useEffect)(F,P);let I;t[11]===p?I=t[12]:(I=Ue(Ge(p)),t[11]=p,t[12]=I);let L=I,ee,R;t[13]!==L||t[14]!==n?(ee=()=>{if(n.toLowerCase()===L.toLowerCase())return;let e=He(n);if(!e)return;let t=We(e);h(e=>({h:t.s===0?e.h:t.h,s:t.s,v:t.v})),_(n)},R=[n,L],t[13]=L,t[14]=n,t[15]=ee,t[16]=R):(ee=t[15],R=t[16]),(0,Z.useEffect)(ee,R);let te=(0,Z.useRef)(null),z;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(z=e=>{let t=te.current;if(!t)return;let n=t.getBoundingClientRect(),r=Ve(e.clientX-n.left,0,n.width),i=Ve(e.clientY-n.top,0,n.height),a=n.width===0?0:r/n.width,o=n.height===0?0:1-i/n.height;h(e=>{let t={h:e.h,s:a,v:o},n=Ue(Ge(t));return _(n),C.current=n,S.current===null&&(S.current=requestAnimationFrame(A)),t})},t[17]=z):z=t[17];let ne=z,re;t[18]===Symbol.for(`react.memo_cache_sentinel`)?(re=e=>{e.preventDefault(),e.currentTarget.setPointerCapture(e.pointerId),ne(e)},t[18]=re):re=t[18];let ie=re,ae;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(ae=e=>{e.currentTarget.hasPointerCapture(e.pointerId)&&ne(e)},t[19]=ae):ae=t[19];let B=ae,V=(0,Z.useRef)(null),oe;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(oe=e=>{let t=V.current;if(!t)return;let n=t.getBoundingClientRect(),r=Ve(e.clientX-n.left,0,n.width),i=n.width===0?0:r/n.width*360;h(e=>{let t={h:i,s:e.s,v:e.v},n=Ue(Ge(t));return _(n),C.current=n,S.current===null&&(S.current=requestAnimationFrame(A)),t})},t[20]=oe):oe=t[20];let se=oe,H;t[21]===Symbol.for(`react.memo_cache_sentinel`)?(H=e=>{e.preventDefault(),e.currentTarget.setPointerCapture(e.pointerId),se(e)},t[21]=H):H=t[21];let ce=H,le;t[22]===Symbol.for(`react.memo_cache_sentinel`)?(le=e=>{e.currentTarget.hasPointerCapture(e.pointerId)&&se(e)},t[22]=le):le=t[22];let ue=le,de;t[23]===Symbol.for(`react.memo_cache_sentinel`)?(de=e=>{_(e);let t=He(e.startsWith(`#`)?e:`#${e}`);if(!t)return;let n=We(t);h({h:n.s===0?T.current:n.h,s:n.s,v:n.v}),N(Ue(t))},t[23]=de):de=t[23];let fe=de,pe=`${p.h/360*100}%`,me=`${p.s*100}%`,he=`${(1-p.v)*100}%`,ge=`hsl(${p.h} 100% 50%)`,_e;t[24]===l?_e=t[25]:(_e=a(`relative size-5 shrink-0 cursor-pointer overflow-hidden rounded-sm border border-border/80 outline-none transition-shadow focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background`,l),t[24]=l,t[25]=_e);let ve;t[26]!==c||t[27]!==i||t[28]!==_e?(ve=(0,$.jsx)(m,{"aria-label":c,className:_e,children:i}),t[26]=c,t[27]=i,t[28]=_e,t[29]=ve):ve=t[29];let U;t[30]===p.s?U=t[31]:(U=Math.round(p.s*100),t[30]=p.s,t[31]=U);let W;t[32]===ge?W=t[33]:(W={backgroundColor:ge},t[32]=ge,t[33]=W);let G;t[34]===Symbol.for(`react.memo_cache_sentinel`)?(G=(0,$.jsx)(`div`,{"aria-hidden":!0,className:`pointer-events-none absolute inset-0`,style:{background:`linear-gradient(to right, rgba(255,255,255,1), rgba(255,255,255,0))`}}),t[34]=G):G=t[34];let K;t[35]===Symbol.for(`react.memo_cache_sentinel`)?(K=(0,$.jsx)(`div`,{"aria-hidden":!0,className:`pointer-events-none absolute inset-0`,style:{background:`linear-gradient(to top, rgba(0,0,0,1), rgba(0,0,0,0))`}}),t[35]=K):K=t[35];let ye;t[36]!==me||t[37]!==he?(ye=(0,$.jsx)(`div`,{"aria-hidden":!0,className:`pointer-events-none absolute size-3 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white shadow-[0_0_0_1px_rgba(0,0,0,0.4)]`,style:{left:me,top:he}}),t[36]=me,t[37]=he,t[38]=ye):ye=t[38];let be;t[39]!==U||t[40]!==W||t[41]!==ye?(be=(0,$.jsxs)(`div`,{ref:te,role:`slider`,"aria-label":`Saturation and value`,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":U,tabIndex:0,className:`relative h-36 w-full cursor-crosshair touch-none select-none overflow-hidden rounded-md outline-none focus-visible:ring-2 focus-visible:ring-ring/40`,style:W,onPointerDown:ie,onPointerMove:B,children:[G,K,ye]}),t[39]=U,t[40]=W,t[41]=ye,t[42]=be):be=t[42];let xe;t[43]===p.h?xe=t[44]:(xe=Math.round(p.h),t[43]=p.h,t[44]=xe);let Se;t[45]===Symbol.for(`react.memo_cache_sentinel`)?(Se={background:`linear-gradient(to right, hsl(0 100% 50%), hsl(60 100% 50%), hsl(120 100% 50%), hsl(180 100% 50%), hsl(240 100% 50%), hsl(300 100% 50%), hsl(360 100% 50%))`},t[45]=Se):Se=t[45];let Ce;t[46]===pe?Ce=t[47]:(Ce=(0,$.jsx)(`div`,{"aria-hidden":!0,className:`pointer-events-none absolute top-1/2 size-3 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white shadow-[0_0_0_1px_rgba(0,0,0,0.4)]`,style:{left:pe}}),t[46]=pe,t[47]=Ce);let we;t[48]!==xe||t[49]!==Ce?(we=(0,$.jsx)(`div`,{ref:V,role:`slider`,"aria-label":`Hue`,"aria-valuemin":0,"aria-valuemax":360,"aria-valuenow":xe,tabIndex:0,className:`relative h-3 w-full cursor-ew-resize touch-none select-none overflow-hidden rounded-full outline-none focus-visible:ring-2 focus-visible:ring-ring/40`,style:Se,onPointerDown:ce,onPointerMove:ue,children:Ce}),t[48]=xe,t[49]=Ce,t[50]=we):we=t[50];let Te;t[51]===L?Te=t[52]:(Te=(0,$.jsx)(`span`,{"aria-hidden":!0,className:`size-7 shrink-0 rounded-md border border-border/60`,style:{backgroundColor:L}}),t[51]=L,t[52]=Te);let q;t[53]===Symbol.for(`react.memo_cache_sentinel`)?(q=e=>fe(e.currentTarget.value),t[53]=q):q=t[53];let Ee;t[54]===g?Ee=t[55]:(Ee=(0,$.jsx)(M,{value:g,size:`sm`,nativeInput:!0,onChange:q,spellCheck:!1,className:`font-mono text-xs`,"aria-label":`Hex value`}),t[54]=g,t[55]=Ee);let J;t[56]!==Te||t[57]!==Ee?(J=(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[Te,Ee]}),t[56]=Te,t[57]=Ee,t[58]=J):J=t[58];let Y;t[59]!==be||t[60]!==we||t[61]!==J?(Y=(0,$.jsxs)(`div`,{className:`space-y-3`,children:[be,we,J]}),t[59]=be,t[60]=we,t[61]=J,t[62]=Y):Y=t[62];let X;t[63]!==d||t[64]!==u||t[65]!==Y?(X=(0,$.jsx)(x,{side:u,align:d,className:`w-64`,children:Y}),t[63]=d,t[64]=u,t[65]=Y,t[66]=X):X=t[66];let De;return t[67]!==v||t[68]!==ve||t[69]!==X?(De=(0,$.jsxs)(y,{open:v,onOpenChange:b,children:[ve,X]}),t[67]=v,t[68]=ve,t[69]=X,t[70]=De):De=t[70],De}var qe=[{title:`Surfaces`,tokens:[`background`,`app-chrome-background`,`foreground`,`card`,`card-foreground`,`popover`,`popover-foreground`]},{title:`Brand & focus`,tokens:[`primary`,`primary-foreground`,`ring`]},{title:`Neutrals`,tokens:[`secondary`,`secondary-foreground`,`muted`,`muted-foreground`,`accent`,`accent-foreground`]},{title:`Status`,tokens:[`destructive`,`destructive-foreground`,`info`,`info-foreground`,`success`,`success-foreground`,`warning`,`warning-foreground`]},{title:`Borders & inputs`,tokens:[`border`,`input`]},{title:`Scrollbars`,tokens:[`scrollbar-thumb`,`scrollbar-thumb-hover`,`scrollbar-thumb-thin`,`scrollbar-thumb-thin-hover`]},{title:`Misc`,tokens:[`noise-opacity`]}],Je=new Set(W),Ye=null,Xe=null;function Ze(e){if(typeof document>`u`||document.body===void 0||!e)return`#000000`;Ye||(Ye=document.createElement(`div`),Ye.style.position=`absolute`,Ye.style.visibility=`hidden`,Ye.style.pointerEvents=`none`,document.body.append(Ye)),Ye.style.color=``,Ye.style.color=e;let t=getComputedStyle(Ye).color;Xe||=document.createElement(`canvas`),Xe.width=1,Xe.height=1;let n=Xe.getContext(`2d`,{willReadFrequently:!0});if(!n)return`#000000`;n.clearRect(0,0,1,1);try{n.fillStyle=t}catch{return`#000000`}n.fillRect(0,0,1,1);let r=n.getImageData(0,0,1,1).data;return`#${[r[0],r[1],r[2]].map(e=>(e??0).toString(16).padStart(2,`0`)).join(``)}`}function Qe(e,t,n,r){let i={...e[t]};return r.length===0?delete i[n]:i[n]=r,t===`light`?{...e,light:i}:{...e,dark:i}}function $e(e,t){return{...e,name:t}}function et(e,t){let n={...e};return t.length===0?delete n.description:n.description=t,n}function tt(e){return pe.includes(e)}function nt(e){let t=(0,Q.c)(124),{source:n,draft:r,onDraftChange:i,onSave:a,onCancel:o,resolvedVariant:s}=e,[l,u]=(0,Z.useState)(`form`),[d,f]=(0,Z.useState)(s),p;t[0]===r?p=t[1]:(p=()=>JSON.stringify(r,null,2),t[0]=r,t[1]=p);let[m,g]=(0,Z.useState)(p),[_,v]=(0,Z.useState)(null),[y,b]=(0,Z.useState)(!1),x;t[2]===n?x=t[3]:(x=JSON.stringify(n),t[2]=n,t[3]=x);let S;t[4]===r?S=t[5]:(S=JSON.stringify(r),t[4]=r,t[5]=S);let C=x!==S,w;t[6]===r?w=t[7]:(w=()=>{ne(r)},t[6]=r,t[7]=w);let T;t[8]!==r||t[9]!==s?(T=[r,s],t[8]=r,t[9]=s,t[10]=T):T=t[10],(0,Z.useEffect)(w,T);let E,D;t[11]!==r||t[12]!==l?(E=()=>{l===`form`&&g(JSON.stringify(r,null,2))},D=[r,l],t[11]=r,t[12]=l,t[13]=E,t[14]=D):(E=t[13],D=t[14]),(0,Z.useEffect)(E,D);let O;t[15]!==r||t[16]!==i?(O=e=>{i($e(r,e))},t[15]=r,t[16]=i,t[17]=O):O=t[17];let k=O,A;t[18]!==r||t[19]!==i?(A=e=>{i(et(r,e))},t[18]=r,t[19]=i,t[20]=A):A=t[20];let j=A,N;t[21]!==r||t[22]!==i||t[23]!==d?(N=(e,t)=>{i(Qe(r,d,e,t))},t[21]=r,t[22]=i,t[23]=d,t[24]=N):N=t[24];let P=N,F;t[25]===i?F=t[26]:(F=e=>{g(e);let t;try{t=JSON.parse(e)}catch(e){let t=e;v(t instanceof Error?t.message:`Invalid JSON`);return}if(!fe(t)){v(`Invalid theme schema. Need string id/name and string-only light/dark tokens.`);return}v(null),i(t)},t[25]=i,t[26]=F);let I=F,L;t[27]!==C||t[28]!==o?(L=()=>{if(C){b(!0);return}o()},t[27]=C,t[28]=o,t[29]=L):L=t[29];let ee=L,R,te,z;if(t[30]!==r.dark||t[31]!==r.light||t[32]!==d){z=(d===`dark`?r.dark:r.light)??{};let e;t[36]===d?e=t[37]:(e=(d===`dark`?U.dark:U.light)??{},t[36]=d,t[37]=e),R=e,te=Object.entries(z).filter(at),t[30]=r.dark,t[31]=r.light,t[32]=d,t[33]=R,t[34]=te,t[35]=z}else R=t[33],te=t[34],z=t[35];let ie=te,ae=rt,B=ae(r.light)||ae(r.dark),V;t[38]!==r.name||t[39]!==B||t[40]!==_?(V=_!==null||r.name.trim().length===0||B,t[38]=r.name,t[39]=B,t[40]=_,t[41]=V):V=t[41];let oe=V,se;t[42]===Symbol.for(`react.memo_cache_sentinel`)?(se=(0,$.jsx)(`span`,{className:`text-[11px] font-semibold uppercase tracking-[0.08em] text-muted-foreground`,children:`Editing`}),t[42]=se):se=t[42];let H=r.name||`Untitled`,ce;t[43]!==r.name||t[44]!==H?(ce=(0,$.jsx)(`span`,{className:`truncate text-sm font-medium text-foreground`,title:r.name,children:H}),t[43]=r.name,t[44]=H,t[45]=ce):ce=t[45];let le;t[46]===C?le=t[47]:(le=C?(0,$.jsx)(`span`,{className:`rounded-sm bg-warning/16 px-1.5 py-0.5 text-[10px] font-medium text-warning-foreground`,children:`Unsaved`}):null,t[46]=C,t[47]=le);let ue;t[48]===ee?ue=t[49]:(ue=(0,$.jsx)(c,{size:`sm`,variant:`outline`,onClick:ee,children:`Cancel`}),t[48]=ee,t[49]=ue);let de;t[50]!==a||t[51]!==oe?(de=(0,$.jsx)(c,{size:`sm`,onClick:a,disabled:oe,children:`Save`}),t[50]=a,t[51]=oe,t[52]=de):de=t[52];let pe;t[53]!==ue||t[54]!==de?(pe=(0,$.jsxs)(`div`,{className:`ms-auto flex items-center gap-2`,children:[ue,de]}),t[53]=ue,t[54]=de,t[55]=pe):pe=t[55];let me;t[56]!==ce||t[57]!==le||t[58]!==pe?(me=(0,$.jsxs)(`div`,{className:`sticky top-0 z-10 flex flex-wrap items-center gap-2 border-b border-border/60 bg-muted/72 px-4 py-2 backdrop-blur-sm sm:px-5`,children:[se,ce,le,pe]}),t[56]=ce,t[57]=le,t[58]=pe,t[59]=me):me=t[59];let he;t[60]===l?he=t[61]:(he=[l],t[60]=l,t[61]=he);let ge,_e,ve;t[62]===Symbol.for(`react.memo_cache_sentinel`)?(ge=e=>{let t=e[0];(t===`form`||t===`json`)&&u(t)},_e=(0,$.jsx)(K,{value:`form`,"aria-label":`Form editor`,className:`px-3 sm:px-3`,children:`Form`}),ve=(0,$.jsx)(K,{value:`json`,"aria-label":`JSON editor`,className:`px-3 sm:px-3`,children:`JSON`}),t[62]=ge,t[63]=_e,t[64]=ve):(ge=t[62],_e=t[63],ve=t[64]);let W;t[65]===he?W=t[66]:(W=(0,$.jsxs)(G,{value:he,variant:`outline`,size:`sm`,onValueChange:ge,children:[_e,ve]}),t[65]=he,t[66]=W);let q;t[67]===d?q=t[68]:(q=[d],t[67]=d,t[68]=q);let Ee,J,Y;t[69]===Symbol.for(`react.memo_cache_sentinel`)?(Ee=e=>{let t=e[0];(t===`light`||t===`dark`)&&f(t)},J=(0,$.jsx)(K,{value:`light`,"aria-label":`Light variant`,className:`px-3 sm:px-3`,children:`Light`}),Y=(0,$.jsx)(K,{value:`dark`,"aria-label":`Dark variant`,className:`px-3 sm:px-3`,children:`Dark`}),t[69]=Ee,t[70]=J,t[71]=Y):(Ee=t[69],J=t[70],Y=t[71]);let X;t[72]===q?X=t[73]:(X=(0,$.jsxs)(G,{value:q,variant:`outline`,size:`sm`,onValueChange:Ee,children:[J,Y]}),t[72]=q,t[73]=X);let De;t[74]!==W||t[75]!==X?(De=(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[W,X]}),t[74]=W,t[75]=X,t[76]=De):De=t[76];let Oe;t[77]===Symbol.for(`react.memo_cache_sentinel`)?(Oe=(0,$.jsx)(`span`,{className:`text-xs font-medium text-foreground`,children:`Name`}),t[77]=Oe):Oe=t[77];let ke;t[78]===k?ke=t[79]:(ke=e=>k(e.currentTarget.value),t[78]=k,t[79]=ke);let Ae;t[80]===r.name?Ae=t[81]:(Ae=r.name.trim().length===0||void 0,t[80]=r.name,t[81]=Ae);let je;t[82]!==r.name||t[83]!==ke||t[84]!==Ae?(je=(0,$.jsxs)(`label`,{className:`space-y-1.5`,children:[Oe,(0,$.jsx)(M,{value:r.name,nativeInput:!0,onChange:ke,"aria-invalid":Ae})]}),t[82]=r.name,t[83]=ke,t[84]=Ae,t[85]=je):je=t[85];let Me;t[86]===Symbol.for(`react.memo_cache_sentinel`)?(Me=(0,$.jsx)(`span`,{className:`text-xs font-medium text-foreground`,children:`Description`}),t[86]=Me):Me=t[86];let Ne=r.description??``,Pe;t[87]===j?Pe=t[88]:(Pe=e=>j(e.currentTarget.value),t[87]=j,t[88]=Pe);let Fe;t[89]!==Ne||t[90]!==Pe?(Fe=(0,$.jsxs)(`label`,{className:`space-y-1.5`,children:[Me,(0,$.jsx)(M,{value:Ne,nativeInput:!0,onChange:Pe,placeholder:`Optional, shown under the picker.`})]}),t[89]=Ne,t[90]=Pe,t[91]=Fe):Fe=t[91];let Ie;t[92]!==je||t[93]!==Fe?(Ie=(0,$.jsxs)(`div`,{className:`mt-4 grid gap-3 sm:grid-cols-[minmax(0,1fr)_minmax(0,1fr)]`,children:[je,Fe]}),t[92]=je,t[93]=Fe,t[94]=Ie):Ie=t[94];let Le;t[95]!==I||t[96]!==P||t[97]!==R||t[98]!==_||t[99]!==m||t[100]!==l||t[101]!==ie||t[102]!==z?(Le=l===`form`?(0,$.jsxs)(`div`,{className:`mt-5 space-y-5`,children:[qe.map(e=>(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(`h4`,{className:`text-[11px] font-semibold uppercase tracking-[0.08em] text-muted-foreground`,children:e.title}),(0,$.jsx)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:e.tokens.map(e=>{let t=z[e]??``,n=R[e]??``,r=re(e);return r?(0,$.jsx)(ot,{token:e,kind:r,value:t,inherited:n,onChange:t=>P(e,t)},e):null})})]},e.title)),ie.length>0?(0,$.jsxs)(`p`,{className:`text-xs text-warning-foreground`,children:[ie.length,` token`,ie.length===1?``:`s`,` not in the allow-list will be ignored on save.`]}):null]}):(0,$.jsxs)(`div`,{className:`mt-5 space-y-2`,children:[(0,$.jsx)(h,{value:m,size:`sm`,className:`font-mono text-xs`,spellCheck:!1,rows:18,onChange:e=>I(e.currentTarget.value),"aria-invalid":_!==null||void 0}),_?(0,$.jsx)(`p`,{className:`text-xs text-destructive-foreground`,children:_}):(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground/80`,children:`Edit the JSON directly. Save is disabled while the schema is invalid.`})]}),t[95]=I,t[96]=P,t[97]=R,t[98]=_,t[99]=m,t[100]=l,t[101]=ie,t[102]=z,t[103]=Le):Le=t[103];let Re;t[104]!==De||t[105]!==Ie||t[106]!==Le?(Re=(0,$.jsxs)(`div`,{className:`px-4 py-4 sm:px-5`,children:[De,Ie,Le]}),t[104]=De,t[105]=Ie,t[106]=Le,t[107]=Re):Re=t[107];let ze;t[108]===Symbol.for(`react.memo_cache_sentinel`)?(ze=(0,$.jsx)(we,{children:`Discard your changes?`}),t[108]=ze):ze=t[108];let Be;t[109]===n.name?Be=t[110]:(Be=(0,$.jsxs)(ye,{children:[ze,(0,$.jsxs)(Ce,{children:[`You have unsaved edits to `,n.name,`. Discarding will revert any token changes you made.`]})]}),t[109]=n.name,t[110]=Be);let Ve;t[111]===Symbol.for(`react.memo_cache_sentinel`)?(Ve=(0,$.jsx)(xe,{render:(0,$.jsx)(c,{variant:`outline`}),children:`Keep editing`}),t[111]=Ve):Ve=t[111];let He;t[112]===o?He=t[113]:(He=(0,$.jsxs)(be,{children:[Ve,(0,$.jsx)(c,{variant:`destructive`,onClick:()=>{b(!1),o()},children:`Discard changes`})]}),t[112]=o,t[113]=He);let Ue;t[114]!==Be||t[115]!==He?(Ue=(0,$.jsxs)(Se,{children:[Be,He]}),t[114]=Be,t[115]=He,t[116]=Ue):Ue=t[116];let We;t[117]!==y||t[118]!==Ue?(We=(0,$.jsx)(Te,{open:y,onOpenChange:b,children:Ue}),t[117]=y,t[118]=Ue,t[119]=We):We=t[119];let Ge;return t[120]!==me||t[121]!==Re||t[122]!==We?(Ge=(0,$.jsxs)(`div`,{className:`border-t border-border/60 bg-muted/24`,children:[me,Re,We]}),t[120]=me,t[121]=Re,t[122]=We,t[123]=Ge):Ge=t[123],Ge}function rt(e){return Object.entries(e??{}).some(it)}function it(e){let[t,n]=e;if(typeof n!=`string`||n.length===0)return!1;let r=re(t);return r?!ue(r,n):!1}function at(e){let[t]=e;return!Je.has(t)}function ot(e){let t=(0,Q.c)(12),{token:n,kind:r,value:i,inherited:o,onChange:s}=e,c=i.length>0,l=r===`font-family`&&`sm:col-span-2`,u;t[0]===l?u=t[1]:(u=a(`rounded-md border border-border/60 bg-background px-2 py-1.5`,l),t[0]=l,t[1]=u);let d;t[2]!==o||t[3]!==r||t[4]!==s||t[5]!==c||t[6]!==n||t[7]!==i?(d=r===`color`?(0,$.jsx)(lt,{token:n,value:i,inherited:o,overridden:c,onChange:s}):r===`opacity`?(0,$.jsx)(ut,{token:n,value:i,inherited:o,overridden:c,onChange:s}):r===`length`?(0,$.jsx)(dt,{token:n,value:i,inherited:o,overridden:c,onChange:s}):(0,$.jsx)(pt,{token:n,value:i,inherited:o,overridden:c,onChange:s}),t[2]=o,t[3]=r,t[4]=s,t[5]=c,t[6]=n,t[7]=i,t[8]=d):d=t[8];let f;return t[9]!==u||t[10]!==d?(f=(0,$.jsx)(`div`,{className:u,children:d}),t[9]=u,t[10]=d,t[11]=f):f=t[11],f}function st(e){let t=(0,Q.c)(6),{token:n,onChange:r}=e,i=`Reset --${n}`,a;t[0]===r?a=t[1]:(a=()=>r(``),t[0]=r,t[1]=a);let o;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,$.jsx)(j,{className:`size-3.5`,"aria-hidden":!0}),t[2]=o):o=t[2];let s;return t[3]!==i||t[4]!==a?(s=(0,$.jsx)(c,{size:`icon-xs`,variant:`ghost`,"aria-label":i,onClick:a,className:`text-muted-foreground`,children:o}),t[3]=i,t[4]=a,t[5]=s):s=t[5],s}function ct(e){let t=(0,Q.c)(6),{token:n,overridden:r}=e,i=r?`text-foreground`:`text-muted-foreground/70`,o;t[0]===i?o=t[1]:(o=a(`truncate font-mono text-[11px]`,i),t[0]=i,t[1]=o);let s=`--${n}`,c;return t[2]!==o||t[3]!==s||t[4]!==n?(c=(0,$.jsxs)(`span`,{className:o,title:s,children:[`--`,n]}),t[2]=o,t[3]=s,t[4]=n,t[5]=c):c=t[5],c}function lt(e){let t=(0,Q.c)(41),{token:n,value:r,inherited:i,overridden:a,onChange:o}=e,s=r||i,c,l,u,d,f;if(t[0]!==s||t[1]!==r){u=oe(s);let e;t[7]===r?e=t[8]:(e=r.length>0&&!B(r),t[7]=r,t[8]=e),l=e,f=`flex items-center gap-2`,c=Ke,d=Ze(u),t[0]=s,t[1]=r,t[2]=c,t[3]=l,t[4]=u,t[5]=d,t[6]=f}else c=t[2],l=t[3],u=t[4],d=t[5],f=t[6];let p;t[9]===o?p=t[10]:(p=e=>o(e),t[9]=o,t[10]=p);let m=`Pick a color for --${n}`,h=l?`transparent`:u||`transparent`,g;t[11]===h?g=t[12]:(g=(0,$.jsx)(`span`,{className:`pointer-events-none absolute inset-0`,style:{backgroundColor:h},"aria-hidden":!0}),t[11]=h,t[12]=g);let _;t[13]!==c||t[14]!==d||t[15]!==p||t[16]!==m||t[17]!==g?(_=(0,$.jsx)(c,{value:d,onChange:p,ariaLabel:m,children:g}),t[13]=c,t[14]=d,t[15]=p,t[16]=m,t[17]=g,t[18]=_):_=t[18];let v;t[19]!==a||t[20]!==n?(v=(0,$.jsx)(ct,{token:n,overridden:a}),t[19]=a,t[20]=n,t[21]=v):v=t[21];let y=i||`inherit default`,b=l||void 0,x;t[22]===o?x=t[23]:(x=e=>o(e.currentTarget.value),t[22]=o,t[23]=x);let S;t[24]!==b||t[25]!==x||t[26]!==y||t[27]!==r?(S=(0,$.jsx)(M,{value:r,nativeInput:!0,unstyled:!0,size:`sm`,className:`border-0 bg-transparent p-0 shadow-none focus-within:shadow-none`,placeholder:y,"aria-invalid":b,onChange:x}),t[24]=b,t[25]=x,t[26]=y,t[27]=r,t[28]=S):S=t[28];let C;t[29]!==S||t[30]!==v?(C=(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col`,children:[v,S]}),t[29]=S,t[30]=v,t[31]=C):C=t[31];let w;t[32]!==o||t[33]!==a||t[34]!==n?(w=a?(0,$.jsx)(st,{token:n,onChange:o}):null,t[32]=o,t[33]=a,t[34]=n,t[35]=w):w=t[35];let T;return t[36]!==C||t[37]!==w||t[38]!==f||t[39]!==_?(T=(0,$.jsxs)(`div`,{className:f,children:[_,C,w]}),t[36]=C,t[37]=w,t[38]=f,t[39]=_,t[40]=T):T=t[40],T}function ut(e){let t=(0,Q.c)(31),{token:n,value:r,inherited:i,overridden:a,onChange:o}=e,s=Number(r||i),c;t[0]===s?c=t[1]:(c=Number.isFinite(s)?Math.min(1,Math.max(0,s)):0,t[0]=s,t[1]=c);let l=c,u;t[2]===r?u=t[3]:(u=r.length>0&&!ue(`opacity`,r),t[2]=r,t[3]=u);let d=u,f;t[4]!==a||t[5]!==n?(f=(0,$.jsx)(ct,{token:n,overridden:a}),t[4]=a,t[5]=n,t[6]=f):f=t[6];let p;t[7]===o?p=t[8]:(p=e=>o(e.currentTarget.value),t[7]=o,t[8]=p);let m=`--${n} value`,h;t[9]!==l||t[10]!==p||t[11]!==m?(h=(0,$.jsx)(`input`,{type:`range`,min:0,max:1,step:.005,value:l,onChange:p,"aria-label":m,className:`h-7.5 flex-1 accent-primary cursor-pointer`}),t[9]=l,t[10]=p,t[11]=m,t[12]=h):h=t[12];let g=i||`0`,_=d||void 0,v;t[13]===o?v=t[14]:(v=e=>o(e.currentTarget.value),t[13]=o,t[14]=v);let y;t[15]!==g||t[16]!==_||t[17]!==v||t[18]!==r?(y=(0,$.jsx)(`div`,{className:`w-20 shrink-0`,children:(0,$.jsx)(M,{value:r,nativeInput:!0,type:`number`,min:0,max:1,step:.005,size:`sm`,placeholder:g,"aria-invalid":_,onChange:v})}),t[15]=g,t[16]=_,t[17]=v,t[18]=r,t[19]=y):y=t[19];let b;t[20]!==o||t[21]!==a||t[22]!==n?(b=a?(0,$.jsx)(st,{token:n,onChange:o}):null,t[20]=o,t[21]=a,t[22]=n,t[23]=b):b=t[23];let x;t[24]!==y||t[25]!==b||t[26]!==h?(x=(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[h,y,b]}),t[24]=y,t[25]=b,t[26]=h,t[27]=x):x=t[27];let S;return t[28]!==x||t[29]!==f?(S=(0,$.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[f,x]}),t[28]=x,t[29]=f,t[30]=S):S=t[30],S}function dt(e){let t=(0,Q.c)(67),{token:n,value:r,inherited:i,overridden:a,onChange:o}=e,s,c,l,u,d;if(t[0]!==i||t[1]!==o||t[2]!==a||t[3]!==n||t[4]!==r){d=Symbol.for(`react.early_return_sentinel`);bb0:{l=V(r),c=V(i);let e=c?tt(c.unit):!1,f=l?tt(l.unit):!1;if(r.length>0&&!f||r.length===0&&i.length>0&&!e){let e;t[10]===r?e=t[11]:(e=r.length>0&&!ue(`length`,r),t[10]=r,t[11]=e);let s=e,c;t[12]!==a||t[13]!==n?(c=(0,$.jsx)(ct,{token:n,overridden:a}),t[12]=a,t[13]=n,t[14]=c):c=t[14];let l=i||`e.g. 1rem`,u=s||void 0,f;t[15]===o?f=t[16]:(f=e=>o(e.currentTarget.value),t[15]=o,t[16]=f);let p;t[17]!==l||t[18]!==u||t[19]!==f||t[20]!==r?(p=(0,$.jsx)(M,{value:r,nativeInput:!0,size:`sm`,placeholder:l,"aria-invalid":u,onChange:f}),t[17]=l,t[18]=u,t[19]=f,t[20]=r,t[21]=p):p=t[21];let m;t[22]!==o||t[23]!==a||t[24]!==n?(m=a?(0,$.jsx)(st,{token:n,onChange:o}):null,t[22]=o,t[23]=a,t[24]=n,t[25]=m):m=t[25];let h;t[26]!==p||t[27]!==m?(h=(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[p,m]}),t[26]=p,t[27]=m,t[28]=h):h=t[28];let g;t[29]!==h||t[30]!==c?(g=(0,$.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[c,h]}),t[29]=h,t[30]=c,t[31]=g):g=t[31],d=g;break bb0}s=l?String(l.number):``,u=l&&tt(l.unit)?l.unit:c&&tt(c.unit)?c.unit:`rem`}t[0]=i,t[1]=o,t[2]=a,t[3]=n,t[4]=r,t[5]=s,t[6]=c,t[7]=l,t[8]=u,t[9]=d}else s=t[5],c=t[6],l=t[7],u=t[8],d=t[9];if(d!==Symbol.for(`react.early_return_sentinel`))return d;let f=u,p=c?String(c.number):``,m;t[32]!==o||t[33]!==f?(m=e=>{let t=e.trim();if(t.length===0){o(``);return}let n=Number(t);Number.isFinite(n)&&o(`${n}${f}`)},t[32]=o,t[33]=f,t[34]=m):m=t[34];let h=m,g;t[35]!==o||t[36]!==c||t[37]!==l?(g=e=>{if(l){o(`${l.number}${e}`);return}c&&o(`${c.number}${e}`)},t[35]=o,t[36]=c,t[37]=l,t[38]=g):g=t[38];let _=g,v;t[39]!==a||t[40]!==n?(v=(0,$.jsx)(ct,{token:n,overridden:a}),t[39]=a,t[40]=n,t[41]=v):v=t[41];let y=n===`font-size-base`?1:.05,b;t[42]===h?b=t[43]:(b=e=>h(e.currentTarget.value),t[42]=h,t[43]=b);let x;t[44]!==p||t[45]!==s||t[46]!==y||t[47]!==b?(x=(0,$.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,$.jsx)(M,{value:s,nativeInput:!0,type:`number`,step:y,size:`sm`,placeholder:p,onChange:b})}),t[44]=p,t[45]=s,t[46]=y,t[47]=b,t[48]=x):x=t[48];let S;t[49]===_?S=t[50]:(S=e=>_(e.currentTarget.value),t[49]=_,t[50]=S);let C=`--${n} unit`,w;t[51]===Symbol.for(`react.memo_cache_sentinel`)?(w=pe.map(ft),t[51]=w):w=t[51];let T;t[52]!==C||t[53]!==S||t[54]!==f?(T=(0,$.jsx)(`select`,{value:f,onChange:S,"aria-label":C,className:`h-7.5 rounded-md border border-input bg-background px-2 text-sm outline-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/24 sm:h-6.5 sm:text-xs`,children:w}),t[52]=C,t[53]=S,t[54]=f,t[55]=T):T=t[55];let E;t[56]!==o||t[57]!==a||t[58]!==n?(E=a?(0,$.jsx)(st,{token:n,onChange:o}):null,t[56]=o,t[57]=a,t[58]=n,t[59]=E):E=t[59];let D;t[60]!==T||t[61]!==E||t[62]!==x?(D=(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[x,T,E]}),t[60]=T,t[61]=E,t[62]=x,t[63]=D):D=t[63];let O;return t[64]!==D||t[65]!==v?(O=(0,$.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[v,D]}),t[64]=D,t[65]=v,t[66]=O):O=t[66],O}function ft(e){return(0,$.jsx)(`option`,{value:e,children:e},e)}function pt(e){let t=(0,Q.c)(25),{token:n,value:r,inherited:i,overridden:a,onChange:o}=e,s=r||i,c;t[0]===r?c=t[1]:(c=r.length>0&&!ue(`font-family`,r),t[0]=r,t[1]=c);let l=c,u;t[2]!==a||t[3]!==n?(u=(0,$.jsx)(ct,{token:n,overridden:a}),t[2]=a,t[3]=n,t[4]=u):u=t[4];let d=i||`system-ui, sans-serif`,f=s||void 0,p;t[5]===f?p=t[6]:(p={fontFamily:f},t[5]=f,t[6]=p);let m=l||void 0,h;t[7]===o?h=t[8]:(h=e=>o(e.currentTarget.value),t[7]=o,t[8]=h);let g;t[9]!==d||t[10]!==p||t[11]!==m||t[12]!==h||t[13]!==r?(g=(0,$.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,$.jsx)(M,{value:r,nativeInput:!0,size:`sm`,placeholder:d,style:p,"aria-invalid":m,onChange:h})}),t[9]=d,t[10]=p,t[11]=m,t[12]=h,t[13]=r,t[14]=g):g=t[14];let _;t[15]!==o||t[16]!==a||t[17]!==n?(_=a?(0,$.jsx)(st,{token:n,onChange:o}):null,t[15]=o,t[16]=a,t[17]=n,t[18]=_):_=t[18];let v;t[19]!==g||t[20]!==_?(v=(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[g,_]}),t[19]=g,t[20]=_,t[21]=v):v=t[21];let y;return t[22]!==v||t[23]!==u?(y=(0,$.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[u,v]}),t[22]=v,t[23]=u,t[24]=y):y=t[24],y}var mt=[{value:`system`,label:`System`},{value:`light`,label:`Light`},{value:`dark`,label:`Dark`}],ht=[{value:`icon-dots`,label:`Icon + dots`,description:`Brain icon with intensity dots`},{value:`dots`,label:`Dots only`,description:`Intensity dots without the icon`},{value:`text`,label:`Text label`,description:`Color-tinted abbreviated text`}],gt=[{value:`icon-text`,label:`Icon + text`,description:`Show the mode icon and label`,preview:`Balanced`,icon:T},{value:`icon`,label:`Icon only`,description:`Use the compact mode icon`,preview:``,icon:C},{value:`text`,label:`Text label`,description:`Show labels without icons`,preview:`Tokens off`,icon:w}],_t={default:1,light:.92,medium:.84,high:.78,glass:.72};function vt(){let e=(0,Q.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,$.jsx)(`span`,{className:`inline-flex items-center gap-0.5`,children:[1,2,3,4,5].map(yt)}),e[0]=t):t=e[0],t}function yt(e){return(0,$.jsx)(`span`,{className:a(`size-[5px] rounded-full bg-current`,e<=3?`opacity-100`:`opacity-30`)},e)}function bt(){let{theme:e,setTheme:t,resolvedTheme:n,activeThemeId:r,setActiveTheme:o}=he(),m=i(e=>e.reasoningIndicatorStyle),h=i(e=>e.setReasoningIndicatorStyle),y=i(e=>e.tokenModeControlStyle),x=i(e=>e.setTokenModeControlStyle),C=i(e=>e.wideComposerControlsAutoCollapse),w=i(e=>e.setWideComposerControlsAutoCollapse),[T,O]=(0,Z.useState)(null),[j,M]=(0,Z.useState)(null),[P,re]=(0,Z.useState)(null),[B,V]=(0,Z.useState)(()=>H()),[oe,ue]=(0,Z.useState)(0),fe=(0,Z.useRef)(null),pe=ge(),U=(0,Z.useMemo)(()=>T!==null&&j!==null?{source:ie(T),draft:j}:null,[j,T,oe]),W=P?ie(P):null,G=(0,Z.useCallback)(()=>ue(e=>e+1),[]);(0,Z.useEffect)(()=>{if(typeof window>`u`)return;let e=e=>{e.key===`ryco:appearance-preferences`&&V(H())};return window.addEventListener(`storage`,e),()=>window.removeEventListener(`storage`,e)},[]);let K=(0,Z.useCallback)((e,t)=>{R(e,t),N(),V(H())},[]),Q=(0,Z.useCallback)(e=>{L(e),N(),V(H())},[]),Me=(0,Z.useCallback)(()=>{L(`primaryColorMode`),L(`primaryColor`),N(),V(H())},[]),Ne=(0,Z.useCallback)(e=>{R(`primaryColorMode`,e?`custom`:`theme`),N(),V(H())},[]),Pe=(0,Z.useCallback)(e=>{R(`primaryColor`,e),R(`primaryColorMode`,`custom`),N(),V(H())},[]),Fe=(0,Z.useCallback)(e=>{if(ae(e.id)){let t=me(e);se(t),z(t.id),o(t.id),O(t.id),M(t),G();return}o(e.id),O(e.id),M(e)},[G,o]),Ie=(0,Z.useCallback)(e=>{let t=me(e);se(t),o(t.id),O(t.id),M(t),G()},[G,o]),Le=(0,Z.useCallback)(()=>{let e={id:le(`new`),name:`New theme`,builtIn:!1};se(e),o(e.id),O(e.id),M(e),G()},[G,o]),Ve=(0,Z.useCallback)(()=>{U&&(_e(U.source.id,U.draft),U.source.id===U.draft.id?ne(U.draft):o(U.draft.id),O(null),M(null),G())},[U,G,o]),He=(0,Z.useCallback)(()=>{U&&ne(U.source),O(null),M(null)},[U]),Ue=(0,Z.useCallback)(()=>{P&&(T===P&&(O(null),M(null)),de(P),re(null),G())},[T,P,G]),We=(0,Z.useCallback)(e=>{try{ze(e)}catch(e){l.add({type:`error`,title:`Could not export theme`,description:e instanceof Error?e.message:`Download failed.`})}},[]),Ge=(0,Z.useCallback)(async e=>{try{await Re(e),l.add({type:`success`,title:`Copied theme JSON`,description:`${e.name} is ready to paste.`})}catch(e){l.add({type:`error`,title:`Could not copy theme`,description:e instanceof Error?e.message:`Clipboard write failed.`})}},[]),Ke=(0,Z.useCallback)(()=>{fe.current?.click()},[]),qe=(0,Z.useCallback)(async e=>{let t=e.target.files?.[0];if(e.target.value=``,t)try{let e=await Be(t,{collision:`rename`,activate:!0});o(e.theme.id),G(),l.add({type:`success`,title:`Imported "${e.theme.name}"`,description:e.action===`renamed`?`An existing theme used the same id, so it was imported as "${e.theme.id}".`:`Theme imported and activated.`})}catch(e){l.add({type:`error`,title:`Could not import theme`,description:e instanceof Error?e.message:`Invalid theme file.`})}},[G,o]);return(0,$.jsxs)(Ee,{children:[(0,$.jsxs)(q,{title:`Interface controls`,children:[(0,$.jsx)(J,{title:`Interface font`,description:`Normal app text, navigation, dialogs, and controls.`,resetAction:I(`fontFamilySans`)?(0,$.jsx)(Y,{label:`interface font`,onClick:()=>Q(`fontFamilySans`)}):null,control:(0,$.jsx)(xt,{ariaLabel:`Interface font`,icon:(0,$.jsx)(Ae,{className:`size-3.5`}),options:te,value:B.fontFamilySans,sample:`The quick brown fox`,onChange:e=>K(`fontFamilySans`,e)})}),(0,$.jsx)(J,{title:`Code font`,description:`Code blocks, diffs, file paths, and terminal surfaces.`,resetAction:I(`fontFamilyMono`)?(0,$.jsx)(Y,{label:`code font`,onClick:()=>Q(`fontFamilyMono`)}):null,control:(0,$.jsx)(xt,{ariaLabel:`Code font`,icon:(0,$.jsx)(De,{className:`size-3.5`}),options:ve,value:B.fontFamilyMono,sample:`const answer = 42`,onChange:e=>K(`fontFamilyMono`,e)})}),(0,$.jsx)(J,{title:`Text size`,description:`Scale the interface independently from the active theme.`,resetAction:I(`fontSizeBase`)?(0,$.jsx)(Y,{label:`text size`,onClick:()=>Q(`fontSizeBase`)}):null,control:(0,$.jsx)(Ct,{ariaLabel:`Text size`,icon:(0,$.jsx)(X,{className:`size-3.5`}),options:F,value:B.fontSizeBase,onChange:e=>K(`fontSizeBase`,e),preview:(0,$.jsx)(`span`,{className:`flex h-9 min-w-14 items-center justify-center rounded-md border border-border/70 bg-background px-2 font-semibold text-foreground shadow-xs/5`,children:(0,$.jsx)(`span`,{style:{fontSize:B.fontSizeBase},children:`Aa`})})})}),(0,$.jsx)(J,{title:`Corner radius`,description:`Adjust rounding for panels, buttons, inputs, and menus globally.`,resetAction:I(`radius`)?(0,$.jsx)(Y,{label:`corner radius`,onClick:()=>Q(`radius`)}):null,control:(0,$.jsx)(Ct,{ariaLabel:`Corner radius`,icon:(0,$.jsx)(ke,{className:`size-3.5`}),options:ee,value:B.radius,onChange:e=>K(`radius`,e),preview:(0,$.jsxs)(`span`,{className:`grid h-9 min-w-14 grid-cols-2 gap-1 rounded-md border border-border/70 bg-background p-1.5 shadow-xs/5`,children:[(0,$.jsx)(`span`,{className:`border border-primary/55 bg-primary/15`,style:{borderRadius:B.radius}}),(0,$.jsx)(`span`,{className:`border border-muted-foreground/30 bg-muted`,style:{borderRadius:B.radius}})]})})}),(0,$.jsx)(J,{title:`Primary color`,description:`Theme palettes control buttons by default; enable a custom color to pin one app accent.`,resetAction:I(`primaryColorMode`)||I(`primaryColor`)?(0,$.jsx)(Y,{label:`primary color`,onClick:Me}):null,control:(0,$.jsx)(St,{mode:B.primaryColorMode,value:B.primaryColor,onModeChange:Ne,onColorChange:Pe})}),(0,$.jsx)(J,{title:`Transparency`,description:`Adjust glass and floating surfaces like dialogs, menus, popups, and toasts.`,resetAction:I(`surfaceTransparency`)?(0,$.jsx)(Y,{label:`transparency`,onClick:()=>Q(`surfaceTransparency`)}):null,control:(0,$.jsx)(Ct,{ariaLabel:`Transparency`,icon:(0,$.jsx)(Oe,{className:`size-3.5`}),options:ce,value:B.surfaceTransparency,onChange:e=>K(`surfaceTransparency`,e),preview:(0,$.jsx)(`span`,{className:`relative h-9 min-w-14 overflow-hidden rounded-md border border-border/70 bg-[linear-gradient(135deg,var(--color-sky-500)_0_20%,var(--color-emerald-500)_20%_40%,var(--color-amber-500)_40%_60%,var(--color-fuchsia-500)_60%_80%,var(--color-slate-500)_80%_100%)] p-1.5 shadow-xs/5`,children:(0,$.jsx)(`span`,{className:`block h-full rounded border border-border/70 bg-popover`,style:{opacity:_t[B.surfaceTransparency]??_t.default}})})})})]}),(0,$.jsx)(q,{title:`Theme palette`,headerAction:(0,$.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,$.jsx)(`input`,{ref:fe,type:`file`,accept:`.json,application/json`,className:`sr-only`,onChange:qe,"aria-hidden":!0,tabIndex:-1}),(0,$.jsxs)(c,{size:`xs`,variant:`ghost`,onClick:Le,"aria-label":`Create a new theme`,title:`Create a new theme`,className:`text-muted-foreground`,children:[(0,$.jsx)(k,{className:`size-3.5`}),`New`]}),(0,$.jsxs)(c,{size:`xs`,variant:`ghost`,onClick:Ke,"aria-label":`Import a theme from file`,title:`Import a theme from disk`,className:`text-muted-foreground`,children:[(0,$.jsx)(je,{className:`size-3.5`}),`Import`]})]}),children:(0,$.jsx)(`div`,{role:`radiogroup`,"aria-label":`Theme palette`,children:pe.map((e,t)=>{let i=e.id===r,s=T===e.id;return(0,$.jsxs)(Z.Fragment,{children:[(0,$.jsxs)(`div`,{role:`radio`,"aria-checked":i,tabIndex:i?0:-1,onClick:()=>o(e.id),onKeyDown:t=>{(t.key===` `||t.key===`Enter`)&&(t.preventDefault(),o(e.id))},className:a(`flex cursor-pointer flex-wrap items-center gap-3 px-4 py-3 outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset sm:px-5`,t>0?`border-t border-border/60`:``,i?`bg-muted/40`:`hover:bg-muted/24`),children:[(0,$.jsx)(`span`,{"aria-hidden":!0,className:a(`relative flex size-4 shrink-0 items-center justify-center rounded-full border-2 transition-colors`,i?`border-primary`:`border-muted-foreground/40`),children:i?(0,$.jsx)(`span`,{className:`size-2 rounded-full bg-primary`,"aria-hidden":!0}):null}),(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-0.5`,children:[(0,$.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`span`,{className:`truncate text-sm font-medium text-foreground`,title:e.name,children:e.name}),(0,$.jsx)(v,{variant:`outline`,size:`sm`,children:e.builtIn?`Built-in`:`Custom`})]}),e.description?(0,$.jsx)(`span`,{className:`truncate text-xs text-muted-foreground/80`,title:e.description,children:e.description}):null]}),(0,$.jsxs)(`div`,{className:`flex shrink-0 items-center gap-0.5`,onClick:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation(),children:[e.builtIn?null:(0,$.jsx)(c,{size:`icon-xs`,variant:`ghost`,"aria-label":`Edit ${e.name}`,title:`Edit`,onClick:()=>Fe(e),className:`text-muted-foreground`,children:(0,$.jsx)(b,{className:`size-3.5`})}),(0,$.jsx)(c,{size:`icon-xs`,variant:`ghost`,"aria-label":`Duplicate ${e.name}`,title:`Duplicate`,onClick:()=>Ie(e),className:`text-muted-foreground`,children:(0,$.jsx)(u,{className:`size-3.5`})}),(0,$.jsx)(c,{size:`icon-xs`,variant:`ghost`,"aria-label":`Export ${e.name}`,title:`Export`,onClick:()=>We(e),className:`text-muted-foreground`,children:(0,$.jsx)(D,{className:`size-3.5`})}),(0,$.jsx)(c,{size:`icon-xs`,variant:`ghost`,"aria-label":`Copy ${e.name} JSON`,title:`Copy JSON`,onClick:()=>void Ge(e),className:`text-muted-foreground`,children:(0,$.jsx)(E,{className:`size-3.5`})}),e.builtIn?null:(0,$.jsx)(c,{size:`icon-xs`,variant:`ghost`,"aria-label":`Delete ${e.name}`,title:`Delete`,onClick:()=>re(e.id),className:`text-destructive-foreground`,children:(0,$.jsx)(A,{className:`size-3.5`})})]})]}),s&&U?(0,$.jsx)(nt,{source:U.source,draft:U.draft,onDraftChange:e=>M(e),onSave:Ve,onCancel:He,resolvedVariant:n}):null]},e.id)})})}),(0,$.jsxs)(q,{title:`Composer controls`,children:[(0,$.jsx)(J,{title:`Reasoning chip style`,description:`How the reasoning effort level appears in the composer bar.`,resetAction:m===`icon-dots`?null:(0,$.jsx)(Y,{label:`reasoning indicator`,onClick:()=>h(`icon-dots`)}),control:(0,$.jsx)(`div`,{className:`flex w-full flex-col gap-2 sm:w-80`,children:ht.map(e=>{let t=m===e.value;return(0,$.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":t,onClick:()=>h(e.value),className:a(`flex items-center gap-3 rounded-md border px-3 py-2 text-left`,t?`border-primary ring-1 ring-primary/40`:`border-border hover:border-foreground/30`),children:[(0,$.jsx)(`span`,{className:a(`size-3.5 rounded-full border`,t?`border-primary bg-primary/80`:`border-foreground/30`)}),(0,$.jsxs)(`span`,{className:`flex flex-grow flex-col`,children:[(0,$.jsx)(`span`,{className:`font-medium text-sm`,children:e.label}),(0,$.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:e.description})]}),(0,$.jsx)(`span`,{className:a(`inline-flex h-7 items-center gap-1.5 rounded-md px-2 font-medium text-xs`,`bg-indigo-500/15 text-indigo-700 dark:bg-indigo-500/20 dark:text-indigo-300`),children:e.value===`text`?(0,$.jsx)(`span`,{children:`High`}):(0,$.jsxs)($.Fragment,{children:[e.value===`icon-dots`?(0,$.jsx)(s,{"aria-hidden":`true`,className:`size-3`}):null,(0,$.jsx)(vt,{})]})})]},e.value)})})}),(0,$.jsx)(J,{title:`Auto-collapse wide composer labels`,description:`Show long composer mode labels only on hover or focus.`,resetAction:C?null:(0,$.jsx)(Y,{label:`wide composer labels`,onClick:()=>w(!0)}),control:(0,$.jsx)(d,{checked:C,onCheckedChange:e=>w(!!e),"aria-label":`Auto-collapse wide composer labels`})}),(0,$.jsx)(J,{title:`Token mode style`,description:`How token efficiency appears when wide composer auto-collapse is off.`,resetAction:y===`icon-text`?null:(0,$.jsx)(Y,{label:`token mode style`,onClick:()=>x(`icon-text`)}),control:(0,$.jsx)(`div`,{className:`flex w-full flex-col gap-2 sm:w-80`,children:gt.map(e=>{let t=y===e.value,n=e.icon;return(0,$.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":t,onClick:()=>x(e.value),className:a(`flex items-center gap-3 rounded-md border px-3 py-2 text-left`,t?`border-primary ring-1 ring-primary/40`:`border-border hover:border-foreground/30`),children:[(0,$.jsx)(`span`,{className:a(`size-3.5 rounded-full border`,t?`border-primary bg-primary/80`:`border-foreground/30`)}),(0,$.jsxs)(`span`,{className:`flex flex-grow flex-col`,children:[(0,$.jsx)(`span`,{className:`font-medium text-sm`,children:e.label}),(0,$.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:e.description})]}),(0,$.jsxs)(`span`,{className:`inline-flex h-7 min-w-7 items-center justify-center gap-1.5 rounded-md bg-muted px-2 font-medium text-muted-foreground text-xs`,children:[e.value===`text`?null:(0,$.jsx)(n,{"aria-hidden":`true`,className:`size-3.5`}),e.preview?(0,$.jsx)(`span`,{children:e.preview}):null]})]},e.value)})})})]}),(0,$.jsx)(q,{title:`Color mode`,children:(0,$.jsx)(J,{title:`Theme variant`,description:`Choose between light, dark, or following the system preference.`,resetAction:e===`system`?null:(0,$.jsx)(Y,{label:`color mode`,onClick:()=>t(`system`)}),control:(0,$.jsxs)(S,{value:e,onValueChange:e=>{(e===`system`||e===`light`||e===`dark`)&&t(e)},children:[(0,$.jsx)(_,{className:`w-full sm:w-40`,"aria-label":`Color mode`,children:(0,$.jsx)(f,{children:mt.find(t=>t.value===e)?.label??`System`})}),(0,$.jsx)(g,{align:`end`,alignItemWithTrigger:!1,children:mt.map(e=>(0,$.jsx)(p,{hideIndicator:!0,value:e.value,children:e.label},e.value))})]})})}),(0,$.jsx)(Te,{open:P!==null,onOpenChange:e=>{e||re(null)},children:(0,$.jsxs)(Se,{children:[(0,$.jsxs)(ye,{children:[(0,$.jsx)(we,{children:`Delete custom theme?`}),(0,$.jsx)(Ce,{children:W?`"${W.name}" will be removed permanently. This action cannot be undone.`:`This action cannot be undone.`})]}),(0,$.jsxs)(be,{children:[(0,$.jsx)(xe,{render:(0,$.jsx)(c,{variant:`outline`}),children:`Cancel`}),(0,$.jsx)(c,{variant:`destructive`,onClick:Ue,children:`Delete theme`})]})]})})]})}function xt(e){let t=(0,Q.c)(43),{ariaLabel:n,icon:r,options:i,value:o,sample:s,onChange:c}=e,l;if(t[0]!==i||t[1]!==o){let e;t[3]===o?e=t[4]:(e=e=>e.value===o,t[3]=o,t[4]=e),l=i.findIndex(e),t[0]=i,t[1]=o,t[2]=l}else l=t[2];let u=Math.max(0,l),d=i[u]??i[0],f;t[5]===r?f=t[6]:(f=(0,$.jsx)(`span`,{className:`inline-flex size-7 shrink-0 items-center justify-center rounded-md border border-border/70 bg-muted/60 text-muted-foreground`,children:r}),t[5]=r,t[6]=f);let p=d?.value??o,m;t[7]===p?m=t[8]:(m={fontFamily:p},t[7]=p,t[8]=m);let h=d?.label??o,g;t[9]!==m||t[10]!==h?(g=(0,$.jsx)(`span`,{className:`block truncate text-sm font-semibold text-foreground`,style:m,children:h}),t[9]=m,t[10]=h,t[11]=g):g=t[11];let _=d?.description??`Custom`,v;t[12]===_?v=t[13]:(v=(0,$.jsx)(`span`,{className:`block truncate text-[11px] text-muted-foreground`,children:_}),t[12]=_,t[13]=v);let y;t[14]!==g||t[15]!==v?(y=(0,$.jsxs)(`span`,{className:`min-w-0`,children:[g,v]}),t[14]=g,t[15]=v,t[16]=y):y=t[16];let b;t[17]!==f||t[18]!==y?(b=(0,$.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[f,y]}),t[17]=f,t[18]=y,t[19]=b):b=t[19];let x=d?.value??o,S;t[20]===x?S=t[21]:(S={fontFamily:x},t[20]=x,t[21]=S);let C;t[22]!==s||t[23]!==S?(C=(0,$.jsx)(`span`,{className:`flex h-9 min-w-30 max-w-44 items-center justify-start truncate rounded-md border border-border/70 bg-background px-2 text-xs text-foreground shadow-xs/5`,style:S,title:s,children:s}),t[22]=s,t[23]=S,t[24]=C):C=t[24];let w;t[25]!==b||t[26]!==C?(w=(0,$.jsxs)(`div`,{className:`mb-2 flex min-h-9 items-center justify-between gap-3`,children:[b,C]}),t[25]=b,t[26]=C,t[27]=w):w=t[27];let T;if(t[28]!==n||t[29]!==c||t[30]!==i||t[31]!==u){let e;t[33]!==n||t[34]!==c||t[35]!==u?(e=(e,t)=>{let r=t===u;return(0,$.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":r,"aria-label":`Use ${e.label} for ${n.toLowerCase()}`,title:`${e.label} (${e.description})`,onClick:()=>c(e.value),className:a(`min-h-12 min-w-0 rounded-md border px-2 py-1.5 text-left outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring`,r?`border-primary bg-primary/8 text-foreground ring-1 ring-primary/35`:`border-border/70 text-muted-foreground hover:border-foreground/25 hover:bg-muted/45`),children:[(0,$.jsx)(`span`,{className:`block truncate text-[12px] font-semibold leading-4`,style:{fontFamily:e.value},children:e.label}),(0,$.jsx)(`span`,{className:`block truncate text-[10px] leading-3 opacity-75`,children:e.description})]},e.value)},t[33]=n,t[34]=c,t[35]=u,t[36]=e):e=t[36],T=i.map(e),t[28]=n,t[29]=c,t[30]=i,t[31]=u,t[32]=T}else T=t[32];let E;t[37]!==n||t[38]!==T?(E=(0,$.jsx)(`div`,{role:`radiogroup`,"aria-label":n,className:`grid grid-cols-2 gap-1.5 sm:grid-cols-3`,children:T}),t[37]=n,t[38]=T,t[39]=E):E=t[39];let D;return t[40]!==w||t[41]!==E?(D=(0,$.jsxs)(`div`,{className:`w-full sm:w-96`,children:[w,E]}),t[40]=w,t[41]=E,t[42]=D):D=t[42],D}function St(e){let t=(0,Q.c)(48),{mode:n,value:r,onModeChange:i,onColorChange:o}=e,s=n===`custom`,c;t[0]===r?c=t[1]:(c=/^#[0-9a-f]{6}$/i.test(r)?r.toLowerCase():P[0].value,t[0]=r,t[1]=c);let l=c,u;t[2]===l?u=t[3]:(u=P.find(e=>e.value===l),t[2]=l,t[3]=u);let f=u,p=s&&!f?`border-primary bg-primary/8 text-foreground ring-1 ring-primary/35`:`border-border/70 text-muted-foreground hover:border-foreground/25 hover:bg-muted/45`,m=!s&&`cursor-not-allowed opacity-55 hover:border-border/70 hover:bg-transparent`,h;t[4]!==p||t[5]!==m?(h=a(`h-12 w-full rounded-md border px-2 py-1.5 text-left shadow-none`,p,m),t[4]=p,t[5]=m,t[6]=h):h=t[6];let g=h,_;t[7]===l?_=t[8]:(_=(0,$.jsx)(`span`,{"aria-hidden":!0,className:`size-5 shrink-0 rounded-full border border-black/10 shadow-xs dark:border-white/20`,style:{backgroundColor:l}}),t[7]=l,t[8]=_);let v;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,$.jsx)(`span`,{className:`block truncate text-[12px] font-semibold leading-4`,children:`Custom`}),t[9]=v):v=t[9];let y;t[10]===l?y=t[11]:(y=(0,$.jsxs)(`span`,{className:`min-w-0`,children:[v,(0,$.jsx)(`span`,{className:`block truncate font-mono text-[10px] leading-3 opacity-75`,children:l})]}),t[10]=l,t[11]=y);let b;t[12]!==_||t[13]!==y?(b=(0,$.jsxs)(`span`,{className:`flex size-full min-w-0 items-center gap-2`,children:[_,y]}),t[12]=_,t[13]=y,t[14]=b):b=t[14];let x=b,S;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,$.jsx)(`span`,{className:`inline-flex size-7 shrink-0 items-center justify-center rounded-md border border-border/70 bg-muted/60 text-muted-foreground`,children:(0,$.jsx)(O,{className:`size-3.5`})}),t[15]=S):S=t[15];let C=s?f?.label??`Custom`:`Theme color`,w;t[16]===C?w=t[17]:(w=(0,$.jsx)(`span`,{className:`block truncate text-sm font-semibold text-foreground`,children:C}),t[16]=C,t[17]=w);let T=s?l:`Active palette`,E;t[18]===T?E=t[19]:(E=(0,$.jsx)(`span`,{className:`block truncate text-[11px] text-muted-foreground`,children:T}),t[18]=T,t[19]=E);let D;t[20]!==w||t[21]!==E?(D=(0,$.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[S,(0,$.jsxs)(`span`,{className:`min-w-0`,children:[w,E]})]}),t[20]=w,t[21]=E,t[22]=D):D=t[22];let k;t[23]===Symbol.for(`react.memo_cache_sentinel`)?(k=(0,$.jsx)(`span`,{children:`Use theme`}),t[23]=k):k=t[23];let A=!s,j;t[24]===i?j=t[25]:(j=e=>i(!e),t[24]=i,t[25]=j);let M;t[26]!==A||t[27]!==j?(M=(0,$.jsxs)(`label`,{className:`flex h-9 shrink-0 items-center gap-2 rounded-md border border-border/70 bg-background px-2 text-xs text-muted-foreground shadow-xs/5`,children:[k,(0,$.jsx)(d,{checked:A,onCheckedChange:j,"aria-label":`Use theme primary color`})]}),t[26]=A,t[27]=j,t[28]=M):M=t[28];let N;t[29]!==D||t[30]!==M?(N=(0,$.jsxs)(`div`,{className:`mb-2 flex min-h-9 items-center justify-between gap-3`,children:[D,M]}),t[29]=D,t[30]=M,t[31]=N):N=t[31];let F;t[32]!==s||t[33]!==l||t[34]!==o?(F=P.map(e=>{let t=l===e.value;return(0,$.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":s&&t,"aria-label":`Use ${e.label} as primary color`,title:`${e.label} (${e.value})`,onClick:()=>o(e.value),disabled:!s,className:a(`flex min-h-12 min-w-0 items-center gap-2 rounded-md border px-2 py-1.5 text-left outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring`,s&&t?`border-primary bg-primary/8 text-foreground ring-1 ring-primary/35`:`border-border/70 text-muted-foreground hover:border-foreground/25 hover:bg-muted/45`,!s&&`cursor-not-allowed opacity-55 hover:border-border/70 hover:bg-transparent`),children:[(0,$.jsx)(`span`,{"aria-hidden":!0,className:`size-5 shrink-0 rounded-full border border-black/10 shadow-xs dark:border-white/20`,style:{backgroundColor:e.value}}),(0,$.jsxs)(`span`,{className:`min-w-0`,children:[(0,$.jsx)(`span`,{className:`block truncate text-[12px] font-semibold leading-4`,children:e.label}),(0,$.jsx)(`span`,{className:`block truncate text-[10px] leading-3 opacity-75`,children:e.description})]})]},e.value)}),t[32]=s,t[33]=l,t[34]=o,t[35]=F):F=t[35];let I;t[36]!==s||t[37]!==g||t[38]!==x||t[39]!==l||t[40]!==o?(I=s?(0,$.jsx)(Ke,{value:l,onChange:o,ariaLabel:`Pick custom primary color`,triggerClassName:g,children:x}):(0,$.jsx)(`button`,{type:`button`,disabled:!0,"aria-label":`Pick custom primary color`,className:g,children:x}),t[36]=s,t[37]=g,t[38]=x,t[39]=l,t[40]=o,t[41]=I):I=t[41];let L;t[42]!==F||t[43]!==I?(L=(0,$.jsxs)(`div`,{role:`radiogroup`,"aria-label":`Primary color`,className:`grid grid-cols-2 gap-1.5 sm:grid-cols-4`,children:[F,I]}),t[42]=F,t[43]=I,t[44]=L):L=t[44];let ee;return t[45]!==N||t[46]!==L?(ee=(0,$.jsxs)(`div`,{className:`w-full sm:w-96`,children:[N,L]}),t[45]=N,t[46]=L,t[47]=ee):ee=t[47],ee}function Ct(e){let t=(0,Q.c)(50),{ariaLabel:n,icon:r,options:i,value:o,onChange:s,preview:c}=e,l;if(t[0]!==i||t[1]!==o){let e;t[3]===o?e=t[4]:(e=e=>e.value===o,t[3]=o,t[4]=e),l=i.findIndex(e),t[0]=i,t[1]=o,t[2]=l}else l=t[2];let u=Math.max(0,l),d=i[u]??i[0],f=i.length>1?u/(i.length-1)*100:0,p;t[5]===r?p=t[6]:(p=(0,$.jsx)(`span`,{className:`inline-flex size-7 shrink-0 items-center justify-center rounded-md border border-border/70 bg-muted/60 text-muted-foreground`,children:r}),t[5]=r,t[6]=p);let m=d?.label??o,h;t[7]===m?h=t[8]:(h=(0,$.jsx)(`span`,{className:`block truncate text-sm font-semibold text-foreground`,children:m}),t[7]=m,t[8]=h);let g=d?.description??o,_;t[9]===g?_=t[10]:(_=(0,$.jsx)(`span`,{className:`block truncate text-[11px] text-muted-foreground`,children:g}),t[9]=g,t[10]=_);let v;t[11]!==h||t[12]!==_?(v=(0,$.jsxs)(`span`,{className:`min-w-0`,children:[h,_]}),t[11]=h,t[12]=_,t[13]=v):v=t[13];let y;t[14]!==p||t[15]!==v?(y=(0,$.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[p,v]}),t[14]=p,t[15]=v,t[16]=y):y=t[16];let b;t[17]!==c||t[18]!==y?(b=(0,$.jsxs)(`div`,{className:`mb-2 flex min-h-9 items-center justify-between gap-3`,children:[y,c]}),t[17]=c,t[18]=y,t[19]=b):b=t[19];let x;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(x=a(`h-5 w-full cursor-pointer appearance-none bg-transparent outline-none`,`[&::-webkit-slider-runnable-track]:h-1.5 [&::-webkit-slider-runnable-track]:rounded-full`,`[&::-webkit-slider-thumb]:mt-[-5px] [&::-webkit-slider-thumb]:size-4 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:border-2 [&::-webkit-slider-thumb]:border-background [&::-webkit-slider-thumb]:bg-primary [&::-webkit-slider-thumb]:shadow-sm`,`[&::-moz-range-track]:h-1.5 [&::-moz-range-track]:rounded-full [&::-moz-range-track]:border-0`,`[&::-moz-range-thumb]:size-4 [&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:border-2 [&::-moz-range-thumb]:border-background [&::-moz-range-thumb]:bg-primary [&::-moz-range-thumb]:shadow-sm`,`focus-visible:[&::-webkit-slider-thumb]:ring-2 focus-visible:[&::-webkit-slider-thumb]:ring-ring focus-visible:[&::-moz-range-thumb]:ring-2 focus-visible:[&::-moz-range-thumb]:ring-ring`),t[20]=x):x=t[20];let S=Math.max(0,i.length-1),C=`linear-gradient(to right, var(--color-primary) 0%, var(--color-primary) ${f}%, color-mix(in srgb, var(--color-muted-foreground) 18%, transparent) ${f}%, color-mix(in srgb, var(--color-muted-foreground) 18%, transparent) 100%)`,w;t[21]===C?w=t[22]:(w={background:C,borderRadius:`999px`},t[21]=C,t[22]=w);let T;t[23]!==s||t[24]!==i?(T=e=>{let t=i[Number(e.currentTarget.value)];t&&s(t.value)},t[23]=s,t[24]=i,t[25]=T):T=t[25];let E;t[26]!==n||t[27]!==u||t[28]!==S||t[29]!==w||t[30]!==T?(E=(0,$.jsx)(`input`,{"aria-label":n,className:x,max:S,min:0,step:1,type:`range`,value:u,style:w,onChange:T}),t[26]=n,t[27]=u,t[28]=S,t[29]=w,t[30]=T,t[31]=E):E=t[31];let D=`repeat(${i.length}, minmax(0, 1fr))`,O;t[32]===D?O=t[33]:(O={gridTemplateColumns:D},t[32]=D,t[33]=O);let k;if(t[34]!==n||t[35]!==s||t[36]!==i||t[37]!==u){let e;t[39]!==n||t[40]!==s||t[41]!==u?(e=(e,t)=>{let r=t===u;return(0,$.jsxs)(`button`,{type:`button`,"aria-label":`Set ${n.toLowerCase()} to ${e.label}`,title:`${e.label} (${e.description})`,onClick:()=>s(e.value),className:a(`flex min-h-7 min-w-0 flex-col items-center justify-start gap-1 rounded-md px-1 py-1 text-center outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring`,r?`text-foreground`:`text-muted-foreground hover:bg-muted/50`),children:[(0,$.jsx)(`span`,{className:a(`size-1.5 rounded-full`,r?`bg-primary`:`bg-muted-foreground/35`),"aria-hidden":!0}),(0,$.jsx)(`span`,{className:`max-w-full truncate text-[10px] leading-none`,children:e.label})]},e.value)},t[39]=n,t[40]=s,t[41]=u,t[42]=e):e=t[42],k=i.map(e),t[34]=n,t[35]=s,t[36]=i,t[37]=u,t[38]=k}else k=t[38];let A;t[43]!==O||t[44]!==k?(A=(0,$.jsx)(`div`,{className:`mt-1.5 grid gap-1`,style:O,children:k}),t[43]=O,t[44]=k,t[45]=A):A=t[45];let j;return t[46]!==E||t[47]!==A||t[48]!==b?(j=(0,$.jsxs)(`div`,{className:`w-full sm:w-96`,children:[b,E,A]}),t[46]=E,t[47]=A,t[48]=b,t[49]=j):j=t[49],j}export{bt as AppearanceSettingsPanel};