@readmagic/workmate 0.0.23 → 0.0.24

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 (210) hide show
  1. package/dist/chunks/{AddWorkspaceDirectory-OgcBcK5A.js → AddWorkspaceDirectory-Ch8IcWXO.js} +1 -1
  2. package/dist/chunks/AgentsMdExternalIncludesDialog-Cyia0s4g.js +1 -0
  3. package/dist/chunks/{AgentsMdExternalIncludesDialog-CNEifEyV.js → AgentsMdExternalIncludesDialog-LjI_H_Au.js} +1 -1
  4. package/dist/chunks/{App-B-3tPQ3k.js → App-BOqh_1tN.js} +1 -1
  5. package/dist/chunks/{BackgroundTasksDialog-COuhHcey.js → BackgroundTasksDialog-CSEuuoq9.js} +1 -1
  6. package/dist/chunks/{BypassPermissionsModeDialog-bJek4siJ.js → BypassPermissionsModeDialog-CwfCwUr9.js} +1 -1
  7. package/dist/chunks/CustomSelect-wmZ9jz0W.js +1 -0
  8. package/dist/chunks/{DiffDialog-B3X9FMpO.js → DiffDialog-BpXIEWiE.js} +1 -1
  9. package/dist/chunks/Doctor-CMpr7tdf.js +1 -0
  10. package/dist/chunks/{Doctor-6PXyjIi6.js → Doctor-DqW6j3_B.js} +1 -1
  11. package/dist/chunks/{ExitFlow-DgAZp_8U.js → ExitFlow-DacaBTlk.js} +1 -1
  12. package/dist/chunks/{Grove-CHatOzcE.js → Grove-CNqYPWI6.js} +1 -1
  13. package/dist/chunks/{InvalidConfigDialog-DXL92MN9.js → InvalidConfigDialog-0TMJItCC.js} +1 -1
  14. package/dist/chunks/{InvalidSettingsDialog-Dtmpzeps.js → InvalidSettingsDialog-iwh8H52b.js} +1 -1
  15. package/dist/chunks/{KeybindingProviderSetup-DA37QUFs.js → KeybindingProviderSetup-D49HHTXD.js} +1 -1
  16. package/dist/chunks/{MCPConnectionManager-thZd-xA_.js → MCPConnectionManager-Cie77ZAK.js} +1 -1
  17. package/dist/chunks/{MCPToolListView-CpY-YJg4.js → MCPToolListView-B4ehtkXd.js} +1 -1
  18. package/dist/chunks/{McpParsingWarnings-JvChf3xr.js → McpParsingWarnings-Bff66RtJ.js} +1 -1
  19. package/dist/chunks/{MessageSelector-C0_iw7SI.js → MessageSelector-Dpd6Iywp.js} +1 -1
  20. package/dist/chunks/{Messages-K4DDsDP9.js → Messages-DN7M3oS_.js} +1 -1
  21. package/dist/chunks/{Onboarding-C1UdzM-1.js → Onboarding-CQmE3rUf.js} +1 -1
  22. package/dist/chunks/{PromptInputFooterSuggestions-AyLog8p7.js → PromptInputFooterSuggestions-HI6HH3TP.js} +1 -1
  23. package/dist/chunks/{PromptInputHelpMenu-oyic20ip.js → PromptInputHelpMenu-3QNUC2Cg.js} +1 -1
  24. package/dist/chunks/{ProviderSetup-XcBHjUnd.js → ProviderSetup-BCSPsvfv.js} +1 -1
  25. package/dist/chunks/{QueryEngine-DYxBjJ4i.js → QueryEngine-DdLWvJv6.js} +1 -1
  26. package/dist/chunks/{REPL-CQBJRrT0.js → REPL-BqO9KcK_.js} +5 -5
  27. package/dist/chunks/REPL-CmZmypfF.js +1 -0
  28. package/dist/chunks/{ResumeConversation-Dl8H9Gfy.js → ResumeConversation-DBqX7gva.js} +1 -1
  29. package/dist/chunks/SearchExtraToolsTool-BsSoILFj.js +1 -0
  30. package/dist/chunks/{SelectMulti-Bc6l11_K.js → SelectMulti-BQRHed-d.js} +1 -1
  31. package/dist/chunks/{Settings-TGp3fPrS.js → Settings-B-7yBewS.js} +3 -3
  32. package/dist/chunks/{Spinner-zYPFVFHN.js → Spinner-ByQXTvAA.js} +1 -1
  33. package/dist/chunks/{TextInput-CD9iau2k.js → TextInput-B8ruWRf2.js} +1 -1
  34. package/dist/chunks/{ThemePicker-0F0hZYPX.js → ThemePicker-BQErFFW1.js} +1 -1
  35. package/dist/chunks/{TrustDialog-C76YiMKz.js → TrustDialog-BIhz6AZE.js} +1 -1
  36. package/dist/chunks/{_baseEach-4ff-vRlp.js → _baseEach-CsIRoaTH.js} +1 -1
  37. package/dist/chunks/{add-dir-JMsRLGfx.js → add-dir-CrUDs19x.js} +1 -1
  38. package/dist/chunks/{agentDisplay-BReJUBWg.js → agentDisplay-M4pfwbMC.js} +1 -1
  39. package/dist/chunks/{agents-9qQ8I6zW.js → agents-CGaCQeLw.js} +1 -1
  40. package/dist/chunks/{agents-B3x8yJ_r.js → agents-DddX7lLX.js} +1 -1
  41. package/dist/chunks/{allErrors-DfWylHSw.js → allErrors-BF73lon8.js} +1 -1
  42. package/dist/chunks/{backgroundHousekeeping-CVNIhQg8.js → backgroundHousekeeping-Bq3LMsVR.js} +2 -2
  43. package/dist/chunks/backgroundHousekeeping-Cl3Ox7Qh.js +1 -0
  44. package/dist/chunks/{branch-C4TsMEkx.js → branch-Yg_taNlT.js} +1 -1
  45. package/dist/chunks/{btw-Dn1eYFAz.js → btw-udbprVvu.js} +1 -1
  46. package/dist/chunks/caches-ChjIEcdd.js +1 -0
  47. package/dist/chunks/{caches-DArHxBgL.js → caches-DLJ6urv-.js} +1 -1
  48. package/dist/chunks/{clear-Bdhb6b39.js → clear-B8ZtFPOK.js} +1 -1
  49. package/dist/chunks/commands-CVCpJo7M.js +1 -0
  50. package/dist/chunks/{compact-Bu9BUpxV.js → compact-izk6RKHQ.js} +1 -1
  51. package/dist/chunks/config-CFqpXMFX.js +1 -0
  52. package/dist/chunks/{context-CY_yfdYa.js → context-BbVm4SWK.js} +1 -1
  53. package/dist/chunks/{context-noninteractive-Dd4xIoP1.js → context-noninteractive-C7wrRZnM.js} +1 -1
  54. package/dist/chunks/context-noninteractive-x0HAzWhc.js +1 -0
  55. package/dist/chunks/conversation-DouVzO0K.js +1 -0
  56. package/dist/chunks/{conversation-DUu9qBnq.js → conversation-DrVkifKy.js} +1 -1
  57. package/dist/chunks/{conversationRecovery-2ft8sCPE.js → conversationRecovery-DliPBo_z.js} +1 -1
  58. package/dist/chunks/{crossProjectResume-6boHMUBx.js → crossProjectResume-DxMy05_P.js} +1 -1
  59. package/dist/chunks/{datadog-BPuGcxxC.js → datadog-Cu3s7P48.js} +1 -1
  60. package/dist/chunks/{diff-BOAElpfQ.js → diff-DdpHThJ7.js} +1 -1
  61. package/dist/chunks/doctor-D_kV_D_l.js +1 -0
  62. package/dist/chunks/{entry-TNOoyy7_.js → entry-Bxseqbi_.js} +1 -1
  63. package/dist/chunks/{esm-eTAUP-La.js → esm-BXTZz3av.js} +1 -1
  64. package/dist/chunks/{exit-DXApFJIP.js → exit-C_R_FgzR.js} +1 -1
  65. package/dist/chunks/{extraUsage-CmQaLPV1.js → extraUsage-xMuDiNKh.js} +1 -1
  66. package/dist/chunks/extractMemories-D4Dl1itt.js +1 -0
  67. package/dist/chunks/{fast-eGx2IxD7.js → fast-DH-C5IZs.js} +1 -1
  68. package/dist/chunks/fast-bopOPrtf.js +1 -0
  69. package/dist/chunks/fetchModelList-DC4VQpqa.js +1 -0
  70. package/dist/chunks/{fetchModelList-CxLsVNsu.js → fetchModelList-FE8tzTDc.js} +1 -1
  71. package/dist/chunks/{fileSuggestions-DHxdwq28.js → fileSuggestions-C-9unnoJ.js} +1 -1
  72. package/dist/chunks/{firstPartyEventLogger-M6UMli2c.js → firstPartyEventLogger-QmjjQmgt.js} +2 -2
  73. package/dist/chunks/firstPartyEventLogger-lFeqhtfh.js +1 -0
  74. package/dist/chunks/{gemini-D_ORb_L6.js → gemini-C_ApXgwc.js} +1 -1
  75. package/dist/chunks/{generateSessionName-BQoDduyA.js → generateSessionName-CQ03xlYI.js} +1 -1
  76. package/dist/chunks/{goal-D7c2mSds.js → goal-CdL29Y8C.js} +1 -1
  77. package/dist/chunks/{grok-B2-ZbUiR.js → grok-C6WAslUT.js} +1 -1
  78. package/dist/chunks/{help-CZJdRviD.js → help-DxanITNN.js} +1 -1
  79. package/dist/chunks/{history-CQiUERTL.js → history-BMycjPTT.js} +1 -1
  80. package/dist/chunks/hooks-D9ApLkBp.js +1 -0
  81. package/dist/chunks/{hooks-DIvN6gdv.js → hooks-DR3IYPJ3.js} +1 -1
  82. package/dist/chunks/{install-T_CV1Slu.js → install-0D9u2dZw.js} +1 -1
  83. package/dist/chunks/{instrumentation-BjqUZ383.js → instrumentation-BFiGwntt.js} +3 -3
  84. package/dist/chunks/{job-R6c4-3c8.js → job-YhJQWgE0.js} +1 -1
  85. package/dist/chunks/{keybindings-CLRaiL_Z.js → keybindings-DZrF9iNd.js} +1 -1
  86. package/dist/chunks/{launchLocalMemory-DrbKrwXc.js → launchLocalMemory-DhJ56KDc.js} +1 -1
  87. package/dist/chunks/{launchOnboarding-tqsMD8ni.js → launchOnboarding-DmMoZwv5.js} +1 -1
  88. package/dist/chunks/{loadAgentsDir-DlPbtIsS.js → loadAgentsDir-B0Anodo0.js} +23 -23
  89. package/dist/chunks/loadAgentsDir-BbUR6pqH.js +1 -0
  90. package/dist/chunks/{loadPluginHooks-C_msxVIc.js → loadPluginHooks-BSwCtQ6T.js} +1 -1
  91. package/dist/chunks/{localSearch-CK-sFzPm.js → localSearch-BxLYi6w_.js} +1 -1
  92. package/dist/chunks/localSearch-zfn7jgrh.js +1 -0
  93. package/dist/chunks/{logoUtils-x2pHV-Nl.js → logoUtils-CRxTutvr.js} +1 -1
  94. package/dist/chunks/{magicDocs-BEF8D3if.js → magicDocs-Bkz7ZcmL.js} +1 -1
  95. package/dist/chunks/{main-kOVUGxOS.js → main-9ksgUUY_.js} +5 -5
  96. package/dist/chunks/{mcp-D0wAJrRT.js → mcp-ChF12reQ.js} +1 -1
  97. package/dist/chunks/{mcp-mgOlm1cY.js → mcp-DoEl5uah.js} +1 -1
  98. package/dist/chunks/{mcp-BNd29r6p.js → mcp-hp9qqjAy.js} +2 -2
  99. package/dist/chunks/{memory-DDLk9_LJ.js → memory-Qv-wGNQ5.js} +1 -1
  100. package/dist/chunks/{mode-CcNsWgK3.js → mode-bFXPCR2P.js} +1 -1
  101. package/dist/chunks/{model-DzCP4K-9.js → model-6lkW4o2c.js} +1 -1
  102. package/dist/chunks/{model-BwBG0V1u.js → model-BvQFFOf8.js} +1 -1
  103. package/dist/chunks/{modelOptions-DRaG3bo0.js → modelOptions-BBvF3wHK.js} +1 -1
  104. package/dist/chunks/{nativeInstaller-C3pVPqrZ.js → nativeInstaller-CdjmE9Zy.js} +1 -1
  105. package/dist/chunks/{notifications-4wP1Tx9Y.js → notifications-Bc6k-Ozy.js} +1 -1
  106. package/dist/chunks/{onChangeAppState-BlaoFbYF.js → onChangeAppState-DLjZ1x95.js} +1 -1
  107. package/dist/chunks/{openai-CDN71NdX.js → openai-D46QvESE.js} +1 -1
  108. package/dist/chunks/{overlayContext-BT2Lq8ei.js → overlayContext-8--_fbvY.js} +1 -1
  109. package/dist/chunks/{partition-CIl_ORUT.js → partition-DznN4XZH.js} +1 -1
  110. package/dist/chunks/{permissions-zSNOZSwr.js → permissions-DmGFViHI.js} +1 -1
  111. package/dist/chunks/{pidLock-BTqO-h7Y.js → pidLock-Cm4sW35f.js} +2 -2
  112. package/dist/chunks/{plan-Bs6em6lk.js → plan-CzGBz_87.js} +1 -1
  113. package/dist/chunks/{plugin-DDDxjBa0.js → plugin-CluR79xX.js} +1 -1
  114. package/dist/chunks/{pluginAutoupdate-8qugAFhb.js → pluginAutoupdate-ennb9k8_.js} +1 -1
  115. package/dist/chunks/{pluginBlocklist-q01ackCf.js → pluginBlocklist-9OrNEh--.js} +1 -1
  116. package/dist/chunks/{pluginCliCommands-DXZfCZsv.js → pluginCliCommands-CJv5uhOG.js} +1 -1
  117. package/dist/chunks/{pluginFlagging-BG2MHCQJ.js → pluginFlagging-js_-WmYj.js} +1 -1
  118. package/dist/chunks/{pluginOperations-hXYLrzM2.js → pluginOperations-CcUSHAIa.js} +1 -1
  119. package/dist/chunks/pluginStartupCheck-CRBUO9gP.js +1 -0
  120. package/dist/chunks/{pluginStartupCheck-DTMa6TgL.js → pluginStartupCheck-SRXOyqr7.js} +1 -1
  121. package/dist/chunks/{plugins-COoGBYk6.js → plugins-IwwaCDba.js} +1 -1
  122. package/dist/chunks/{print-BASybEtO.js → print-CgszM1ea.js} +2 -2
  123. package/dist/chunks/{processBashCommand-DDi_Pymt.js → processBashCommand-D098WsqY.js} +1 -1
  124. package/dist/chunks/{processSlashCommand-Cq9kaoSF.js → processSlashCommand-DOQFjJ88.js} +1 -1
  125. package/dist/chunks/prompt-BKPmDAuL.js +1 -0
  126. package/dist/chunks/{prompt-mM79EGnT.js → prompt-CJ1l3XXk.js} +1 -1
  127. package/dist/chunks/prompt-CgOklk7z.js +1 -0
  128. package/dist/chunks/{promptEditor-DLGN_eLu.js → promptEditor-DoGHJN_W.js} +1 -1
  129. package/dist/chunks/{reconciler-CeXqh95g.js → reconciler-ykkSPR-i.js} +1 -1
  130. package/dist/chunks/{refresh-Ce2yk28a.js → refresh-Dn_I1R4v.js} +1 -1
  131. package/dist/chunks/{reject-Bld5E-bn.js → reject-DtcCfuZV.js} +1 -1
  132. package/dist/chunks/{reload-plugins-C42xSB5l.js → reload-plugins-CQZFQLWP.js} +1 -1
  133. package/dist/chunks/{rename-CtBghpxZ.js → rename-DyEfsZiq.js} +1 -1
  134. package/dist/chunks/{resume-BWkaTDqd.js → resume-BcXEDUqZ.js} +1 -1
  135. package/dist/chunks/{runtimeObserver-1wQO8HSZ.js → runtimeObserver-DEuR8z0f.js} +1 -1
  136. package/dist/chunks/{runtimeObserver-XQrOux41.js → runtimeObserver-PJ1o8GRA.js} +2 -2
  137. package/dist/chunks/sandbox-adapter-DfB9kgQD.js +1 -0
  138. package/dist/chunks/{sandbox-toggle-Dir9Polo.js → sandbox-toggle-D9GDUsTl.js} +1 -1
  139. package/dist/chunks/searchExtraTools-D4gMMQv0.js +1 -0
  140. package/dist/chunks/{select-Bxf5-5sI.js → select-DIxfl_VN.js} +1 -1
  141. package/dist/chunks/sessionFileAccessHooks-lbgHnVvi.js +1 -0
  142. package/dist/chunks/{sessionObserver-DS4G6mb9.js → sessionObserver-BtKjvteq.js} +1 -1
  143. package/dist/chunks/sessionObserver-D6qzEdGJ.js +1 -0
  144. package/dist/chunks/sessionStorage-C_7gow_z.js +1 -0
  145. package/dist/chunks/{sessionTracing-BoDDYLxW.js → sessionTracing-CtbeAD0s.js} +1 -1
  146. package/dist/chunks/{setup-BRypY6iT.js → setup-qecdf-ES.js} +2 -2
  147. package/dist/chunks/{shadowedRuleDetection-BRxZjobz.js → shadowedRuleDetection-Bg_aIc5Z.js} +1 -1
  148. package/dist/chunks/{sideQuestion-DLJxyrlp.js → sideQuestion-D49GsfH7.js} +1 -1
  149. package/dist/chunks/sinks-C-lP7uyO.js +1 -0
  150. package/dist/chunks/{sinks-Cz2HfgMU.js → sinks-De-B1lPQ.js} +1 -1
  151. package/dist/chunks/{skillChangeDetector-xviGstqm.js → skillChangeDetector-DkOJoNhT.js} +1 -1
  152. package/dist/chunks/{skillGapStore-CKN_d3pO.js → skillGapStore-CcFoHNLl.js} +2 -2
  153. package/dist/chunks/{skillLifecycle-BMY2JGGG.js → skillLifecycle-Bnz_4wE5.js} +2 -2
  154. package/dist/chunks/{skillSearchPanel-D9trHULQ.js → skillSearchPanel-C_5yUhqn.js} +2 -2
  155. package/dist/chunks/{skills-CX_AvwLG.js → skills-BE5scC-g.js} +1 -1
  156. package/dist/chunks/status-Dw09WZLd.js +1 -0
  157. package/dist/chunks/{statusNoticeHelpers-vFVgIYuw.js → statusNoticeHelpers-BRQpUIlH.js} +1 -1
  158. package/dist/chunks/switcher-CgZVah7U.js +1 -0
  159. package/dist/chunks/{switcher-CAajZeNL.js → switcher-DZwUo5Ed.js} +1 -1
  160. package/dist/chunks/{tasks-BWNQr2d3.js → tasks-DdcUQEeD.js} +1 -1
  161. package/dist/chunks/{templateJobs-gUET39Ho.js → templateJobs-C8qsPrLj.js} +1 -1
  162. package/dist/chunks/{theme-B7fKI6E5.js → theme-f1h2QI8J.js} +1 -1
  163. package/dist/chunks/{tipRegistry-DamZr34w.js → tipRegistry-B71o4qWr.js} +1 -1
  164. package/dist/chunks/{toolEventObserver-BL06sDI4.js → toolEventObserver-7QP38x4t.js} +1 -1
  165. package/dist/chunks/{toolPool-CX5wDBi1.js → toolPool-V-7Yv0GA.js} +1 -1
  166. package/dist/chunks/{use-select-navigation-BiUJdWai.js → use-select-navigation-hWL5VHnL.js} +1 -1
  167. package/dist/chunks/{useExitOnCtrlCDWithKeybindings-C9BYG8Bo.js → useExitOnCtrlCDWithKeybindings-BKwzUpgb.js} +1 -1
  168. package/dist/chunks/useMainLoopModel-DxvV70Ru.js +1 -0
  169. package/dist/chunks/{useManagePlugins-BqfIVa6E.js → useManagePlugins-BXLXazrR.js} +1 -1
  170. package/dist/chunks/useMergedTools-CCgnBJzO.js +1 -0
  171. package/dist/chunks/{useSearchInput-B25K1RnK.js → useSearchInput-CzopttqC.js} +1 -1
  172. package/dist/chunks/{useSettingsErrors-DYQ44kX4.js → useSettingsErrors-SFPWfxsA.js} +1 -1
  173. package/dist/chunks/{util-CtlC2dsN.js → util-Cbb3S6SX.js} +1 -1
  174. package/dist/chunks/{validatePlugin-D6tFo87L.js → validatePlugin-BMSoeb_b.js} +1 -1
  175. package/dist/chunks/worktree-Vm-SNY5x.js +1 -0
  176. package/dist/cli.js +1 -1
  177. package/package.json +1 -1
  178. package/dist/chunks/AgentsMdExternalIncludesDialog-CDNd5-7E.js +0 -1
  179. package/dist/chunks/CustomSelect-DoeEXOIP.js +0 -1
  180. package/dist/chunks/Doctor-DNgkgYhB.js +0 -1
  181. package/dist/chunks/REPL-CrVuMQY2.js +0 -1
  182. package/dist/chunks/SearchExtraToolsTool-lv7VE50N.js +0 -1
  183. package/dist/chunks/backgroundHousekeeping-BGxHB_OX.js +0 -1
  184. package/dist/chunks/caches-BGzKwpnc.js +0 -1
  185. package/dist/chunks/commands-QepeBbFn.js +0 -1
  186. package/dist/chunks/config-D58C3_Lu.js +0 -1
  187. package/dist/chunks/context-noninteractive-BDDi3NLF.js +0 -1
  188. package/dist/chunks/conversation-B0wxBwzv.js +0 -1
  189. package/dist/chunks/doctor-CkLzqAMd.js +0 -1
  190. package/dist/chunks/extractMemories-xP63mv6R.js +0 -1
  191. package/dist/chunks/fast-C5nQH8rm.js +0 -1
  192. package/dist/chunks/fetchModelList-D24lRIgR.js +0 -1
  193. package/dist/chunks/firstPartyEventLogger-BVAogAX8.js +0 -1
  194. package/dist/chunks/hooks-BNuUlMzL.js +0 -1
  195. package/dist/chunks/loadAgentsDir-CcmY8zCj.js +0 -1
  196. package/dist/chunks/localSearch-DrUj0B-d.js +0 -1
  197. package/dist/chunks/pluginStartupCheck-HS1ZceZa.js +0 -1
  198. package/dist/chunks/prompt-CHobfCB1.js +0 -1
  199. package/dist/chunks/prompt-CMm6RHHc.js +0 -1
  200. package/dist/chunks/sandbox-adapter-8GO6eJxw.js +0 -1
  201. package/dist/chunks/searchExtraTools-BhDq8DTJ.js +0 -1
  202. package/dist/chunks/sessionFileAccessHooks-CozocHQE.js +0 -1
  203. package/dist/chunks/sessionObserver-DGEQM4cO.js +0 -1
  204. package/dist/chunks/sessionStorage-BcAscOGE.js +0 -1
  205. package/dist/chunks/sinks-CGdKmq_8.js +0 -1
  206. package/dist/chunks/status-Daaak6Bo.js +0 -1
  207. package/dist/chunks/switcher-BpgmH4AI.js +0 -1
  208. package/dist/chunks/useMainLoopModel-DwjSVzzO.js +0 -1
  209. package/dist/chunks/useMergedTools-Bw8FchX8.js +0 -1
  210. package/dist/chunks/worktree-B8apCnVe.js +0 -1
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{i as t,o as n}from"./envUtils-DfkgIdYf.js";import{Bw as r,Vw as i,g as a,h as o,m as s}from"./loadAgentsDir-DlPbtIsS.js";import{basename as c,join as l}from"path";import{appendFileSync as u,mkdirSync as d,readFileSync as f,readdirSync as p,writeFileSync as m}from"fs";import{randomUUID as h}from"crypto";function g(){let e=o(`templates`,process.cwd()),n=l(t(),`templates`);try{return p(n),[...e,n]}catch{return e}}function _(){let e=[],t=new Set;for(let n of g()){let r;try{r=p(n)}catch{continue}for(let a of r){if(!a.endsWith(`.md`))continue;let r=c(a,`.md`);if(t.has(r))continue;t.add(r);let o=l(n,a);try{let{frontmatter:t,content:n}=i(f(o,`utf-8`),o),a=(typeof t.description==`string`?t.description:``)||s(n,`No description`);e.push({name:r,description:a,filePath:o,frontmatter:t,content:n})}catch{}}}return e}function v(e){return _().find(t=>t.name===e)??null}var y=e((()=>{r(),n(),a()}));function b(){return l(t(),`jobs`)}function x(e){return l(b(),e)}function S(e,t,n,r,i){let a=x(e);d(a,{recursive:!0});let o=new Date().toISOString(),s={jobId:e,templateName:t,createdAt:o,updatedAt:o,status:`created`,args:i};return m(l(a,`state.json`),JSON.stringify(s,null,2),`utf-8`),m(l(a,`template.md`),n,`utf-8`),m(l(a,`input.txt`),r,`utf-8`),a}function C(e){try{let t=f(l(x(e),`state.json`),`utf-8`),n=JSON.parse(t);if(typeof n!=`object`||!n)return null;let r=n;return typeof r.jobId!=`string`||typeof r.status!=`string`?null:r}catch{return null}}function w(e,t){let n=x(e),r=C(e);if(!r)return!1;let i=l(n,`replies.jsonl`),a=JSON.stringify({text:t,timestamp:new Date().toISOString()});try{u(i,`${a}\n`,`utf-8`)}catch{m(i,`${a}\n`,`utf-8`)}let o={...r,updatedAt:new Date().toISOString()};return m(l(n,`state.json`),JSON.stringify(o,null,2),`utf-8`),!0}var T=e((()=>{n()}));async function E(e){let t=e[0];switch(t){case`list`:k();break;case`new`:A(e.slice(1));break;case`reply`:j(e.slice(1));break;case`status`:O(e.slice(1));break;default:console.error(`Unknown template command: ${t}`),D(),process.exitCode=1}}function D(){console.log(`
1
+ import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{i as t,o as n}from"./envUtils-DfkgIdYf.js";import{Bw as r,Vw as i,g as a,h as o,m as s}from"./loadAgentsDir-B0Anodo0.js";import{basename as c,join as l}from"path";import{appendFileSync as u,mkdirSync as d,readFileSync as f,readdirSync as p,writeFileSync as m}from"fs";import{randomUUID as h}from"crypto";function g(){let e=o(`templates`,process.cwd()),n=l(t(),`templates`);try{return p(n),[...e,n]}catch{return e}}function _(){let e=[],t=new Set;for(let n of g()){let r;try{r=p(n)}catch{continue}for(let a of r){if(!a.endsWith(`.md`))continue;let r=c(a,`.md`);if(t.has(r))continue;t.add(r);let o=l(n,a);try{let{frontmatter:t,content:n}=i(f(o,`utf-8`),o),a=(typeof t.description==`string`?t.description:``)||s(n,`No description`);e.push({name:r,description:a,filePath:o,frontmatter:t,content:n})}catch{}}}return e}function v(e){return _().find(t=>t.name===e)??null}var y=e((()=>{r(),n(),a()}));function b(){return l(t(),`jobs`)}function x(e){return l(b(),e)}function S(e,t,n,r,i){let a=x(e);d(a,{recursive:!0});let o=new Date().toISOString(),s={jobId:e,templateName:t,createdAt:o,updatedAt:o,status:`created`,args:i};return m(l(a,`state.json`),JSON.stringify(s,null,2),`utf-8`),m(l(a,`template.md`),n,`utf-8`),m(l(a,`input.txt`),r,`utf-8`),a}function C(e){try{let t=f(l(x(e),`state.json`),`utf-8`),n=JSON.parse(t);if(typeof n!=`object`||!n)return null;let r=n;return typeof r.jobId!=`string`||typeof r.status!=`string`?null:r}catch{return null}}function w(e,t){let n=x(e),r=C(e);if(!r)return!1;let i=l(n,`replies.jsonl`),a=JSON.stringify({text:t,timestamp:new Date().toISOString()});try{u(i,`${a}\n`,`utf-8`)}catch{m(i,`${a}\n`,`utf-8`)}let o={...r,updatedAt:new Date().toISOString()};return m(l(n,`state.json`),JSON.stringify(o,null,2),`utf-8`),!0}var T=e((()=>{n()}));async function E(e){let t=e[0];switch(t){case`list`:k();break;case`new`:A(e.slice(1));break;case`reply`:j(e.slice(1));break;case`status`:O(e.slice(1));break;default:console.error(`Unknown template command: ${t}`),D(),process.exitCode=1}}function D(){console.log(`
2
2
  Template Job Commands:
3
3
 
4
4
  claude job list List available templates
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{H as t,t as n,x as r}from"./src-DL3w8VPk.js";import{t as i}from"./jsx-runtime-Bb4Xn-E0.js";import{n as a,t as o}from"./ThemePicker-0F0hZYPX.js";function s({onDone:e}){let[,n]=t();return(0,c.jsx)(r,{color:`permission`,children:(0,c.jsx)(o,{onThemeSelect:t=>{n(t),e(`Theme set to ${t}`)},onCancel:()=>{e(`Theme picker dismissed`,{display:`system`})},skipExitHandling:!0})})}var c,l;e((()=>{n(),a(),c=i(),l=async(e,t)=>(0,c.jsx)(s,{onDone:e})}))();export{l as call};
1
+ import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{H as t,t as n,x as r}from"./src-DL3w8VPk.js";import{t as i}from"./jsx-runtime-Bb4Xn-E0.js";import{n as a,t as o}from"./ThemePicker-BQErFFW1.js";function s({onDone:e}){let[,n]=t();return(0,c.jsx)(r,{color:`permission`,children:(0,c.jsx)(o,{onThemeSelect:t=>{n(t),e(`Theme set to ${t}`)},onCancel:()=>{e(`Theme picker dismissed`,{display:`system`})},skipExitHandling:!0})})}var c,l;e((()=>{n(),a(),c=i(),l=async(e,t)=>(0,c.jsx)(s,{onDone:e})}))();export{l as call};
@@ -1,2 +1,2 @@
1
- import{n as e,t}from"./memoize-BK3gG5ob.js";import{AC as n,C_ as r,E_ as i,Ja as a,Nx as o,Qa as s,Qp as c,_r as l,do as u,im as d,jC as f,jx as p,lo as m,vb as h,yb as ee,yr as te}from"./loadAgentsDir-DlPbtIsS.js";import{di as g,fi as _,j as v,t as y}from"./src-DL3w8VPk.js";import{n as b,t as x}from"./cwd-Pa83R95t.js";import{c as S,i as C}from"./debug-Bglx1aTu.js";import{Fr as ne,Ir as re,Lr as w,Mr as ie,Wt as T,d as E,h as D,qt as O,t as k}from"./settings-B2jvL8Dp.js";import{_ as A,g as j,o as M,p as N,s as P}from"./config-C-Y2qtB2.js";import{i as F,n as I}from"./execFileNoThrow-BTachNBI.js";import{d as L,f as R,o as z,s as B}from"./log-D2TIwHBV.js";import{i as V,o as H}from"./platform-BacQ6ACS.js";import{Yt as U,Zt as W}from"./model-BwBG0V1u.js";import{c as G,u as ae}from"./firstPartyEventLogger-M6UMli2c.js";import{c as K,i as q}from"./terminalSetup-B_10N_gE.js";C(),L();function J(){}function Y(){return!1}var oe=new Set([`allow_product_feedback`]);function se(e){return!(R()&&oe.has(e))}async function ce(){Y()&&S(`Policy limits: skipping load — no auth available`)}t(),n(),b(),N(),O(),F(),w(),z(),ae();var le=[/(?:^|\/)(?:package-lock\.json|yarn\.lock|bun\.lock|bun\.lockb|pnpm-lock\.yaml|Pipfile\.lock|poetry\.lock|Cargo\.lock|Gemfile\.lock|go\.sum|composer\.lock|uv\.lock)$/,/\.generated\./,/(?:^|\/)(?:dist|build|out|target|node_modules|\.next|__pycache__)\//,/\.(?:min\.js|min\.css|map|pyc|pyo)$/,/\.(?:json|ya?ml|toml|xml|ini|cfg|conf|env|lock|txt|md|mdx|rst|csv|log|svg)$/i,/(?:^|\/)\.?(?:eslintrc|prettierrc|babelrc|editorconfig|gitignore|gitattributes|dockerignore|npmrc)/,/(?:^|\/)(?:tsconfig|jsconfig|biome|vitest\.config|jest\.config|webpack\.config|vite\.config|rollup\.config)\.[a-z]+$/,/(?:^|\/)\.(?:github|vscode|idea|claude)\//,/(?:^|\/)(?:CHANGELOG|LICENSE|CONTRIBUTING|CODEOWNERS|README)(?:\.[a-z]+)?$/i];function ue(e){return!le.some(t=>t.test(e))}function de(e,t){let n=[],r=new Set,i=new Map;for(let a=1;n.length<t&&a<=t;a++)for(let o of e){if(n.length>=t)break;if(!ue(o))continue;let e=Math.max(o.lastIndexOf(`/`),o.lastIndexOf(`\\`)),s=e>=0?o.slice(e+1):o;if(!s||r.has(s))continue;let c=e>=0?o.slice(0,e):`.`;(i.get(c)??0)>=a||(n.push(s),r.add(s),i.set(c,(i.get(c)??0)+1))}return n.length>=t?n:[]}async function fe(){if(T.platform===`win32`||!await ie())return[];try{let e=await G(),t=[`log`,`-n`,`1000`,`--pretty=format:`,`--name-only`,`--diff-filter=M`],n=new Map,r=e=>{for(let t of e.split(`
1
+ import{n as e,t}from"./memoize-BK3gG5ob.js";import{AC as n,C_ as r,E_ as i,Ja as a,Nx as o,Qa as s,Qp as c,_r as l,do as u,im as d,jC as f,jx as p,lo as m,vb as h,yb as ee,yr as te}from"./loadAgentsDir-B0Anodo0.js";import{di as g,fi as _,j as v,t as y}from"./src-DL3w8VPk.js";import{n as b,t as x}from"./cwd-Pa83R95t.js";import{c as S,i as C}from"./debug-Bglx1aTu.js";import{Fr as ne,Ir as re,Lr as w,Mr as ie,Wt as T,d as E,h as D,qt as O,t as k}from"./settings-B2jvL8Dp.js";import{_ as A,g as j,o as M,p as N,s as P}from"./config-C-Y2qtB2.js";import{i as F,n as I}from"./execFileNoThrow-BTachNBI.js";import{d as L,f as R,o as z,s as B}from"./log-D2TIwHBV.js";import{i as V,o as H}from"./platform-BacQ6ACS.js";import{Yt as U,Zt as W}from"./model-BvQFFOf8.js";import{c as G,u as ae}from"./firstPartyEventLogger-QmjjQmgt.js";import{c as K,i as q}from"./terminalSetup-B_10N_gE.js";C(),L();function J(){}function Y(){return!1}var oe=new Set([`allow_product_feedback`]);function se(e){return!(R()&&oe.has(e))}async function ce(){Y()&&S(`Policy limits: skipping load — no auth available`)}t(),n(),b(),N(),O(),F(),w(),z(),ae();var le=[/(?:^|\/)(?:package-lock\.json|yarn\.lock|bun\.lock|bun\.lockb|pnpm-lock\.yaml|Pipfile\.lock|poetry\.lock|Cargo\.lock|Gemfile\.lock|go\.sum|composer\.lock|uv\.lock)$/,/\.generated\./,/(?:^|\/)(?:dist|build|out|target|node_modules|\.next|__pycache__)\//,/\.(?:min\.js|min\.css|map|pyc|pyo)$/,/\.(?:json|ya?ml|toml|xml|ini|cfg|conf|env|lock|txt|md|mdx|rst|csv|log|svg)$/i,/(?:^|\/)\.?(?:eslintrc|prettierrc|babelrc|editorconfig|gitignore|gitattributes|dockerignore|npmrc)/,/(?:^|\/)(?:tsconfig|jsconfig|biome|vitest\.config|jest\.config|webpack\.config|vite\.config|rollup\.config)\.[a-z]+$/,/(?:^|\/)\.(?:github|vscode|idea|claude)\//,/(?:^|\/)(?:CHANGELOG|LICENSE|CONTRIBUTING|CODEOWNERS|README)(?:\.[a-z]+)?$/i];function ue(e){return!le.some(t=>t.test(e))}function de(e,t){let n=[],r=new Set,i=new Map;for(let a=1;n.length<t&&a<=t;a++)for(let o of e){if(n.length>=t)break;if(!ue(o))continue;let e=Math.max(o.lastIndexOf(`/`),o.lastIndexOf(`\\`)),s=e>=0?o.slice(e+1):o;if(!s||r.has(s))continue;let c=e>=0?o.slice(0,e):`.`;(i.get(c)??0)>=a||(n.push(s),r.add(s),i.set(c,(i.get(c)??0)+1))}return n.length>=t?n:[]}async function fe(){if(T.platform===`win32`||!await ie())return[];try{let e=await G(),t=[`log`,`-n`,`1000`,`--pretty=format:`,`--name-only`,`--diff-filter=M`],n=new Map,r=e=>{for(let t of e.split(`
2
2
  `)){let e=t.trim();e&&n.set(e,(n.get(e)??0)+1)}};if(e){let{stdout:n}=await I(`git`,[...t,`--author=${e}`],{cwd:x()});r(n)}if(n.size<10){let{stdout:e}=await I(re(),t,{cwd:x()});r(e)}return de(Array.from(n.entries()).sort((e,t)=>t[1]-e[1]).map(([e])=>e),5)}catch(e){return B(e),[]}}var pe=10080*60*1e3,me=e(()=>{let e=M(),t=e.exampleFiles?.length?f(e.exampleFiles):`<filepath>`;return`Try "${f([`fix lint errors`,`fix typecheck errors`,`how does ${t} work?`,`refactor ${t}`,`how do I log an error?`,`edit ${t} to...`,`write a test for ${t}`,`create a util logging.py that...`])}"`}),he=e(async()=>{let e=M();Date.now()-(e.exampleFilesGeneratedAt??0)>pe&&(e.exampleFiles=[]),e.exampleFiles?.length||fe().then(e=>{e.length&&j(t=>({...t,exampleFiles:e,exampleFilesGeneratedAt:Date.now()}))})});W();var ge={"claude-3-opus":{modelName:`Work Mate 3 Opus`,retirementDates:{firstParty:`January 5, 2026`,bedrock:`January 15, 2026`,vertex:`January 5, 2026`,foundry:`January 5, 2026`}},"claude-3-7-sonnet":{modelName:`Work Mate 3.7 Sonnet`,retirementDates:{firstParty:`February 19, 2026`,bedrock:`April 28, 2026`,vertex:`May 11, 2026`,foundry:`February 19, 2026`}},"claude-3-5-haiku":{modelName:`Work Mate 3.5 Haiku`,retirementDates:{firstParty:`February 19, 2026`,bedrock:null,vertex:null,foundry:null}}};function X(e){let t=e.toLowerCase(),n=U();for(let[e,r]of Object.entries(ge)){let i=r.retirementDates[n];if(!(!t.includes(e)||!i))return{isDeprecated:!0,modelName:r.modelName,retirementDate:i}}return{isDeprecated:!1}}function _e(e){if(!e)return null;let t=X(e);return t.isDeprecated?`⚠ ${t.modelName} will be retired on ${t.retirementDate}. Consider switching to a newer model.`:null}_(),y(),H(),D(),o(),ee(),i(),d(),m(),a(),l(),q(),N();function ve(e){let t=P().numStartups;A(n=>{let r=n.tipsHistory??{};return r[e]===t?n:{...n,tipsHistory:{...r,[e]:t}}})}function Z(e){let t=P(),n=t.tipsHistory?.[e];return n?t.numStartups-n:1/0}C(),N(),O(),w();var Q;async function ye(){return Q===void 0&&(Q=p in await u()),Q}async function $(e,t,n){if(!await ye()||s(`${e}@claude-plugins-official`))return!1;let{bashTools:i}=t??{};return!!(n.cli&&i?.size&&n.cli.some(e=>i.has(e))||n.filePath&&t?.readFileState&&r(t.readFileState).some(e=>n.filePath.test(e)))}var be=[{id:`new-user-warmup`,content:async()=>`Start with small features or bug fixes, tell Work Mate to propose a plan, and verify its suggested edits`,cooldownSessions:3,async isRelevant(){return P().numStartups<10}},{id:`plan-mode-for-complex-tasks`,content:async()=>`Use Plan Mode to prepare for a complex request before making changes. Press ${h(`chat:cycleMode`,`Chat`,`shift+tab`)} twice to enable.`,cooldownSessions:5,isRelevant:async()=>{let e=P();return(e.lastPlanModeUse?(Date.now()-e.lastPlanModeUse)/(1e3*60*60*24):1/0)>7}},{id:`default-permission-mode-config`,content:async()=>`Use /config to change your default permission mode (including Plan Mode)`,cooldownSessions:10,isRelevant:async()=>{try{let e=P(),t=E(),n=!!e.lastPlanModeUse,r=!!t?.permissions?.defaultMode;return n&&!r}catch(e){return S(`Failed to check default-permission-mode-config tip relevance: ${e}`,{level:`warn`}),!1}}},{id:`git-worktrees`,content:async()=>`Use git worktrees to run multiple Work Mate sessions in parallel.`,cooldownSessions:10,isRelevant:async()=>{try{let e=P();return await ne()<=1&&e.numStartups>50}catch{return!1}}},{id:`terminal-setup`,content:async()=>T.terminal===`Apple_Terminal`?`Run /terminal-setup to enable convenient terminal integration like Option + Enter for new line and more`:`Run /terminal-setup to enable convenient terminal integration like Shift + Enter for new line and more`,cooldownSessions:10,async isRelevant(){let e=P();return T.terminal===`Apple_Terminal`?!e.optionAsMetaKeyInstalled:!e.shiftEnterKeyBindingInstalled}},{id:`shift-enter`,content:async()=>T.terminal===`Apple_Terminal`?`Press Option+Enter to send a multi-line message`:`Press Shift+Enter to send a multi-line message`,cooldownSessions:10,async isRelevant(){let e=P();return!!((T.terminal===`Apple_Terminal`?e.optionAsMetaKeyInstalled:e.shiftEnterKeyBindingInstalled)&&e.numStartups>3)}},{id:`shift-enter-setup`,content:async()=>T.terminal===`Apple_Terminal`?`Run /terminal-setup to enable Option+Enter for new lines`:`Run /terminal-setup to enable Shift+Enter for new lines`,cooldownSessions:10,async isRelevant(){if(!K())return!1;let e=P();return!(T.terminal===`Apple_Terminal`?e.optionAsMetaKeyInstalled:e.shiftEnterKeyBindingInstalled)}},{id:`memory-command`,content:async()=>`Use /memory to view and manage Work Mate memory`,cooldownSessions:15,async isRelevant(){return P().memoryUsageCount<=0}},{id:`theme-command`,content:async()=>`Use /theme to change the color theme`,cooldownSessions:20,isRelevant:async()=>!0},{id:`colorterm-truecolor`,content:async()=>`Try setting environment variable COLORTERM=truecolor for richer colors`,cooldownSessions:30,isRelevant:async()=>!process.env.COLORTERM&&g.level<3},{id:`powershell-tool-env`,content:async()=>`Set CLAUDE_CODE_USE_POWERSHELL_TOOL=1 to enable the PowerShell tool (preview)`,cooldownSessions:10,isRelevant:async()=>V()===`windows`&&process.env.CLAUDE_CODE_USE_POWERSHELL_TOOL===void 0},{id:`status-line`,content:async()=>`Use /statusline to set up a custom status line that will display beneath the input box`,cooldownSessions:25,isRelevant:async()=>E().statusLine===void 0},{id:`prompt-queue`,content:async()=>`Hit Enter to queue up additional messages while Work Mate is working.`,cooldownSessions:5,async isRelevant(){return P().promptQueueUseCount<=3}},{id:`enter-to-steer-in-relatime`,content:async()=>`Send messages to Work Mate while it works to steer Work Mate in real-time`,cooldownSessions:20,isRelevant:async()=>!0},{id:`todo-list`,content:async()=>`Ask Work Mate to create a todo list when working on complex tasks to track progress and remain on track`,cooldownSessions:20,isRelevant:async()=>!0},{id:`permissions`,content:async()=>`Use /permissions to pre-approve and pre-deny bash, edit, and MCP tools`,cooldownSessions:10,async isRelevant(){return P().numStartups>10}},{id:`drag-and-drop-images`,content:async()=>`Did you know you can drag and drop image files into your terminal?`,cooldownSessions:10,isRelevant:async()=>!T.isSSH()},{id:`paste-images-mac`,content:async()=>`Paste images into Work Mate using control+v (not cmd+v!)`,cooldownSessions:10,isRelevant:async()=>V()===`macos`},{id:`double-esc`,content:async()=>`Double-tap esc to rewind the conversation to a previous point in time`,cooldownSessions:10,isRelevant:async()=>!c()},{id:`double-esc-code-restore`,content:async()=>`Double-tap esc to rewind the code and/or conversation to a previous point in time`,cooldownSessions:10,isRelevant:async()=>c()},{id:`continue`,content:async()=>`Run claude --continue or claude --resume to resume a conversation`,cooldownSessions:10,isRelevant:async()=>!0},{id:`rename-conversation`,content:async()=>`Name your conversations with /rename to find them easily in /resume later`,cooldownSessions:15,isRelevant:async()=>te()&&P().numStartups>10},{id:`custom-commands`,content:async()=>`Create skills by adding .md files to .workmate/skills/ in your project or ~/.workmate/skills/ for skills that work in any project`,cooldownSessions:15,async isRelevant(){return P().numStartups>10}},{id:`shift-tab`,content:async()=>`Hit ${h(`chat:cycleMode`,`Chat`,`shift+tab`)} to cycle between default, accept edits, plan, auto, and bypass modes`,cooldownSessions:10,isRelevant:async()=>!0},{id:`image-paste`,content:async()=>`Use ${h(`chat:imagePaste`,`Chat`,`ctrl+v`)} to paste images from your clipboard`,cooldownSessions:20,isRelevant:async()=>!0},{id:`custom-agents`,content:async()=>`Use /agents to optimize specific tasks. Eg. Software Architect, Code Writer, Code Reviewer`,cooldownSessions:15,async isRelevant(){return P().numStartups>5}},{id:`agent-flag`,content:async()=>`Use --agent <agent_name> to directly start a conversation with a subagent`,cooldownSessions:15,async isRelevant(){return P().numStartups>5}},{id:`frontend-design-plugin`,content:async e=>`Working with HTML/CSS? Install the frontend-design plugin:\n${v(`suggestion`,e?.theme??`dark`)(`/plugin install frontend-design@${p}`)}`,cooldownSessions:3,isRelevant:async e=>$(`frontend-design`,e,{filePath:/\.(html|css|htm)$/i})},{id:`vercel-plugin`,content:async e=>`Working with Vercel? Install the vercel plugin:\n${v(`suggestion`,e?.theme??`dark`)(`/plugin install vercel@${p}`)}`,cooldownSessions:3,isRelevant:async e=>$(`vercel`,e,{filePath:/(?:^|[/\\])vercel\.json$/i,cli:[`vercel`]})},{id:`subagent-fanout-nudge`,content:async e=>`Say ${v(`suggestion`,e?.theme??`dark`)(`"fan out subagents"`)} and Work Mate sends a team. Each one digs deep so nothing gets missed.`,cooldownSessions:3,isRelevant:async()=>!1}],xe=[];function Se(){let e=k().spinnerTipsOverride;return e?.tips?.length?e.tips.map((e,t)=>({id:`custom-tip-${t}`,content:async()=>e,cooldownSessions:0,isRelevant:async()=>!0})):[]}async function Ce(e){let t=k().spinnerTipsOverride,n=Se();if(t?.excludeDefault&&n.length>0)return n;let r=[...be,...xe],i=await Promise.all(r.map(t=>t.isRelevant?.(e)??Promise.resolve(!0)));return[...r.filter((e,t)=>i[t]).filter(e=>Z(e.id)>=e.cooldownSessions),...n]}export{me as a,se as c,_e as i,Y as l,Z as n,he as o,ve as r,J as s,Ce as t,ce as u};
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{c as t,i as n}from"./debug-Bglx1aTu.js";import{o as r,s as i}from"./log-D2TIwHBV.js";import{r as a,t as o}from"./observationStore-D0rm3GhP.js";import{randomUUID as s}from"node:crypto";function c(){for(let[e,t]of T)if(t.size>x){let e=t.values(),n=t.size-S;for(let r=0;r<n;r++){let n=e.next();if(n.done)break;t.delete(n.value)}}if(T.size>C){let e=T.size-w,t=0;for(let n of T.keys()){if(t>=e)break;T.delete(n),t++}}}function l(e,t){let n=T.get(e)??new Set;n.add(t),T.delete(e),T.set(e,n),c()}function u(e,t){return T.get(e)?.has(t)??!1}function d(){T.clear()}function f(e){return{id:s(),sessionId:e.sessionId,projectId:e.projectId,projectName:e.projectName,cwd:e.cwd,timestamp:new Date().toISOString(),source:`tool-hook`,turn:e.turn}}function p(){return E||(E=Promise.all([import(`./projectContext-5fmRr6Sd.js`),import(`./featureCheck-JOur3pHb.js`),import(`./runtimeObserver-1wQO8HSZ.js`)]).then(([e,t,n])=>({resolveProjectContext:e.resolveProjectContext,isSkillLearningEnabled:t.isSkillLearningEnabled,RUNTIME_SESSION_ID:n.RUNTIME_SESSION_ID,getRuntimeTurn:n.getRuntimeTurn}))),E}function m(){E=void 0}async function h(e,n,r,a){let o;try{let{resolveProjectContext:s,isSkillLearningEnabled:c,RUNTIME_SESSION_ID:l,getRuntimeTurn:u}=await p();if(!c())return a();let d=s(process.cwd());o={sessionId:r.sessionId??l,turn:r.turn??u(),projectId:d.projectId,projectName:d.projectName,cwd:d.cwd,project:d},g(o,e,n).catch(e=>{t(`skill-learning: recordToolStart error`),i(e)})}catch(e){t(`skill-learning: hook setup error`),i(e)}try{let n=await a();return o&&_(o,e,n,`success`).catch(e=>{t(`skill-learning: recordToolComplete error`),i(e)}),n}catch(n){throw o&&v(o,e,n).catch(e=>{t(`skill-learning: recordToolError error`),i(e)}),n}}async function g(e,t,n){return l(e.sessionId,e.turn),o({...f(e),event:`tool_start`,toolName:t,toolInput:b(n)},{project:e.project})}async function _(e,t,n,r=`success`){return l(e.sessionId,e.turn),o({...f(e),event:`tool_complete`,toolName:t,toolOutput:b(n),outcome:r},{project:e.project})}async function v(e,t,n){return l(e.sessionId,e.turn),o({...f(e),event:`tool_complete`,toolName:t,toolOutput:b(n),outcome:`failure`},{project:e.project})}async function y(e,t){return l(e.sessionId,e.turn),o({...f(e),event:`user_message`,messageText:t},{project:e.project})}function b(e){if(e!=null){if(typeof e==`string`)return e;try{return JSON.stringify(e)}catch{return String(e)}}}var x,S,C,w,T,E;e((()=>{a(),n(),r(),x=500,S=250,C=50,w=25,T=new Map}))();export{u as hasToolHookObservationsForTurn,c as pruneEmittedTurns,_ as recordToolComplete,v as recordToolError,g as recordToolStart,y as recordUserCorrection,d as resetToolHookBookkeeping,m as resetToolHookDepsCache,h as runToolCallWithSkillLearningHooks};
1
+ import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{c as t,i as n}from"./debug-Bglx1aTu.js";import{o as r,s as i}from"./log-D2TIwHBV.js";import{r as a,t as o}from"./observationStore-D0rm3GhP.js";import{randomUUID as s}from"node:crypto";function c(){for(let[e,t]of T)if(t.size>x){let e=t.values(),n=t.size-S;for(let r=0;r<n;r++){let n=e.next();if(n.done)break;t.delete(n.value)}}if(T.size>C){let e=T.size-w,t=0;for(let n of T.keys()){if(t>=e)break;T.delete(n),t++}}}function l(e,t){let n=T.get(e)??new Set;n.add(t),T.delete(e),T.set(e,n),c()}function u(e,t){return T.get(e)?.has(t)??!1}function d(){T.clear()}function f(e){return{id:s(),sessionId:e.sessionId,projectId:e.projectId,projectName:e.projectName,cwd:e.cwd,timestamp:new Date().toISOString(),source:`tool-hook`,turn:e.turn}}function p(){return E||(E=Promise.all([import(`./projectContext-5fmRr6Sd.js`),import(`./featureCheck-JOur3pHb.js`),import(`./runtimeObserver-DEuR8z0f.js`)]).then(([e,t,n])=>({resolveProjectContext:e.resolveProjectContext,isSkillLearningEnabled:t.isSkillLearningEnabled,RUNTIME_SESSION_ID:n.RUNTIME_SESSION_ID,getRuntimeTurn:n.getRuntimeTurn}))),E}function m(){E=void 0}async function h(e,n,r,a){let o;try{let{resolveProjectContext:s,isSkillLearningEnabled:c,RUNTIME_SESSION_ID:l,getRuntimeTurn:u}=await p();if(!c())return a();let d=s(process.cwd());o={sessionId:r.sessionId??l,turn:r.turn??u(),projectId:d.projectId,projectName:d.projectName,cwd:d.cwd,project:d},g(o,e,n).catch(e=>{t(`skill-learning: recordToolStart error`),i(e)})}catch(e){t(`skill-learning: hook setup error`),i(e)}try{let n=await a();return o&&_(o,e,n,`success`).catch(e=>{t(`skill-learning: recordToolComplete error`),i(e)}),n}catch(n){throw o&&v(o,e,n).catch(e=>{t(`skill-learning: recordToolError error`),i(e)}),n}}async function g(e,t,n){return l(e.sessionId,e.turn),o({...f(e),event:`tool_start`,toolName:t,toolInput:b(n)},{project:e.project})}async function _(e,t,n,r=`success`){return l(e.sessionId,e.turn),o({...f(e),event:`tool_complete`,toolName:t,toolOutput:b(n),outcome:r},{project:e.project})}async function v(e,t,n){return l(e.sessionId,e.turn),o({...f(e),event:`tool_complete`,toolName:t,toolOutput:b(n),outcome:`failure`},{project:e.project})}async function y(e,t){return l(e.sessionId,e.turn),o({...f(e),event:`user_message`,messageText:t},{project:e.project})}function b(e){if(e!=null){if(typeof e==`string`)return e;try{return JSON.stringify(e)}catch{return String(e)}}}var x,S,C,w,T,E;e((()=>{a(),n(),r(),x=500,S=250,C=50,w=25,T=new Map}))();export{u as hasToolHookObservationsForTurn,c as pruneEmittedTurns,_ as recordToolComplete,v as recordToolError,g as recordToolStart,y as recordUserCorrection,d as resetToolHookBookkeeping,m as resetToolHookDepsCache,h as runToolCallWithSkillLearningHooks};
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{OC as t,_v as n,gv as r,kC as i}from"./loadAgentsDir-DlPbtIsS.js";import{n as a,t as o}from"./partition-CIl_ORUT.js";function s(e,t,r){let[o,s]=a(i([...e,...t],`name`),n),c=(e,t)=>e.name.localeCompare(t.name);return[...s.sort(c),...o.sort(c)]}var c=e((()=>{o(),t(),r()}));export{s as n,c as t};
1
+ import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{OC as t,_v as n,gv as r,kC as i}from"./loadAgentsDir-B0Anodo0.js";import{n as a,t as o}from"./partition-DznN4XZH.js";function s(e,t,r){let[o,s]=a(i([...e,...t],`name`),n),c=(e,t)=>e.name.localeCompare(t.name);return[...s.sort(c),...o.sort(c)]}var c=e((()=>{o(),t(),r()}));export{s as n,c as t};
@@ -1 +1 @@
1
- import{n as e,o as t}from"./rolldown-runtime-DaDcL9Zw.js";import{n,t as r}from"./defineProperty-C-QyHrDq.js";import{Iu as i,Lu as a,mb as o,md as s,pd as c}from"./loadAgentsDir-DlPbtIsS.js";import{Bt as l,Gt as u,I as d,Lt as f,P as p,T as m,Wt as h,_ as g,ai as _,hn as v,t as y}from"./src-DL3w8VPk.js";import{t as b}from"./jsx-runtime-Bb4Xn-E0.js";import{D as x,O as S,n as C,t as w}from"./TextInput-CD9iau2k.js";import{isDeepStrictEqual as T}from"util";import{pathToFileURL as E}from"url";function D({imageId:e,backgroundColor:t,isSelected:n=!1}){let r=i(e),a=`[Image #${e}]`;if(r&&l()){let e=E(r).href;return(0,O.jsx)(f,{url:e,fallback:(0,O.jsx)(p,{backgroundColor:t,inverse:n,children:a}),children:(0,O.jsx)(p,{backgroundColor:t,inverse:n,bold:n,children:a})})}return(0,O.jsx)(p,{backgroundColor:t,inverse:n,children:a})}var O,k=e((()=>{y(),a(),O=b()}));function A({isFocused:e,isSelected:t,children:n,description:r,shouldShowDownArrow:i,shouldShowUpArrow:a,declareCursor:o}){return(0,j.jsx)(g,{isFocused:e,isSelected:t,description:r,showScrollDown:i,showScrollUp:a,styled:!1,declareCursor:o,children:n})}var j,M=e((()=>{y(),j=b()}));function N({option:e,isFocused:t,isSelected:n,shouldShowDownArrow:r,shouldShowUpArrow:i,maxIndexWidth:a,index:o,inputValue:s,onInputChange:l,onSubmit:f,onExit:g,layout:_,children:y,showLabel:b=!1,onOpenEditor:S,resetCursorOnUpdate:C=!1,onImagePaste:T,pastedContents:E,onRemoveImage:O,imagesSelected:k,selectedImageIndex:j=0,onImagesSelectedChange:M,onSelectedImageIndexChange:N}){let I=E?Object.values(E).filter(e=>e.type===`image`):[],L=b||e.showLabelWithValue===!0,[R,z]=(0,P.useState)(s.length),B=(0,P.useRef)(!1);(0,P.useEffect)(()=>{C&&t&&(B.current?B.current=!1:z(s.length))},[C,t,s]),h(`chat:externalEditor`,()=>{S?.(s,l)},{context:`Chat`,isActive:t&&!!S}),h(`chat:imagePaste`,()=>{T&&x().then(e=>{e&&T(e.base64,e.mediaType,void 0,e.dimensions)})},{context:`Chat`,isActive:t&&!!T}),h(`attachments:remove`,()=>{I.length>0&&O&&O(I.at(-1).id)},{context:`Attachments`,isActive:t&&!k&&s===``&&I.length>0&&!!O}),u({"attachments:next":()=>{I.length>1&&N?.((j+1)%I.length)},"attachments:previous":()=>{I.length>1&&N?.((j-1+I.length)%I.length)},"attachments:remove":()=>{let e=I[j];e&&O&&(O(e.id),I.length<=1?M?.(!1):N?.(Math.min(j,I.length-2)))},"attachments:exit":()=>{M?.(!1)}},{context:`Attachments`,isActive:t&&!!k}),v((e,t)=>{t.upArrow&&M?.(!1)},{isActive:t&&!!k}),(0,P.useEffect)(()=>{!t&&k&&M?.(!1)},[t,k,M]);let V=_===`expanded`?a+3:a+4;return(0,F.jsxs)(d,{flexDirection:`column`,flexShrink:0,children:[(0,F.jsx)(A,{isFocused:t,isSelected:n,shouldShowDownArrow:r,shouldShowUpArrow:i,declareCursor:!1,children:(0,F.jsxs)(d,{flexDirection:`row`,flexShrink:_===`compact`?0:void 0,children:[(0,F.jsx)(p,{dimColor:!0,children:`${o}.`.padEnd(a+2)}),y,L?(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(p,{color:t?`suggestion`:void 0,children:e.label}),t?(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(p,{color:`suggestion`,children:e.labelValueSeparator??`, `}),(0,F.jsx)(w,{value:s,onChange:t=>{B.current=!0,l(t),e.onChange(t)},onSubmit:f,onExit:g,placeholder:e.placeholder,focus:!k,showCursor:!0,multiline:!0,cursorOffset:R,onChangeCursorOffset:z,columns:80,onImagePaste:T,onPaste:t=>{B.current=!0;let n=s.slice(0,R),r=s.slice(R),i=n+t+r;l(i),e.onChange(i),z(n.length+t.length)}})]}):s&&(0,F.jsxs)(p,{children:[e.labelValueSeparator??`, `,s]})]}):t?(0,F.jsx)(w,{value:s,onChange:t=>{B.current=!0,l(t),e.onChange(t)},onSubmit:f,onExit:g,placeholder:e.placeholder||(typeof e.label==`string`?e.label:void 0),focus:!k,showCursor:!0,multiline:!0,cursorOffset:R,onChangeCursorOffset:z,columns:80,onImagePaste:T,onPaste:t=>{B.current=!0;let n=s.slice(0,R),r=s.slice(R),i=n+t+r;l(i),e.onChange(i),z(n.length+t.length)}}):(0,F.jsx)(p,{color:s?void 0:`inactive`,children:s||e.placeholder||e.label})]})}),e.description&&(0,F.jsx)(d,{paddingLeft:V,children:(0,F.jsx)(p,{dimColor:e.dimDescription!==!1,color:n?`success`:t?`suggestion`:void 0,children:e.description})}),I.length>0&&(0,F.jsxs)(d,{flexDirection:`row`,gap:1,paddingLeft:V,children:[I.map((e,t)=>(0,F.jsx)(D,{imageId:e.id,isSelected:!!k&&t===j},e.id)),(0,F.jsx)(d,{flexGrow:1,justifyContent:`flex-start`,flexDirection:`row`,children:(0,F.jsx)(p,{dimColor:!0,children:k?(0,F.jsxs)(m,{children:[I.length>1&&(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(c,{action:`attachments:next`,context:`Attachments`,fallback:`→`,description:`next`}),(0,F.jsx)(c,{action:`attachments:previous`,context:`Attachments`,fallback:`←`,description:`prev`})]}),(0,F.jsx)(c,{action:`attachments:remove`,context:`Attachments`,fallback:`backspace`,description:`remove`}),(0,F.jsx)(c,{action:`attachments:exit`,context:`Attachments`,fallback:`esc`,description:`cancel`})]}):t?`(↓ to select)`:null})})]}),_===`expanded`&&(0,F.jsx)(p,{children:` `})]})}var P,F,I=e((()=>{P=t(_(),1),y(),o(),S(),k(),s(),C(),M(),F=b()})),L,R=e((()=>{n(),L=class extends Map{constructor(e){let t=[],n,i,a,o=0;for(let r of e){let e={label:r.label,value:r.value,description:r.description,previous:a,next:void 0,index:o};a&&(a.next=e),n||(n=e),i=e,t.push([r.value,e]),o++,a=e}super(t),r(this,`first`,void 0),r(this,`last`,void 0),this.first=n,this.last=i}}}));function z({visibleOptionCount:e=5,options:t,initialFocusValue:n,onFocus:r,focusValue:i}){let[a,o]=(0,B.useReducer)(V,{visibleOptionCount:e,options:t,initialFocusValue:i||n},H),s=(0,B.useRef)(r);s.current=r;let[c,l]=(0,B.useState)(t);t!==c&&!T(t,c)&&(o({type:`reset`,state:H({visibleOptionCount:e,options:t,initialFocusValue:i??a.focusedValue??n,currentViewport:{visibleFromIndex:a.visibleFromIndex,visibleToIndex:a.visibleToIndex}})}),l(t));let u=(0,B.useCallback)(()=>{o({type:`focus-next-option`})},[]),d=(0,B.useCallback)(()=>{o({type:`focus-previous-option`})},[]),f=(0,B.useCallback)(()=>{o({type:`focus-next-page`})},[]),p=(0,B.useCallback)(()=>{o({type:`focus-previous-page`})},[]),m=(0,B.useCallback)(e=>{e!==void 0&&o({type:`set-focus`,value:e})},[]),h=(0,B.useMemo)(()=>t.map((e,t)=>({...e,index:t})).slice(a.visibleFromIndex,a.visibleToIndex),[t,a.visibleFromIndex,a.visibleToIndex]),g=(0,B.useMemo)(()=>{if(a.focusedValue!==void 0)return t.some(e=>e.value===a.focusedValue)?a.focusedValue:t[0]?.value},[a.focusedValue,t]),_=(0,B.useMemo)(()=>t.find(e=>e.value===g)?.type===`input`,[g,t]);return(0,B.useEffect)(()=>{g!==void 0&&s.current?.(g)},[g]),(0,B.useEffect)(()=>{i!==void 0&&o({type:`set-focus`,value:i})},[i]),{focusedValue:g,focusedIndex:(0,B.useMemo)(()=>{if(g===void 0)return 0;let e=t.findIndex(e=>e.value===g);return e>=0?e+1:0},[g,t]),visibleFromIndex:a.visibleFromIndex,visibleToIndex:a.visibleToIndex,visibleOptions:h,isInInput:_??!1,focusNextOption:u,focusPreviousOption:d,focusNextPage:f,focusPreviousPage:p,focusOption:m,options:t}}var B,V,H,U=e((()=>{B=t(_(),1),R(),V=(e,t)=>{switch(t.type){case`focus-next-option`:{if(e.focusedValue===void 0)return e;let t=e.optionMap.get(e.focusedValue);if(!t)return e;let n=t.next||e.optionMap.first;if(!n)return e;if(!t.next&&n===e.optionMap.first)return{...e,focusedValue:n.value,visibleFromIndex:0,visibleToIndex:e.visibleOptionCount};if(!(n.index>=e.visibleToIndex))return{...e,focusedValue:n.value};let r=Math.min(e.optionMap.size,e.visibleToIndex+1),i=r-e.visibleOptionCount;return{...e,focusedValue:n.value,visibleFromIndex:i,visibleToIndex:r}}case`focus-previous-option`:{if(e.focusedValue===void 0)return e;let t=e.optionMap.get(e.focusedValue);if(!t)return e;let n=t.previous||e.optionMap.last;if(!n)return e;if(!t.previous&&n===e.optionMap.last){let t=e.optionMap.size,r=Math.max(0,t-e.visibleOptionCount);return{...e,focusedValue:n.value,visibleFromIndex:r,visibleToIndex:t}}if(!(n.index<=e.visibleFromIndex))return{...e,focusedValue:n.value};let r=Math.max(0,e.visibleFromIndex-1),i=r+e.visibleOptionCount;return{...e,focusedValue:n.value,visibleFromIndex:r,visibleToIndex:i}}case`focus-next-page`:{if(e.focusedValue===void 0)return e;let t=e.optionMap.get(e.focusedValue);if(!t)return e;let n=Math.min(e.optionMap.size-1,t.index+e.visibleOptionCount),r=e.optionMap.first;for(;r&&r.index<n&&r.next;)r=r.next;if(!r)return e;let i=Math.min(e.optionMap.size,r.index+1),a=Math.max(0,i-e.visibleOptionCount);return{...e,focusedValue:r.value,visibleFromIndex:a,visibleToIndex:i}}case`focus-previous-page`:{if(e.focusedValue===void 0)return e;let t=e.optionMap.get(e.focusedValue);if(!t)return e;let n=Math.max(0,t.index-e.visibleOptionCount),r=e.optionMap.first;for(;r&&r.index<n&&r.next;)r=r.next;if(!r)return e;let i=Math.max(0,r.index),a=Math.min(e.optionMap.size,i+e.visibleOptionCount);return{...e,focusedValue:r.value,visibleFromIndex:i,visibleToIndex:a}}case`reset`:return t.state;case`set-focus`:{if(e.focusedValue===t.value)return e;let n=e.optionMap.get(t.value);if(!n)return e;if(n.index>=e.visibleFromIndex&&n.index<e.visibleToIndex)return{...e,focusedValue:t.value};let r,i;return n.index<e.visibleFromIndex?(r=n.index,i=Math.min(e.optionMap.size,r+e.visibleOptionCount)):(i=Math.min(e.optionMap.size,n.index+1),r=Math.max(0,i-e.visibleOptionCount)),{...e,focusedValue:t.value,visibleFromIndex:r,visibleToIndex:i}}}},H=({visibleOptionCount:e,options:t,initialFocusValue:n,currentViewport:r})=>{let i=typeof e==`number`?Math.min(e,t.length):t.length,a=new L(t),o=n!==void 0&&a.get(n),s=o?n:a.first?.value,c=0,l=i;if(o){let e=o.index;r?e>=r.visibleFromIndex&&e<r.visibleToIndex?(c=r.visibleFromIndex,l=Math.min(a.size,r.visibleToIndex)):e<r.visibleFromIndex?(c=e,l=Math.min(a.size,c+i)):(l=Math.min(a.size,e+1),c=Math.max(0,l-i)):e>=i&&(l=Math.min(a.size,e+1),c=Math.max(0,l-i)),c=Math.max(0,Math.min(c,a.size-1)),l=Math.min(a.size,Math.max(i,l))}return{optionMap:a,visibleOptionCount:i,focusedValue:s,visibleFromIndex:c,visibleToIndex:l}}}));export{A as a,I as i,z as n,M as o,N as r,U as t};
1
+ import{n as e,o as t}from"./rolldown-runtime-DaDcL9Zw.js";import{n,t as r}from"./defineProperty-C-QyHrDq.js";import{Iu as i,Lu as a,mb as o,md as s,pd as c}from"./loadAgentsDir-B0Anodo0.js";import{Bt as l,Gt as u,I as d,Lt as f,P as p,T as m,Wt as h,_ as g,ai as _,hn as v,t as y}from"./src-DL3w8VPk.js";import{t as b}from"./jsx-runtime-Bb4Xn-E0.js";import{D as x,O as S,n as C,t as w}from"./TextInput-B8ruWRf2.js";import{isDeepStrictEqual as T}from"util";import{pathToFileURL as E}from"url";function D({imageId:e,backgroundColor:t,isSelected:n=!1}){let r=i(e),a=`[Image #${e}]`;if(r&&l()){let e=E(r).href;return(0,O.jsx)(f,{url:e,fallback:(0,O.jsx)(p,{backgroundColor:t,inverse:n,children:a}),children:(0,O.jsx)(p,{backgroundColor:t,inverse:n,bold:n,children:a})})}return(0,O.jsx)(p,{backgroundColor:t,inverse:n,children:a})}var O,k=e((()=>{y(),a(),O=b()}));function A({isFocused:e,isSelected:t,children:n,description:r,shouldShowDownArrow:i,shouldShowUpArrow:a,declareCursor:o}){return(0,j.jsx)(g,{isFocused:e,isSelected:t,description:r,showScrollDown:i,showScrollUp:a,styled:!1,declareCursor:o,children:n})}var j,M=e((()=>{y(),j=b()}));function N({option:e,isFocused:t,isSelected:n,shouldShowDownArrow:r,shouldShowUpArrow:i,maxIndexWidth:a,index:o,inputValue:s,onInputChange:l,onSubmit:f,onExit:g,layout:_,children:y,showLabel:b=!1,onOpenEditor:S,resetCursorOnUpdate:C=!1,onImagePaste:T,pastedContents:E,onRemoveImage:O,imagesSelected:k,selectedImageIndex:j=0,onImagesSelectedChange:M,onSelectedImageIndexChange:N}){let I=E?Object.values(E).filter(e=>e.type===`image`):[],L=b||e.showLabelWithValue===!0,[R,z]=(0,P.useState)(s.length),B=(0,P.useRef)(!1);(0,P.useEffect)(()=>{C&&t&&(B.current?B.current=!1:z(s.length))},[C,t,s]),h(`chat:externalEditor`,()=>{S?.(s,l)},{context:`Chat`,isActive:t&&!!S}),h(`chat:imagePaste`,()=>{T&&x().then(e=>{e&&T(e.base64,e.mediaType,void 0,e.dimensions)})},{context:`Chat`,isActive:t&&!!T}),h(`attachments:remove`,()=>{I.length>0&&O&&O(I.at(-1).id)},{context:`Attachments`,isActive:t&&!k&&s===``&&I.length>0&&!!O}),u({"attachments:next":()=>{I.length>1&&N?.((j+1)%I.length)},"attachments:previous":()=>{I.length>1&&N?.((j-1+I.length)%I.length)},"attachments:remove":()=>{let e=I[j];e&&O&&(O(e.id),I.length<=1?M?.(!1):N?.(Math.min(j,I.length-2)))},"attachments:exit":()=>{M?.(!1)}},{context:`Attachments`,isActive:t&&!!k}),v((e,t)=>{t.upArrow&&M?.(!1)},{isActive:t&&!!k}),(0,P.useEffect)(()=>{!t&&k&&M?.(!1)},[t,k,M]);let V=_===`expanded`?a+3:a+4;return(0,F.jsxs)(d,{flexDirection:`column`,flexShrink:0,children:[(0,F.jsx)(A,{isFocused:t,isSelected:n,shouldShowDownArrow:r,shouldShowUpArrow:i,declareCursor:!1,children:(0,F.jsxs)(d,{flexDirection:`row`,flexShrink:_===`compact`?0:void 0,children:[(0,F.jsx)(p,{dimColor:!0,children:`${o}.`.padEnd(a+2)}),y,L?(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(p,{color:t?`suggestion`:void 0,children:e.label}),t?(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(p,{color:`suggestion`,children:e.labelValueSeparator??`, `}),(0,F.jsx)(w,{value:s,onChange:t=>{B.current=!0,l(t),e.onChange(t)},onSubmit:f,onExit:g,placeholder:e.placeholder,focus:!k,showCursor:!0,multiline:!0,cursorOffset:R,onChangeCursorOffset:z,columns:80,onImagePaste:T,onPaste:t=>{B.current=!0;let n=s.slice(0,R),r=s.slice(R),i=n+t+r;l(i),e.onChange(i),z(n.length+t.length)}})]}):s&&(0,F.jsxs)(p,{children:[e.labelValueSeparator??`, `,s]})]}):t?(0,F.jsx)(w,{value:s,onChange:t=>{B.current=!0,l(t),e.onChange(t)},onSubmit:f,onExit:g,placeholder:e.placeholder||(typeof e.label==`string`?e.label:void 0),focus:!k,showCursor:!0,multiline:!0,cursorOffset:R,onChangeCursorOffset:z,columns:80,onImagePaste:T,onPaste:t=>{B.current=!0;let n=s.slice(0,R),r=s.slice(R),i=n+t+r;l(i),e.onChange(i),z(n.length+t.length)}}):(0,F.jsx)(p,{color:s?void 0:`inactive`,children:s||e.placeholder||e.label})]})}),e.description&&(0,F.jsx)(d,{paddingLeft:V,children:(0,F.jsx)(p,{dimColor:e.dimDescription!==!1,color:n?`success`:t?`suggestion`:void 0,children:e.description})}),I.length>0&&(0,F.jsxs)(d,{flexDirection:`row`,gap:1,paddingLeft:V,children:[I.map((e,t)=>(0,F.jsx)(D,{imageId:e.id,isSelected:!!k&&t===j},e.id)),(0,F.jsx)(d,{flexGrow:1,justifyContent:`flex-start`,flexDirection:`row`,children:(0,F.jsx)(p,{dimColor:!0,children:k?(0,F.jsxs)(m,{children:[I.length>1&&(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(c,{action:`attachments:next`,context:`Attachments`,fallback:`→`,description:`next`}),(0,F.jsx)(c,{action:`attachments:previous`,context:`Attachments`,fallback:`←`,description:`prev`})]}),(0,F.jsx)(c,{action:`attachments:remove`,context:`Attachments`,fallback:`backspace`,description:`remove`}),(0,F.jsx)(c,{action:`attachments:exit`,context:`Attachments`,fallback:`esc`,description:`cancel`})]}):t?`(↓ to select)`:null})})]}),_===`expanded`&&(0,F.jsx)(p,{children:` `})]})}var P,F,I=e((()=>{P=t(_(),1),y(),o(),S(),k(),s(),C(),M(),F=b()})),L,R=e((()=>{n(),L=class extends Map{constructor(e){let t=[],n,i,a,o=0;for(let r of e){let e={label:r.label,value:r.value,description:r.description,previous:a,next:void 0,index:o};a&&(a.next=e),n||(n=e),i=e,t.push([r.value,e]),o++,a=e}super(t),r(this,`first`,void 0),r(this,`last`,void 0),this.first=n,this.last=i}}}));function z({visibleOptionCount:e=5,options:t,initialFocusValue:n,onFocus:r,focusValue:i}){let[a,o]=(0,B.useReducer)(V,{visibleOptionCount:e,options:t,initialFocusValue:i||n},H),s=(0,B.useRef)(r);s.current=r;let[c,l]=(0,B.useState)(t);t!==c&&!T(t,c)&&(o({type:`reset`,state:H({visibleOptionCount:e,options:t,initialFocusValue:i??a.focusedValue??n,currentViewport:{visibleFromIndex:a.visibleFromIndex,visibleToIndex:a.visibleToIndex}})}),l(t));let u=(0,B.useCallback)(()=>{o({type:`focus-next-option`})},[]),d=(0,B.useCallback)(()=>{o({type:`focus-previous-option`})},[]),f=(0,B.useCallback)(()=>{o({type:`focus-next-page`})},[]),p=(0,B.useCallback)(()=>{o({type:`focus-previous-page`})},[]),m=(0,B.useCallback)(e=>{e!==void 0&&o({type:`set-focus`,value:e})},[]),h=(0,B.useMemo)(()=>t.map((e,t)=>({...e,index:t})).slice(a.visibleFromIndex,a.visibleToIndex),[t,a.visibleFromIndex,a.visibleToIndex]),g=(0,B.useMemo)(()=>{if(a.focusedValue!==void 0)return t.some(e=>e.value===a.focusedValue)?a.focusedValue:t[0]?.value},[a.focusedValue,t]),_=(0,B.useMemo)(()=>t.find(e=>e.value===g)?.type===`input`,[g,t]);return(0,B.useEffect)(()=>{g!==void 0&&s.current?.(g)},[g]),(0,B.useEffect)(()=>{i!==void 0&&o({type:`set-focus`,value:i})},[i]),{focusedValue:g,focusedIndex:(0,B.useMemo)(()=>{if(g===void 0)return 0;let e=t.findIndex(e=>e.value===g);return e>=0?e+1:0},[g,t]),visibleFromIndex:a.visibleFromIndex,visibleToIndex:a.visibleToIndex,visibleOptions:h,isInInput:_??!1,focusNextOption:u,focusPreviousOption:d,focusNextPage:f,focusPreviousPage:p,focusOption:m,options:t}}var B,V,H,U=e((()=>{B=t(_(),1),R(),V=(e,t)=>{switch(t.type){case`focus-next-option`:{if(e.focusedValue===void 0)return e;let t=e.optionMap.get(e.focusedValue);if(!t)return e;let n=t.next||e.optionMap.first;if(!n)return e;if(!t.next&&n===e.optionMap.first)return{...e,focusedValue:n.value,visibleFromIndex:0,visibleToIndex:e.visibleOptionCount};if(!(n.index>=e.visibleToIndex))return{...e,focusedValue:n.value};let r=Math.min(e.optionMap.size,e.visibleToIndex+1),i=r-e.visibleOptionCount;return{...e,focusedValue:n.value,visibleFromIndex:i,visibleToIndex:r}}case`focus-previous-option`:{if(e.focusedValue===void 0)return e;let t=e.optionMap.get(e.focusedValue);if(!t)return e;let n=t.previous||e.optionMap.last;if(!n)return e;if(!t.previous&&n===e.optionMap.last){let t=e.optionMap.size,r=Math.max(0,t-e.visibleOptionCount);return{...e,focusedValue:n.value,visibleFromIndex:r,visibleToIndex:t}}if(!(n.index<=e.visibleFromIndex))return{...e,focusedValue:n.value};let r=Math.max(0,e.visibleFromIndex-1),i=r+e.visibleOptionCount;return{...e,focusedValue:n.value,visibleFromIndex:r,visibleToIndex:i}}case`focus-next-page`:{if(e.focusedValue===void 0)return e;let t=e.optionMap.get(e.focusedValue);if(!t)return e;let n=Math.min(e.optionMap.size-1,t.index+e.visibleOptionCount),r=e.optionMap.first;for(;r&&r.index<n&&r.next;)r=r.next;if(!r)return e;let i=Math.min(e.optionMap.size,r.index+1),a=Math.max(0,i-e.visibleOptionCount);return{...e,focusedValue:r.value,visibleFromIndex:a,visibleToIndex:i}}case`focus-previous-page`:{if(e.focusedValue===void 0)return e;let t=e.optionMap.get(e.focusedValue);if(!t)return e;let n=Math.max(0,t.index-e.visibleOptionCount),r=e.optionMap.first;for(;r&&r.index<n&&r.next;)r=r.next;if(!r)return e;let i=Math.max(0,r.index),a=Math.min(e.optionMap.size,i+e.visibleOptionCount);return{...e,focusedValue:r.value,visibleFromIndex:i,visibleToIndex:a}}case`reset`:return t.state;case`set-focus`:{if(e.focusedValue===t.value)return e;let n=e.optionMap.get(t.value);if(!n)return e;if(n.index>=e.visibleFromIndex&&n.index<e.visibleToIndex)return{...e,focusedValue:t.value};let r,i;return n.index<e.visibleFromIndex?(r=n.index,i=Math.min(e.optionMap.size,r+e.visibleOptionCount)):(i=Math.min(e.optionMap.size,n.index+1),r=Math.max(0,i-e.visibleOptionCount)),{...e,focusedValue:t.value,visibleFromIndex:r,visibleToIndex:i}}}},H=({visibleOptionCount:e,options:t,initialFocusValue:n,currentViewport:r})=>{let i=typeof e==`number`?Math.min(e,t.length):t.length,a=new L(t),o=n!==void 0&&a.get(n),s=o?n:a.first?.value,c=0,l=i;if(o){let e=o.index;r?e>=r.visibleFromIndex&&e<r.visibleToIndex?(c=r.visibleFromIndex,l=Math.min(a.size,r.visibleToIndex)):e<r.visibleFromIndex?(c=e,l=Math.min(a.size,c+i)):(l=Math.min(a.size,e+1),c=Math.max(0,l-i)):e>=i&&(l=Math.min(a.size,e+1),c=Math.max(0,l-i)),c=Math.max(0,Math.min(c,a.size-1)),l=Math.min(a.size,Math.max(i,l))}return{optionMap:a,visibleOptionCount:i,focusedValue:s,visibleFromIndex:c,visibleToIndex:l}}}));export{A as a,I as i,z as n,M as o,N as r,U as t};
@@ -1 +1 @@
1
- import{n as e,o as t}from"./rolldown-runtime-DaDcL9Zw.js";import{mb as n}from"./loadAgentsDir-DlPbtIsS.js";import{Gt as r,ai as i,et as a,t as o,vt as s}from"./src-DL3w8VPk.js";import{t as c}from"./useDoublePress-C9xxQzh1.js";function l(e,t,n,r=!0){let{exit:i}=s(),[o,c]=(0,u.useState)({pending:!1,keyName:null}),l=(0,u.useMemo)(()=>n??i,[n,i]),d=a(e=>c({pending:e,keyName:`Ctrl-C`}),l),f=a(e=>c({pending:e,keyName:`Ctrl-D`}),l),p=(0,u.useCallback)(()=>{t?.()||d()},[d,t]),m=(0,u.useCallback)(()=>{f()},[f]);return e((0,u.useMemo)(()=>({"app:interrupt":p,"app:exit":m}),[p,m]),{context:`Global`,isActive:r}),o}var u,d=e((()=>{u=t(i(),1),o(),c()}));function f(e,t,n){return l(r,t,e,n)}var p=e((()=>{n(),d()}));export{f as n,p as t};
1
+ import{n as e,o as t}from"./rolldown-runtime-DaDcL9Zw.js";import{mb as n}from"./loadAgentsDir-B0Anodo0.js";import{Gt as r,ai as i,et as a,t as o,vt as s}from"./src-DL3w8VPk.js";import{t as c}from"./useDoublePress-C9xxQzh1.js";function l(e,t,n,r=!0){let{exit:i}=s(),[o,c]=(0,u.useState)({pending:!1,keyName:null}),l=(0,u.useMemo)(()=>n??i,[n,i]),d=a(e=>c({pending:e,keyName:`Ctrl-C`}),l),f=a(e=>c({pending:e,keyName:`Ctrl-D`}),l),p=(0,u.useCallback)(()=>{t?.()||d()},[d,t]),m=(0,u.useCallback)(()=>{f()},[f]);return e((0,u.useMemo)(()=>({"app:interrupt":p,"app:exit":m}),[p,m]),{context:`Global`,isActive:r}),o}var u,d=e((()=>{u=t(i(),1),o(),c()}));function f(e,t,n){return l(r,t,e,n)}var p=e((()=>{n(),d()}));export{f as n,p as t};
@@ -0,0 +1 @@
1
+ import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{Ip as t,Lp as n}from"./loadAgentsDir-B0Anodo0.js";import{_ as r,d as i,r as a}from"./model-BvQFFOf8.js";function o(){let e=n(e=>e.mainLoopModel);return r(n(e=>e.mainLoopModelForSession)??e??a())}var s=e((()=>{t(),i()}));export{o as n,s as t};
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-DaDcL9Zw.js";import{Fa as t,Fv as n,Go as r,Ia as i,Ip as a,Lp as o,Pv as s,Wo as c,Xo as l,Yo as u,ah as d,ap as f,ep as p,ih as m,ip as h,np as g,zp as _}from"./loadAgentsDir-DlPbtIsS.js";import{ai as v}from"./src-DL3w8VPk.js";import{I as y,V as b,c as x,i as S}from"./debug-Bglx1aTu.js";import{Hn as C,Vn as w,Xr as T,Yr as E}from"./settings-B2jvL8Dp.js";import{o as D,s as O}from"./log-D2TIwHBV.js";import{n as k,r as A}from"./analytics-DJobLaWP.js";import{n as j,t as M}from"./notifications-4wP1Tx9Y.js";import{n as N,r as P}from"./pluginFlagging-BG2MHCQJ.js";import{t as F}from"./pluginBlocklist-q01ackCf.js";var I=e(v(),1);M(),k(),p(),a(),C(),S(),E(),y(),D(),u(),r(),m(),h(),s(),P(),t();function L({enabled:e=!0}={}){let t=_(),r=o(e=>e.plugins.needsRefresh),{addNotification:a}=j(),s=(0,I.useCallback)(async()=>{try{let{enabled:e,disabled:r,errors:o}=await i();await F();let s=N();Object.keys(s).length>0&&a({key:`plugin-delisted-flagged`,text:`Plugins flagged. Check /plugins`,color:`warning`,priority:`high`});let u=[],p=[];try{u=await c()}catch(e){let t=e instanceof Error?e.message:String(e);o.push({type:`generic-error`,source:`plugin-commands`,error:`Failed to load plugin commands: ${t}`})}try{p=await l()}catch(e){let t=e instanceof Error?e.message:String(e);o.push({type:`generic-error`,source:`plugin-agents`,error:`Failed to load plugin agents: ${t}`})}try{await d()}catch(e){let t=e instanceof Error?e.message:String(e);o.push({type:`generic-error`,source:`plugin-hooks`,error:`Failed to load plugin hooks: ${t}`})}let m=(await Promise.all(e.map(async e=>{if(e.mcpServers)return Object.keys(e.mcpServers).length;let t=await n(e,o);return t&&(e.mcpServers=t),t?Object.keys(t).length:0}))).reduce((e,t)=>e+t,0),h=(await Promise.all(e.map(async e=>{if(e.lspServers)return Object.keys(e.lspServers).length;let t=await f(e,o);return t&&(e.lspServers=t),t?Object.keys(t).length:0}))).reduce((e,t)=>e+t,0);g(),t(t=>{let n=t.plugins.errors.filter(e=>e.source===`lsp-manager`||e.source.startsWith(`plugin:`)),i=new Set(o.map(e=>e.type===`generic-error`?`generic-error:${e.source}:${e.error}`:`${e.type}:${e.source}`)),a=[...n.filter(e=>{let t=e.type===`generic-error`?`generic-error:${e.source}:${e.error}`:`${e.type}:${e.source}`;return!i.has(t)}),...o];return{...t,plugins:{...t.plugins,enabled:e,disabled:r,commands:u,errors:a}}}),x(`Loaded plugins - Enabled: ${e.length}, Disabled: ${r.length}, Commands: ${u.length}, Agents: ${p.length}, Errors: ${o.length}`);let _=e.reduce((e,t)=>t.hooksConfig?e+Object.values(t.hooksConfig).reduce((e,t)=>e+(t?.reduce((e,t)=>e+t.hooks.length,0)??0),0):e,0);return{enabled_count:e.length,disabled_count:r.length,inline_count:w(e,e=>e.source.endsWith(`@inline`)),marketplace_count:w(e,e=>!e.source.endsWith(`@inline`)),error_count:o.length,skill_count:u.length,agent_count:p.length,hook_count:_,mcp_count:m,lsp_count:h}}catch(e){let n=b(e);return O(n),x(`Error loading plugins: ${e}`),t(e=>{let t=e.plugins.errors.filter(e=>e.source===`lsp-manager`||e.source.startsWith(`plugin:`)),r={type:`generic-error`,source:`plugin-system`,error:n.message};return{...e,plugins:{...e.plugins,enabled:[],disabled:[],commands:[],errors:[...t,r]}}}),{enabled_count:0,disabled_count:0,inline_count:0,marketplace_count:0,error_count:1,skill_count:0,agent_count:0,hook_count:0,mcp_count:0,lsp_count:0,load_failed:!0,ant_enabled_names:void 0}}},[t,a]);(0,I.useEffect)(()=>{e&&s().then(e=>{let{ant_enabled_names:t,...n}=e,r={...n,has_custom_plugin_cache_dir:!!process.env.CLAUDE_CODE_PLUGIN_CACHE_DIR};A(`tengu_plugins_loaded`,{...r,...t!==void 0&&{enabled_names:t}}),T(`info`,`tengu_plugins_loaded`,r)})},[s,e]),(0,I.useEffect)(()=>{!e||!r||a({key:`plugin-reload-pending`,text:`Plugins changed. Run /reload-plugins to activate.`,color:`suggestion`,priority:`low`})},[e,r,a])}export{L as t};
1
+ import{o as e}from"./rolldown-runtime-DaDcL9Zw.js";import{Fa as t,Fv as n,Go as r,Ia as i,Ip as a,Lp as o,Pv as s,Wo as c,Xo as l,Yo as u,ah as d,ap as f,ep as p,ih as m,ip as h,np as g,zp as _}from"./loadAgentsDir-B0Anodo0.js";import{ai as v}from"./src-DL3w8VPk.js";import{I as y,V as b,c as x,i as S}from"./debug-Bglx1aTu.js";import{Hn as C,Vn as w,Xr as T,Yr as E}from"./settings-B2jvL8Dp.js";import{o as D,s as O}from"./log-D2TIwHBV.js";import{n as k,r as A}from"./analytics-DJobLaWP.js";import{n as j,t as M}from"./notifications-Bc6k-Ozy.js";import{n as N,r as P}from"./pluginFlagging-js_-WmYj.js";import{t as F}from"./pluginBlocklist-9OrNEh--.js";var I=e(v(),1);M(),k(),p(),a(),C(),S(),E(),y(),D(),u(),r(),m(),h(),s(),P(),t();function L({enabled:e=!0}={}){let t=_(),r=o(e=>e.plugins.needsRefresh),{addNotification:a}=j(),s=(0,I.useCallback)(async()=>{try{let{enabled:e,disabled:r,errors:o}=await i();await F();let s=N();Object.keys(s).length>0&&a({key:`plugin-delisted-flagged`,text:`Plugins flagged. Check /plugins`,color:`warning`,priority:`high`});let u=[],p=[];try{u=await c()}catch(e){let t=e instanceof Error?e.message:String(e);o.push({type:`generic-error`,source:`plugin-commands`,error:`Failed to load plugin commands: ${t}`})}try{p=await l()}catch(e){let t=e instanceof Error?e.message:String(e);o.push({type:`generic-error`,source:`plugin-agents`,error:`Failed to load plugin agents: ${t}`})}try{await d()}catch(e){let t=e instanceof Error?e.message:String(e);o.push({type:`generic-error`,source:`plugin-hooks`,error:`Failed to load plugin hooks: ${t}`})}let m=(await Promise.all(e.map(async e=>{if(e.mcpServers)return Object.keys(e.mcpServers).length;let t=await n(e,o);return t&&(e.mcpServers=t),t?Object.keys(t).length:0}))).reduce((e,t)=>e+t,0),h=(await Promise.all(e.map(async e=>{if(e.lspServers)return Object.keys(e.lspServers).length;let t=await f(e,o);return t&&(e.lspServers=t),t?Object.keys(t).length:0}))).reduce((e,t)=>e+t,0);g(),t(t=>{let n=t.plugins.errors.filter(e=>e.source===`lsp-manager`||e.source.startsWith(`plugin:`)),i=new Set(o.map(e=>e.type===`generic-error`?`generic-error:${e.source}:${e.error}`:`${e.type}:${e.source}`)),a=[...n.filter(e=>{let t=e.type===`generic-error`?`generic-error:${e.source}:${e.error}`:`${e.type}:${e.source}`;return!i.has(t)}),...o];return{...t,plugins:{...t.plugins,enabled:e,disabled:r,commands:u,errors:a}}}),x(`Loaded plugins - Enabled: ${e.length}, Disabled: ${r.length}, Commands: ${u.length}, Agents: ${p.length}, Errors: ${o.length}`);let _=e.reduce((e,t)=>t.hooksConfig?e+Object.values(t.hooksConfig).reduce((e,t)=>e+(t?.reduce((e,t)=>e+t.hooks.length,0)??0),0):e,0);return{enabled_count:e.length,disabled_count:r.length,inline_count:w(e,e=>e.source.endsWith(`@inline`)),marketplace_count:w(e,e=>!e.source.endsWith(`@inline`)),error_count:o.length,skill_count:u.length,agent_count:p.length,hook_count:_,mcp_count:m,lsp_count:h}}catch(e){let n=b(e);return O(n),x(`Error loading plugins: ${e}`),t(e=>{let t=e.plugins.errors.filter(e=>e.source===`lsp-manager`||e.source.startsWith(`plugin:`)),r={type:`generic-error`,source:`plugin-system`,error:n.message};return{...e,plugins:{...e.plugins,enabled:[],disabled:[],commands:[],errors:[...t,r]}}}),{enabled_count:0,disabled_count:0,inline_count:0,marketplace_count:0,error_count:1,skill_count:0,agent_count:0,hook_count:0,mcp_count:0,lsp_count:0,load_failed:!0,ant_enabled_names:void 0}}},[t,a]);(0,I.useEffect)(()=>{e&&s().then(e=>{let{ant_enabled_names:t,...n}=e,r={...n,has_custom_plugin_cache_dir:!!process.env.CLAUDE_CODE_PLUGIN_CACHE_DIR};A(`tengu_plugins_loaded`,{...r,...t!==void 0&&{enabled_names:t}}),T(`info`,`tengu_plugins_loaded`,r)})},[s,e]),(0,I.useEffect)(()=>{!e||!r||a({key:`plugin-reload-pending`,text:`Plugins changed. Run /reload-plugins to activate.`,color:`suggestion`,priority:`low`})},[e,r,a])}export{L as t};
@@ -0,0 +1 @@
1
+ import{n as e,o as t}from"./rolldown-runtime-DaDcL9Zw.js";import{Ec as n,Sc as r}from"./loadAgentsDir-B0Anodo0.js";import{ai as i}from"./src-DL3w8VPk.js";import{n as a,t as o}from"./toolPool-V-7Yv0GA.js";function s(e,t,n){return(0,c.useMemo)(()=>a(e,r(n,t),n.mode),[e,t,n,!1,!1])}var c,l=e((()=>{c=t(i(),1),n(),o()}));export{s as n,l as t};
@@ -1 +1 @@
1
- import{n as e,o as t}from"./rolldown-runtime-DaDcL9Zw.js";import{bb as n}from"./loadAgentsDir-DlPbtIsS.js";import{Vn as r,ai as i,hn as a,ot as o,t as s}from"./src-DL3w8VPk.js";import{_ as c,b as l,d as u,g as d,h as f,l as p,u as m,v as h,y as g}from"./TextInput-CD9iau2k.js";function _(e){return!!(e.ctrl&&(e.key===`k`||e.key===`u`||e.key===`w`)||e.meta&&e.key===`backspace`)}function v(e){return(e.ctrl||e.meta)&&e.key===`y`}function y({isActive:e,onExit:t,onCancel:n,onExitUp:i,columns:s,passthroughCtrlKeys:u=[],initialQuery:y=``,backspaceExitsOnEmpty:S=!0}){let{columns:C}=o(),w=s??C,[T,E]=(0,b.useState)(y),[D,O]=(0,b.useState)(y.length),k=(0,b.useCallback)(e=>{E(e),O(e.length)},[]),A=r=>{if(!e)return;let a=p.fromText(T,w,D);if(!(r.ctrl&&u.includes(r.key.toLowerCase()))){if(_(r)||c(),v(r)||h(),r.key===`return`||r.key===`down`){r.preventDefault(),t();return}if(r.key===`up`){r.preventDefault(),i&&i();return}if(r.key===`escape`){r.preventDefault(),n?n():T.length>0?(E(``),O(0)):t();return}if(r.key===`backspace`){if(r.preventDefault(),r.meta){let{cursor:e,killed:t}=a.deleteWordBefore();f(t,`prepend`),E(e.text),O(e.offset);return}if(T.length===0){S&&(n??t)();return}let e=a.backspace();E(e.text),O(e.offset);return}if(r.key===`delete`){r.preventDefault();let e=a.del();E(e.text),O(e.offset);return}if(r.key===`left`&&(r.ctrl||r.meta||r.fn)){r.preventDefault();let e=a.prevWord();O(e.offset);return}if(r.key===`right`&&(r.ctrl||r.meta||r.fn)){r.preventDefault();let e=a.nextWord();O(e.offset);return}if(r.key===`left`){r.preventDefault();let e=a.left();O(e.offset);return}if(r.key===`right`){r.preventDefault();let e=a.right();O(e.offset);return}if(r.key===`home`){r.preventDefault(),O(0);return}if(r.key===`end`){r.preventDefault(),O(T.length);return}if(r.ctrl){switch(r.preventDefault(),r.key.toLowerCase()){case`a`:O(0);return;case`e`:O(T.length);return;case`b`:O(a.left().offset);return;case`f`:O(a.right().offset);return;case`d`:{if(T.length===0){(n??t)();return}let e=a.del();E(e.text),O(e.offset);return}case`h`:{if(T.length===0){S&&(n??t)();return}let e=a.backspace();E(e.text),O(e.offset);return}case`k`:{let{cursor:e,killed:t}=a.deleteToLineEnd();f(t,`append`),E(e.text),O(e.offset);return}case`u`:{let{cursor:e,killed:t}=a.deleteToLineStart();f(t,`prepend`),E(e.text),O(e.offset);return}case`w`:{let{cursor:e,killed:t}=a.deleteWordBefore();f(t,`prepend`),E(e.text),O(e.offset);return}case`y`:{let e=m();if(e.length>0){let t=a.offset,n=a.insert(e);d(t,e.length),E(n.text),O(n.offset)}return}case`g`:case`c`:if(n){n();return}}return}if(r.meta){switch(r.preventDefault(),r.key.toLowerCase()){case`b`:O(a.prevWord().offset);return;case`f`:O(a.nextWord().offset);return;case`d`:{let e=a.deleteWordAfter();E(e.text),O(e.offset);return}case`y`:{let e=l();if(e){let{text:t,start:n,length:r}=e,i=T.slice(0,n),a=T.slice(n+r),o=i+t+a,s=n+t.length;g(t.length),E(o),O(s)}return}}return}if(r.key!==`tab`&&r.key.length>=1&&!x.has(r.key)){r.preventDefault();let e=a.insert(r.key);E(e.text),O(e.offset)}}};return a((e,t,n)=>{A(new r(n.keypress))},{isActive:e}),{query:T,setQuery:k,cursorOffset:D,handleKeyDown:A}}var b,x,S=e((()=>{b=t(i(),1),s(),u(),n(),x=new Set([`pageup`,`pagedown`,`insert`,`wheelup`,`wheeldown`,`mouse`,`f1`,`f2`,`f3`,`f4`,`f5`,`f6`,`f7`,`f8`,`f9`,`f10`,`f11`,`f12`])}));export{y as n,S as t};
1
+ import{n as e,o as t}from"./rolldown-runtime-DaDcL9Zw.js";import{bb as n}from"./loadAgentsDir-B0Anodo0.js";import{Vn as r,ai as i,hn as a,ot as o,t as s}from"./src-DL3w8VPk.js";import{_ as c,b as l,d as u,g as d,h as f,l as p,u as m,v as h,y as g}from"./TextInput-B8ruWRf2.js";function _(e){return!!(e.ctrl&&(e.key===`k`||e.key===`u`||e.key===`w`)||e.meta&&e.key===`backspace`)}function v(e){return(e.ctrl||e.meta)&&e.key===`y`}function y({isActive:e,onExit:t,onCancel:n,onExitUp:i,columns:s,passthroughCtrlKeys:u=[],initialQuery:y=``,backspaceExitsOnEmpty:S=!0}){let{columns:C}=o(),w=s??C,[T,E]=(0,b.useState)(y),[D,O]=(0,b.useState)(y.length),k=(0,b.useCallback)(e=>{E(e),O(e.length)},[]),A=r=>{if(!e)return;let a=p.fromText(T,w,D);if(!(r.ctrl&&u.includes(r.key.toLowerCase()))){if(_(r)||c(),v(r)||h(),r.key===`return`||r.key===`down`){r.preventDefault(),t();return}if(r.key===`up`){r.preventDefault(),i&&i();return}if(r.key===`escape`){r.preventDefault(),n?n():T.length>0?(E(``),O(0)):t();return}if(r.key===`backspace`){if(r.preventDefault(),r.meta){let{cursor:e,killed:t}=a.deleteWordBefore();f(t,`prepend`),E(e.text),O(e.offset);return}if(T.length===0){S&&(n??t)();return}let e=a.backspace();E(e.text),O(e.offset);return}if(r.key===`delete`){r.preventDefault();let e=a.del();E(e.text),O(e.offset);return}if(r.key===`left`&&(r.ctrl||r.meta||r.fn)){r.preventDefault();let e=a.prevWord();O(e.offset);return}if(r.key===`right`&&(r.ctrl||r.meta||r.fn)){r.preventDefault();let e=a.nextWord();O(e.offset);return}if(r.key===`left`){r.preventDefault();let e=a.left();O(e.offset);return}if(r.key===`right`){r.preventDefault();let e=a.right();O(e.offset);return}if(r.key===`home`){r.preventDefault(),O(0);return}if(r.key===`end`){r.preventDefault(),O(T.length);return}if(r.ctrl){switch(r.preventDefault(),r.key.toLowerCase()){case`a`:O(0);return;case`e`:O(T.length);return;case`b`:O(a.left().offset);return;case`f`:O(a.right().offset);return;case`d`:{if(T.length===0){(n??t)();return}let e=a.del();E(e.text),O(e.offset);return}case`h`:{if(T.length===0){S&&(n??t)();return}let e=a.backspace();E(e.text),O(e.offset);return}case`k`:{let{cursor:e,killed:t}=a.deleteToLineEnd();f(t,`append`),E(e.text),O(e.offset);return}case`u`:{let{cursor:e,killed:t}=a.deleteToLineStart();f(t,`prepend`),E(e.text),O(e.offset);return}case`w`:{let{cursor:e,killed:t}=a.deleteWordBefore();f(t,`prepend`),E(e.text),O(e.offset);return}case`y`:{let e=m();if(e.length>0){let t=a.offset,n=a.insert(e);d(t,e.length),E(n.text),O(n.offset)}return}case`g`:case`c`:if(n){n();return}}return}if(r.meta){switch(r.preventDefault(),r.key.toLowerCase()){case`b`:O(a.prevWord().offset);return;case`f`:O(a.nextWord().offset);return;case`d`:{let e=a.deleteWordAfter();E(e.text),O(e.offset);return}case`y`:{let e=l();if(e){let{text:t,start:n,length:r}=e,i=T.slice(0,n),a=T.slice(n+r),o=i+t+a,s=n+t.length;g(t.length),E(o),O(s)}return}}return}if(r.key!==`tab`&&r.key.length>=1&&!x.has(r.key)){r.preventDefault();let e=a.insert(r.key);E(e.text),O(e.offset)}}};return a((e,t,n)=>{A(new r(n.keypress))},{isActive:e}),{query:T,setQuery:k,cursorOffset:D,handleKeyDown:A}}var b,x,S=e((()=>{b=t(i(),1),s(),u(),n(),x=new Set([`pageup`,`pagedown`,`insert`,`wheelup`,`wheeldown`,`mouse`,`f1`,`f2`,`f3`,`f4`,`f5`,`f6`,`f7`,`f8`,`f9`,`f10`,`f11`,`f12`])}));export{y as n,S as t};
@@ -1 +1 @@
1
- import{n as e,o as t}from"./rolldown-runtime-DaDcL9Zw.js";import{Hp as n,Up as r}from"./loadAgentsDir-DlPbtIsS.js";import{ai as i}from"./src-DL3w8VPk.js";import{n as a,t as o}from"./notifications-4wP1Tx9Y.js";import{n as s,t as c}from"./allErrors-DfWylHSw.js";function l(){let{addNotification:e,removeNotification:t}=a(),[n,i]=(0,u.useState)(()=>{let{errors:e}=c();return e});return r((0,u.useCallback)(()=>{let{errors:e}=c();i(e)},[])),(0,u.useEffect)(()=>{if(n.length>0){let t=`Found ${n.length} settings ${n.length===1?`issue`:`issues`} · /doctor for details`;e({key:d,text:t,color:`warning`,priority:`high`,timeoutMs:6e4})}else t(d)},[n,e,t]),n}var u,d,f=e((()=>{u=t(i(),1),o(),s(),n(),d=`settings-errors`}));export{l as n,f as t};
1
+ import{n as e,o as t}from"./rolldown-runtime-DaDcL9Zw.js";import{Hp as n,Up as r}from"./loadAgentsDir-B0Anodo0.js";import{ai as i}from"./src-DL3w8VPk.js";import{n as a,t as o}from"./notifications-Bc6k-Ozy.js";import{n as s,t as c}from"./allErrors-BF73lon8.js";function l(){let{addNotification:e,removeNotification:t}=a(),[n,i]=(0,u.useState)(()=>{let{errors:e}=c();return e});return r((0,u.useCallback)(()=>{let{errors:e}=c();i(e)},[])),(0,u.useEffect)(()=>{if(n.length>0){let t=`Found ${n.length} settings ${n.length===1?`issue`:`issues`} · /doctor for details`;e({key:d,text:t,color:`warning`,priority:`high`,timeoutMs:6e4})}else t(d)},[n,e,t]),n}var u,d,f=e((()=>{u=t(i(),1),o(),s(),n(),d=`settings-errors`}));export{l as n,f as t};
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-DaDcL9Zw.js";import{Ip as t,Pp as n}from"./loadAgentsDir-DlPbtIsS.js";import{ai as r}from"./src-DL3w8VPk.js";import{t as i}from"./jsx-runtime-Bb4Xn-E0.js";import{n as a,r as o}from"./analytics-DJobLaWP.js";import{t as s}from"./KeybindingProviderSetup-DA37QUFs.js";import{t as c}from"./useManagePlugins-BqfIVa6E.js";import{n as l,t as u}from"./MCPConnectionManager-thZd-xA_.js";import{cwd as d}from"process";var f=e(r(),1);a(),l(),t();var p=i(),m=f.lazy(()=>import(`./Doctor-DNgkgYhB.js`).then(e=>({default:e.Doctor})));function h({onDone:e}){return c(),(0,p.jsx)(f.Suspense,{fallback:null,children:(0,p.jsx)(m,{onDone:e})})}async function g(e){o(`tengu_doctor_command`,{}),await new Promise(t=>{e.render((0,p.jsx)(n,{children:(0,p.jsx)(s,{children:(0,p.jsx)(u,{dynamicMcpConfig:void 0,isStrictMcpConfig:!1,children:(0,p.jsx)(h,{onDone:()=>{t()}})})})}))}),e.unmount(),process.exit(0)}async function _(e,t){let{setup:n}=await import(`./setup-BRypY6iT.js`);await n(d(),`default`,!1,!1,void 0,!1);let{install:r}=await import(`./install-T_CV1Slu.js`);await new Promise(n=>{let i=[];e&&i.push(e),t.force&&i.push(`--force`),r.call(e=>{n(),process.exit(+!!e.includes(`failed`))},{},i)})}export{g as doctorHandler,_ as installHandler};
1
+ import{o as e}from"./rolldown-runtime-DaDcL9Zw.js";import{Ip as t,Pp as n}from"./loadAgentsDir-B0Anodo0.js";import{ai as r}from"./src-DL3w8VPk.js";import{t as i}from"./jsx-runtime-Bb4Xn-E0.js";import{n as a,r as o}from"./analytics-DJobLaWP.js";import{t as s}from"./KeybindingProviderSetup-D49HHTXD.js";import{t as c}from"./useManagePlugins-BXLXazrR.js";import{n as l,t as u}from"./MCPConnectionManager-Cie77ZAK.js";import{cwd as d}from"process";var f=e(r(),1);a(),l(),t();var p=i(),m=f.lazy(()=>import(`./Doctor-CMpr7tdf.js`).then(e=>({default:e.Doctor})));function h({onDone:e}){return c(),(0,p.jsx)(f.Suspense,{fallback:null,children:(0,p.jsx)(m,{onDone:e})})}async function g(e){o(`tengu_doctor_command`,{}),await new Promise(t=>{e.render((0,p.jsx)(n,{children:(0,p.jsx)(s,{children:(0,p.jsx)(u,{dynamicMcpConfig:void 0,isStrictMcpConfig:!1,children:(0,p.jsx)(h,{onDone:()=>{t()}})})})}))}),e.unmount(),process.exit(0)}async function _(e,t){let{setup:n}=await import(`./setup-qecdf-ES.js`);await n(d(),`default`,!1,!1,void 0,!1);let{install:r}=await import(`./install-0D9u2dZw.js`);await new Promise(n=>{let i=[];e&&i.push(e),t.force&&i.push(`--force`),r.call(e=>{n(),process.exit(+!!e.includes(`failed`))},{},i)})}export{g as doctorHandler,_ as installHandler};
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{n as t,t as n}from"./axios-DaWTGg7G.js";import{Ax as r,Bw as i,Cx as a,Hw as o,Ox as s,Sx as c,Uw as ee,kx as l,zw as u}from"./loadAgentsDir-DlPbtIsS.js";import{P as d,x as te}from"./types-Dx7P7JLQ.js";import{C as f,I as p,M as m,N as h,R as g,S as _,c as v,f as y,i as b,u as x,x as S}from"./debug-Bglx1aTu.js";import{_t as C,ft as ne,gt as w,ht as re,mt as ie}from"./settings-B2jvL8Dp.js";import{o as ae,s as T}from"./log-D2TIwHBV.js";import{homedir as oe}from"os";import*as E from"path";import{join as se,resolve as D}from"path";import{randomBytes as O}from"crypto";import{readFile as k,readdir as A,rename as j,stat as M,unlink as N,writeFile as P}from"fs/promises";function F(){return se(c(),H)}async function I(){let e=F();try{let t=_(await k(e,{encoding:`utf-8`}));if(typeof t!=`object`||!t||!(`version`in t)||!(`fetchedAt`in t)||!(`counts`in t))return v(`Install counts cache has invalid structure`),null;let n=t;if(n.version!==V)return v(`Install counts cache version mismatch (got ${n.version}, expected ${V})`),null;if(typeof n.fetchedAt!=`string`||!Array.isArray(n.counts))return v(`Install counts cache has invalid structure`),null;let r=new Date(n.fetchedAt).getTime();return Number.isNaN(r)?(v(`Install counts cache has invalid fetchedAt timestamp`),null):n.counts.every(e=>typeof e==`object`&&!!e&&typeof e.plugin==`string`&&typeof e.unique_installs==`number`)?Date.now()-r>W?(v(`Install counts cache is stale (>24h old)`),null):{version:n.version,fetchedAt:n.fetchedAt,counts:n.counts}:(v(`Install counts cache has malformed entries`),null)}catch(e){return h(e)!==`ENOENT`&&v(`Failed to load install counts cache: ${m(e)}`),null}}async function L(e){let t=F(),n=`${t}.${O(8).toString(`hex`)}.tmp`;try{let r=c();await x().mkdir(r),await P(n,f(e,null,2),{encoding:`utf-8`,mode:384}),await j(n,t),v(`Install counts cache saved successfully`)}catch(e){T(e);try{await N(n)}catch{}}}async function R(){v(`Fetching install counts from ${U}`);let e=performance.now();try{let n=await t.get(U,{timeout:1e4});if(!n.data?.plugins||!Array.isArray(n.data.plugins))throw Error(`Invalid response format from install counts API`);return r(`install_counts`,U,`success`,performance.now()-e),n.data.plugins}catch(t){throw r(`install_counts`,U,`failure`,performance.now()-e,s(t)),t}}async function z(){let e=await I();if(e){v(`Using cached install counts`),r(`install_counts`,U,`cache_hit`,0);let t=new Map;for(let n of e.counts)t.set(n.plugin,n.unique_installs);return t}try{let e=await R();await L({version:V,fetchedAt:new Date().toISOString(),counts:e});let t=new Map;for(let n of e)t.set(n.plugin,n.unique_installs);return t}catch(e){return T(e),v(`Failed to fetch install counts: ${m(e)}`),null}}function B(e){if(e<1e3)return String(e);if(e<1e6){let t=(e/1e3).toFixed(1);return t.endsWith(`.0`)?`${t.slice(0,-2)}K`:`${t}K`}let t=(e/1e6).toFixed(1);return t.endsWith(`.0`)?`${t.slice(0,-2)}M`:`${t}M`}var V,H,U,W,G=e((()=>{n(),b(),p(),y(),ae(),S(),l(),a(),V=1,H=`install-counts-cache.json`,U=`https://raw.githubusercontent.com/anthropics/claude-plugins-official/refs/heads/stats/stats/plugin-installs.json`,W=1440*60*1e3}));async function K(e){let t=e.trim(),n=x(),r=t.match(/^([a-zA-Z0-9._-]+@[^:]+:.+?(?:\.git)?)(#(.+))?$/);if(r?.[1]){let e=r[1],t=r[3];return t?{source:`git`,url:e,ref:t}:{source:`git`,url:e}}if(t.startsWith(`http://`)||t.startsWith(`https://`)){let e=t.match(/^([^#]+)(#(.+))?$/),n=e?.[1]||t,r=e?.[3];if(n.endsWith(`.git`)||n.includes(`/_git/`))return r?{source:`git`,url:n,ref:r}:{source:`git`,url:n};let i;try{i=new URL(n)}catch{return{source:`url`,url:n}}if((i.hostname===`github.com`||i.hostname===`www.github.com`)&&i.pathname.match(/^\/([^/]+\/[^/]+?)(\/|\.git|$)/)?.[1]){let e=n.endsWith(`.git`)?n:`${n}.git`;return r?{source:`git`,url:e,ref:r}:{source:`git`,url:e}}return{source:`url`,url:n}}let i=process.platform===`win32`&&(t.startsWith(`.\\`)||t.startsWith(`..\\`)||/^[a-zA-Z]:[/\\]/.test(t));if(t.startsWith(`./`)||t.startsWith(`../`)||t.startsWith(`/`)||t.startsWith(`~`)||i){let e=D(t.startsWith(`~`)?t.replace(/^~/,oe()):t),r;try{r=await n.stat(e)}catch(t){let n=h(t);return{error:n===`ENOENT`?`Path does not exist: ${e}`:`Cannot access path: ${e} (${n??t})`}}return r.isFile()?e.endsWith(`.json`)?{source:`file`,path:e}:{error:`File path must point to a .json file (marketplace.json), but got: ${e}`}:r.isDirectory()?{source:`directory`,path:e}:{error:`Path is neither a file nor a directory: ${e}`}}if(t.includes(`/`)&&!t.startsWith(`@`)){if(t.includes(`:`))return null;let e=t.match(/^([^#@]+)(?:[#@](.+))?$/),n=e?.[1]||t,r=e?.[2];return r?{source:`github`,repo:n,ref:r}:{source:`github`,repo:n}}return null}var ce=e((()=>{p(),y()}));function le(e){let t=E.basename(e),n=E.basename(E.dirname(e));return t===`plugin.json`?`plugin`:t===`marketplace.json`?`marketplace`:n===`.claude-plugin`?`plugin`:`unknown`}function q(e){return e.issues.map(e=>({path:e.path.join(`.`)||`root`,message:e.message,code:e.code}))}function J(e,t,n,r){e.includes(`..`)&&n.push({path:t,message:r?`Path contains "..": ${e}. ${r}`:`Path contains ".." which could be a path traversal attempt: ${e}`})}function ue(e){let t=e.replace(/^(\.\.\/)+/,``);return`Plugin source paths are resolved relative to the marketplace root (the directory containing .claude-plugin/), not relative to marketplace.json. Use "${t===e?`./plugins/my-plugin`:`./${t}`}" instead of "${e}".`}async function Y(e){let t=[],n=[],r=E.resolve(e),i;try{i=await k(r,{encoding:`utf-8`})}catch(e){let t=h(e),n;return n=t===`ENOENT`?`File not found: ${r}`:t===`EISDIR`?`Path is not a file: ${r}`:`Failed to read file: ${m(e)}`,{success:!1,errors:[{path:`file`,message:n,code:t}],warnings:[],filePath:r,fileType:`plugin`}}let a;try{a=_(i)}catch(e){return{success:!1,errors:[{path:`json`,message:`Invalid JSON syntax: ${m(e)}`}],warnings:[],filePath:r,fileType:`plugin`}}if(a&&typeof a==`object`){let e=a;e.commands&&(Array.isArray(e.commands)?e.commands:[e.commands]).forEach((e,n)=>{typeof e==`string`&&J(e,`commands[${n}]`,t)}),e.agents&&(Array.isArray(e.agents)?e.agents:[e.agents]).forEach((e,n)=>{typeof e==`string`&&J(e,`agents[${n}]`,t)}),e.skills&&(Array.isArray(e.skills)?e.skills:[e.skills]).forEach((e,n)=>{typeof e==`string`&&J(e,`skills[${n}]`,t)})}let o=a;if(typeof a==`object`&&a){let e=a,t=Object.keys(e).filter(e=>$.has(e));if(t.length>0){let r={...e};for(let e of t)delete r[e],n.push({path:e,message:`Field '${e}' belongs in the marketplace entry (marketplace.json), not plugin.json. It's harmless here but unused — Work Mate ignores it at load time.`});o=r}}let s=ie().strict().safeParse(o);if(s.success||t.push(...q(s.error)),s.success){let e=s.data;/^[a-z0-9]+(-[a-z0-9]+)*$/.test(e.name)||n.push({path:`name`,message:`Plugin name "${e.name}" is not kebab-case. Work Mate accepts it, but the Claude.ai marketplace sync requires kebab-case (lowercase letters, digits, and hyphens only, e.g., "my-plugin").`}),e.version||n.push({path:`version`,message:`No version specified. Consider adding a version following semver (e.g., "1.0.0")`}),e.description||n.push({path:`description`,message:`No description provided. Adding a description helps users understand what your plugin does`}),e.author||n.push({path:`author`,message:`No author information provided. Consider adding author details for plugin attribution`})}return{success:t.length===0,errors:t,warnings:n,filePath:r,fileType:`plugin`}}async function X(e){let t=[],n=[],r=E.resolve(e),i;try{i=await k(r,{encoding:`utf-8`})}catch(e){let t=h(e),n;return n=t===`ENOENT`?`File not found: ${r}`:t===`EISDIR`?`Path is not a file: ${r}`:`Failed to read file: ${m(e)}`,{success:!1,errors:[{path:`file`,message:n,code:t}],warnings:[],filePath:r,fileType:`marketplace`}}let a;try{a=_(i)}catch(e){return{success:!1,errors:[{path:`json`,message:`Invalid JSON syntax: ${m(e)}`}],warnings:[],filePath:r,fileType:`marketplace`}}if(a&&typeof a==`object`){let e=a;Array.isArray(e.plugins)&&e.plugins.forEach((e,n)=>{if(e&&typeof e==`object`&&`source`in e){let r=e.source;typeof r==`string`&&J(r,`plugins[${n}].source`,t,ue(r)),r&&typeof r==`object`&&`path`in r&&typeof r.path==`string`&&J(r.path,`plugins[${n}].source.path`,t)}})}let o=w().extend({plugins:d(re().strict())}).strict().safeParse(a);if(o.success||t.push(...q(o.error)),o.success){let e=o.data;if((!e.plugins||e.plugins.length===0)&&n.push({path:`plugins`,message:`Marketplace has no plugins defined`}),e.plugins){e.plugins.forEach((n,r)=>{e.plugins.filter(e=>e.name===n.name).length>1&&t.push({path:`plugins[${r}].name`,message:`Duplicate plugin name "${n.name}" found in marketplace`})});let i=E.dirname(r),a=E.basename(i)===`.claude-plugin`?E.dirname(i):i;for(let[t,r]of e.plugins.entries()){if(!r.version||typeof r.source!=`string`||!r.source.startsWith(`./`))continue;let e=E.join(a,r.source,`.claude-plugin`,`plugin.json`),i;try{let t=_(await k(e,{encoding:`utf-8`}));typeof t.version==`string`&&(i=t.version)}catch{continue}i&&i!==r.version&&n.push({path:`plugins[${t}].version`,message:`Entry declares version "${r.version}" but ${r.source}/.claude-plugin/plugin.json says "${i}". At install time, plugin.json wins (calculatePluginVersion precedence) — the entry version is silently ignored. Update this entry to "${i}" to match.`})}}e.metadata?.description||n.push({path:`metadata.description`,message:`No marketplace description provided. Adding a description helps users understand what this marketplace offers`})}return{success:t.length===0,errors:t,warnings:n,filePath:r,fileType:`marketplace`}}function de(e,t,n){let r=[],i=[],a=t.match(u);if(!a)return i.push({path:`frontmatter`,message:`No frontmatter block found. Add YAML frontmatter between --- delimiters at the top of the file to set description and other metadata.`}),{success:!0,errors:r,warnings:i,filePath:e,fileType:n};let o=a[1]||``,s;try{s=ee(o)}catch(t){return r.push({path:`frontmatter`,message:`YAML frontmatter failed to parse: ${m(t)}. At runtime this ${n} loads with empty metadata (all frontmatter fields silently dropped).`}),{success:!1,errors:r,warnings:i,filePath:e,fileType:n}}if(typeof s!=`object`||!s||Array.isArray(s))return r.push({path:`frontmatter`,message:`Frontmatter must be a YAML mapping (key: value pairs), got ${Array.isArray(s)?`an array`:s===null?`null`:typeof s}.`}),{success:!1,errors:r,warnings:i,filePath:e,fileType:n};let c=s;if(c.description!==void 0){let e=c.description;typeof e!=`string`&&typeof e!=`number`&&typeof e!=`boolean`&&e!==null&&r.push({path:`description`,message:`description must be a string, got ${Array.isArray(e)?`array`:typeof e}. At runtime this value is dropped.`})}else i.push({path:`description`,message:`No description in frontmatter. A description helps users and Work Mate understand when to use this ${n}.`});c.name!==void 0&&c.name!==null&&typeof c.name!=`string`&&r.push({path:`name`,message:`name must be a string, got ${typeof c.name}.`});let l=c[`allowed-tools`];l!=null&&(typeof l!=`string`&&!Array.isArray(l)?r.push({path:`allowed-tools`,message:`allowed-tools must be a string or array of strings, got ${typeof l}.`}):Array.isArray(l)&&l.some(e=>typeof e!=`string`)&&r.push({path:`allowed-tools`,message:`allowed-tools array must contain only strings.`}));let d=c.shell;if(d!=null)if(typeof d!=`string`)r.push({path:`shell`,message:`shell must be a string, got ${typeof d}.`});else{let e=d.trim().toLowerCase();e!==`bash`&&e!==`powershell`&&r.push({path:`shell`,message:`shell must be 'bash' or 'powershell', got '${d}'.`})}return{success:r.length===0,errors:r,warnings:i,filePath:e,fileType:n}}async function Z(e){let t;try{t=await k(e,{encoding:`utf-8`})}catch(t){return h(t)===`ENOENT`?{success:!0,errors:[],warnings:[],filePath:e,fileType:`hooks`}:{success:!1,errors:[{path:`file`,message:`Failed to read file: ${m(t)}`}],warnings:[],filePath:e,fileType:`hooks`}}let n;try{n=_(t)}catch(t){return{success:!1,errors:[{path:`json`,message:`Invalid JSON syntax: ${m(t)}. At runtime this breaks the entire plugin load.`}],warnings:[],filePath:e,fileType:`hooks`}}let r=ne().safeParse(n);return r.success?{success:!0,errors:[],warnings:[],filePath:e,fileType:`hooks`}:{success:!1,errors:q(r.error),warnings:[],filePath:e,fileType:`hooks`}}async function Q(e,t){let n;try{n=await A(e,{withFileTypes:!0})}catch(e){let t=h(e);if(t===`ENOENT`||t===`ENOTDIR`)return[];throw e}if(t)return n.filter(e=>e.isDirectory()).map(t=>E.join(e,t.name,`SKILL.md`));let r=[];for(let t of n){let n=E.join(e,t.name);t.isDirectory()?r.push(...await Q(n,!1)):t.isFile()&&t.name.toLowerCase().endsWith(`.md`)&&r.push(n)}return r}async function fe(e){let t=[],n=[[`skill`,E.join(e,`skills`)],[`agent`,E.join(e,`agents`)],[`command`,E.join(e,`commands`)]];for(let[e,r]of n){let n=await Q(r,e===`skill`);for(let r of n){let n;try{n=await k(r,{encoding:`utf-8`})}catch(n){if(g(n))continue;t.push({success:!1,errors:[{path:`file`,message:`Failed to read: ${m(n)}`}],warnings:[],filePath:r,fileType:e});continue}let i=de(r,n,e);(i.errors.length>0||i.warnings.length>0)&&t.push(i)}}let r=await Z(E.join(e,`hooks`,`hooks.json`));return(r.errors.length>0||r.warnings.length>0)&&t.push(r),t}async function pe(e){let t=E.resolve(e),n=null;try{n=await M(t)}catch(e){if(!g(e))throw e}if(n?.isDirectory()){let e=await X(E.join(t,`.claude-plugin`,`marketplace.json`));if(e.errors[0]?.code!==`ENOENT`)return e;let n=await Y(E.join(t,`.claude-plugin`,`plugin.json`));return n.errors[0]?.code===`ENOENT`?{success:!1,errors:[{path:`directory`,message:`No manifest found in directory. Expected .claude-plugin/marketplace.json or .claude-plugin/plugin.json`}],warnings:[],filePath:t,fileType:`plugin`}:n}switch(le(e)){case`plugin`:return Y(e);case`marketplace`:return X(e);case`unknown`:try{let n=_(await k(t,{encoding:`utf-8`}));if(Array.isArray(n.plugins))return X(e)}catch(e){if(h(e)===`ENOENT`)return{success:!1,errors:[{path:`file`,message:`File not found: ${t}`}],warnings:[],filePath:t,fileType:`plugin`}}return Y(e)}}var $,me=e((()=>{te(),p(),i(),S(),o(),C(),$=new Set([`category`,`source`,`tags`,`strict`,`id`])}));export{K as a,G as c,ce as i,pe as n,B as o,fe as r,z as s,me as t};
1
+ import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{n as t,t as n}from"./axios-DaWTGg7G.js";import{Ax as r,Bw as i,Cx as a,Hw as o,Ox as s,Sx as c,Uw as ee,kx as l,zw as u}from"./loadAgentsDir-B0Anodo0.js";import{P as d,x as te}from"./types-Dx7P7JLQ.js";import{C as f,I as p,M as m,N as h,R as g,S as _,c as v,f as y,i as b,u as x,x as S}from"./debug-Bglx1aTu.js";import{_t as C,ft as ne,gt as w,ht as re,mt as ie}from"./settings-B2jvL8Dp.js";import{o as ae,s as T}from"./log-D2TIwHBV.js";import{homedir as oe}from"os";import*as E from"path";import{join as se,resolve as D}from"path";import{randomBytes as O}from"crypto";import{readFile as k,readdir as A,rename as j,stat as M,unlink as N,writeFile as P}from"fs/promises";function F(){return se(c(),H)}async function I(){let e=F();try{let t=_(await k(e,{encoding:`utf-8`}));if(typeof t!=`object`||!t||!(`version`in t)||!(`fetchedAt`in t)||!(`counts`in t))return v(`Install counts cache has invalid structure`),null;let n=t;if(n.version!==V)return v(`Install counts cache version mismatch (got ${n.version}, expected ${V})`),null;if(typeof n.fetchedAt!=`string`||!Array.isArray(n.counts))return v(`Install counts cache has invalid structure`),null;let r=new Date(n.fetchedAt).getTime();return Number.isNaN(r)?(v(`Install counts cache has invalid fetchedAt timestamp`),null):n.counts.every(e=>typeof e==`object`&&!!e&&typeof e.plugin==`string`&&typeof e.unique_installs==`number`)?Date.now()-r>W?(v(`Install counts cache is stale (>24h old)`),null):{version:n.version,fetchedAt:n.fetchedAt,counts:n.counts}:(v(`Install counts cache has malformed entries`),null)}catch(e){return h(e)!==`ENOENT`&&v(`Failed to load install counts cache: ${m(e)}`),null}}async function L(e){let t=F(),n=`${t}.${O(8).toString(`hex`)}.tmp`;try{let r=c();await x().mkdir(r),await P(n,f(e,null,2),{encoding:`utf-8`,mode:384}),await j(n,t),v(`Install counts cache saved successfully`)}catch(e){T(e);try{await N(n)}catch{}}}async function R(){v(`Fetching install counts from ${U}`);let e=performance.now();try{let n=await t.get(U,{timeout:1e4});if(!n.data?.plugins||!Array.isArray(n.data.plugins))throw Error(`Invalid response format from install counts API`);return r(`install_counts`,U,`success`,performance.now()-e),n.data.plugins}catch(t){throw r(`install_counts`,U,`failure`,performance.now()-e,s(t)),t}}async function z(){let e=await I();if(e){v(`Using cached install counts`),r(`install_counts`,U,`cache_hit`,0);let t=new Map;for(let n of e.counts)t.set(n.plugin,n.unique_installs);return t}try{let e=await R();await L({version:V,fetchedAt:new Date().toISOString(),counts:e});let t=new Map;for(let n of e)t.set(n.plugin,n.unique_installs);return t}catch(e){return T(e),v(`Failed to fetch install counts: ${m(e)}`),null}}function B(e){if(e<1e3)return String(e);if(e<1e6){let t=(e/1e3).toFixed(1);return t.endsWith(`.0`)?`${t.slice(0,-2)}K`:`${t}K`}let t=(e/1e6).toFixed(1);return t.endsWith(`.0`)?`${t.slice(0,-2)}M`:`${t}M`}var V,H,U,W,G=e((()=>{n(),b(),p(),y(),ae(),S(),l(),a(),V=1,H=`install-counts-cache.json`,U=`https://raw.githubusercontent.com/anthropics/claude-plugins-official/refs/heads/stats/stats/plugin-installs.json`,W=1440*60*1e3}));async function K(e){let t=e.trim(),n=x(),r=t.match(/^([a-zA-Z0-9._-]+@[^:]+:.+?(?:\.git)?)(#(.+))?$/);if(r?.[1]){let e=r[1],t=r[3];return t?{source:`git`,url:e,ref:t}:{source:`git`,url:e}}if(t.startsWith(`http://`)||t.startsWith(`https://`)){let e=t.match(/^([^#]+)(#(.+))?$/),n=e?.[1]||t,r=e?.[3];if(n.endsWith(`.git`)||n.includes(`/_git/`))return r?{source:`git`,url:n,ref:r}:{source:`git`,url:n};let i;try{i=new URL(n)}catch{return{source:`url`,url:n}}if((i.hostname===`github.com`||i.hostname===`www.github.com`)&&i.pathname.match(/^\/([^/]+\/[^/]+?)(\/|\.git|$)/)?.[1]){let e=n.endsWith(`.git`)?n:`${n}.git`;return r?{source:`git`,url:e,ref:r}:{source:`git`,url:e}}return{source:`url`,url:n}}let i=process.platform===`win32`&&(t.startsWith(`.\\`)||t.startsWith(`..\\`)||/^[a-zA-Z]:[/\\]/.test(t));if(t.startsWith(`./`)||t.startsWith(`../`)||t.startsWith(`/`)||t.startsWith(`~`)||i){let e=D(t.startsWith(`~`)?t.replace(/^~/,oe()):t),r;try{r=await n.stat(e)}catch(t){let n=h(t);return{error:n===`ENOENT`?`Path does not exist: ${e}`:`Cannot access path: ${e} (${n??t})`}}return r.isFile()?e.endsWith(`.json`)?{source:`file`,path:e}:{error:`File path must point to a .json file (marketplace.json), but got: ${e}`}:r.isDirectory()?{source:`directory`,path:e}:{error:`Path is neither a file nor a directory: ${e}`}}if(t.includes(`/`)&&!t.startsWith(`@`)){if(t.includes(`:`))return null;let e=t.match(/^([^#@]+)(?:[#@](.+))?$/),n=e?.[1]||t,r=e?.[2];return r?{source:`github`,repo:n,ref:r}:{source:`github`,repo:n}}return null}var ce=e((()=>{p(),y()}));function le(e){let t=E.basename(e),n=E.basename(E.dirname(e));return t===`plugin.json`?`plugin`:t===`marketplace.json`?`marketplace`:n===`.claude-plugin`?`plugin`:`unknown`}function q(e){return e.issues.map(e=>({path:e.path.join(`.`)||`root`,message:e.message,code:e.code}))}function J(e,t,n,r){e.includes(`..`)&&n.push({path:t,message:r?`Path contains "..": ${e}. ${r}`:`Path contains ".." which could be a path traversal attempt: ${e}`})}function ue(e){let t=e.replace(/^(\.\.\/)+/,``);return`Plugin source paths are resolved relative to the marketplace root (the directory containing .claude-plugin/), not relative to marketplace.json. Use "${t===e?`./plugins/my-plugin`:`./${t}`}" instead of "${e}".`}async function Y(e){let t=[],n=[],r=E.resolve(e),i;try{i=await k(r,{encoding:`utf-8`})}catch(e){let t=h(e),n;return n=t===`ENOENT`?`File not found: ${r}`:t===`EISDIR`?`Path is not a file: ${r}`:`Failed to read file: ${m(e)}`,{success:!1,errors:[{path:`file`,message:n,code:t}],warnings:[],filePath:r,fileType:`plugin`}}let a;try{a=_(i)}catch(e){return{success:!1,errors:[{path:`json`,message:`Invalid JSON syntax: ${m(e)}`}],warnings:[],filePath:r,fileType:`plugin`}}if(a&&typeof a==`object`){let e=a;e.commands&&(Array.isArray(e.commands)?e.commands:[e.commands]).forEach((e,n)=>{typeof e==`string`&&J(e,`commands[${n}]`,t)}),e.agents&&(Array.isArray(e.agents)?e.agents:[e.agents]).forEach((e,n)=>{typeof e==`string`&&J(e,`agents[${n}]`,t)}),e.skills&&(Array.isArray(e.skills)?e.skills:[e.skills]).forEach((e,n)=>{typeof e==`string`&&J(e,`skills[${n}]`,t)})}let o=a;if(typeof a==`object`&&a){let e=a,t=Object.keys(e).filter(e=>$.has(e));if(t.length>0){let r={...e};for(let e of t)delete r[e],n.push({path:e,message:`Field '${e}' belongs in the marketplace entry (marketplace.json), not plugin.json. It's harmless here but unused — Work Mate ignores it at load time.`});o=r}}let s=ie().strict().safeParse(o);if(s.success||t.push(...q(s.error)),s.success){let e=s.data;/^[a-z0-9]+(-[a-z0-9]+)*$/.test(e.name)||n.push({path:`name`,message:`Plugin name "${e.name}" is not kebab-case. Work Mate accepts it, but the Claude.ai marketplace sync requires kebab-case (lowercase letters, digits, and hyphens only, e.g., "my-plugin").`}),e.version||n.push({path:`version`,message:`No version specified. Consider adding a version following semver (e.g., "1.0.0")`}),e.description||n.push({path:`description`,message:`No description provided. Adding a description helps users understand what your plugin does`}),e.author||n.push({path:`author`,message:`No author information provided. Consider adding author details for plugin attribution`})}return{success:t.length===0,errors:t,warnings:n,filePath:r,fileType:`plugin`}}async function X(e){let t=[],n=[],r=E.resolve(e),i;try{i=await k(r,{encoding:`utf-8`})}catch(e){let t=h(e),n;return n=t===`ENOENT`?`File not found: ${r}`:t===`EISDIR`?`Path is not a file: ${r}`:`Failed to read file: ${m(e)}`,{success:!1,errors:[{path:`file`,message:n,code:t}],warnings:[],filePath:r,fileType:`marketplace`}}let a;try{a=_(i)}catch(e){return{success:!1,errors:[{path:`json`,message:`Invalid JSON syntax: ${m(e)}`}],warnings:[],filePath:r,fileType:`marketplace`}}if(a&&typeof a==`object`){let e=a;Array.isArray(e.plugins)&&e.plugins.forEach((e,n)=>{if(e&&typeof e==`object`&&`source`in e){let r=e.source;typeof r==`string`&&J(r,`plugins[${n}].source`,t,ue(r)),r&&typeof r==`object`&&`path`in r&&typeof r.path==`string`&&J(r.path,`plugins[${n}].source.path`,t)}})}let o=w().extend({plugins:d(re().strict())}).strict().safeParse(a);if(o.success||t.push(...q(o.error)),o.success){let e=o.data;if((!e.plugins||e.plugins.length===0)&&n.push({path:`plugins`,message:`Marketplace has no plugins defined`}),e.plugins){e.plugins.forEach((n,r)=>{e.plugins.filter(e=>e.name===n.name).length>1&&t.push({path:`plugins[${r}].name`,message:`Duplicate plugin name "${n.name}" found in marketplace`})});let i=E.dirname(r),a=E.basename(i)===`.claude-plugin`?E.dirname(i):i;for(let[t,r]of e.plugins.entries()){if(!r.version||typeof r.source!=`string`||!r.source.startsWith(`./`))continue;let e=E.join(a,r.source,`.claude-plugin`,`plugin.json`),i;try{let t=_(await k(e,{encoding:`utf-8`}));typeof t.version==`string`&&(i=t.version)}catch{continue}i&&i!==r.version&&n.push({path:`plugins[${t}].version`,message:`Entry declares version "${r.version}" but ${r.source}/.claude-plugin/plugin.json says "${i}". At install time, plugin.json wins (calculatePluginVersion precedence) — the entry version is silently ignored. Update this entry to "${i}" to match.`})}}e.metadata?.description||n.push({path:`metadata.description`,message:`No marketplace description provided. Adding a description helps users understand what this marketplace offers`})}return{success:t.length===0,errors:t,warnings:n,filePath:r,fileType:`marketplace`}}function de(e,t,n){let r=[],i=[],a=t.match(u);if(!a)return i.push({path:`frontmatter`,message:`No frontmatter block found. Add YAML frontmatter between --- delimiters at the top of the file to set description and other metadata.`}),{success:!0,errors:r,warnings:i,filePath:e,fileType:n};let o=a[1]||``,s;try{s=ee(o)}catch(t){return r.push({path:`frontmatter`,message:`YAML frontmatter failed to parse: ${m(t)}. At runtime this ${n} loads with empty metadata (all frontmatter fields silently dropped).`}),{success:!1,errors:r,warnings:i,filePath:e,fileType:n}}if(typeof s!=`object`||!s||Array.isArray(s))return r.push({path:`frontmatter`,message:`Frontmatter must be a YAML mapping (key: value pairs), got ${Array.isArray(s)?`an array`:s===null?`null`:typeof s}.`}),{success:!1,errors:r,warnings:i,filePath:e,fileType:n};let c=s;if(c.description!==void 0){let e=c.description;typeof e!=`string`&&typeof e!=`number`&&typeof e!=`boolean`&&e!==null&&r.push({path:`description`,message:`description must be a string, got ${Array.isArray(e)?`array`:typeof e}. At runtime this value is dropped.`})}else i.push({path:`description`,message:`No description in frontmatter. A description helps users and Work Mate understand when to use this ${n}.`});c.name!==void 0&&c.name!==null&&typeof c.name!=`string`&&r.push({path:`name`,message:`name must be a string, got ${typeof c.name}.`});let l=c[`allowed-tools`];l!=null&&(typeof l!=`string`&&!Array.isArray(l)?r.push({path:`allowed-tools`,message:`allowed-tools must be a string or array of strings, got ${typeof l}.`}):Array.isArray(l)&&l.some(e=>typeof e!=`string`)&&r.push({path:`allowed-tools`,message:`allowed-tools array must contain only strings.`}));let d=c.shell;if(d!=null)if(typeof d!=`string`)r.push({path:`shell`,message:`shell must be a string, got ${typeof d}.`});else{let e=d.trim().toLowerCase();e!==`bash`&&e!==`powershell`&&r.push({path:`shell`,message:`shell must be 'bash' or 'powershell', got '${d}'.`})}return{success:r.length===0,errors:r,warnings:i,filePath:e,fileType:n}}async function Z(e){let t;try{t=await k(e,{encoding:`utf-8`})}catch(t){return h(t)===`ENOENT`?{success:!0,errors:[],warnings:[],filePath:e,fileType:`hooks`}:{success:!1,errors:[{path:`file`,message:`Failed to read file: ${m(t)}`}],warnings:[],filePath:e,fileType:`hooks`}}let n;try{n=_(t)}catch(t){return{success:!1,errors:[{path:`json`,message:`Invalid JSON syntax: ${m(t)}. At runtime this breaks the entire plugin load.`}],warnings:[],filePath:e,fileType:`hooks`}}let r=ne().safeParse(n);return r.success?{success:!0,errors:[],warnings:[],filePath:e,fileType:`hooks`}:{success:!1,errors:q(r.error),warnings:[],filePath:e,fileType:`hooks`}}async function Q(e,t){let n;try{n=await A(e,{withFileTypes:!0})}catch(e){let t=h(e);if(t===`ENOENT`||t===`ENOTDIR`)return[];throw e}if(t)return n.filter(e=>e.isDirectory()).map(t=>E.join(e,t.name,`SKILL.md`));let r=[];for(let t of n){let n=E.join(e,t.name);t.isDirectory()?r.push(...await Q(n,!1)):t.isFile()&&t.name.toLowerCase().endsWith(`.md`)&&r.push(n)}return r}async function fe(e){let t=[],n=[[`skill`,E.join(e,`skills`)],[`agent`,E.join(e,`agents`)],[`command`,E.join(e,`commands`)]];for(let[e,r]of n){let n=await Q(r,e===`skill`);for(let r of n){let n;try{n=await k(r,{encoding:`utf-8`})}catch(n){if(g(n))continue;t.push({success:!1,errors:[{path:`file`,message:`Failed to read: ${m(n)}`}],warnings:[],filePath:r,fileType:e});continue}let i=de(r,n,e);(i.errors.length>0||i.warnings.length>0)&&t.push(i)}}let r=await Z(E.join(e,`hooks`,`hooks.json`));return(r.errors.length>0||r.warnings.length>0)&&t.push(r),t}async function pe(e){let t=E.resolve(e),n=null;try{n=await M(t)}catch(e){if(!g(e))throw e}if(n?.isDirectory()){let e=await X(E.join(t,`.claude-plugin`,`marketplace.json`));if(e.errors[0]?.code!==`ENOENT`)return e;let n=await Y(E.join(t,`.claude-plugin`,`plugin.json`));return n.errors[0]?.code===`ENOENT`?{success:!1,errors:[{path:`directory`,message:`No manifest found in directory. Expected .claude-plugin/marketplace.json or .claude-plugin/plugin.json`}],warnings:[],filePath:t,fileType:`plugin`}:n}switch(le(e)){case`plugin`:return Y(e);case`marketplace`:return X(e);case`unknown`:try{let n=_(await k(t,{encoding:`utf-8`}));if(Array.isArray(n.plugins))return X(e)}catch(e){if(h(e)===`ENOENT`)return{success:!1,errors:[{path:`file`,message:`File not found: ${t}`}],warnings:[],filePath:t,fileType:`plugin`}}return Y(e)}}var $,me=e((()=>{te(),p(),i(),S(),o(),C(),$=new Set([`category`,`source`,`tags`,`strict`,`id`])}));export{K as a,G as c,ce as i,pe as n,B as o,fe as r,z as s,me as t};
@@ -0,0 +1 @@
1
+ import{gt as e,xt as t}from"./loadAgentsDir-B0Anodo0.js";t();export{e as execIntoTmuxWorktree};
package/dist/cli.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env bun
2
- import{l as e,o as t}from"./chunks/envUtils-DfkgIdYf.js";var n=globalThis.performance,r=new Map,i=new Map;function a(){return n.now()}function o(e){return r.set(e,a()),{name:e,entryType:`mark`,startTime:r.get(e),duration:0}}function s(e,t,n){let o,s;if(typeof t==`string`){let e=r.get(t),i=n?r.get(n):a();o=e??a(),s=(i??a())-o}else t&&typeof t==`object`?(o=t.start??0,s=(t.end??a())-o):(o=0,s=a());i.set(e,{name:e,startTime:o,duration:s})}function c(e){return e===`mark`?[...r.entries()].map(([e,t])=>({name:e,entryType:`mark`,startTime:t,duration:0})):e===`measure`?[...i.values()].map(e=>({name:e.name,entryType:`measure`,startTime:e.startTime,duration:e.duration})):[]}function l(e,t){return c(t??`mark`).concat(t===void 0?c(`measure`):[]).filter(t=>t.name===e)}function u(e){e===void 0?r.clear():r.delete(e)}function d(e){e===void 0?i.clear():i.delete(e)}var f={now:a,mark:o,measure:s,getEntriesByType:c,getEntriesByName:l,clearMarks:u,clearMeasures:d,clearResourceTimings:(()=>{}),setResourceTimingBufferSize:(()=>{}),markResourceTiming:(()=>{}),get timeOrigin(){return n.timeOrigin},get onresourcetimingbufferfull(){return n.onresourcetimingbufferfull},set onresourcetimingbufferfull(e){},toJSON(){return n.toJSON()}};function p(){globalThis.__performanceShimInstalled||(globalThis.__performanceShimInstalled=!0,globalThis.performance=f)}if(p(),t(),globalThis.MACRO===void 0&&(globalThis.MACRO={VERSION:process.env.CLAUDE_CODE_VERSION||`2.1.888`,BUILD_TIME:new Date().toISOString(),FEEDBACK_CHANNEL:``,ISSUES_EXPLAINER:``,NATIVE_PACKAGE_URL:``,PACKAGE_URL:``,VERSION_CHANGELOG:``}),e(process.env.CLAUDE_CODE_FORCE_INTERACTIVE)){for(let e of[process.stdin,process.stdout,process.stderr])if(!e.isTTY)try{Object.defineProperty(e,"isTTY",{value:!0,configurable:!0})}catch{}}process.env.COREPACK_ENABLE_AUTO_PIN=`0`;async function m(){let e=process.argv.slice(2);if(e.length===1&&(e[0]===`--version`||e[0]===`-v`||e[0]===`-V`)){console.log(`0.0.23 (Work Mate)`);return}let{profileCheckpoint:t}=await import(`./chunks/startupProfiler-BH0FoI66.js`);if(t(`cli_entry`),process.argv[2]===`--acp`){t(`cli_acp_path`);let{runAcpAgent:e}=await import(`./chunks/entry-TNOoyy7_.js`);await e();return}if(e[0]===`job`){t(`cli_templates_path`);let{templatesMain:n}=await import(`./chunks/templateJobs-gUET39Ho.js`);await n(e.slice(1)),process.exit(0)}if(e[0]===`new`||e[0]===`list`||e[0]===`reply`){console.error(`[deprecated] Use: claude job ${e[0]} ${e.slice(1).join(` `)}`.trim()),t(`cli_templates_path`);let{templatesMain:n}=await import(`./chunks/templateJobs-gUET39Ho.js`);await n(e),process.exit(0)}if((e.includes(`--tmux`)||e.includes(`--tmux=classic`))&&(e.includes(`-w`)||e.includes(`--worktree`)||e.some(e=>e.startsWith(`--worktree=`)))){t(`cli_tmux_worktree_fast_path`);let{enableConfigs:n}=await import(`./chunks/config-DD8fCYXn.js`);n();let{isWorktreeModeEnabled:r}=await import(`./chunks/worktreeModeEnabled-D68iEHpC.js`);if(r()){let{execIntoTmuxWorktree:t}=await import(`./chunks/worktree-B8apCnVe.js`),n=await t(e);if(n.handled)return;if(n.error){let{exitWithError:e}=await import(`./chunks/process-CNfq37LF.js`);e(n.error)}}}e.includes(`--bare`)&&(process.env.CLAUDE_CODE_SIMPLE=`1`);let{startCapturingEarlyInput:n}=await import(`./chunks/earlyInput-BEjRkAtH.js`);n(),t(`cli_before_main_import`);let{main:r}=await import(`./chunks/main-kOVUGxOS.js`);t(`cli_after_main_import`),await r(),t(`cli_after_main_complete`)}await m();export{};
2
+ import{l as e,o as t}from"./chunks/envUtils-DfkgIdYf.js";var n=globalThis.performance,r=new Map,i=new Map;function a(){return n.now()}function o(e){return r.set(e,a()),{name:e,entryType:`mark`,startTime:r.get(e),duration:0}}function s(e,t,n){let o,s;if(typeof t==`string`){let e=r.get(t),i=n?r.get(n):a();o=e??a(),s=(i??a())-o}else t&&typeof t==`object`?(o=t.start??0,s=(t.end??a())-o):(o=0,s=a());i.set(e,{name:e,startTime:o,duration:s})}function c(e){return e===`mark`?[...r.entries()].map(([e,t])=>({name:e,entryType:`mark`,startTime:t,duration:0})):e===`measure`?[...i.values()].map(e=>({name:e.name,entryType:`measure`,startTime:e.startTime,duration:e.duration})):[]}function l(e,t){return c(t??`mark`).concat(t===void 0?c(`measure`):[]).filter(t=>t.name===e)}function u(e){e===void 0?r.clear():r.delete(e)}function d(e){e===void 0?i.clear():i.delete(e)}var f={now:a,mark:o,measure:s,getEntriesByType:c,getEntriesByName:l,clearMarks:u,clearMeasures:d,clearResourceTimings:(()=>{}),setResourceTimingBufferSize:(()=>{}),markResourceTiming:(()=>{}),get timeOrigin(){return n.timeOrigin},get onresourcetimingbufferfull(){return n.onresourcetimingbufferfull},set onresourcetimingbufferfull(e){},toJSON(){return n.toJSON()}};function p(){globalThis.__performanceShimInstalled||(globalThis.__performanceShimInstalled=!0,globalThis.performance=f)}if(p(),t(),globalThis.MACRO===void 0&&(globalThis.MACRO={VERSION:process.env.CLAUDE_CODE_VERSION||`2.1.888`,BUILD_TIME:new Date().toISOString(),FEEDBACK_CHANNEL:``,ISSUES_EXPLAINER:``,NATIVE_PACKAGE_URL:``,PACKAGE_URL:``,VERSION_CHANGELOG:``}),e(process.env.CLAUDE_CODE_FORCE_INTERACTIVE)){for(let e of[process.stdin,process.stdout,process.stderr])if(!e.isTTY)try{Object.defineProperty(e,"isTTY",{value:!0,configurable:!0})}catch{}}process.env.COREPACK_ENABLE_AUTO_PIN=`0`;async function m(){let e=process.argv.slice(2);if(e.length===1&&(e[0]===`--version`||e[0]===`-v`||e[0]===`-V`)){console.log(`0.0.24 (Work Mate)`);return}let{profileCheckpoint:t}=await import(`./chunks/startupProfiler-BH0FoI66.js`);if(t(`cli_entry`),process.argv[2]===`--acp`){t(`cli_acp_path`);let{runAcpAgent:e}=await import(`./chunks/entry-Bxseqbi_.js`);await e();return}if(e[0]===`job`){t(`cli_templates_path`);let{templatesMain:n}=await import(`./chunks/templateJobs-C8qsPrLj.js`);await n(e.slice(1)),process.exit(0)}if(e[0]===`new`||e[0]===`list`||e[0]===`reply`){console.error(`[deprecated] Use: claude job ${e[0]} ${e.slice(1).join(` `)}`.trim()),t(`cli_templates_path`);let{templatesMain:n}=await import(`./chunks/templateJobs-C8qsPrLj.js`);await n(e),process.exit(0)}if((e.includes(`--tmux`)||e.includes(`--tmux=classic`))&&(e.includes(`-w`)||e.includes(`--worktree`)||e.some(e=>e.startsWith(`--worktree=`)))){t(`cli_tmux_worktree_fast_path`);let{enableConfigs:n}=await import(`./chunks/config-DD8fCYXn.js`);n();let{isWorktreeModeEnabled:r}=await import(`./chunks/worktreeModeEnabled-D68iEHpC.js`);if(r()){let{execIntoTmuxWorktree:t}=await import(`./chunks/worktree-Vm-SNY5x.js`),n=await t(e);if(n.handled)return;if(n.error){let{exitWithError:e}=await import(`./chunks/process-CNfq37LF.js`);e(n.error)}}}e.includes(`--bare`)&&(process.env.CLAUDE_CODE_SIMPLE=`1`);let{startCapturingEarlyInput:n}=await import(`./chunks/earlyInput-BEjRkAtH.js`);n(),t(`cli_before_main_import`);let{main:r}=await import(`./chunks/main-9ksgUUY_.js`);t(`cli_after_main_import`),await r(),t(`cli_after_main_complete`)}await m();export{};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@readmagic/workmate",
3
- "version": "0.0.23",
3
+ "version": "0.0.24",
4
4
  "description": "workMate",
5
5
  "type": "module",
6
6
  "author": "Frandy",
@@ -1 +0,0 @@
1
- import{n as e,t}from"./AgentsMdExternalIncludesDialog-CNEifEyV.js";e();export{t as AgentsMdExternalIncludesDialog};
@@ -1 +0,0 @@
1
- import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{n as t}from"./SelectMulti-Bc6l11_K.js";import{n}from"./select-Bxf5-5sI.js";var r=e((()=>{t(),n()}));export{r as t};
@@ -1 +0,0 @@
1
- import{n as e,t}from"./Doctor-6PXyjIi6.js";e();export{t as Doctor};
@@ -1 +0,0 @@
1
- import{t as e}from"./REPL-CQBJRrT0.js";export{e as REPL};
@@ -1 +0,0 @@
1
- import{lh as e,uh as t}from"./loadAgentsDir-DlPbtIsS.js";t();export{e as clearSearchExtraToolsDescriptionCache};
@@ -1 +0,0 @@
1
- import{t as e}from"./backgroundHousekeeping-CVNIhQg8.js";export{e as startBackgroundHousekeeping};
@@ -1 +0,0 @@
1
- import{n as e,t}from"./caches-DArHxBgL.js";e();export{t as clearSessionCaches};
@@ -1 +0,0 @@
1
- import{Ni as e,Oi as t,wi as n}from"./loadAgentsDir-DlPbtIsS.js";e();export{n as clearCommandsCache,t as getCommands};
@@ -1 +0,0 @@
1
- import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{t}from"./jsx-runtime-Bb4Xn-E0.js";import{n,t as r}from"./Settings-TGp3fPrS.js";var i,a;e((()=>{n(),i=t(),a=async(e,t)=>(0,i.jsx)(r,{onClose:e,context:t,defaultTab:`Config`})}))();export{a as call};
@@ -1 +0,0 @@
1
- import{n as e,r as t,t as n}from"./context-noninteractive-Dd4xIoP1.js";t();export{n as call,e as collectContextData};
@@ -1 +0,0 @@
1
- import{n as e,t}from"./conversation-DUu9qBnq.js";e();export{t as clearConversation};
@@ -1 +0,0 @@
1
- import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{t}from"./jsx-runtime-Bb4Xn-E0.js";import{n,t as r}from"./Doctor-6PXyjIi6.js";var i,a;e((()=>{n(),i=t(),a=(e,t,n)=>Promise.resolve((0,i.jsx)(r,{onDone:e}))}))();export{a as call};
@@ -1 +0,0 @@
1
- import{cc as e,lc as t,sc as n,uc as r}from"./loadAgentsDir-DlPbtIsS.js";r();export{n as drainPendingExtraction,e as executeExtractMemories,t as initExtractMemories};
@@ -1 +0,0 @@
1
- import{n as e,r as t,t as n}from"./fast-eGx2IxD7.js";t();export{n as FastModePicker,e as call};
@@ -1 +0,0 @@
1
- import{n as e,t}from"./fetchModelList-CxLsVNsu.js";e();export{t as fetchAvailableModels};
@@ -1 +0,0 @@
1
- import{n as e,r as t}from"./firstPartyEventLogger-M6UMli2c.js";e();export{t as initialize1PEventLogging};
@@ -1 +0,0 @@
1
- import{Kt as e,mn as t,on as n}from"./loadAgentsDir-DlPbtIsS.js";t();export{e as executeSessionEndHooks,n as getSessionEndHookTimeoutMs};
@@ -1 +0,0 @@
1
- import{o as e,t}from"./loadAgentsDir-DlPbtIsS.js";e();export{t as clearAgentDefinitionsCache};
@@ -1 +0,0 @@
1
- import{a as e,o as t,s as n,t as r}from"./localSearch-CK-sFzPm.js";t();export{r as clearSkillIndexCache,e as getSkillIndex,n as searchSkills};
@@ -1 +0,0 @@
1
- import{n as e,t}from"./pluginStartupCheck-DTMa6TgL.js";e();export{t as getPluginEditableScopes};
@@ -1 +0,0 @@
1
- import{i as e,r as t}from"./prompt-mM79EGnT.js";t();export{e as isDeferredTool};
@@ -1 +0,0 @@
1
- import{fx as e,vx as t}from"./loadAgentsDir-DlPbtIsS.js";t();export{e as clearPromptCache};
@@ -1 +0,0 @@
1
- import{gC as e,yC as t}from"./loadAgentsDir-DlPbtIsS.js";t();export{e as SandboxManager};
@@ -1 +0,0 @@
1
- import{_h as e,yh as t}from"./loadAgentsDir-DlPbtIsS.js";e();export{t as isSearchExtraToolsEnabled};
@@ -1 +0,0 @@
1
- import{Hf as e,Vf as t}from"./loadAgentsDir-DlPbtIsS.js";t();export{e as registerSessionFileAccessHooks};
@@ -1 +0,0 @@
1
- import{n as e,r as t}from"./sessionObserver-DS4G6mb9.js";t();export{e as heuristicObserverBackend};
@@ -1 +0,0 @@
1
- import{Gr as e,_r as t,wr as n}from"./loadAgentsDir-DlPbtIsS.js";t();export{n as linkSessionToPR,e as recordTranscript};
@@ -1 +0,0 @@
1
- import{t as e}from"./sinks-Cz2HfgMU.js";export{e as initSinks};
@@ -1 +0,0 @@
1
- import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{t}from"./jsx-runtime-Bb4Xn-E0.js";import{n,t as r}from"./Settings-TGp3fPrS.js";async function i(e,t){return(0,a.jsx)(r,{onClose:e,context:t,defaultTab:`Status`})}var a;e((()=>{n(),a=t()}))();export{i as call};
@@ -1 +0,0 @@
1
- import{a as e,r as t}from"./switcher-CAajZeNL.js";t();export{e as restoreActiveProvider};
@@ -1 +0,0 @@
1
- import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{Ip as t,Lp as n}from"./loadAgentsDir-DlPbtIsS.js";import{_ as r,d as i,r as a}from"./model-BwBG0V1u.js";function o(){let e=n(e=>e.mainLoopModel);return r(n(e=>e.mainLoopModelForSession)??e??a())}var s=e((()=>{t(),i()}));export{o as n,s as t};
@@ -1 +0,0 @@
1
- import{n as e,o as t}from"./rolldown-runtime-DaDcL9Zw.js";import{Ec as n,Sc as r}from"./loadAgentsDir-DlPbtIsS.js";import{ai as i}from"./src-DL3w8VPk.js";import{n as a,t as o}from"./toolPool-CX5wDBi1.js";function s(e,t,n){return(0,c.useMemo)(()=>a(e,r(n,t),n.mode),[e,t,n,!1,!1])}var c,l=e((()=>{c=t(i(),1),n(),o()}));export{s as n,l as t};
@@ -1 +0,0 @@
1
- import{gt as e,xt as t}from"./loadAgentsDir-DlPbtIsS.js";t();export{e as execIntoTmuxWorktree};