@readmagic/workmate 0.0.17 → 0.0.18

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 (337) hide show
  1. package/dist/chunks/{AddWorkspaceDirectory-YAhnVwyN.js → AddWorkspaceDirectory-Wa6Q24nu.js} +1 -1
  2. package/dist/chunks/{AgentsMdExternalIncludesDialog-Ba4GYFl3.js → AgentsMdExternalIncludesDialog-3I_KlOLv.js} +1 -1
  3. package/dist/chunks/AgentsMdExternalIncludesDialog-h150UBir.js +1 -0
  4. package/dist/chunks/{App-mri25OrC.js → App-BgPs1Bu8.js} +1 -1
  5. package/dist/chunks/{ApproveApiKey-DCw6d7dm.js → ApproveApiKey-BxpapUq0.js} +1 -1
  6. package/dist/chunks/ApproveApiKey-DIIIi6U8.js +1 -0
  7. package/dist/chunks/{BackgroundTasksDialog-CZND8e_Z.js → BackgroundTasksDialog-nfRmiGl3.js} +1 -1
  8. package/dist/chunks/{BypassPermissionsModeDialog-B5QBJTB4.js → BypassPermissionsModeDialog-8Cq982M0.js} +1 -1
  9. package/dist/chunks/{DiffDialog-Bd-DcTsK.js → DiffDialog-DwQTDWYh.js} +1 -1
  10. package/dist/chunks/Doctor-Beo5yEMD.js +1 -0
  11. package/dist/chunks/{Doctor-C9t7udHN.js → Doctor-BxXAGr-Z.js} +1 -1
  12. package/dist/chunks/{ExitFlow-CShdrKmr.js → ExitFlow-CVIuvrHT.js} +1 -1
  13. package/dist/chunks/{Grove-CClEZT2e.js → Grove-_QX_wR9C.js} +1 -1
  14. package/dist/chunks/{HybridTransport-DyEuslQB.js → HybridTransport-BG2VIIBC.js} +1 -1
  15. package/dist/chunks/{InvalidConfigDialog-Wyrk_cXR.js → InvalidConfigDialog-BDdMkuaL.js} +1 -1
  16. package/dist/chunks/{InvalidSettingsDialog-Cr9fmSyh.js → InvalidSettingsDialog-DSCqbVER.js} +1 -1
  17. package/dist/chunks/{MCPConnectionManager-BnUw0nYN.js → MCPConnectionManager-Cer1UawR.js} +1 -1
  18. package/dist/chunks/{MCPToolListView-CY2EezWF.js → MCPToolListView-DndNWDr1.js} +1 -1
  19. package/dist/chunks/{McpParsingWarnings-BF4np2Y3.js → McpParsingWarnings-Cr_n2QR6.js} +1 -1
  20. package/dist/chunks/{MessageSelector-Dtt2Sf65.js → MessageSelector-BfmbAG8E.js} +1 -1
  21. package/dist/chunks/{Messages-D5Uuapmf.js → Messages-CUJJ6nHV.js} +1 -1
  22. package/dist/chunks/{Onboarding-BAJXV7Ay.js → Onboarding-Cz3CfOTl.js} +1 -1
  23. package/dist/chunks/{PromptInputFooterSuggestions-Cm4WN3qd.js → PromptInputFooterSuggestions-GhA5Qa1I.js} +1 -1
  24. package/dist/chunks/{PromptInputHelpMenu-ESj8sOpK.js → PromptInputHelpMenu-sX_yHORM.js} +1 -1
  25. package/dist/chunks/{QueryEngine-B79JLwG4.js → QueryEngine-C6Dx_-U8.js} +1 -1
  26. package/dist/chunks/{REPL-cAXdORs2.js → REPL-BPig-OIh.js} +38 -38
  27. package/dist/chunks/REPL-e5wWV2Sl.js +1 -0
  28. package/dist/chunks/{RemoteSessionManager-C5pAD0Lh.js → RemoteSessionManager-Cax4g0GH.js} +1 -1
  29. package/dist/chunks/{ResumeConversation-NSVT3gn7.js → ResumeConversation-e5sISbWn.js} +1 -1
  30. package/dist/chunks/{SSETransport-CDGMGrxN.js → SSETransport-BuDKErlN.js} +1 -1
  31. package/dist/chunks/SearchExtraToolsTool-B_z74zwG.js +1 -0
  32. package/dist/chunks/{Settings-_b5Yxt_9.js → Settings-B9rxF2wR.js} +2 -2
  33. package/dist/chunks/{TeleportProgress-8cS6aHVO.js → TeleportProgress-BUtze4qa.js} +1 -1
  34. package/dist/chunks/{TeleportRepoMismatchDialog-B0epkMgp.js → TeleportRepoMismatchDialog-Dp7rzrrz.js} +1 -1
  35. package/dist/chunks/{TeleportResumeWrapper-Bb14JeEk.js → TeleportResumeWrapper-Ch2osY21.js} +1 -1
  36. package/dist/chunks/{ThemePicker-CnX8faYA.js → ThemePicker-AA-0hjpq.js} +1 -1
  37. package/dist/chunks/{TrustDialog-6wJF3W6K.js → TrustDialog-rO5dZ8G-.js} +1 -1
  38. package/dist/chunks/{ValidationErrorsList-Cuq6W2yc.js → ValidationErrorsList-DayOwxq9.js} +1 -1
  39. package/dist/chunks/{add-dir-LLAv-rGS.js → add-dir-Cz33IGht.js} +1 -1
  40. package/dist/chunks/{agentDisplay-QqGqcHGz.js → agentDisplay-nVTmC7tL.js} +1 -1
  41. package/dist/chunks/{agents-DFPEienW.js → agents-BQwi-6GV.js} +1 -1
  42. package/dist/chunks/{agents-C8wRUTNV.js → agents-rfuJUSSc.js} +1 -1
  43. package/dist/chunks/{allErrors-DUYYPpdH.js → allErrors-YIRWFBD9.js} +1 -1
  44. package/dist/chunks/api-CGk-0H2x.js +1 -0
  45. package/dist/chunks/{api-B3Wnozaf.js → api-DAyhTxgY.js} +1 -1
  46. package/dist/chunks/{auth-CQGJitIV.js → auth-BzrroWLq.js} +1 -1
  47. package/dist/chunks/auth-DWWb8STf.js +1 -0
  48. package/dist/chunks/auth-DsqlBO-Q.js +1 -0
  49. package/dist/chunks/{backgroundHousekeeping-Bjb_Jc7L.js → backgroundHousekeeping-CXv_Pm5h.js} +2 -2
  50. package/dist/chunks/backgroundHousekeeping-Crx3oXIu.js +1 -0
  51. package/dist/chunks/{banner-HfMnBd03.js → banner-BfIcVEUU.js} +1 -1
  52. package/dist/chunks/{bg-DltfF1_K.js → bg-C15c_rMK.js} +2 -2
  53. package/dist/chunks/{branch-BWq5ynjm.js → branch-BEaujq-M.js} +1 -1
  54. package/dist/chunks/{break-cache-Cd1yQ-0h.js → break-cache-XKbOAw-u.js} +2 -2
  55. package/dist/chunks/{bridgeConfig-B3mR0kJ0.js → bridgeConfig-Bxkrv8ZL.js} +1 -1
  56. package/dist/chunks/bridgeConfig-Ctl7I_RR.js +1 -0
  57. package/dist/chunks/{bridgeMessaging-wZ5EKxW_.js → bridgeMessaging-BcSjIPCZ.js} +1 -1
  58. package/dist/chunks/bridgePointer-CGhOBNMg.js +1 -0
  59. package/dist/chunks/bridgeStatusUtil-DBWBTU31.js +1 -0
  60. package/dist/chunks/{btw-XNgXHnNr.js → btw-8JqSG3o7.js} +1 -1
  61. package/dist/chunks/caches-dnO4Ae_m.js +1 -0
  62. package/dist/chunks/caches-lPzD_yGv.js +1 -0
  63. package/dist/chunks/{capacityWake-LRiPhPeM.js → capacityWake-C24_KT1x.js} +1 -1
  64. package/dist/chunks/{ccrClient-EisctZbc.js → ccrClient-CH6PsxJJ.js} +1 -1
  65. package/dist/chunks/{claudeDesktop-CB3UCt7U.js → claudeDesktop-CovdLe-b.js} +1 -1
  66. package/dist/chunks/{clear-BjtPf2Jb.js → clear-D72LxXA6.js} +1 -1
  67. package/dist/chunks/{cliLaunch-xIVvtPZy.js → cliLaunch-DDA65zeR.js} +1 -1
  68. package/dist/chunks/client-BFjMSlp7.js +1 -0
  69. package/dist/chunks/client-Byat5HpG.js +1 -0
  70. package/dist/chunks/client-Dzx24jGZ.js +1 -0
  71. package/dist/chunks/{client-Bb2eZnuq.js → client-eLOYyeES.js} +1 -1
  72. package/dist/chunks/{client-DNEVh6Wu.js → client-o5_awagP.js} +1 -1
  73. package/dist/chunks/commands-D3lQbt9p.js +1 -0
  74. package/dist/chunks/{compact-w8AhLkr6.js → compact--fnu8Zd-.js} +1 -1
  75. package/dist/chunks/{config-D78R57VA.js → config-BlQhL9Bh.js} +1 -1
  76. package/dist/chunks/{config-BSkuQZNf.js → config-BybjRr09.js} +1 -1
  77. package/dist/chunks/config-CPGSP_1Z.js +1 -0
  78. package/dist/chunks/{context-Btn2JU2y.js → context-D6PaqwrR.js} +1 -1
  79. package/dist/chunks/context-noninteractive-CwlOID3q.js +1 -0
  80. package/dist/chunks/{context-noninteractive-044464Vs.js → context-noninteractive-CxoMCfR4.js} +1 -1
  81. package/dist/chunks/conversation-BLEWB1BE.js +1 -0
  82. package/dist/chunks/{conversation-a82khZ_n.js → conversation-Bos7yTIv.js} +1 -1
  83. package/dist/chunks/{createSSHSession-C0KSI0fJ.js → createSSHSession-B3FdForb.js} +1 -1
  84. package/dist/chunks/createSession-B4wkDNam.js +1 -0
  85. package/dist/chunks/{createSession-8ScCWTKb.js → createSession-C0e_DHsW.js} +1 -1
  86. package/dist/chunks/{crossProjectResume-BCN462Wa.js → crossProjectResume-C5QtstD6.js} +1 -1
  87. package/dist/chunks/cwd-BfiQQAqr.js +1 -0
  88. package/dist/chunks/{cwd-Besi3Os3.js → cwd-Dj2ynhWd.js} +1 -1
  89. package/dist/chunks/{datadog-BqINRWAW.js → datadog-ZxeaKwKd.js} +1 -1
  90. package/dist/chunks/{debug-BQj6h99Q.js → debug-D7OBvqC2.js} +1 -1
  91. package/dist/chunks/{debugUtils-B86DM1Sp.js → debugUtils-B-GMBTBk.js} +1 -1
  92. package/dist/chunks/{detached--wGwkuHX.js → detached-uMuMcLsV.js} +1 -1
  93. package/dist/chunks/{detectRepository-Qy3zKoyn.js → detectRepository-AVEUw4lk.js} +1 -1
  94. package/dist/chunks/detectRepository-CWI2xcdR.js +1 -0
  95. package/dist/chunks/{diff-CcrSQNvQ.js → diff-BA2vN7sD.js} +1 -1
  96. package/dist/chunks/{directoryCompletion-i2oWpaUe.js → directoryCompletion-CLcmLin8.js} +1 -1
  97. package/dist/chunks/doctor-BV6zhneX.js +1 -0
  98. package/dist/chunks/{entry-oVZ7Z59B.js → entry-cou5DS53.js} +2 -2
  99. package/dist/chunks/{esm-BZciQG9N.js → esm-D9-9wS1F.js} +1 -1
  100. package/dist/chunks/{execFileNoThrow-DYm1GeGn.js → execFileNoThrow-BHDSgTpZ.js} +1 -1
  101. package/dist/chunks/{execSyncWrapper-CqvQqke-.js → execSyncWrapper-pYxQXqb-.js} +1 -1
  102. package/dist/chunks/{exit-jikLI2Zh.js → exit-DdZJHhy2.js} +1 -1
  103. package/dist/chunks/{extraUsage-BT3in1Aj.js → extraUsage-CHnG6JNH.js} +1 -1
  104. package/dist/chunks/extractMemories-DxGHxoNO.js +1 -0
  105. package/dist/chunks/fast-Bf-g-wR6.js +1 -0
  106. package/dist/chunks/{fast-CKhtBOx7.js → fast-Bl_0cs9e.js} +1 -1
  107. package/dist/chunks/{fetchModelList-DmaMgpa2.js → fetchModelList-CheIBH5f.js} +1 -1
  108. package/dist/chunks/fetchModelList-vk-RMDfG.js +1 -0
  109. package/dist/chunks/{fileSuggestions-BfG3sbET.js → fileSuggestions-Dl87JhBr.js} +1 -1
  110. package/dist/chunks/{firstPartyEventLogger-Q3fMF0BR.js → firstPartyEventLogger-Cw9Bc3on.js} +2 -2
  111. package/dist/chunks/firstPartyEventLogger-DvsZdBy2.js +1 -0
  112. package/dist/chunks/flushGate-BD3Tk3_k.js +1 -0
  113. package/dist/chunks/{gemini-L8Gj2B4H.js → gemini-BARUjH_t.js} +1 -1
  114. package/dist/chunks/{generateSessionName-cAL5T7pG.js → generateSessionName-CHaK44K-.js} +1 -1
  115. package/dist/chunks/{genericProcessUtils-Bbcbi11g.js → genericProcessUtils-D5hCZ2ho.js} +1 -1
  116. package/dist/chunks/git-Bujlb5tq.js +1 -0
  117. package/dist/chunks/{git-DplvjXEY.js → git-CNhyfMtb.js} +1 -1
  118. package/dist/chunks/{githubRepoPathMapping-Px3_GeD1.js → githubRepoPathMapping-Dhz4cvw2.js} +1 -1
  119. package/dist/chunks/{goal-D-x2WXm7.js → goal-fTQFogdl.js} +1 -1
  120. package/dist/chunks/{grok-DtypRM4d.js → grok-D0J4IiCe.js} +1 -1
  121. package/dist/chunks/{grove-CSivzrhe.js → grove-mDH4wkhM.js} +1 -1
  122. package/dist/chunks/{help-DKZhC0lL.js → help-Dr7st1Yv.js} +1 -1
  123. package/dist/chunks/hooks-C5YSYzSl.js +1 -0
  124. package/dist/chunks/{hooks-D_afUDcs.js → hooks-DCfpFhl2.js} +1 -1
  125. package/dist/chunks/{initReplBridge-sTaq4a0K.js → initReplBridge-BFYTAFlT.js} +1 -1
  126. package/dist/chunks/{install-BWe3Jz4M.js → install-CjacxFXg.js} +1 -1
  127. package/dist/chunks/{instrumentation-IljwxX0V.js → instrumentation-DS2S1m1a.js} +3 -3
  128. package/dist/chunks/{job-N25KhSUu.js → job-Dry-GMc5.js} +1 -1
  129. package/dist/chunks/{jwtUtils-YCoZL0FW.js → jwtUtils-ClCcC8lO.js} +1 -1
  130. package/dist/chunks/{keybindings-DLEorhlY.js → keybindings-D01jzjKu.js} +1 -1
  131. package/dist/chunks/{launchLocalMemory-DJsuNLIf.js → launchLocalMemory-_T0oHfh9.js} +1 -1
  132. package/dist/chunks/{launchOnboarding-CVvuxeH-.js → launchOnboarding-D4fS6pLc.js} +1 -1
  133. package/dist/chunks/{external-CEp-aPkt.js → lazySchema-DULtBUCI.js} +1 -1
  134. package/dist/chunks/{loadAgentsDir-CbtNPJV3.js → loadAgentsDir-DnsldjYU.js} +560 -560
  135. package/dist/chunks/loadAgentsDir-xG1HswS_.js +1 -0
  136. package/dist/chunks/{loadPluginHooks-BxkDBFd6.js → loadPluginHooks-CRoYa_il.js} +1 -1
  137. package/dist/chunks/loader-C-PQ3onD.js +1 -0
  138. package/dist/chunks/localSearch-B17Mzd84.js +1 -0
  139. package/dist/chunks/{localSearch-B5mTHBwK.js → localSearch-nuNjYVKq.js} +1 -1
  140. package/dist/chunks/{log-BlJ7CcKG.js → log-CR0v5KUR.js} +1 -1
  141. package/dist/chunks/{logoV2Utils-D5nRpirL.js → logoV2Utils-CZwL_VX1.js} +1 -1
  142. package/dist/chunks/{magicDocs-C9aIo4Oe.js → magicDocs-D0rjtxup.js} +1 -1
  143. package/dist/chunks/{main-DeUt_aE2.js → main-C8n_p7yX.js} +11 -11
  144. package/dist/chunks/{main-Zh18lf2J.js → main-DKqCPH3G.js} +2 -2
  145. package/dist/chunks/managedEnv-C7bVtcgA.js +1 -0
  146. package/dist/chunks/managedEnv-d7HliQYg.js +1 -0
  147. package/dist/chunks/{mappers-Del1KoA7.js → mappers-BIDALdjB.js} +1 -1
  148. package/dist/chunks/{mcp-nnBVM5Lt.js → mcp-BcEApfqn.js} +1 -1
  149. package/dist/chunks/{mcp-D7vMhEOV.js → mcp-CBbVcOTy.js} +1 -1
  150. package/dist/chunks/{mcp-Bh3MNBIj.js → mcp-DYtfHeRa.js} +3 -3
  151. package/dist/chunks/{memoize-_2f7NWDv.js → memoize-C7xmvAQ0.js} +1 -1
  152. package/dist/chunks/{memory-DtqQhHu8.js → memory-CijapyZk.js} +1 -1
  153. package/dist/chunks/{mode-DPbrxU32.js → mode-CajUX4Uz.js} +1 -1
  154. package/dist/chunks/model-CyF5u3zH.js +1 -0
  155. package/dist/chunks/model-DaYZWYJe.js +1 -0
  156. package/dist/chunks/model-xI2MbgRj.js +1 -0
  157. package/dist/chunks/{modelOptions-SMq3one0.js → modelOptions-Ct80yABl.js} +1 -1
  158. package/dist/chunks/{nativeInstaller-DTJ4clp-.js → nativeInstaller-C6aWHxve.js} +1 -1
  159. package/dist/chunks/{omit-CMldTqqy.js → omit-BhPlISSj.js} +1 -1
  160. package/dist/chunks/{onChangeAppState-EAnsmOuo.js → onChangeAppState-BOJd4Yce.js} +1 -1
  161. package/dist/chunks/{openai-D9KvLMrj.js → openai-wsPCDwGL.js} +1 -1
  162. package/dist/chunks/{panel-Bg_0PHE6.js → panel-BKMLX5AR.js} +1 -1
  163. package/dist/chunks/parser-B-QFQfSO.js +1 -0
  164. package/dist/chunks/{parser-a2S_eFyE.js → parser-Dy-RMf4a.js} +1 -1
  165. package/dist/chunks/{partition-B8Y4jvjW.js → partition-_qZZlGjS.js} +1 -1
  166. package/dist/chunks/{permissions-cDtIZRM1.js → permissions-CcjGscyg.js} +1 -1
  167. package/dist/chunks/{pidLock-Br3_YNi_.js → pidLock-Cm9FWa4w.js} +2 -2
  168. package/dist/chunks/{plan-dG2H4eQl.js → plan-CTiLy_c4.js} +1 -1
  169. package/dist/chunks/{platform-DVeTi9mp.js → platform-BZm4WVLM.js} +1 -1
  170. package/dist/chunks/{plugin-CzQHuIlP.js → plugin-D7vjs6Hu.js} +1 -1
  171. package/dist/chunks/{pluginAutoupdate-B9W_vxOG.js → pluginAutoupdate-DzK-fXJC.js} +1 -1
  172. package/dist/chunks/{pluginBlocklist-BvdBsnJG.js → pluginBlocklist-B3JVl1h2.js} +1 -1
  173. package/dist/chunks/{pluginCliCommands-NKIgFTUF.js → pluginCliCommands-CubOvlhc.js} +1 -1
  174. package/dist/chunks/{pluginFlagging-C0PtAJEg.js → pluginFlagging-Dp7W2eL8.js} +1 -1
  175. package/dist/chunks/{pluginOperations-wUUdFpu9.js → pluginOperations-BxHoy0pC.js} +1 -1
  176. package/dist/chunks/{pluginStartupCheck-p0njap1l.js → pluginStartupCheck-CL24_zVV.js} +1 -1
  177. package/dist/chunks/pluginStartupCheck-CtX6QkdO.js +1 -0
  178. package/dist/chunks/{plugins-B9WBqOAW.js → plugins-DA3lpRU4.js} +1 -1
  179. package/dist/chunks/pollConfig-2nFzv6Hy.js +1 -0
  180. package/dist/chunks/poorMode-DyAWNRRM.js +1 -0
  181. package/dist/chunks/{poorMode-wm2WkPF0.js → poorMode-aMzKXz6G.js} +1 -1
  182. package/dist/chunks/{print-G3DgPTxy.js → print-BrqZ3AgP.js} +5 -5
  183. package/dist/chunks/{processBashCommand-zLWgCRws.js → processBashCommand-C6mBgRVz.js} +1 -1
  184. package/dist/chunks/{processSlashCommand-BHBnHBjj.js → processSlashCommand-t0-BVku8.js} +1 -1
  185. package/dist/chunks/prompt-BJ3xYAvE.js +1 -0
  186. package/dist/chunks/{prompt-BRGC5U9Y.js → prompt-CzQkcxfg.js} +3 -3
  187. package/dist/chunks/prompt-Di2lNwYp.js +1 -0
  188. package/dist/chunks/{promptEditor-CRIw6vJS.js → promptEditor-C6w1vT5E.js} +1 -1
  189. package/dist/chunks/{protocolHandler--eQQuSyx.js → protocolHandler-B3bQyB6W.js} +1 -1
  190. package/dist/chunks/{proxy-C0j74LqT.js → proxy-DFIxRT0i.js} +1 -1
  191. package/dist/chunks/{reconciler-DiU1RvGD.js → reconciler-p4lAu9ft.js} +1 -1
  192. package/dist/chunks/{refresh-DEXe3Lmx.js → refresh-DCQChX5A.js} +1 -1
  193. package/dist/chunks/{registerProtocol-DrWIX3Lb.js → registerProtocol-CrzdmgCD.js} +1 -1
  194. package/dist/chunks/{reload-plugins-Cl6wvT6V.js → reload-plugins-BnZzcRcd.js} +1 -1
  195. package/dist/chunks/{remoteBridgeCore-DnFZoXaw.js → remoteBridgeCore-DAK9KSWp.js} +1 -1
  196. package/dist/chunks/remoteManagedSettings-DkLfclxa.js +1 -0
  197. package/dist/chunks/{rename-CdzxOzN5.js → rename-OSN3Ua2J.js} +1 -1
  198. package/dist/chunks/{renderOptions-CkqTbz6d.js → renderOptions-XgkOdKCJ.js} +1 -1
  199. package/dist/chunks/{resume-DgFXYWTN.js → resume-K9q5B1li.js} +1 -1
  200. package/dist/chunks/{ripgrep-DsLUmulz.js → ripgrep-C_XuTqp3.js} +1 -1
  201. package/dist/chunks/ripgrep-DLPH9MP9.js +1 -0
  202. package/dist/chunks/{runtimeObserver-CwtRE2cj.js → runtimeObserver-CuTsWhhF.js} +1 -1
  203. package/dist/chunks/{runtimeObserver-Dov-m2dl.js → runtimeObserver-D9sujsqj.js} +2 -2
  204. package/dist/chunks/sandbox-adapter-CRxZBMAP.js +1 -0
  205. package/dist/chunks/{sandbox-toggle-DWCrG9zV.js → sandbox-toggle-oasrWfbj.js} +1 -1
  206. package/dist/chunks/searchExtraTools-BAYzzTE8.js +1 -0
  207. package/dist/chunks/{session-L5191BSn.js → session-c46jULDV.js} +1 -1
  208. package/dist/chunks/sessionFileAccessHooks-CwnjOk6S.js +1 -0
  209. package/dist/chunks/{sessionObserver-DpY0DOjI.js → sessionObserver-Cu7vykWp.js} +1 -1
  210. package/dist/chunks/sessionObserver-DNjDoJmy.js +1 -0
  211. package/dist/chunks/{sessionState-BlbRQ3Y6.js → sessionState-B3tFm9SC.js} +1 -1
  212. package/dist/chunks/sessionStorage-CVZ0MUSE.js +1 -0
  213. package/dist/chunks/{sessionTracing-DqVx8aFD.js → sessionTracing-BRp_Ej-e.js} +1 -1
  214. package/dist/chunks/{settings-CvhsRFaT.js → settings-DUyIag_5.js} +4 -4
  215. package/dist/chunks/settings-DsqFBv6J.js +1 -0
  216. package/dist/chunks/settingsSync-yE43qjMS.js +1 -0
  217. package/dist/chunks/{setup-DvnKMqDy.js → setup-CFOc-hPM.js} +2 -2
  218. package/dist/chunks/{shadowedRuleDetection-Gerk3t93.js → shadowedRuleDetection-ChoqK1Iq.js} +1 -1
  219. package/dist/chunks/{shellQuote-D3Ocv_U-.js → shellQuote-C-7PluUY.js} +1 -1
  220. package/dist/chunks/{sideQuestion-RndkXExy.js → sideQuestion-CkC27Pf3.js} +1 -1
  221. package/dist/chunks/sinks-B64r_OBE.js +1 -0
  222. package/dist/chunks/{sinks-CfzgqLH5.js → sinks-C9qCsi94.js} +1 -1
  223. package/dist/chunks/{skillChangeDetector-BQx4xe_b.js → skillChangeDetector-CLnn22Jo.js} +1 -1
  224. package/dist/chunks/{skillGapStore-CLxhWLyq.js → skillGapStore-DC8s2Whn.js} +2 -2
  225. package/dist/chunks/{skillLifecycle-CSNX2qOH.js → skillLifecycle-BaqH5lw_.js} +2 -2
  226. package/dist/chunks/{skillSearchPanel-CsQDjy_E.js → skillSearchPanel-Dtvyo2Dk.js} +2 -2
  227. package/dist/chunks/{skills-DM9ACPW-.js → skills-DXW57WeY.js} +1 -1
  228. package/dist/chunks/{startupProfiler-2sjXZkIP.js → startupProfiler-BqUlQEaV.js} +1 -1
  229. package/dist/chunks/startupProfiler-yBU6FaAV.js +1 -0
  230. package/dist/chunks/{state-BPFYBqm1.js → state-B3zvBu4R.js} +1 -1
  231. package/dist/chunks/state-mHtumqEo.js +1 -0
  232. package/dist/chunks/{stats-Dq-5qizS.js → stats-vvwEVnon.js} +1 -1
  233. package/dist/chunks/status--Ql7l0VG.js +1 -0
  234. package/dist/chunks/{status-C5v7KsX4.js → status-g_dhM6Ep.js} +1 -1
  235. package/dist/chunks/{statusNoticeHelpers-BY_8pK19.js → statusNoticeHelpers-B235FWru.js} +1 -1
  236. package/dist/chunks/{stringUtils-BjnclTLB.js → stringUtils-CGZoOfer.js} +1 -1
  237. package/dist/chunks/switcher-Cb9R9247.js +1 -0
  238. package/dist/chunks/switcher-OAeeTHHt.js +1 -0
  239. package/dist/chunks/{syncCache-Dff4hbz4.js → syncCache-BiqQEess.js} +1 -1
  240. package/dist/chunks/{tasks-qVyXOLBf.js → tasks--7yJk7MD.js} +1 -1
  241. package/dist/chunks/{teleport-Deq_ecN9.js → teleport-ja50aVy3.js} +1 -1
  242. package/dist/chunks/{templateJobs-CntPyct-.js → templateJobs-DSM3tNDS.js} +1 -1
  243. package/dist/chunks/{terminalSetup-JJiXmszo.js → terminalSetup-BpZXqE_G.js} +1 -1
  244. package/dist/chunks/{terminalSetup-DDvQ0K5e.js → terminalSetup-C735-5lZ.js} +1 -1
  245. package/dist/chunks/{theme-DVWYzSct.js → theme-BX54e0r7.js} +1 -1
  246. package/dist/chunks/{tmux-g0cQ0Buz.js → tmux-BIdWN33b.js} +1 -1
  247. package/dist/chunks/{toolEventObserver-BZn8ZJB5.js → toolEventObserver-O6ljakS9.js} +1 -1
  248. package/dist/chunks/{toolPool-Dzp1ob3I.js → toolPool-H_kXc8vo.js} +1 -1
  249. package/dist/chunks/trustedDevice-Dm_SY3Ko.js +1 -0
  250. package/dist/chunks/{trustedDevice-CdLAZK6m.js → trustedDevice-Kyid5Fuy.js} +1 -1
  251. package/dist/chunks/{types-BomO8WUz.js → types-DDku8UKF.js} +2 -2
  252. package/dist/chunks/{udsClient-DSvRPCvR.js → udsClient-B2yCKNgT.js} +1 -1
  253. package/dist/chunks/{upstreamproxy-DYoLvdM9.js → upstreamproxy--RTAcgrE.js} +1 -1
  254. package/dist/chunks/{useExitOnCtrlCDWithKeybindings-YSWYVWk6.js → useExitOnCtrlCDWithKeybindings-BnmDpMkm.js} +1 -1
  255. package/dist/chunks/useMainLoopModel-DG8pghH7.js +1 -0
  256. package/dist/chunks/{useManagePlugins-DfuI4Nhd.js → useManagePlugins-HMHtjIY-.js} +1 -1
  257. package/dist/chunks/{useMergedTools-B4qRVJ8b.js → useMergedTools-ChLA8dsy.js} +1 -1
  258. package/dist/chunks/{useSearchInput-DfUNYhqC.js → useSearchInput-DqymtQhH.js} +1 -1
  259. package/dist/chunks/{useSettingsErrors-Bls74ocI.js → useSettingsErrors-Bs9uyzW4.js} +1 -1
  260. package/dist/chunks/{userAgent-CNPTS7ix.js → userAgent-D8vvjitA.js} +1 -1
  261. package/dist/chunks/{util-6aJHnBQ_.js → util-CC-NRn16.js} +1 -1
  262. package/dist/chunks/validatePlugin-yCb8gsVF.js +1 -0
  263. package/dist/chunks/{vim-s-wmybpU.js → vim-CIK2DjfK.js} +1 -1
  264. package/dist/chunks/{which-BR8YVCCW.js → which-3MmqfsNV.js} +1 -1
  265. package/dist/chunks/windowsPaths-Dd_S96Bq.js +1 -0
  266. package/dist/chunks/{windowsPaths-BmXyrasP.js → windowsPaths-x-CxdtFP.js} +1 -1
  267. package/dist/chunks/{workSecret-BUd8cQ6-.js → workSecret-BsolC5S7.js} +1 -1
  268. package/dist/chunks/{workerRegistry-BwJ54Lzk.js → workerRegistry-DE4Ghp-n.js} +2 -2
  269. package/dist/chunks/worktree-D-CgffvU.js +1 -0
  270. package/dist/cli.js +1 -1
  271. package/package.json +1 -1
  272. package/dist/chunks/AgentsMdExternalIncludesDialog--D4BeNAN.js +0 -1
  273. package/dist/chunks/ApproveApiKey-lv4Sg0RR.js +0 -1
  274. package/dist/chunks/Doctor-V-JLC4e3.js +0 -1
  275. package/dist/chunks/REPL-B7evbhvN.js +0 -1
  276. package/dist/chunks/SearchExtraToolsTool-CddjJcAH.js +0 -1
  277. package/dist/chunks/api-BAT--5sp.js +0 -1
  278. package/dist/chunks/auth-DaJXqwN5.js +0 -1
  279. package/dist/chunks/auth-DkhPycBL.js +0 -1
  280. package/dist/chunks/backgroundHousekeeping-V-dg2j2E.js +0 -1
  281. package/dist/chunks/bridgeConfig-D31i4BRi.js +0 -1
  282. package/dist/chunks/bridgePointer-CiHy2tTN.js +0 -1
  283. package/dist/chunks/bridgeStatusUtil-mvVQSVN-.js +0 -1
  284. package/dist/chunks/caches-ByLjTvdy.js +0 -1
  285. package/dist/chunks/caches-ckqJ4Qso.js +0 -1
  286. package/dist/chunks/client-Bl43xcRk.js +0 -1
  287. package/dist/chunks/client-Pap_HyZZ.js +0 -1
  288. package/dist/chunks/client-zhozU2ws.js +0 -1
  289. package/dist/chunks/commands-BDhn7EPO.js +0 -1
  290. package/dist/chunks/config-CbAvTdZ7.js +0 -1
  291. package/dist/chunks/context-noninteractive-ulRLlYg5.js +0 -1
  292. package/dist/chunks/conversation-D08lU377.js +0 -1
  293. package/dist/chunks/createSession-CnlPXXkA.js +0 -1
  294. package/dist/chunks/cwd-DpqwaYHw.js +0 -1
  295. package/dist/chunks/detectRepository-tRUoPOKy.js +0 -1
  296. package/dist/chunks/doctor-DRFDBrH1.js +0 -1
  297. package/dist/chunks/extractMemories-BsQU2bVO.js +0 -1
  298. package/dist/chunks/fast-B9vVL3sY.js +0 -1
  299. package/dist/chunks/fetchModelList-BeL40TyR.js +0 -1
  300. package/dist/chunks/firstPartyEventLogger-6GwZ6VLr.js +0 -1
  301. package/dist/chunks/flushGate-COa_KO98.js +0 -1
  302. package/dist/chunks/git-BaSq69E7.js +0 -1
  303. package/dist/chunks/hooks-DvVuNKRx.js +0 -1
  304. package/dist/chunks/lazySchema-B4D4qJVE.js +0 -1
  305. package/dist/chunks/loadAgentsDir-D0gl_H2S.js +0 -1
  306. package/dist/chunks/localSearch-D3UrYUre.js +0 -1
  307. package/dist/chunks/managedEnv-ADMKY7-G.js +0 -1
  308. package/dist/chunks/managedEnv-CDxyrUw1.js +0 -1
  309. package/dist/chunks/model-B50j-O5v.js +0 -1
  310. package/dist/chunks/model-DLG1nrnf.js +0 -1
  311. package/dist/chunks/model-DlLO7TSx.js +0 -1
  312. package/dist/chunks/parser-x-w3ikxt.js +0 -1
  313. package/dist/chunks/pluginStartupCheck-hDT6pEAd.js +0 -1
  314. package/dist/chunks/pollConfig-BgpfHQPJ.js +0 -1
  315. package/dist/chunks/poorMode-DD88nPJ4.js +0 -1
  316. package/dist/chunks/prompt-Ct3Ryb3C.js +0 -1
  317. package/dist/chunks/prompt-TZJKyomz.js +0 -1
  318. package/dist/chunks/remoteManagedSettings-BboLJ46D.js +0 -1
  319. package/dist/chunks/ripgrep-Di-2j8Ws.js +0 -1
  320. package/dist/chunks/sandbox-adapter-CtEngx-6.js +0 -1
  321. package/dist/chunks/searchExtraTools-zFMN5MqY.js +0 -1
  322. package/dist/chunks/sessionFileAccessHooks-C2VjT-PU.js +0 -1
  323. package/dist/chunks/sessionObserver-BuhXr3FP.js +0 -1
  324. package/dist/chunks/sessionStorage-CiYSwyY3.js +0 -1
  325. package/dist/chunks/settings-BgHApyGL.js +0 -1
  326. package/dist/chunks/settingsSync-BhlegQAU.js +0 -1
  327. package/dist/chunks/sinks-Cf4vx9UX.js +0 -1
  328. package/dist/chunks/startupProfiler-B2fyaBEa.js +0 -1
  329. package/dist/chunks/state-CsdHk8n-.js +0 -1
  330. package/dist/chunks/status-C3z0CSBw.js +0 -1
  331. package/dist/chunks/switcher-C9VsM-ip.js +0 -1
  332. package/dist/chunks/switcher-CnBKuiNp.js +0 -1
  333. package/dist/chunks/trustedDevice-1Q4FTNyX.js +0 -1
  334. package/dist/chunks/useMainLoopModel-C1JRp4zE.js +0 -1
  335. package/dist/chunks/validatePlugin-BajM6yNf.js +0 -1
  336. package/dist/chunks/windowsPaths-BybjGW7e.js +0 -1
  337. package/dist/chunks/worktree-BFP10vim.js +0 -1
@@ -1,4 +1,4 @@
1
- import{a as e,n as t,o as n,r,t as i}from"./rolldown-runtime-DaDcL9Zw.js";import{l as a,o}from"./envUtils-DcaKZlRU.js";import{n as s,t as c}from"./defineProperty-C-QyHrDq.js";import{A as l,C as u,M as d,w as f}from"./external-CEp-aPkt.js";import{n as p,r as m,t as h}from"./lazySchema-B4D4qJVE.js";import{C as g,R as _,j as v,x as y}from"./debug-BQj6h99Q.js";import{G as b,J as x,K as S,Q as C,W as w,q as T}from"./settings-CvhsRFaT.js";import{H as E,q as D}from"./log-BlJ7CcKG.js";import{i as O,o as k}from"./platform-DVeTi9mp.js";import{_ as A,u as j}from"./model-DlLO7TSx.js";import{join as M,parse as N,resolve as P,sep as ee}from"node:path";import{createHash as F}from"node:crypto";import{appendFile as I,mkdir as te,readFile as L,readdir as ne,rm as re,writeFile as ie}from"node:fs/promises";function ae(e,t){return{tool_use_id:e,type:`tool_result`,content:t}}function oe(e){return e.filter(e=>e.data?.type!==`hook_progress`)}function se(e,t){return e.name===t||(e.aliases?.includes(t)??!1)}function ce(e,t){return e.find(e=>se(e,t))}function le(e){return{...de,userFacingName:()=>e.name,...e}}var ue,de,fe=t((()=>{ue=()=>({mode:`default`,additionalWorkingDirectories:new Map,alwaysAllowRules:{},alwaysDenyRules:{},alwaysAskRules:{},isBypassPermissionsModeAvailable:!0}),de={isEnabled:()=>!0,isConcurrencySafe:e=>!1,isReadOnly:e=>!1,isDestructive:e=>!1,checkPermissions:(e,t)=>Promise.resolve({behavior:`allow`,updatedInput:e}),toAutoClassifierInput:e=>``,userFacingName:e=>``}})),pe,me,he,ge,_e=t((()=>{pe=`Edit`,me=`/.workmate/**`,he=`~/.workmate/**`,ge=`File has been unexpectedly modified. Read it again before attempting to write it.`}));function ve(e){let t=e.trim();if(!t)return null;if(t.endsWith(`-`)){let e=parseInt(t.slice(0,-1),10);return isNaN(e)||e<1?null:{firstPage:e,lastPage:1/0}}let n=t.indexOf(`-`);if(n===-1){let e=parseInt(t,10);return isNaN(e)||e<1?null:{firstPage:e,lastPage:e}}let r=parseInt(t.slice(0,n),10),i=parseInt(t.slice(n+1),10);return isNaN(r)||isNaN(i)||r<1||i<1||i<r?null:{firstPage:r,lastPage:i}}function ye(){return!j().toLowerCase().includes(`claude-3-haiku`)}function be(e){let t=e.startsWith(`.`)?e.slice(1):e;return xe.has(t.toLowerCase())}var xe,Se=t((()=>{A(),xe=new Set([`pdf`])})),R,Ce=t((()=>{R=`Bash`}));function we(e,t,n){return`Reads a file from the local filesystem. You can access any file directly by using this tool.
1
+ import{a as e,n as t,o as n,r,t as i}from"./rolldown-runtime-DaDcL9Zw.js";import{l as a,o}from"./envUtils-DcaKZlRU.js";import{n as s,t as c}from"./defineProperty-C-QyHrDq.js";import{D as l,E as u,F as d,N as f,n as p,r as m,t as h}from"./lazySchema-DULtBUCI.js";import{C as g,R as _,j as v,x as y}from"./debug-D7OBvqC2.js";import{G as b,J as x,K as S,Q as C,W as w,q as T}from"./settings-DUyIag_5.js";import{H as E,q as D}from"./log-CR0v5KUR.js";import{i as O,o as k}from"./platform-BZm4WVLM.js";import{_ as A,u as j}from"./model-xI2MbgRj.js";import{join as M,parse as N,resolve as P,sep as ee}from"node:path";import{createHash as F}from"node:crypto";import{appendFile as I,mkdir as te,readFile as L,readdir as ne,rm as re,writeFile as ie}from"node:fs/promises";function ae(e,t){return{tool_use_id:e,type:`tool_result`,content:t}}function oe(e){return e.filter(e=>e.data?.type!==`hook_progress`)}function se(e,t){return e.name===t||(e.aliases?.includes(t)??!1)}function ce(e,t){return e.find(e=>se(e,t))}function le(e){return{...de,userFacingName:()=>e.name,...e}}var ue,de,fe=t((()=>{ue=()=>({mode:`default`,additionalWorkingDirectories:new Map,alwaysAllowRules:{},alwaysDenyRules:{},alwaysAskRules:{},isBypassPermissionsModeAvailable:!0}),de={isEnabled:()=>!0,isConcurrencySafe:e=>!1,isReadOnly:e=>!1,isDestructive:e=>!1,checkPermissions:(e,t)=>Promise.resolve({behavior:`allow`,updatedInput:e}),toAutoClassifierInput:e=>``,userFacingName:e=>``}})),pe,me,he,ge,_e=t((()=>{pe=`Edit`,me=`/.workmate/**`,he=`~/.workmate/**`,ge=`File has been unexpectedly modified. Read it again before attempting to write it.`}));function ve(e){let t=e.trim();if(!t)return null;if(t.endsWith(`-`)){let e=parseInt(t.slice(0,-1),10);return isNaN(e)||e<1?null:{firstPage:e,lastPage:1/0}}let n=t.indexOf(`-`);if(n===-1){let e=parseInt(t,10);return isNaN(e)||e<1?null:{firstPage:e,lastPage:e}}let r=parseInt(t.slice(0,n),10),i=parseInt(t.slice(n+1),10);return isNaN(r)||isNaN(i)||r<1||i<1||i<r?null:{firstPage:r,lastPage:i}}function ye(){return!j().toLowerCase().includes(`claude-3-haiku`)}function be(e){let t=e.startsWith(`.`)?e.slice(1):e;return xe.has(t.toLowerCase())}var xe,Se=t((()=>{A(),xe=new Set([`pdf`])})),R,Ce=t((()=>{R=`Bash`}));function we(e,t,n){return`Reads a file from the local filesystem. You can access any file directly by using this tool.
2
2
  Assume this tool is able to read all files on the machine. If the User provides a path to a file assume that path is valid. It is okay to read a file that does not exist; an error will be returned.
3
3
 
4
4
  Usage:
@@ -67,7 +67,7 @@ Usage:
67
67
  - This tool will overwrite the existing file if there is one at the provided path.${An()}
68
68
  - Prefer the Edit tool for modifying existing files \u2014 it only sends the diff. Only use this tool to create new files or for complete rewrites.
69
69
  - NEVER create documentation files (*.md) or README files unless explicitly requested by the User.
70
- - Only use emojis if the user explicitly requests it. Avoid writing emojis to files unless asked.`}var Mn,Nn=t((()=>{je(),Mn=`Write`})),Pn,Fn=t((()=>{Pn=`NotebookEdit`})),In,Ln=t((()=>{In=`TaskGet`})),Rn,zn=t((()=>{Rn=`TaskList`})),Bn,Vn=t((()=>{Bn=`SearchExtraTools`}));function Hn(e){return e.isNonInteractiveSession}function Un(e){let t=Yn.get(e);if(t)return t;let n=Wn(e);return Yn.set(e,n),n}function Wn(e){try{let t=new Gn.Ajv({allErrors:!0});if(!t.validateSchema(e))return{error:t.errorsText(t.errors)};let n=t.compile(e);return{tool:{...Jn,inputJSONSchema:e,async call(e){if(!n(e)){let e=n.errors?.map(e=>`${e.instancePath||`root`}: ${e.message}`).join(`, `);throw new v(`Output does not match required schema: ${e}`,`StructuredOutput schema mismatch: ${(e??``).slice(0,150)}`)}return{data:`Structured output provided successfully`,structured_output:e}}}}}catch(e){return{error:e instanceof Error?e.message:String(e)}}}var Gn,Kn,qn,q,Jn,Yn,Xn=t((()=>{Gn=n(pn(),1),m(),fe(),_(),h(),y(),Kn=p(()=>f({}).passthrough()),qn=p(()=>l().describe(`Structured output tool result`)),q=`StructuredOutput`,Jn=le({isMcp:!1,isEnabled(){return!0},isConcurrencySafe(){return!0},isReadOnly(){return!0},isOpenWorld(){return!1},name:q,searchHint:`return the final response as structured JSON`,maxResultSizeChars:1e5,async description(){return`Return structured output in the requested format`},async prompt(){return`Use this tool to return your final response in the requested structured format. You MUST call this tool exactly once at the end of your response to provide the structured output.`},get inputSchema(){return Kn()},get outputSchema(){return qn()},async call(e){return{data:`Structured output provided successfully`,structured_output:e}},async checkPermissions(e){return{behavior:`allow`,updatedInput:e}},renderToolUseMessage(e){let t=Object.keys(e);return t.length===0?null:t.length<=3?t.map(t=>`${t}: ${g(e[t])}`).join(`, `):`${t.length} fields: ${t.slice(0,3).join(`, `)}…`},renderToolUseRejectedMessage(){return`Structured output rejected`},renderToolUseErrorMessage(){return`Structured output error`},renderToolUseProgressMessage(){return null},renderToolResultMessage(e){return e},mapToolResultToToolResultBlockParam(e,t){return{tool_use_id:t,type:`tool_result`,content:e}}}),Yn=new WeakMap})),Zn,Qn,$n,er=t((()=>{D(),Zn=`Sleep`,Qn=`Wait for a specified duration`,$n=`Wait for a specified duration. The user can interrupt the sleep at any time.
70
+ - Only use emojis if the user explicitly requests it. Avoid writing emojis to files unless asked.`}var Mn,Nn=t((()=>{je(),Mn=`Write`})),Pn,Fn=t((()=>{Pn=`NotebookEdit`})),In,Ln=t((()=>{In=`TaskGet`})),Rn,zn=t((()=>{Rn=`TaskList`})),Bn,Vn=t((()=>{Bn=`SearchExtraTools`}));function Hn(e){return e.isNonInteractiveSession}function Un(e){let t=Yn.get(e);if(t)return t;let n=Wn(e);return Yn.set(e,n),n}function Wn(e){try{let t=new Gn.Ajv({allErrors:!0});if(!t.validateSchema(e))return{error:t.errorsText(t.errors)};let n=t.compile(e);return{tool:{...Jn,inputJSONSchema:e,async call(e){if(!n(e)){let e=n.errors?.map(e=>`${e.instancePath||`root`}: ${e.message}`).join(`, `);throw new v(`Output does not match required schema: ${e}`,`StructuredOutput schema mismatch: ${(e??``).slice(0,150)}`)}return{data:`Structured output provided successfully`,structured_output:e}}}}}catch(e){return{error:e instanceof Error?e.message:String(e)}}}var Gn,Kn,qn,q,Jn,Yn,Xn=t((()=>{Gn=n(pn(),1),m(),fe(),_(),h(),y(),Kn=p(()=>l({}).passthrough()),qn=p(()=>f().describe(`Structured output tool result`)),q=`StructuredOutput`,Jn=le({isMcp:!1,isEnabled(){return!0},isConcurrencySafe(){return!0},isReadOnly(){return!0},isOpenWorld(){return!1},name:q,searchHint:`return the final response as structured JSON`,maxResultSizeChars:1e5,async description(){return`Return structured output in the requested format`},async prompt(){return`Use this tool to return your final response in the requested structured format. You MUST call this tool exactly once at the end of your response to provide the structured output.`},get inputSchema(){return Kn()},get outputSchema(){return qn()},async call(e){return{data:`Structured output provided successfully`,structured_output:e}},async checkPermissions(e){return{behavior:`allow`,updatedInput:e}},renderToolUseMessage(e){let t=Object.keys(e);return t.length===0?null:t.length<=3?t.map(t=>`${t}: ${g(e[t])}`).join(`, `):`${t.length} fields: ${t.slice(0,3).join(`, `)}…`},renderToolUseRejectedMessage(){return`Structured output rejected`},renderToolUseErrorMessage(){return`Structured output error`},renderToolUseProgressMessage(){return null},renderToolResultMessage(e){return e},mapToolResultToToolResultBlockParam(e,t){return{tool_use_id:t,type:`tool_result`,content:e}}}),Yn=new WeakMap})),Zn,Qn,$n,er=t((()=>{D(),Zn=`Sleep`,Qn=`Wait for a specified duration`,$n=`Wait for a specified duration. The user can interrupt the sleep at any time.
71
71
 
72
72
  Use this when the user tells you to sleep or rest, when you have nothing to do, or when you're waiting for something.
73
73
 
@@ -97,7 +97,7 @@ All operations require:
97
97
 
98
98
  Note: LSP servers must be configured for the file type. If no server is available, an error will be returned.`})),rr,ir=t((()=>{rr=`VerifyPlanExecution`})),ar,or=t((()=>{ar=`ExecuteExtraTool`})),sr,cr=t((()=>{sr=`EnterWorktree`})),lr,ur=t((()=>{lr=`ExitWorktree`})),dr=t((()=>{})),J,Y,fr,pr,mr,hr,X=t((()=>{J=`Workflow`,Y=`.workmate/workflows`,fr=`.workmate/workflow-runs`,pr=[`.ts`,`.js`,`.mjs`],mr=1e3,hr=4096}));function gr(e){return{[vr]:e}}function _r(e){return e[vr]}var vr,yr=t((()=>{vr=Symbol(`workflow.hostHandle`)}));function br(e,t){return e.kind===`agentType`?t.agentType===e.agentType:e.kind===`model`?typeof t.model==`string`&&t.model.startsWith(e.pattern):e.match(t)}var xr,Sr,Cr=t((()=>{s(),xr=class extends Error{constructor(e){super(e),this.name=`AdapterNotFoundError`}},Sr=class{constructor(){c(this,`adapters`,new Map),c(this,`rules`,[]),c(this,`defaultId`,null)}register(e){return this.adapters.set(e.id,e),this}default(e){return this.defaultId=e,this}route(e){return this.rules.push(e),this}has(e){return this.adapters.has(e)}get(e){return this.adapters.get(e)}resolve(e){for(let t of this.rules)if(br(t,e)){let e=this.adapters.get(t.adapter);if(e)return e}if(this.defaultId){let e=this.adapters.get(this.defaultId);if(e)return e}throw new xr(`No adapter matched (rules=${this.rules.length}, default=${this.defaultId??`none`})`)}async initializeAll(){for(let e of this.adapters.values())await e.initialize?.()}async disposeAll(){for(let e of this.adapters.values())await e.dispose?.()}}}));function wr(e){return e===void 0||Number.isNaN(e)?3:Math.max(1,Math.min(Math.trunc(e),16))}var Tr,Er=t((()=>{X(),s(),Tr=class{constructor(e){c(this,`available`,void 0),c(this,`waiters`,[]),this.available=Math.max(1,Math.floor(e))}async acquire(e){if(e?.aborted)throw Error(`Semaphore.acquire aborted (signal already aborted)`);return this.available>0?(--this.available,()=>this.release()):new Promise((t,n)=>{let r=()=>{let e=this.waiters.indexOf(i);e>=0&&this.waiters.splice(e,1),n(Error(`Semaphore.acquire aborted`))},i={wake:()=>{e?.removeEventListener(`abort`,r),t(()=>this.release())},cleanup:()=>e?.removeEventListener(`abort`,r)};e?.addEventListener(`abort`,r,{once:!0}),this.waiters.push(i)})}release(){let e=this.waiters.shift();e?e.wake():this.available+=1}}}));function Dr(e){let t=Nr.exec(e);if(!t)return{meta:null,body:e};let n=t.index+t[0].length;for(;n<e.length&&/\s/.test(e[n]);)n++;if(e[n]!==`{`)throw new Z("meta must be an object literal `{ ... }`");let r=0,i=n,a=null;for(;n<e.length;n++){let t=e[n];if(a){if(t===`\\`){n++;continue}t===a&&(a=null);continue}if(t===`"`||t===`'`||t==="`"){a=t;continue}if(t===`{`)r++;else if(t===`}`&&(r--,r===0)){n++;break}}if(r!==0)throw new Z(`meta literal braces are not closed`);let o=e.slice(i,n),s;try{s=Function(`return (${o})`)()}catch(e){throw new Z(`meta must be a plain literal (no variable/function calls/interpolation): ${e.message}`)}return{meta:Or(s),body:e.slice(0,t.index)+e.slice(n).replace(/^[ \t]*;[ \t]*\n/,`
99
99
  `)}}function Or(e){if(typeof e!=`object`||!e||Array.isArray(e))throw new Z(`meta must be an object`);let t=e;if(typeof t.name!=`string`||typeof t.description!=`string`)throw new Z(`meta must include string name and description`);return t}function kr(){function e(...e){if(e.length===0)throw new Pr(`Date.now()/new Date()`);return new Date(...e)}let t=e;return t.now=()=>{throw new Pr(`Date.now()`)},t.parse=Date.parse,t.UTC=Date.UTC,t}function Ar(){return new Proxy(Math,{get(e,t,n){return t===`random`?()=>{throw new Pr(`Math.random()`)}:Reflect.get(e,t,n)}})}function jr(e){if(/^\s*import\b/m.test(e))throw new Z(`workflow scripts are the body of new AsyncFunction (not ESM modules); import is not supported. agent / parallel / pipeline / phase / log / workflow / args / budget are injected as parameters — use them directly.`);if(/\bimport\s*\(/m.test(e))throw new Z(`dynamic import(...) is forbidden in workflow scripts: it bypasses the Date/Math sandbox and breaks resume determinism. The sandbox does not guarantee security (same trust level as the LLM), but explicit escapes are prohibited. Inject external dependencies via args.`);if(/^\s*export\b/m.test(e))throw new Z(`workflow scripts allow only one export const meta = {...} (already extracted by the engine). Remove other export / export default statements; use top-level return for the result.`)}function Mr(e){let{meta:t,body:n}=Dr(e);jr(n);let r;try{r=new Fr(`agent`,`parallel`,`pipeline`,`phase`,`log`,`workflow`,`args`,`budget`,`Date`,`Math`,n)}catch(e){throw new Z(`Script syntax error: ${e.message}`)}let i=kr(),a=Ar();return{meta:t,async execute(e,t,n){return r(e.agent,e.parallel,e.pipeline,e.phase,e.log,e.workflow,t,n,i,a)}}}var Z,Nr,Pr,Fr,Ir=t((()=>{Z=class extends Error{constructor(e){super(e),this.name=`ScriptError`}},Nr=/export\s+const\s+meta\s*=\s*/,Pr=class extends Error{constructor(e){super(`${e} is not available in workflow scripts (would break resume determinism). Pass timestamps/random seeds via args.`),this.name=`NonDeterministicError`}},Fr=Object.getPrototypeOf(async()=>{}).constructor}));function Lr(e){let{label:t,phase:n,...r}=e,i=Object.keys(r).sort(),a={};for(let e of i)a[e]=r[e];return JSON.stringify(a)}function Rr(e,t){return F(`sha256`).update(`${e}\n${Lr(t)}`).digest(`hex`)}function zr(e){let t=t=>M(e,t,`journal.jsonl`);return{async read(e){try{return(await L(t(e),`utf-8`)).split(`
100
- `).filter(e=>e.trim().length>0).map(e=>JSON.parse(e)).sort((e,t)=>(e.seq??0)-(t.seq??0))}catch{return[]}},async append(n,r){await te(M(e,n),{recursive:!0}),await I(t(n),`${JSON.stringify(r)}\n`,`utf-8`)},async truncate(t){await re(M(e,t),{recursive:!0,force:!0})}}}var Br=t((()=>{})),Vr,Hr,Ur=t((()=>{s(),Vr=class extends Error{constructor(){super(`workflow token budget exhausted (budget.total reached the cap)`),this.name=`BudgetExhaustedError`}},Hr=class{constructor(e){c(this,`total`,void 0),c(this,`spentTokens`,0),this.total=e}spent(){return this.spentTokens}remaining(){return this.total==null?1/0:Math.max(0,this.total-this.spentTokens)}addOutputTokens(e){e>0&&(this.spentTokens+=e)}assertCanSpend(){if(this.total!=null&&this.spentTokens>=this.total)throw new Vr}}})),Wr=t((()=>{}));function Gr(e,t){let n=P(e),r=P(n,t);return r===n||r.startsWith(n+ee)}function Kr(e){return typeof e!=`string`||e.length===0||e.includes(`/`)||e.includes(`\\`)||e.includes(`\0`)||e===`.`||e===`..`?null:e}var qr=t((()=>{}));function Jr(e){return pr.includes(e.toLowerCase())}async function Yr(e,t){for(let n of pr){let r=P(e,t+n);if(!Gr(e,r))return null;try{return{path:r,content:await L(r,`utf-8`)}}catch{}}return null}async function Xr(e){let t;try{t=await ne(e)}catch{return[]}return t.filter(e=>Jr(N(e).ext)).map(e=>N(e).name).sort()}var Zr=t((()=>{X(),qr()})),Q,$,Qr=t((()=>{Q=class extends Error{constructor(e){super(e),this.name=`WorkflowError`}},$=class extends Error{constructor(){super(`workflow has been aborted`),this.name=`WorkflowAbortedError`}}}));function $r(e,t){return{semaphore:new Tr(wr(t)),budget:new Hr(e),agentCountBox:{value:0},agentIdSeq:{value:0},depth:0}}function ei(e){let t=$r(e.budgetTotal,e.maxConcurrency);return{ports:e.ports,host:e.host,signal:e.signal,runId:e.runId,workflowName:e.workflowName,cwd:e.cwd,resources:t,journal:e.journal?[...e.journal]:[],journalIndex:0,journalInvalidated:!1,currentPhase:null}}var ti=t((()=>{Ur(),Er()}));function ni(e,t){let n=t=>{e.ports.progressEmitter.emit({runId:e.runId,...t})};return{agent:async(t,r={})=>{let i=e.resources;if(i.agentCountBox.value>=1e3)throw new Q(`workflow exceeds total agent cap (${mr})`);let a=i.agentIdSeq.value++,o={prompt:t,...r},s=Rr(t,o),c=r.label,l=r.phase??e.currentPhase??void 0;if(!e.journalInvalidated&&e.journalIndex<e.journal.length){let t=e.journal[e.journalIndex];if(t.key===s)return e.journalIndex++,n({type:`agent_done`,agentId:a,label:c,phase:l,result:t.result}),ri(t.result);e.journalInvalidated=!0,e.journal=e.journal.slice(0,e.journalIndex),await e.ports.journalStore.truncate(e.runId)}let u;try{u=await e.resources.semaphore.acquire(e.signal)}catch{throw new $}try{if(e.signal.aborted)throw new $;if(i.budget.assertCanSpend(),e.ports.taskRegistrar.pendingAction(e.runId)?.kind===`skip`)return n({type:`agent_done`,agentId:a,label:c,phase:l,result:{kind:`skipped`}}),null;e.resources.agentCountBox.value++,n({type:`agent_started`,agentId:a,label:c,phase:l});let t=e.ports.agentAdapterRegistry,r=t?{host:e.host,signal:e.signal,runId:e.runId,agentId:a,onProgress:e=>{n({type:`agent_progress`,agentId:a,label:c,phase:l,...e})},...e.ports.taskRegistrar.registerAgentAbort?{registerAgentAbort:(t,n)=>{e.ports.taskRegistrar.registerAgentAbort?.(e.runId,t,n)}}:{},...e.ports.taskRegistrar.unregisterAgentAbort?{unregisterAgentAbort:t=>{e.ports.taskRegistrar.unregisterAgentAbort?.(e.runId,t)}}:{}}:null,u=t?t.resolve(o):null,d=()=>u?u.run(o,r):e.ports.agentRunner.runAgentToResult(o,e.host),f;try{if(f=await d(),f.kind===`dead`){let t=typeof f.detail==`string`?f.detail:``;e.ports.logger.warn?.(`agent "${c??`#${a}`}" returned dead`+(f.reason?` (${f.reason})`:``)+(t?`: ${t.slice(0,150)}`:``)+`; retrying once`),f=await d()}}catch(t){if(t instanceof $)throw t;let n=t instanceof Error?t.message:String(t);e.ports.logger.warn?.(`agent "${c??`#${a}`}" threw (${n}); retrying once`);try{f=await d()}catch(e){if(e instanceof $)throw e;f={kind:`dead`,reason:`runagent-threw`,detail:e instanceof Error?e.message:String(e)}}}f.kind===`ok`&&e.resources.budget.addOutputTokens(f.usage.outputTokens),n({type:`agent_done`,agentId:a,label:c,phase:l,result:f});let p={key:s,seq:a,result:f};return e.journal.push(p),e.journalIndex++,await e.ports.journalStore.append(e.runId,p),ri(f)}finally{u()}},parallel:async t=>{if(t.length>4096)throw new Q(`parallel exceeds the per-call items cap (${hr})`);return Promise.all(t.map(async(t,n)=>{try{return await t()}catch(t){return e.ports.logger.warn?.(`parallel thunk #${n} failed: ${t.message}`),null}}))},pipeline:async(t,...n)=>{if(t.length>4096)throw new Q(`pipeline exceeds the per-call items cap (${hr})`);return Promise.all(t.map(async(t,r)=>{try{let e=t;for(let i of n)e=await i(e,t,r);return e}catch(t){return e.ports.logger.warn?.(`pipeline item #${r} failed: ${t.message}`),null}}))},phase:t=>{e.currentPhase&&n({type:`phase_done`,phase:e.currentPhase}),e.currentPhase=t,n({type:`phase_started`,phase:t})},log:e=>{n({type:`log`,message:e})},workflow:async(n,r)=>{if(e.resources.depth>=1)throw new Q(`workflow() nesting allows only one level`);return t({...typeof n==`string`?{name:n}:{scriptPath:n.scriptPath},args:r})}}}function ri(e){return e.kind===`ok`?e.output:null}var ii=t((()=>{X(),Qr(),Br()}));async function ai(e){let{ports:t}=e,n;try{n=Mr(e.script)}catch(n){let r=n.message;return t.progressEmitter.emit({type:`run_done`,runId:e.runId,status:`failed`,error:r}),{status:`failed`,error:r}}let r=e.workflowName??n.meta?.name??`workflow`,i=[],a=!1;e.resume&&!e.scriptChanged?i=await t.journalStore.read(e.runId):e.scriptChanged&&(await t.journalStore.truncate(e.runId),a=!0);let o=ei({ports:t,host:e.host,signal:e.signal,runId:e.runId,workflowName:r,cwd:e.cwd,budgetTotal:e.budgetTotal,maxConcurrency:e.maxConcurrency,journal:i});a&&(o.journalInvalidated=!0),t.progressEmitter.emit({type:`run_started`,runId:e.runId,workflowName:r,meta:n.meta});let s=async t=>{let n=await oi(t,e.cwd),r;try{r=Mr(n)}catch(e){throw new Q(`Sub-workflow script error: ${e.message}`)}let i=o.resources.depth;o.resources.depth+=1;try{let e=ni(o,s);return await r.execute(e,t.args,o.resources.budget)}finally{o.resources.depth=i}},c=ni(o,s),l=()=>{o.currentPhase&&t.progressEmitter.emit({type:`phase_done`,runId:e.runId,phase:o.currentPhase})},u;try{u={status:`completed`,returnValue:await n.execute(c,e.args,o.resources.budget)}}catch(e){u=e instanceof $?{status:`killed`}:{status:`failed`,error:e.message}}return l(),t.progressEmitter.emit({type:`run_done`,runId:e.runId,...u}),u}async function oi(e,t){if(e.script)return e.script;if(e.scriptPath)return await L(e.scriptPath,`utf-8`);if(e.name){let n=await Yr(M(t,Y),e.name);if(!n)throw new Q(`Sub-workflow "${e.name}" not found`);return n.content}throw new Q(`workflow() requires name or scriptPath`)}var si=t((()=>{X(),ti(),Qr(),ii(),Zr(),Ir()})),ci=t((()=>{})),li,ui=t((()=>{m(),li=f({script:l().optional().describe(`Self-contained workflow script source (inline)`),name:l().optional().describe(`Named workflow, resolved to .workmate/workflows/<name>.ts|js|mjs`),scriptPath:l().optional().describe(`Absolute path to an existing script file`),args:d().optional().describe(`The args global variable passed through to the script. Pass a real JSON value (object/array/string), not a JSON string.`),resumeFromRunId:l().optional().describe(`Resume the specified run, replaying the journal`),description:l().optional().describe(`A short description of this invocation (3-5 words)`),title:l().optional().describe(`Progress viewer title`),maxConcurrency:u().int().min(1).max(16).optional().describe(`Concurrency cap for agent(). Defaults to 3 (max 16). When the workflow contains heavy parallel/pipeline fan-out, you may confirm the desired concurrency with the user via AskUserQuestion before launching.`)})}));async function di(e,t,n){let r=M(n,fr,t);await te(r,{recursive:!0});let i=M(r,`script.js`);return await ie(i,e,`utf-8`),i}var fi=t((()=>{X()}));function pi(e){return{name:J,inputSchema:li,isEnabled:()=>!0,isReadOnly:()=>!1,async description(){return`Execute a workflow script that orchestrates multiple subagents to complete a task`},async prompt(){return vi},renderToolUseMessage(e){return e.resumeFromRunId?`Workflow resume: ${e.resumeFromRunId}`:`Workflow: ${e.name??e.scriptPath??(e.script?`inline`:`unknown`)}`},async call(t,n,r,i){let a=e.hostFactory({context:n,canUseTool:r,parentMessage:i}),o,s;try{let e=await _i(t,a.cwd);o=e.script,s=e.workflowFile}catch(e){return{data:{output:`Error: ${e.message}`}}}try{Mr(o)}catch(e){return{data:{output:`Error: script validation failed: ${e.message}`}}}let c=t.name??t.title??`workflow`,{runId:l,signal:u}=e.taskRegistrar.register({workflowName:c,...s?{workflowFile:s}:{},...t.description?{summary:t.description}:{},...a.toolUseId?{toolUseId:a.toolUseId}:{},...t.resumeFromRunId?{runId:t.resumeFromRunId}:{}},a.handle);if(!s&&t.script)try{s=await di(t.script,l,a.cwd)}catch(t){e.logger.warn?.(`inline script persist failed: ${t.message}`)}ai({script:o,...t.args===void 0?{}:{args:gi(t.args)},runId:l,workflowName:c,ports:e,host:a.handle,signal:u,cwd:a.cwd,budgetTotal:a.budgetTotal,...t.maxConcurrency===void 0?{}:{maxConcurrency:t.maxConcurrency},...t.resumeFromRunId?{resume:!0}:{}}).then(t=>mi(e,t,l)).catch(t=>e.taskRegistrar.fail(l,t.message));let d=s??`<inline run ${l}>`;return{data:{output:[`Workflow started (running in the background).`,`run_id: ${l}`,`workflow: ${c}`,`script: ${d}`,``,`You will be notified on completion. Use /workflows to view live progress.`].join(`
100
+ `).filter(e=>e.trim().length>0).map(e=>JSON.parse(e)).sort((e,t)=>(e.seq??0)-(t.seq??0))}catch{return[]}},async append(n,r){await te(M(e,n),{recursive:!0}),await I(t(n),`${JSON.stringify(r)}\n`,`utf-8`)},async truncate(t){await re(M(e,t),{recursive:!0,force:!0})}}}var Br=t((()=>{})),Vr,Hr,Ur=t((()=>{s(),Vr=class extends Error{constructor(){super(`workflow token budget exhausted (budget.total reached the cap)`),this.name=`BudgetExhaustedError`}},Hr=class{constructor(e){c(this,`total`,void 0),c(this,`spentTokens`,0),this.total=e}spent(){return this.spentTokens}remaining(){return this.total==null?1/0:Math.max(0,this.total-this.spentTokens)}addOutputTokens(e){e>0&&(this.spentTokens+=e)}assertCanSpend(){if(this.total!=null&&this.spentTokens>=this.total)throw new Vr}}})),Wr=t((()=>{}));function Gr(e,t){let n=P(e),r=P(n,t);return r===n||r.startsWith(n+ee)}function Kr(e){return typeof e!=`string`||e.length===0||e.includes(`/`)||e.includes(`\\`)||e.includes(`\0`)||e===`.`||e===`..`?null:e}var qr=t((()=>{}));function Jr(e){return pr.includes(e.toLowerCase())}async function Yr(e,t){for(let n of pr){let r=P(e,t+n);if(!Gr(e,r))return null;try{return{path:r,content:await L(r,`utf-8`)}}catch{}}return null}async function Xr(e){let t;try{t=await ne(e)}catch{return[]}return t.filter(e=>Jr(N(e).ext)).map(e=>N(e).name).sort()}var Zr=t((()=>{X(),qr()})),Q,$,Qr=t((()=>{Q=class extends Error{constructor(e){super(e),this.name=`WorkflowError`}},$=class extends Error{constructor(){super(`workflow has been aborted`),this.name=`WorkflowAbortedError`}}}));function $r(e,t){return{semaphore:new Tr(wr(t)),budget:new Hr(e),agentCountBox:{value:0},agentIdSeq:{value:0},depth:0}}function ei(e){let t=$r(e.budgetTotal,e.maxConcurrency);return{ports:e.ports,host:e.host,signal:e.signal,runId:e.runId,workflowName:e.workflowName,cwd:e.cwd,resources:t,journal:e.journal?[...e.journal]:[],journalIndex:0,journalInvalidated:!1,currentPhase:null}}var ti=t((()=>{Ur(),Er()}));function ni(e,t){let n=t=>{e.ports.progressEmitter.emit({runId:e.runId,...t})};return{agent:async(t,r={})=>{let i=e.resources;if(i.agentCountBox.value>=1e3)throw new Q(`workflow exceeds total agent cap (${mr})`);let a=i.agentIdSeq.value++,o={prompt:t,...r},s=Rr(t,o),c=r.label,l=r.phase??e.currentPhase??void 0;if(!e.journalInvalidated&&e.journalIndex<e.journal.length){let t=e.journal[e.journalIndex];if(t.key===s)return e.journalIndex++,n({type:`agent_done`,agentId:a,label:c,phase:l,result:t.result}),ri(t.result);e.journalInvalidated=!0,e.journal=e.journal.slice(0,e.journalIndex),await e.ports.journalStore.truncate(e.runId)}let u;try{u=await e.resources.semaphore.acquire(e.signal)}catch{throw new $}try{if(e.signal.aborted)throw new $;if(i.budget.assertCanSpend(),e.ports.taskRegistrar.pendingAction(e.runId)?.kind===`skip`)return n({type:`agent_done`,agentId:a,label:c,phase:l,result:{kind:`skipped`}}),null;e.resources.agentCountBox.value++,n({type:`agent_started`,agentId:a,label:c,phase:l});let t=e.ports.agentAdapterRegistry,r=t?{host:e.host,signal:e.signal,runId:e.runId,agentId:a,onProgress:e=>{n({type:`agent_progress`,agentId:a,label:c,phase:l,...e})},...e.ports.taskRegistrar.registerAgentAbort?{registerAgentAbort:(t,n)=>{e.ports.taskRegistrar.registerAgentAbort?.(e.runId,t,n)}}:{},...e.ports.taskRegistrar.unregisterAgentAbort?{unregisterAgentAbort:t=>{e.ports.taskRegistrar.unregisterAgentAbort?.(e.runId,t)}}:{}}:null,u=t?t.resolve(o):null,d=()=>u?u.run(o,r):e.ports.agentRunner.runAgentToResult(o,e.host),f;try{if(f=await d(),f.kind===`dead`){let t=typeof f.detail==`string`?f.detail:``;e.ports.logger.warn?.(`agent "${c??`#${a}`}" returned dead`+(f.reason?` (${f.reason})`:``)+(t?`: ${t.slice(0,150)}`:``)+`; retrying once`),f=await d()}}catch(t){if(t instanceof $)throw t;let n=t instanceof Error?t.message:String(t);e.ports.logger.warn?.(`agent "${c??`#${a}`}" threw (${n}); retrying once`);try{f=await d()}catch(e){if(e instanceof $)throw e;f={kind:`dead`,reason:`runagent-threw`,detail:e instanceof Error?e.message:String(e)}}}f.kind===`ok`&&e.resources.budget.addOutputTokens(f.usage.outputTokens),n({type:`agent_done`,agentId:a,label:c,phase:l,result:f});let p={key:s,seq:a,result:f};return e.journal.push(p),e.journalIndex++,await e.ports.journalStore.append(e.runId,p),ri(f)}finally{u()}},parallel:async t=>{if(t.length>4096)throw new Q(`parallel exceeds the per-call items cap (${hr})`);return Promise.all(t.map(async(t,n)=>{try{return await t()}catch(t){return e.ports.logger.warn?.(`parallel thunk #${n} failed: ${t.message}`),null}}))},pipeline:async(t,...n)=>{if(t.length>4096)throw new Q(`pipeline exceeds the per-call items cap (${hr})`);return Promise.all(t.map(async(t,r)=>{try{let e=t;for(let i of n)e=await i(e,t,r);return e}catch(t){return e.ports.logger.warn?.(`pipeline item #${r} failed: ${t.message}`),null}}))},phase:t=>{e.currentPhase&&n({type:`phase_done`,phase:e.currentPhase}),e.currentPhase=t,n({type:`phase_started`,phase:t})},log:e=>{n({type:`log`,message:e})},workflow:async(n,r)=>{if(e.resources.depth>=1)throw new Q(`workflow() nesting allows only one level`);return t({...typeof n==`string`?{name:n}:{scriptPath:n.scriptPath},args:r})}}}function ri(e){return e.kind===`ok`?e.output:null}var ii=t((()=>{X(),Qr(),Br()}));async function ai(e){let{ports:t}=e,n;try{n=Mr(e.script)}catch(n){let r=n.message;return t.progressEmitter.emit({type:`run_done`,runId:e.runId,status:`failed`,error:r}),{status:`failed`,error:r}}let r=e.workflowName??n.meta?.name??`workflow`,i=[],a=!1;e.resume&&!e.scriptChanged?i=await t.journalStore.read(e.runId):e.scriptChanged&&(await t.journalStore.truncate(e.runId),a=!0);let o=ei({ports:t,host:e.host,signal:e.signal,runId:e.runId,workflowName:r,cwd:e.cwd,budgetTotal:e.budgetTotal,maxConcurrency:e.maxConcurrency,journal:i});a&&(o.journalInvalidated=!0),t.progressEmitter.emit({type:`run_started`,runId:e.runId,workflowName:r,meta:n.meta});let s=async t=>{let n=await oi(t,e.cwd),r;try{r=Mr(n)}catch(e){throw new Q(`Sub-workflow script error: ${e.message}`)}let i=o.resources.depth;o.resources.depth+=1;try{let e=ni(o,s);return await r.execute(e,t.args,o.resources.budget)}finally{o.resources.depth=i}},c=ni(o,s),l=()=>{o.currentPhase&&t.progressEmitter.emit({type:`phase_done`,runId:e.runId,phase:o.currentPhase})},u;try{u={status:`completed`,returnValue:await n.execute(c,e.args,o.resources.budget)}}catch(e){u=e instanceof $?{status:`killed`}:{status:`failed`,error:e.message}}return l(),t.progressEmitter.emit({type:`run_done`,runId:e.runId,...u}),u}async function oi(e,t){if(e.script)return e.script;if(e.scriptPath)return await L(e.scriptPath,`utf-8`);if(e.name){let n=await Yr(M(t,Y),e.name);if(!n)throw new Q(`Sub-workflow "${e.name}" not found`);return n.content}throw new Q(`workflow() requires name or scriptPath`)}var si=t((()=>{X(),ti(),Qr(),ii(),Zr(),Ir()})),ci=t((()=>{})),li,ui=t((()=>{m(),li=l({script:f().optional().describe(`Self-contained workflow script source (inline)`),name:f().optional().describe(`Named workflow, resolved to .workmate/workflows/<name>.ts|js|mjs`),scriptPath:f().optional().describe(`Absolute path to an existing script file`),args:d().optional().describe(`The args global variable passed through to the script. Pass a real JSON value (object/array/string), not a JSON string.`),resumeFromRunId:f().optional().describe(`Resume the specified run, replaying the journal`),description:f().optional().describe(`A short description of this invocation (3-5 words)`),title:f().optional().describe(`Progress viewer title`),maxConcurrency:u().int().min(1).max(16).optional().describe(`Concurrency cap for agent(). Defaults to 3 (max 16). When the workflow contains heavy parallel/pipeline fan-out, you may confirm the desired concurrency with the user via AskUserQuestion before launching.`)})}));async function di(e,t,n){let r=M(n,fr,t);await te(r,{recursive:!0});let i=M(r,`script.js`);return await ie(i,e,`utf-8`),i}var fi=t((()=>{X()}));function pi(e){return{name:J,inputSchema:li,isEnabled:()=>!0,isReadOnly:()=>!1,async description(){return`Execute a workflow script that orchestrates multiple subagents to complete a task`},async prompt(){return vi},renderToolUseMessage(e){return e.resumeFromRunId?`Workflow resume: ${e.resumeFromRunId}`:`Workflow: ${e.name??e.scriptPath??(e.script?`inline`:`unknown`)}`},async call(t,n,r,i){let a=e.hostFactory({context:n,canUseTool:r,parentMessage:i}),o,s;try{let e=await _i(t,a.cwd);o=e.script,s=e.workflowFile}catch(e){return{data:{output:`Error: ${e.message}`}}}try{Mr(o)}catch(e){return{data:{output:`Error: script validation failed: ${e.message}`}}}let c=t.name??t.title??`workflow`,{runId:l,signal:u}=e.taskRegistrar.register({workflowName:c,...s?{workflowFile:s}:{},...t.description?{summary:t.description}:{},...a.toolUseId?{toolUseId:a.toolUseId}:{},...t.resumeFromRunId?{runId:t.resumeFromRunId}:{}},a.handle);if(!s&&t.script)try{s=await di(t.script,l,a.cwd)}catch(t){e.logger.warn?.(`inline script persist failed: ${t.message}`)}ai({script:o,...t.args===void 0?{}:{args:gi(t.args)},runId:l,workflowName:c,ports:e,host:a.handle,signal:u,cwd:a.cwd,budgetTotal:a.budgetTotal,...t.maxConcurrency===void 0?{}:{maxConcurrency:t.maxConcurrency},...t.resumeFromRunId?{resume:!0}:{}}).then(t=>mi(e,t,l)).catch(t=>e.taskRegistrar.fail(l,t.message));let d=s??`<inline run ${l}>`;return{data:{output:[`Workflow started (running in the background).`,`run_id: ${l}`,`workflow: ${c}`,`script: ${d}`,``,`You will be notified on completion. Use /workflows to view live progress.`].join(`
101
101
  `)}}},mapToolResultToToolResultBlockParam(e,t){return{tool_use_id:t,type:`tool_result`,content:[{type:`text`,text:e.output}]}}}}function mi(e,t,n){if(t.status===`completed`){let r=t.returnValue==null?`(no return value)`:hi(t.returnValue);e.taskRegistrar.complete(n,r)}else t.status===`failed`?e.taskRegistrar.fail(n,t.error??`workflow failed`):e.taskRegistrar.kill(n)}function hi(e){if(typeof e==`string`)return e.slice(0,500);try{return JSON.stringify(e).slice(0,500)}catch{return String(e)}}function gi(e){if(typeof e!=`string`)return e;try{let t=JSON.parse(e);return typeof t==`object`&&t?t:e}catch{return e}}async function _i(e,t){if(e.script)return{script:e.script};if(e.scriptPath){let n=P(t,e.scriptPath);if(!Gr(t,n))throw Error(`scriptPath "${e.scriptPath}" is out of bounds (after resolve, ${n} is not within cwd ${t})`);return{script:await L(n,`utf-8`),workflowFile:n}}if(e.name){if(Kr(e.name)===null)throw Error(`Named workflow name "${e.name}" is invalid (contains path separators or is . / ..)`);let n=await Yr(M(t,Y),e.name);if(!n)throw Error(`Named workflow "${e.name}" not found (looked in ${Y}/)`);return{script:n.content,workflowFile:n.path}}throw Error(`One of script, name, or scriptPath must be provided`)}var vi,yi=t((()=>{X(),Zr(),si(),Ir(),qr(),ui(),fi(),vi='Use the Workflow tool to execute a workflow script that orchestrates multiple subagents deterministically. The script runs in the background; you receive a run_id immediately and are notified on completion.\n\nProvide the script inline via "script", or reference a named workflow via "name" (resolved from .workmate/workflows/), or an existing file via "scriptPath". Pass "args" as a real JSON value (object/array/string), not a stringified string.\n\nUse "resumeFromRunId" to resume a prior run — completed agent() calls replay from the journal instantly.\n\nConcurrency: default is 3 (hard ceiling 16). OMIT maxConcurrency to use 3. To set maxConcurrency to ANY value other than 3, you MUST first ask the user via AskUserQuestion — propose 3 / 6 / 9 (or other tiers matching the fan-out width) with 3 marked "(Recommended)". The ONLY exception: the user has ALREADY specified a concurrency number in this session ("use 6", "maxConcurrency 9") — then honor it without re-asking. Never silently raise concurrency above 3 just because the workflow fans out; 3 is the recommended default.\n\nScript execution model (common pitfalls — getting these wrong is the #1 cause of script errors): the script is the body of `new AsyncFunction` — NOT an ESM module, and TypeScript is NOT transpiled. Therefore:\n- Do NOT use `import` — `agent`, `parallel`, `pipeline`, `phase`, `log`, `workflow`, `args`, and `budget` are injected as parameters; reference them directly.\n- Do NOT use TS type annotations, `interface`, `enum`, `as`, or generics — the engine does not transpile, so even a .ts file with type syntax fails to parse.\n- Keep EXACTLY ONE `export const meta = {...}` (plain literal) and remove every other `export` / `export default`.\n- Return the result with a top-level `return`.\nPrefer .js / .mjs. See /ultracode for the full playbook and quality patterns.'})),bi=t((()=>{dr(),X(),yr(),Cr(),Er(),Ir(),Br(),Ur(),Wr(),Zr(),Qr(),ti(),ii(),si(),ci(),yi(),ui(),fi()})),xi,Si,Ci,wi,Ti,Ei,Di=t((()=>{xi=`LocalMemoryRecall`,Si=100*1024,Ci=2*1024,wi=50*1024,Ti=4*1024,Ei=8*1024})),Oi,ki,Ai,ji,Mi=t((()=>{T(),Ne(),hn(),C(),bn(),b(),je(),Fe(),Sn(),Tn(),kn(),_e(),Nn(),Fn(),Ve(),Le(),Ln(),zn(),ze(),Vn(),Xn(),er(),nr(),ir(),or(),cr(),ur(),bi(),Di(),Oi=new Set([S,Me,mn,x,gn,w,J,xi]),ki=new Set([...Oi]),Ai=new Set([z,Pe,G,Cn,...K,pe,Mn,Pn,Be,q,Bn,ar,sr,lr]),ji=new Set([...K,z,pe,Mn,Cn,G,Pn,x,gn,S,w,Ie,In,Rn,Re,Pe,mn,Me,rr,`LSP`,Be,J,Zn,Bn,ar,q])}));function Ni(){return`Deferred tools appear by name in <available-deferred-tools> messages.`}function Pi(e){return!(e.alwaysLoad===!0||ji.has(e.name))}function Fi(e){return e.name}function Ii(){return Li+Ni()+Ri}var Li,Ri,zi=t((()=>{Mi(),Vn(),Li=`Search for deferred tools by name or keyword. LOW PRIORITY — only use this tool when no core tool can accomplish the task. Core tools (Read, Edit, Write, Bash, Glob, Grep, Agent, WebFetch, WebSearch, Skill) are always available and should be used directly. This tool is for discovering additional capabilities like MCP tools, worktree management, agent teams (TeamCreate, TeamDelete, SendMessage), etc.
102
102
 
103
103
  `,Ri=` Returns matching tool names.
@@ -0,0 +1 @@
1
+ import{cw as e,mw as t}from"./loadAgentsDir-DnsldjYU.js";t();export{e as clearPromptCache};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{n as t,t as n}from"./memoize-BK3gG5ob.js";import{Ad as r,Fd as i,Md as a,Pd as o,_b as s,lb as c,vu as l,yu as u}from"./loadAgentsDir-CbtNPJV3.js";import{Rn as d,t as f}from"./src-DL3w8VPk2.js";import{T as p,c as m,f as h,i as g,u as _,x as v}from"./debug-BQj6h99Q.js";import{n as y,t as b}from"./execSyncWrapper-CqvQqke-.js";import{r as x,t as S}from"./which-BR8YVCCW.js";import{basename as C}from"path";import{spawn as w,spawnSync as T}from"child_process";function E(e){return!!x(e)}function D(e){let t=C(e.split(` `)[0]??``);return A.find(e=>t.includes(e))}function O(e,t,n){return n?M.has(e)?[`-g`,`${t}:${n}`]:e===`subl`?[`${t}:${n}`]:[t]:[t]}function k(e,t){let n=N();if(!n)return!1;let r=n.split(` `),i=r[0]??n,a=r.slice(1),o=D(n);if(o){let r=O(o,e,t),s={detached:!0,stdio:`ignore`},c;return c=process.platform===`win32`?w(`${n} ${r.map(e=>`"${e}"`).join(` `)}`,{...s,shell:!0}):w(i,[...a,...r],s),c.on(`error`,e=>m(`editor spawn failed: ${e}`,{level:`error`})),c.unref(),!0}let s=d.get(process.stdout);if(!s)return!1;let c=t&&j.test(C(i));s.enterAlternateScreen();try{let r={stdio:`inherit`},o;return o=process.platform===`win32`?T(`${n} ${c?`+${t} `:``}"${e}"`,{...r,shell:!0}):T(i,[...a,...c?[`+${t}`,e]:[e]],r),o.error?(m(`editor spawn failed: ${o.error}`,{level:`error`}),!1):!0}finally{s.exitAlternateScreen()}}var A,j,M,N,P=e((()=>{n(),f(),g(),S(),A=[`code`,`cursor`,`windsurf`,`codium`,`subl`,`atom`,`gedit`,`notepad++`,`notepad`],j=/\b(vi|vim|nvim|nano|emacs|pico|micro|helix|hx)\b/,M=new Set([`code`,`cursor`,`windsurf`,`codium`]),N=t(()=>process.env.VISUAL?.trim()?process.env.VISUAL.trim():process.env.EDITOR?.trim()?process.env.EDITOR.trim():process.platform===`win32`?`start /wait notepad`:[`code`,`vi`,`nano`].find(e=>E(e)))}));function F(e){return D(e)!==void 0}function I(e){let t=_(),n=d.get(process.stdout);if(!n)throw Error(`Ink instance not found - cannot pause rendering`);let r=N();if(!r)return{content:null};try{t.statSync(e)}catch{return{content:null}}let i=!F(r);i?n.enterAlternateScreen():(n.pause(),n.suspendStdin());try{return b(`${z[r]??r} "${e}"`,{stdio:`inherit`}),{content:t.readFileSync(e,{encoding:`utf-8`})}}catch(e){if(typeof e==`object`&&e&&`status`in e&&typeof e.status==`number`){let t=e.status;if(t!==0)return{content:null,error:`${s(r)} exited with code ${t}`}}return{content:null}}finally{i?n.exitAlternateScreen():(n.resumeStdin(),n.resume())}}function L(e,t,n){let r=e;for(let[e,t]of Object.entries(n))if(t.type===`text`){let n=parseInt(e,10),i=t.content,s=r.indexOf(i);if(s!==-1){let e=a(n,o(i));r=r.slice(0,s)+e+r.slice(s+i.length)}}return r}function R(e,t){let n=_(),i=l();try{p(i,t?r(e,t):e,{encoding:`utf-8`,flush:!0});let n=I(i);if(n.content===null)return n;let a=n.content;return a.endsWith(`
1
+ import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{n as t,t as n}from"./memoize-BK3gG5ob.js";import{Ad as r,Fd as i,Md as a,Pd as o,_b as s,lb as c,vu as l,yu as u}from"./loadAgentsDir-DnsldjYU.js";import{Rn as d,t as f}from"./src-DL3w8VPk2.js";import{T as p,c as m,f as h,i as g,u as _,x as v}from"./debug-D7OBvqC2.js";import{n as y,t as b}from"./execSyncWrapper-pYxQXqb-.js";import{r as x,t as S}from"./which-3MmqfsNV.js";import{basename as C}from"path";import{spawn as w,spawnSync as T}from"child_process";function E(e){return!!x(e)}function D(e){let t=C(e.split(` `)[0]??``);return A.find(e=>t.includes(e))}function O(e,t,n){return n?M.has(e)?[`-g`,`${t}:${n}`]:e===`subl`?[`${t}:${n}`]:[t]:[t]}function k(e,t){let n=N();if(!n)return!1;let r=n.split(` `),i=r[0]??n,a=r.slice(1),o=D(n);if(o){let r=O(o,e,t),s={detached:!0,stdio:`ignore`},c;return c=process.platform===`win32`?w(`${n} ${r.map(e=>`"${e}"`).join(` `)}`,{...s,shell:!0}):w(i,[...a,...r],s),c.on(`error`,e=>m(`editor spawn failed: ${e}`,{level:`error`})),c.unref(),!0}let s=d.get(process.stdout);if(!s)return!1;let c=t&&j.test(C(i));s.enterAlternateScreen();try{let r={stdio:`inherit`},o;return o=process.platform===`win32`?T(`${n} ${c?`+${t} `:``}"${e}"`,{...r,shell:!0}):T(i,[...a,...c?[`+${t}`,e]:[e]],r),o.error?(m(`editor spawn failed: ${o.error}`,{level:`error`}),!1):!0}finally{s.exitAlternateScreen()}}var A,j,M,N,P=e((()=>{n(),f(),g(),S(),A=[`code`,`cursor`,`windsurf`,`codium`,`subl`,`atom`,`gedit`,`notepad++`,`notepad`],j=/\b(vi|vim|nvim|nano|emacs|pico|micro|helix|hx)\b/,M=new Set([`code`,`cursor`,`windsurf`,`codium`]),N=t(()=>process.env.VISUAL?.trim()?process.env.VISUAL.trim():process.env.EDITOR?.trim()?process.env.EDITOR.trim():process.platform===`win32`?`start /wait notepad`:[`code`,`vi`,`nano`].find(e=>E(e)))}));function F(e){return D(e)!==void 0}function I(e){let t=_(),n=d.get(process.stdout);if(!n)throw Error(`Ink instance not found - cannot pause rendering`);let r=N();if(!r)return{content:null};try{t.statSync(e)}catch{return{content:null}}let i=!F(r);i?n.enterAlternateScreen():(n.pause(),n.suspendStdin());try{return b(`${z[r]??r} "${e}"`,{stdio:`inherit`}),{content:t.readFileSync(e,{encoding:`utf-8`})}}catch(e){if(typeof e==`object`&&e&&`status`in e&&typeof e.status==`number`){let t=e.status;if(t!==0)return{content:null,error:`${s(r)} exited with code ${t}`}}return{content:null}}finally{i?n.exitAlternateScreen():(n.resumeStdin(),n.resume())}}function L(e,t,n){let r=e;for(let[e,t]of Object.entries(n))if(t.type===`text`){let n=parseInt(e,10),i=t.content,s=r.indexOf(i);if(s!==-1){let e=a(n,o(i));r=r.slice(0,s)+e+r.slice(s+i.length)}}return r}function R(e,t){let n=_(),i=l();try{p(i,t?r(e,t):e,{encoding:`utf-8`,flush:!0});let n=I(i);if(n.content===null)return n;let a=n.content;return a.endsWith(`
2
2
  `)&&!a.endsWith(`
3
3
 
4
4
  `)&&(a=a.slice(0,-1)),t&&(a=L(a,e,t)),{content:a}}finally{try{n.unlinkSync(i)}catch{}}}var z,B=e((()=>{i(),f(),P(),y(),h(),c(),v(),u(),z={code:`code -w`,subl:`subl --wait`}}));export{P as a,N as i,R as n,k as o,B as r,I as t};
@@ -1,4 +1,4 @@
1
- import{C as e,c as t,i as n,x as r}from"./debug-BQj6h99Q.js";import{c as i,h as a}from"./config-BSkuQZNf.js";import{r as o,t as s}from"./execFileNoThrow-DYm1GeGn.js";import{n as c,t as l}from"./which-BR8YVCCW.js";import{n as u,t as d}from"./githubRepoPathMapping-Px3_GeD1.js";import{n as f}from"./banner-HfMnBd03.js";import{r as p}from"./registerProtocol-DrWIX3Lb.js";import{homedir as m}from"os";import{basename as h}from"path";import{spawn as g}from"child_process";r(),a(),n(),o(),l();var _=[{name:`iTerm2`,bundleId:`com.googlecode.iterm2`,app:`iTerm`},{name:`Ghostty`,bundleId:`com.mitchellh.ghostty`,app:`Ghostty`},{name:`Kitty`,bundleId:`net.kovidgoyal.kitty`,app:`kitty`},{name:`Alacritty`,bundleId:`org.alacritty`,app:`Alacritty`},{name:`WezTerm`,bundleId:`com.github.wez.wezterm`,app:`WezTerm`},{name:`Terminal.app`,bundleId:`com.apple.Terminal`,app:`Terminal`}],v=[`ghostty`,`kitty`,`alacritty`,`wezterm`,`gnome-terminal`,`konsole`,`xfce4-terminal`,`mate-terminal`,`tilix`,`xterm`];async function y(){let e=i().deepLinkTerminal;if(e){let t=_.find(t=>t.app===e);if(t)return{name:t.name,command:t.app}}let t=process.env.TERM_PROGRAM;if(t){let e=t.replace(/\.app$/i,``).toLowerCase(),n=_.find(t=>t.app.toLowerCase()===e||t.name.toLowerCase()===e);if(n)return{name:n.name,command:n.app}}for(let e of _){let{code:t,stdout:n}=await s(`mdfind`,[`kMDItemCFBundleIdentifier == "${e.bundleId}"`],{timeout:5e3,useCwd:!1});if(t===0&&n.trim().length>0)return{name:e.name,command:e.app}}for(let e of _){let{code:t}=await s(`ls`,[`/Applications/${e.app}.app`],{timeout:1e3,useCwd:!1});if(t===0)return{name:e.name,command:e.app}}return{name:`Terminal.app`,command:`Terminal`}}async function b(){let e=process.env.TERMINAL;if(e){let t=await c(e);if(t)return{name:h(e),command:t}}let t=await c(`x-terminal-emulator`);if(t)return{name:`x-terminal-emulator`,command:t};for(let e of v){let t=await c(e);if(t)return{name:e,command:t}}return null}async function x(){let e=await c(`wt.exe`);if(e)return{name:`Windows Terminal`,command:e};let t=await c(`pwsh.exe`);if(t)return{name:`PowerShell`,command:t};let n=await c(`powershell.exe`);return n?{name:`PowerShell`,command:n}:{name:`Command Prompt`,command:`cmd.exe`}}async function S(){switch(process.platform){case`darwin`:return y();case`linux`:return b();case`win32`:return x();default:return null}}async function C(e,n){let r=await S();if(!r)return t(`No terminal emulator detected`,{level:`error`}),!1;t(`Launching in terminal: ${r.name} (${r.command})`);let i=[`--deep-link-origin`];switch(n.repo&&(i.push(`--deep-link-repo`,n.repo),n.lastFetchMs!==void 0&&i.push(`--deep-link-last-fetch`,String(n.lastFetchMs))),n.query&&i.push(`--prefill`,n.query),process.platform){case`darwin`:return w(r,e,i,n.cwd);case`linux`:return T(r,e,i,n.cwd);case`win32`:return E(r,e,i,n.cwd);default:return!1}}async function w(e,n,r,i){switch(e.command){case`iTerm`:{let{code:e}=await s(`osascript`,[`-e`,`tell application "iTerm"
1
+ import{C as e,c as t,i as n,x as r}from"./debug-D7OBvqC2.js";import{c as i,h as a}from"./config-BybjRr09.js";import{r as o,t as s}from"./execFileNoThrow-BHDSgTpZ.js";import{n as c,t as l}from"./which-3MmqfsNV.js";import{n as u,t as d}from"./githubRepoPathMapping-Dhz4cvw2.js";import{n as f}from"./banner-BfIcVEUU.js";import{r as p}from"./registerProtocol-CrzdmgCD.js";import{homedir as m}from"os";import{basename as h}from"path";import{spawn as g}from"child_process";r(),a(),n(),o(),l();var _=[{name:`iTerm2`,bundleId:`com.googlecode.iterm2`,app:`iTerm`},{name:`Ghostty`,bundleId:`com.mitchellh.ghostty`,app:`Ghostty`},{name:`Kitty`,bundleId:`net.kovidgoyal.kitty`,app:`kitty`},{name:`Alacritty`,bundleId:`org.alacritty`,app:`Alacritty`},{name:`WezTerm`,bundleId:`com.github.wez.wezterm`,app:`WezTerm`},{name:`Terminal.app`,bundleId:`com.apple.Terminal`,app:`Terminal`}],v=[`ghostty`,`kitty`,`alacritty`,`wezterm`,`gnome-terminal`,`konsole`,`xfce4-terminal`,`mate-terminal`,`tilix`,`xterm`];async function y(){let e=i().deepLinkTerminal;if(e){let t=_.find(t=>t.app===e);if(t)return{name:t.name,command:t.app}}let t=process.env.TERM_PROGRAM;if(t){let e=t.replace(/\.app$/i,``).toLowerCase(),n=_.find(t=>t.app.toLowerCase()===e||t.name.toLowerCase()===e);if(n)return{name:n.name,command:n.app}}for(let e of _){let{code:t,stdout:n}=await s(`mdfind`,[`kMDItemCFBundleIdentifier == "${e.bundleId}"`],{timeout:5e3,useCwd:!1});if(t===0&&n.trim().length>0)return{name:e.name,command:e.app}}for(let e of _){let{code:t}=await s(`ls`,[`/Applications/${e.app}.app`],{timeout:1e3,useCwd:!1});if(t===0)return{name:e.name,command:e.app}}return{name:`Terminal.app`,command:`Terminal`}}async function b(){let e=process.env.TERMINAL;if(e){let t=await c(e);if(t)return{name:h(e),command:t}}let t=await c(`x-terminal-emulator`);if(t)return{name:`x-terminal-emulator`,command:t};for(let e of v){let t=await c(e);if(t)return{name:e,command:t}}return null}async function x(){let e=await c(`wt.exe`);if(e)return{name:`Windows Terminal`,command:e};let t=await c(`pwsh.exe`);if(t)return{name:`PowerShell`,command:t};let n=await c(`powershell.exe`);return n?{name:`PowerShell`,command:n}:{name:`Command Prompt`,command:`cmd.exe`}}async function S(){switch(process.platform){case`darwin`:return y();case`linux`:return b();case`win32`:return x();default:return null}}async function C(e,n){let r=await S();if(!r)return t(`No terminal emulator detected`,{level:`error`}),!1;t(`Launching in terminal: ${r.name} (${r.command})`);let i=[`--deep-link-origin`];switch(n.repo&&(i.push(`--deep-link-repo`,n.repo),n.lastFetchMs!==void 0&&i.push(`--deep-link-last-fetch`,String(n.lastFetchMs))),n.query&&i.push(`--prefill`,n.query),process.platform){case`darwin`:return w(r,e,i,n.cwd);case`linux`:return T(r,e,i,n.cwd);case`win32`:return E(r,e,i,n.cwd);default:return!1}}async function w(e,n,r,i){switch(e.command){case`iTerm`:{let{code:e}=await s(`osascript`,[`-e`,`tell application "iTerm"
2
2
  if running then
3
3
  create window with default profile
4
4
  else
@@ -1,4 +1,4 @@
1
- import{i as e,n as t,o as n,t as r}from"./rolldown-runtime-DaDcL9Zw.js";import{n as i,t as a}from"./memoize-BK3gG5ob.js";import{a as o,l as s,o as c}from"./envUtils-DcaKZlRU.js";import{i as l,n as u,r as d,t as f}from"./defineProperty-C-QyHrDq.js";import{a as p,c as m,i as h,n as g,o as _,r as v,s as y,t as b}from"./classPrivateFieldSet2-D4U5K-I3.js";import{n as x,t as S}from"./classPrivateMethodInitSpec-BXQD0Vh4.js";import{t as C}from"./src-DCUgdrYl.js";import{n as w,t as T}from"./axios-DaWTGg7G.js";import{c as E,f as D,i as O,u as k}from"./debug-BQj6h99Q.js";import A from"assert";import{Agent as j}from"https";import*as M from"http";import{URL as N}from"url";import*as P from"net";import*as F from"tls";var I=t((()=>{})),L,R,z=t((()=>{I(),L=Symbol(`AgentBaseInternalState`),R=class extends M.Agent{constructor(e){super(e),this[L]={}}isSecureEndpoint(e){if(e){if(typeof e.secureEndpoint==`boolean`)return e.secureEndpoint;if(typeof e.protocol==`string`)return e.protocol===`https:`}let{stack:t}=Error();return typeof t==`string`&&t.split(`
1
+ import{i as e,n as t,o as n,t as r}from"./rolldown-runtime-DaDcL9Zw.js";import{n as i,t as a}from"./memoize-BK3gG5ob.js";import{a as o,l as s,o as c}from"./envUtils-DcaKZlRU.js";import{i as l,n as u,r as d,t as f}from"./defineProperty-C-QyHrDq.js";import{a as p,c as m,i as h,n as g,o as _,r as v,s as y,t as b}from"./classPrivateFieldSet2-D4U5K-I3.js";import{n as x,t as S}from"./classPrivateMethodInitSpec-BXQD0Vh4.js";import{t as C}from"./src-DCUgdrYl.js";import{n as w,t as T}from"./axios-DaWTGg7G.js";import{c as E,f as D,i as O,u as k}from"./debug-D7OBvqC2.js";import A from"assert";import{Agent as j}from"https";import*as M from"http";import{URL as N}from"url";import*as P from"net";import*as F from"tls";var I=t((()=>{})),L,R,z=t((()=>{I(),L=Symbol(`AgentBaseInternalState`),R=class extends M.Agent{constructor(e){super(e),this[L]={}}isSecureEndpoint(e){if(e){if(typeof e.secureEndpoint==`boolean`)return e.secureEndpoint;if(typeof e.protocol==`string`)return e.protocol===`https:`}let{stack:t}=Error();return typeof t==`string`&&t.split(`
2
2
  `).some(e=>e.indexOf(`(https.js:`)!==-1||e.indexOf(`node:https:`)!==-1)}incrementSockets(e){if(this.maxSockets===1/0&&this.maxTotalSockets===1/0)return null;this.sockets[e]||(this.sockets[e]=[]);let t=new P.Socket({writable:!1});return this.sockets[e].push(t),this.totalSocketCount++,t}decrementSockets(e,t){if(!this.sockets[e]||t===null)return;let n=this.sockets[e],r=n.indexOf(t);r!==-1&&(n.splice(r,1),this.totalSocketCount--,n.length===0&&delete this.sockets[e])}getName(e){return this.isSecureEndpoint(e)?j.prototype.getName.call(this,e):super.getName(e)}createSocket(e,t,n){let r={...t,secureEndpoint:this.isSecureEndpoint(t)},i=this.getName(r),a=this.incrementSockets(i);Promise.resolve().then(()=>this.connect(e,r)).then(o=>{if(this.decrementSockets(i,a),o instanceof M.Agent)try{return o.addRequest(e,r)}catch(e){return n(e)}this[L].currentSocket=o,super.createSocket(e,t,n)},e=>{this.decrementSockets(i,a),n(e)})}createConnection(){let e=this[L].currentSocket;if(this[L].currentSocket=void 0,!e)throw Error("No socket was returned in the `connect()` function");return e}get defaultPort(){return this[L].defaultPort??(this.protocol===`https:`?443:80)}set defaultPort(e){this[L]&&(this[L].defaultPort=e)}get protocol(){return this[L].protocol??(this.isSecureEndpoint()?`https:`:`http:`)}set protocol(e){this[L]&&(this[L].protocol=e)}}}));function B(e){return new Promise((t,n)=>{let r=0,i=[];function a(){let t=e.read();t?l(t):e.once(`readable`,a)}function o(){e.removeListener(`end`,s),e.removeListener(`error`,c),e.removeListener(`readable`,a)}function s(){o(),H(`onend`),n(Error(`Proxy connection ended before receiving CONNECT response`))}function c(e){o(),H(`onerror %o`,e),n(e)}function l(s){i.push(s),r+=s.length;let c=Buffer.concat(i,r),l=c.indexOf(`\r
3
3
  \r
4
4
  `);if(l===-1){H(`have not received end of HTTP headers yet...`),a();return}let u=c.slice(0,l).toString(`ascii`).split(`\r
@@ -1 +1 @@
1
- import{Ao as e,Io as t,Lo as n,Mo as r}from"./loadAgentsDir-CbtNPJV3.js";import{Wt as i,et as a}from"./state-BPFYBqm1.js";import{P as o,R as s,c,i as l}from"./debug-BQj6h99Q.js";import{kn as u,vt as d,wn as f,yt as p}from"./settings-CvhsRFaT.js";import{m,n as h}from"./git-DplvjXEY.js";import{o as g,s as _}from"./log-BlJ7CcKG.js";import{$n as v,Qn as y}from"./model-DlLO7TSx.js";import{isAbsolute as b,resolve as x}from"path";y(),i(),l(),s(),f(),m(),g(),t(),d();function S(e,t,n){let r=[],i=[],a=[];for(let[o,s]of Object.entries(e)){let e=t[o],c=w(s.source,n?.projectRoot);e?s.sourceIsFallback||v(c,e.source)?a.push(o):i.push({name:o,declaredSource:c,materializedSource:e.source}):r.push(o)}return{missing:r,sourceChanged:i,upToDate:a}}async function C(t){let i=r();if(Object.keys(i).length===0)return{installed:[],updated:[],failed:[],upToDate:[],skipped:[]};let s;try{s=await n()}catch(e){_(e),s={}}let l=S(i,s,{projectRoot:a()}),d=[...l.missing.map(e=>({name:e,source:w(i[e].source),action:`install`})),...l.sourceChanged.map(({name:e,declaredSource:t})=>({name:e,source:t,action:`update`}))],f=[],m=[];for(let e of d){if(t?.skip?.(e.name,e.source)){f.push(e.name);continue}if(e.action===`update`&&p(e.source)&&!await u(e.source.path)){c(`[reconcile] '${e.name}' declared path does not exist; keeping materialized entry`),f.push(e.name);continue}m.push(e)}if(m.length===0)return{installed:[],updated:[],failed:[],upToDate:l.upToDate,skipped:f};c(`[reconcile] ${m.length} marketplace(s): ${m.map(e=>`${e.name}(${e.action})`).join(`, `)}`);let h=[],g=[],v=[];for(let n=0;n<m.length;n++){let{name:r,source:i,action:a}=m[n];t?.onProgress?.({type:`installing`,name:r,action:a,index:n+1,total:m.length});try{let n=await e(i);a===`install`?h.push(r):g.push(r),t?.onProgress?.({type:`installed`,name:r,alreadyMaterialized:n.alreadyMaterialized})}catch(e){let n=o(e);v.push({name:r,error:n}),t?.onProgress?.({type:`failed`,name:r,error:n}),_(e)}}return{installed:h,updated:g,failed:v,upToDate:l.upToDate,skipped:f}}function w(e,t){if((e.source===`directory`||e.source===`file`)&&!b(e.path)){let n=t??a(),r=h(n);return{...e,path:x(r??n,e.path)}}return e}export{C as n,S as t};
1
+ import{Ao as e,Io as t,Lo as n,Mo as r}from"./loadAgentsDir-DnsldjYU.js";import{Wt as i,et as a}from"./state-B3zvBu4R.js";import{P as o,R as s,c,i as l}from"./debug-D7OBvqC2.js";import{kn as u,vt as d,wn as f,yt as p}from"./settings-DUyIag_5.js";import{m,n as h}from"./git-CNhyfMtb.js";import{o as g,s as _}from"./log-CR0v5KUR.js";import{$n as v,Qn as y}from"./model-xI2MbgRj.js";import{isAbsolute as b,resolve as x}from"path";y(),i(),l(),s(),f(),m(),g(),t(),d();function S(e,t,n){let r=[],i=[],a=[];for(let[o,s]of Object.entries(e)){let e=t[o],c=w(s.source,n?.projectRoot);e?s.sourceIsFallback||v(c,e.source)?a.push(o):i.push({name:o,declaredSource:c,materializedSource:e.source}):r.push(o)}return{missing:r,sourceChanged:i,upToDate:a}}async function C(t){let i=r();if(Object.keys(i).length===0)return{installed:[],updated:[],failed:[],upToDate:[],skipped:[]};let s;try{s=await n()}catch(e){_(e),s={}}let l=S(i,s,{projectRoot:a()}),d=[...l.missing.map(e=>({name:e,source:w(i[e].source),action:`install`})),...l.sourceChanged.map(({name:e,declaredSource:t})=>({name:e,source:t,action:`update`}))],f=[],m=[];for(let e of d){if(t?.skip?.(e.name,e.source)){f.push(e.name);continue}if(e.action===`update`&&p(e.source)&&!await u(e.source.path)){c(`[reconcile] '${e.name}' declared path does not exist; keeping materialized entry`),f.push(e.name);continue}m.push(e)}if(m.length===0)return{installed:[],updated:[],failed:[],upToDate:l.upToDate,skipped:f};c(`[reconcile] ${m.length} marketplace(s): ${m.map(e=>`${e.name}(${e.action})`).join(`, `)}`);let h=[],g=[],v=[];for(let n=0;n<m.length;n++){let{name:r,source:i,action:a}=m[n];t?.onProgress?.({type:`installing`,name:r,action:a,index:n+1,total:m.length});try{let n=await e(i);a===`install`?h.push(r):g.push(r),t?.onProgress?.({type:`installed`,name:r,alreadyMaterialized:n.alreadyMaterialized})}catch(e){let n=o(e);v.push({name:r,error:n}),t?.onProgress?.({type:`failed`,name:r,error:n}),_(e)}}return{installed:h,updated:g,failed:v,upToDate:l.upToDate,skipped:f}}function w(e,t){if((e.source===`directory`||e.source===`file`)&&!b(e.path)){let n=t??a(),r=h(n);return{...e,path:x(r??n,e.path)}}return e}export{C as n,S as t};
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{Jx as t,_h as n,_s as r,as as i,b_ as a,bh as o,ch as s,co as c,hh as l,i as u,is as d,lo as f,o as p,qx as m,uh as h,vs as g,x_ as _,yh as v}from"./loadAgentsDir-CbtNPJV3.js";import{Wt as y,et as b}from"./state-BPFYBqm1.js";import{P as x,R as S,c as C,i as w}from"./debug-BQj6h99Q.js";import{o as T,s as E}from"./log-BlJ7CcKG.js";async function D(e){C(`refreshActivePlugins: clearing all plugin caches`),d(),s();let i=await f(),[a,c]=await Promise.all([r(),u(b())]),{enabled:l,disabled:p,errors:m}=i,[h,g]=await Promise.all([Promise.all(l.map(async e=>{if(e.mcpServers)return Object.keys(e.mcpServers).length;let n=await t(e,m);return n&&(e.mcpServers=n),n?Object.keys(n).length:0})),Promise.all(l.map(async e=>{if(e.lspServers)return Object.keys(e.lspServers).length;let t=await o(e,m);return t&&(e.lspServers=t),t?Object.keys(t).length:0}))]),v=h.reduce((e,t)=>e+t,0),y=g.reduce((e,t)=>e+t,0);e(e=>({...e,plugins:{...e.plugins,enabled:l,disabled:p,commands:a,errors:O(e.plugins.errors,m),needsRefresh:!1},agentDefinitions:c,mcp:{...e.mcp,pluginReconnectKey:e.mcp.pluginReconnectKey+1}})),n();let S=!1;try{await _()}catch(e){S=!0,E(e),C(`refreshActivePlugins: loadPluginHooks failed: ${x(e)}`)}let w=l.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 C(`refreshActivePlugins: ${l.length} enabled, ${a.length} commands, ${c.allAgents.length} agents, ${w} hooks, ${v} MCP, ${y} LSP`),{enabled_count:l.length,disabled_count:p.length,command_count:a.length,agent_count:c.allAgents.length,hook_count:w,mcp_count:v,lsp_count:y,error_count:m.length+ +!!S,agentDefinitions:c,pluginCommands:a}}function O(e,t){let n=e.filter(e=>e.source===`lsp-manager`||e.source.startsWith(`plugin:`)),r=new Set(t.map(k));return[...n.filter(e=>!r.has(k(e))),...t]}function k(e){return e.type===`generic-error`?`generic-error:${e.source}:${e.error}`:`${e.type}:${e.source}`}var A=e((()=>{y(),l(),p(),w(),S(),T(),i(),g(),a(),v(),m(),h(),c()}));export{D as n,A as t};
1
+ import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{Jx as t,_h as n,_s as r,as as i,b_ as a,bh as o,ch as s,co as c,hh as l,i as u,is as d,lo as f,o as p,qx as m,uh as h,vs as g,x_ as _,yh as v}from"./loadAgentsDir-DnsldjYU.js";import{Wt as y,et as b}from"./state-B3zvBu4R.js";import{P as x,R as S,c as C,i as w}from"./debug-D7OBvqC2.js";import{o as T,s as E}from"./log-CR0v5KUR.js";async function D(e){C(`refreshActivePlugins: clearing all plugin caches`),d(),s();let i=await f(),[a,c]=await Promise.all([r(),u(b())]),{enabled:l,disabled:p,errors:m}=i,[h,g]=await Promise.all([Promise.all(l.map(async e=>{if(e.mcpServers)return Object.keys(e.mcpServers).length;let n=await t(e,m);return n&&(e.mcpServers=n),n?Object.keys(n).length:0})),Promise.all(l.map(async e=>{if(e.lspServers)return Object.keys(e.lspServers).length;let t=await o(e,m);return t&&(e.lspServers=t),t?Object.keys(t).length:0}))]),v=h.reduce((e,t)=>e+t,0),y=g.reduce((e,t)=>e+t,0);e(e=>({...e,plugins:{...e.plugins,enabled:l,disabled:p,commands:a,errors:O(e.plugins.errors,m),needsRefresh:!1},agentDefinitions:c,mcp:{...e.mcp,pluginReconnectKey:e.mcp.pluginReconnectKey+1}})),n();let S=!1;try{await _()}catch(e){S=!0,E(e),C(`refreshActivePlugins: loadPluginHooks failed: ${x(e)}`)}let w=l.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 C(`refreshActivePlugins: ${l.length} enabled, ${a.length} commands, ${c.allAgents.length} agents, ${w} hooks, ${v} MCP, ${y} LSP`),{enabled_count:l.length,disabled_count:p.length,command_count:a.length,agent_count:c.allAgents.length,hook_count:w,mcp_count:v,lsp_count:y,error_count:m.length+ +!!S,agentDefinitions:c,pluginCommands:a}}function O(e,t){let n=e.filter(e=>e.source===`lsp-manager`||e.source.startsWith(`plugin:`)),r=new Set(t.map(k));return[...n.filter(e=>!r.has(k(e))),...t]}function k(e){return e.type===`generic-error`?`generic-error:${e.source}:${e.error}`:`${e.type}:${e.source}`}var A=e((()=>{y(),l(),p(),w(),S(),T(),i(),g(),a(),v(),m(),h(),c()}));export{D as n,A as t};
@@ -1 +1 @@
1
- import{o as e}from"./envUtils-DcaKZlRU.js";import{R as t,i as n}from"./debug-BQj6h99Q.js";import{g as r,n as i}from"./settings-CvhsRFaT.js";import{r as a}from"./execFileNoThrow-DYm1GeGn.js";import{t as o}from"./which-BR8YVCCW.js";import*as s from"os";import*as c from"path";import"fs";function l(e){let t=e,n=``,r=0;for(;t!==n&&r<10;)n=t,t=t.normalize(`NFKC`),t=t.replace(/[\p{Cf}\p{Co}\p{Cn}]/gu,``),t=t.replace(/[\u200B-\u200F]/g,``).replace(/[\u202A-\u202E]/g,``).replace(/[\u2066-\u2069]/g,``).replace(/[\uFEFF]/g,``).replace(/[\uE000-\uF8FF]/g,``),r++;if(r>=10)throw Error(`Unicode sanitization reached maximum iterations (10) for input: ${e.slice(0,100)}`);return t}var u=`claude-cli`;function d(e){for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(n<=31||n===127)return!0}return!1}var f=/^[\w.-]+\/[\w.-]+$/,p=5e3,m=4096;function h(e){let t=e.startsWith(`claude-cli://`)?e:e.startsWith(`claude-cli:`)?e.replace(`${u}:`,`${u}://`):null;if(!t)throw Error(`Invalid deep link: expected ${u}:// scheme, got "${e}"`);let n;try{n=new URL(t)}catch{throw Error(`Invalid deep link URL: "${e}"`)}if(n.hostname!==`open`)throw Error(`Unknown deep link action: "${n.hostname}"`);let r=n.searchParams.get(`cwd`)??void 0,i=n.searchParams.get(`repo`)??void 0,a=n.searchParams.get(`q`);if(r&&!r.startsWith(`/`)&&!/^[a-zA-Z]:[/\\]/.test(r))throw Error(`Invalid cwd in deep link: must be an absolute path, got "${r}"`);if(r&&d(r))throw Error(`Deep link cwd contains disallowed control characters`);if(r&&r.length>m)throw Error(`Deep link cwd exceeds ${m} characters (got ${r.length})`);if(i&&!f.test(i))throw Error(`Invalid repo in deep link: expected "owner/repo", got "${i}"`);let o;if(a&&a.trim().length>0){if(o=l(a.trim()),d(o))throw Error(`Deep link query contains disallowed control characters`);if(o.length>p)throw Error(`Deep link query exceeds ${p} characters (got ${o.length})`)}return{query:o,cwd:r,repo:i}}n(),e(),t(),a(),r(),o();var g=`com.anthropic.claude-code-url-handler`,_=c.join(s.homedir(),`Applications`,`Claude Code URL Handler.app`);c.join(_,`Contents`,`MacOS`,`claude`),`${u}`;async function v(){i().disableDeepLinkRegistration}export{v as n,h as r,g as t};
1
+ import{o as e}from"./envUtils-DcaKZlRU.js";import{R as t,i as n}from"./debug-D7OBvqC2.js";import{g as r,n as i}from"./settings-DUyIag_5.js";import{r as a}from"./execFileNoThrow-BHDSgTpZ.js";import{t as o}from"./which-3MmqfsNV.js";import*as s from"os";import*as c from"path";import"fs";function l(e){let t=e,n=``,r=0;for(;t!==n&&r<10;)n=t,t=t.normalize(`NFKC`),t=t.replace(/[\p{Cf}\p{Co}\p{Cn}]/gu,``),t=t.replace(/[\u200B-\u200F]/g,``).replace(/[\u202A-\u202E]/g,``).replace(/[\u2066-\u2069]/g,``).replace(/[\uFEFF]/g,``).replace(/[\uE000-\uF8FF]/g,``),r++;if(r>=10)throw Error(`Unicode sanitization reached maximum iterations (10) for input: ${e.slice(0,100)}`);return t}var u=`claude-cli`;function d(e){for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(n<=31||n===127)return!0}return!1}var f=/^[\w.-]+\/[\w.-]+$/,p=5e3,m=4096;function h(e){let t=e.startsWith(`claude-cli://`)?e:e.startsWith(`claude-cli:`)?e.replace(`${u}:`,`${u}://`):null;if(!t)throw Error(`Invalid deep link: expected ${u}:// scheme, got "${e}"`);let n;try{n=new URL(t)}catch{throw Error(`Invalid deep link URL: "${e}"`)}if(n.hostname!==`open`)throw Error(`Unknown deep link action: "${n.hostname}"`);let r=n.searchParams.get(`cwd`)??void 0,i=n.searchParams.get(`repo`)??void 0,a=n.searchParams.get(`q`);if(r&&!r.startsWith(`/`)&&!/^[a-zA-Z]:[/\\]/.test(r))throw Error(`Invalid cwd in deep link: must be an absolute path, got "${r}"`);if(r&&d(r))throw Error(`Deep link cwd contains disallowed control characters`);if(r&&r.length>m)throw Error(`Deep link cwd exceeds ${m} characters (got ${r.length})`);if(i&&!f.test(i))throw Error(`Invalid repo in deep link: expected "owner/repo", got "${i}"`);let o;if(a&&a.trim().length>0){if(o=l(a.trim()),d(o))throw Error(`Deep link query contains disallowed control characters`);if(o.length>p)throw Error(`Deep link query exceeds ${p} characters (got ${o.length})`)}return{query:o,cwd:r,repo:i}}n(),e(),t(),a(),r(),o();var g=`com.anthropic.claude-code-url-handler`,_=c.join(s.homedir(),`Applications`,`Claude Code URL Handler.app`);c.join(_,`Contents`,`MacOS`,`claude`),`${u}`;async function v(){i().disableDeepLinkRegistration}export{v as n,h as r,g as t};
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{o as t}from"./envUtils-DcaKZlRU.js";import{uT as n}from"./loadAgentsDir-CbtNPJV3.js";import{Wt as r}from"./state-BPFYBqm1.js";import{l as i,o as a}from"./stringUtils-BjnclTLB.js";import{t as o}from"./settingsSync-BhlegQAU.js";import{n as s,t as c}from"./refresh-DEXe3Lmx.js";function l(e,t){return`${e} ${i(e,t)}`}var u;e((()=>{r(),o(),t(),c(),n(),a(),u=async(e,t)=>{let n=await s(t.setAppState),r=`Reloaded: ${[l(n.enabled_count,`plugin`),l(n.command_count,`skill`),l(n.agent_count,`agent`),l(n.hook_count,`hook`),l(n.mcp_count,`plugin MCP server`),l(n.lsp_count,`plugin LSP server`)].join(` · `)}`;return n.error_count>0&&(r+=`\n${l(n.error_count,`error`)} during load. Run /doctor for details.`),{type:`text`,value:r}}}))();export{u as call};
1
+ import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{o as t}from"./envUtils-DcaKZlRU.js";import{uT as n}from"./loadAgentsDir-DnsldjYU.js";import{Wt as r}from"./state-B3zvBu4R.js";import{l as i,o as a}from"./stringUtils-CGZoOfer.js";import{t as o}from"./settingsSync-yE43qjMS.js";import{n as s,t as c}from"./refresh-DCQChX5A.js";function l(e,t){return`${e} ${i(e,t)}`}var u;e((()=>{r(),o(),t(),c(),n(),a(),u=async(e,t)=>{let n=await s(t.setAppState),r=`Reloaded: ${[l(n.enabled_count,`plugin`),l(n.command_count,`skill`),l(n.agent_count,`agent`),l(n.hook_count,`hook`),l(n.mcp_count,`plugin MCP server`),l(n.lsp_count,`plugin LSP server`)].join(` · `)}`;return n.error_count>0&&(r+=`\n${l(n.error_count,`error`)} during load. Run /doctor for details.`),{type:`text`,value:r}}}))();export{u as call};
@@ -1 +1 @@
1
- import{o as e,u as t}from"./envUtils-DcaKZlRU.js";import{n,t as r}from"./axios-DaWTGg7G.js";import{C as i,P as a,R as o,c as s,i as c,nt as l,tt as u,x as d}from"./debug-BQj6h99Q.js";import{O as f,k as p}from"./git-DplvjXEY.js";import{n as m,r as h}from"./analytics-DJobLaWP.js";import{dn as g,fn as _}from"./model-DlLO7TSx.js";import{c as ee,n as v}from"./sessionState-BlbRQ3Y6.js";import{i as y,t as b}from"./sessionIdCompat-Dgp6PW_1.js";import{a as x,r as S}from"./bridgeConfig-B3mR0kJ0.js";import{i as C,o as w,s as T}from"./debugUtils-B86DM1Sp.js";import{a as E,c as D,i as te,n as ne,o as O,r as re,s as ie,t as k}from"./bridgeMessaging-wZ5EKxW_.js";import{a as ae,r as A,t as oe}from"./flushGate-COa_KO98.js";import{t as j}from"./workSecret-BUd8cQ6-.js";import{i as M}from"./trustedDevice-CdLAZK6m.js";import{t as se}from"./jwtUtils-YCoZL0FW.js";e(),u(),f(),m(),g(),b(),v(),r(),c(),o(),d(),w();var N=`2023-06-01`;function P(e){return{Authorization:`Bearer ${e}`,"Content-Type":`application/json`,"anthropic-version":N}}async function ce(e,t,r,o,c){let l=`${e}/v1/code/sessions`,u;try{u=await n.post(l,{title:r,bridge:{},...c?.length?{tags:c}:{}},{headers:P(t),timeout:o,validateStatus:e=>e<500})}catch(e){return s(`[code-session] Session create request failed: ${a(e)}`),null}if(u.status!==200&&u.status!==201){let e=C(u.data);return s(`[code-session] Session create failed ${u.status}${e?`: ${e}`:``}`),null}let d=u.data;return!d||typeof d!=`object`||!(`session`in d)||!d.session||typeof d.session!=`object`||!(`id`in d.session)||typeof d.session.id!=`string`||!d.session.id.startsWith(`cse_`)?(s(`[code-session] No session.id (cse_*) in response: ${i(d).slice(0,200)}`),null):d.session.id}async function F(e,t,r,o,c){let l=`${t}/v1/code/sessions/${e}/bridge`,u=P(r);c&&(u[`X-Trusted-Device-Token`]=c);let d;try{d=await n.post(l,{},{headers:u,timeout:o,validateStatus:e=>e<500})}catch(e){return s(`[code-session] /bridge request failed: ${a(e)}`),null}if(d.status!==200){let e=C(d.data);return s(`[code-session] /bridge failed ${d.status}${e?`: ${e}`:``}`),null}let f=d.data;if(typeof f!=`object`||!f||!(`worker_jwt`in f)||typeof f.worker_jwt!=`string`||!(`expires_in`in f)||typeof f.expires_in!=`number`||!(`api_base_url`in f)||typeof f.api_base_url!=`string`||!(`worker_epoch`in f))return s(`[code-session] /bridge response malformed (need worker_jwt, expires_in, api_base_url, worker_epoch): ${i(f).slice(0,200)}`),null;let p=f.worker_epoch,m=typeof p==`string`?Number(p):p;return typeof m!=`number`||!Number.isFinite(m)||!Number.isSafeInteger(m)?(s(`[code-session] /bridge worker_epoch invalid: ${i(p)}`),null):{worker_jwt:f.worker_jwt,api_base_url:f.api_base_url,expires_in:f.expires_in,worker_epoch:m}}r(),w(),c(),o(),x();var I=`2023-06-01`;function L(e){return{Authorization:`Bearer ${e}`,"Content-Type":`application/json`,"anthropic-version":I}}async function R(e){let{baseUrl:n,orgUUID:r,title:i,getAccessToken:o,onAuth401:c,toSDKMessages:u,initialHistoryCap:d,initialMessages:f,onInboundMessage:m,onUserMessage:g,onPermissionResponse:_,onInterrupt:v,onSetModel:y,onSetMaxThinkingTokens:b,onSetPermissionMode:x,onStateChange:S,outboundOnly:C,tags:w}=e,M=await ae(),N=o();if(!N)return s(`[remote-bridge] No OAuth token`),null;let P=await z(()=>ce(n,N,i,M.http_timeout_ms,w),`createCodeSession`,M);if(!P)return S?.(`failed`,`Session creation failed — see debug log`),T(`v2_session_create_failed`,void 0,!0),null;let F=P;s(`[remote-bridge] Created session ${F}`),p(`info`,`bridge_repl_v2_session_created`);let I=await z(()=>B(F,n,N,M.http_timeout_ms),`fetchRemoteCredentials`,M);if(!I)return S?.(`failed`,`Remote credentials fetch failed — see debug log`),T(`v2_remote_creds_failed`,void 0,!0),V(F,n,N,r,M.http_timeout_ms),null;s(`[remote-bridge] Fetched bridge credentials (expires_in=${I.expires_in}s)`);let L=j(I.api_base_url,F);s(`[remote-bridge] v2 session URL: ${L}`);let R;try{R=await A({sessionUrl:L,ingressToken:I.worker_jwt,sessionId:F,epoch:I.worker_epoch,heartbeatIntervalMs:M.heartbeat_interval_ms,heartbeatJitterFraction:M.heartbeat_jitter_fraction,getAuthToken:()=>I.worker_jwt,outboundOnly:C})}catch(e){return s(`[remote-bridge] v2 transport setup failed: ${a(e)}`,{level:`error`}),S?.(`failed`,`Transport setup failed: ${a(e)}`),T(`v2_transport_setup_failed`,void 0,!0),V(F,n,N,r,M.http_timeout_ms),null}s(`[remote-bridge] v2 transport created (epoch=${I.worker_epoch})`),S?.(`ready`);let H=new k(M.uuid_dedup_buffer_size),U=new Set;if(f)for(let e of f)U.add(e.uuid),H.add(e.uuid);let le=new k(M.uuid_dedup_buffer_size),W=new oe,G=!1,K=!1,q=!1,J=!g,Y=`initial`,X;function Z(e){K||h(`tengu_bridge_repl_connect_timeout`,{v2:!0,elapsed_ms:M.connect_timeout_ms,cause:e})}ee(e=>{K||R.reportMetadata(e)},{replayCurrent:!0});let Q=se({refreshBufferMs:M.token_refresh_buffer_ms,getAccessToken:async()=>{let e=o();return c&&await c(e??``),o()??e},onRefresh:(e,t)=>{(async()=>{if(q||K){s(`[remote-bridge] Recovery already in flight, skipping proactive refresh`);return}q=!0;try{let r=await z(()=>B(e,n,t,M.http_timeout_ms),`fetchRemoteCredentials (proactive)`,M);if(!r||K)return;await ue(r,`proactive_refresh`),s(`[remote-bridge] Transport rebuilt (proactive refresh)`)}catch(e){s(`[remote-bridge] Proactive refresh rebuild failed: ${a(e)}`,{level:`error`}),p(`error`,`bridge_repl_v2_proactive_refresh_failed`),K||S?.(`failed`,`Refresh failed: ${a(e)}`)}finally{q=!1}})()},label:`remote`});Q.scheduleFromExpiresIn(F,I.expires_in);function $(){R.setOnConnect(()=>{if(clearTimeout(X),s(`[remote-bridge] v2 transport connected`),p(`info`,`bridge_repl_v2_transport_connected`),h(`tengu_bridge_repl_ws_connected`,{v2:!0,cause:Y}),!G&&f&&f.length>0){G=!0;let e=R;pe(f).catch(e=>s(`[remote-bridge] flushHistory failed: ${e}`)).finally(()=>{R!==e||K||q||(fe(),S?.(`connected`))})}else W.active||S?.(`connected`)}),R.setOnData(e=>{re(e,H,le,m,_?e=>{R.reportState(`running`),_(e)}:void 0,e=>te(e,{transport:R,sessionId:F,onInterrupt:v,onSetModel:y,onSetMaxThinkingTokens:b,onSetPermissionMode:x,outboundOnly:C}))}),R.setOnClose(e=>{if(clearTimeout(X),!K){if(s(`[remote-bridge] v2 transport closed (code=${e})`),h(`tengu_bridge_repl_ws_closed`,{code:e,v2:!0}),e===401&&!q){de();return}S?.(`failed`,`Transport closed (code ${e})`)}})}async function ue(e,t){Y=t,W.start();try{let t=R.getLastSequenceNum();if(R.close(),R=await A({sessionUrl:j(e.api_base_url,F),ingressToken:e.worker_jwt,sessionId:F,epoch:e.worker_epoch,heartbeatIntervalMs:M.heartbeat_interval_ms,heartbeatJitterFraction:M.heartbeat_jitter_fraction,initialSequenceNum:t,getAuthToken:()=>e.worker_jwt,outboundOnly:C}),K){R.close();return}$(),R.connect(),X=setTimeout(Z,M.connect_timeout_ms,Y),Q.scheduleFromExpiresIn(F,e.expires_in),fe()}finally{W.drop()}}async function de(){if(!q){q=!0,S?.(`reconnecting`,`JWT expired — refreshing`),s(`[remote-bridge] 401 on SSE — attempting JWT refresh`);try{let e=o();c&&await c(e??``);let t=o()??e;if(!t||K){K||S?.(`failed`,`JWT refresh failed: no OAuth token`);return}let r=await z(()=>B(F,n,t,M.http_timeout_ms),`fetchRemoteCredentials (recovery)`,M);if(!r||K){K||S?.(`failed`,`JWT refresh failed after 401`);return}G=!1,await ue(r,`auth_401_recovery`),s(`[remote-bridge] Transport rebuilt after 401`)}catch(e){s(`[remote-bridge] 401 recovery failed: ${a(e)}`,{level:`error`}),p(`error`,`bridge_repl_v2_jwt_refresh_failed`),K||S?.(`failed`,`JWT refresh failed: ${a(e)}`)}finally{q=!1}}}$(),f&&f.length>0&&W.start(),R.connect(),X=setTimeout(Z,M.connect_timeout_ms,Y);function fe(){let e=W.end();if(e.length===0)return;for(let t of e)H.add(t.uuid);let t=u(e).map(e=>({...e,session_id:F}));D(e)&&R.reportState(`running`),s(`[remote-bridge] Drained ${e.length} queued message(s) after flush`),R.writeBatch(t)}async function pe(e){let t=e.filter(E),n=d>0&&t.length>d?t.slice(-d):t;n.length<t.length&&s(`[remote-bridge] Capped initial flush: ${t.length} -> ${n.length} (cap=${d})`);let r=u(n).map(e=>({...e,session_id:F}));if(r.length===0)return;let i=t.at(-1);i&&ie(i)&&R.reportState(`running`),s(`[remote-bridge] Flushing ${r.length} history events`),await R.writeBatch(r)}async function me(){if(K)return;K=!0,Q.cancelAll(),clearTimeout(X),W.drop(),R.reportState(`idle`);let e={...O(F),session_id:F};R.write(e);let t=o(),i=await V(F,n,t,r,M.teardown_archive_timeout_ms);if(i===401&&c)try{await c(t??``),t=o(),i=await V(F,n,t,r,M.teardown_archive_timeout_ms)}catch(e){s(`[remote-bridge] Teardown 401 retry threw: ${a(e)}`,{level:`error`})}R.close();let l=i===`no_token`?`skipped_no_token`:i===`timeout`||i===`error`?`network_error`:i>=500?`server_5xx`:i>=400?`server_4xx`:`ok`;s(`[remote-bridge] Torn down (archive=${i})`),p(`info`,`bridge_repl_v2_teardown`),h(`tengu_bridge_repl_teardown`,{v2:!0,archive_status:l,archive_ok:typeof i==`number`&&i<400,archive_http_status:typeof i==`number`?i:void 0,archive_timeout:i===`timeout`,archive_no_token:i===`no_token`})}let he=l(me);return h(`tengu_bridge_repl_started`,{has_initial_messages:!!(f&&f.length>0),v2:!0,expires_in_s:I.expires_in,inProtectedNamespace:t()}),{bridgeSessionId:F,environmentId:``,sessionIngressUrl:I.api_base_url,writeMessages(e){let t=e.filter(e=>E(e)&&!U.has(e.uuid)&&!H.has(e.uuid));if(t.length===0)return;if(!J)for(let e of t){let t=ne(e);if(t!==void 0&&g?.(t,F)){J=!0;break}}if(W.enqueue(...t)){s(`[remote-bridge] Queued ${t.length} message(s) during flush`);return}for(let e of t)H.add(e.uuid);let n=u(t).map(e=>({...e,session_id:F}));D(t)&&R.reportState(`running`),s(`[remote-bridge] Sending ${t.length} message(s)`),R.writeBatch(n)},writeSdkMessages(e){let t=e.filter(e=>!e.uuid||!H.has(e.uuid));if(t.length===0)return;for(let e of t)e.uuid&&H.add(e.uuid);let n=t.map(e=>({...e,session_id:F}));R.writeBatch(n)},sendControlRequest(e){if(q){s(`[remote-bridge] Dropping control_request during 401 recovery: ${e.request_id}`);return}let t={...e,session_id:F};e.request?.subtype===`can_use_tool`&&R.reportState(`requires_action`),R.write(t),s(`[remote-bridge] Sent control_request request_id=${e.request_id}`)},sendControlResponse(e){if(q){s(`[remote-bridge] Dropping control_response during 401 recovery`);return}let t={...e,session_id:F};R.reportState(`running`),R.write(t),s(`[remote-bridge] Sent control_response`)},sendControlCancelRequest(e){if(q){s(`[remote-bridge] Dropping control_cancel_request during 401 recovery: ${e}`);return}let t={type:`control_cancel_request`,request_id:e,session_id:F};R.reportState(`running`),R.write(t),s(`[remote-bridge] Sent control_cancel_request request_id=${e}`)},sendResult(){if(q){s(`[remote-bridge] Dropping result during 401 recovery`);return}R.reportState(`idle`);let e={...O(F),session_id:F};R.write(e),s(`[remote-bridge] Sent result`)},async teardown(){he(),await me()}}}async function z(e,t,n){let r=n.init_retry_max_attempts;for(let i=1;i<=r;i++){let a=await e();if(a!==null)return a;if(i<r){let e=n.init_retry_base_delay_ms*2**(i-1),a=e*n.init_retry_jitter_fraction*(2*Math.random()-1),o=Math.min(e+a,n.init_retry_max_delay_ms);s(`[remote-bridge] ${t} failed (attempt ${i}/${r}), retrying in ${Math.round(o)}ms`),await _(o)}}return null}async function B(e,t,n,r){let i=await F(e,t,n,r,M());return i?S()?{...i,api_base_url:t}:i:null}async function V(e,t,r,i,o){if(!r)return`no_token`;let c=y(e);try{let e=await n.post(`${t}/v1/sessions/${c}/archive`,{},{headers:{...L(r),"anthropic-beta":`ccr-byoc-2025-07-29`,"x-organization-uuid":i},timeout:o,validateStatus:()=>!0});return s(`[remote-bridge] Archive ${c} status=${e.status}`),e.status}catch(e){return s(`[remote-bridge] Archive failed: ${a(e)}`),n.isAxiosError(e)&&e.code===`ECONNABORTED`?`timeout`:`error`}}export{R as initEnvLessBridgeCore};
1
+ import{o as e,u as t}from"./envUtils-DcaKZlRU.js";import{n,t as r}from"./axios-DaWTGg7G.js";import{C as i,P as a,R as o,c as s,i as c,nt as l,tt as u,x as d}from"./debug-D7OBvqC2.js";import{O as f,k as p}from"./git-CNhyfMtb.js";import{n as m,r as h}from"./analytics-DJobLaWP.js";import{dn as g,fn as _}from"./model-xI2MbgRj.js";import{c as ee,n as v}from"./sessionState-B3tFm9SC.js";import{i as y,t as b}from"./sessionIdCompat-Dgp6PW_1.js";import{a as x,r as S}from"./bridgeConfig-Bxkrv8ZL.js";import{i as C,o as w,s as T}from"./debugUtils-B-GMBTBk.js";import{a as E,c as D,i as te,n as ne,o as O,r as re,s as ie,t as k}from"./bridgeMessaging-BcSjIPCZ.js";import{a as ae,r as A,t as oe}from"./flushGate-BD3Tk3_k.js";import{t as j}from"./workSecret-BsolC5S7.js";import{i as M}from"./trustedDevice-Kyid5Fuy.js";import{t as se}from"./jwtUtils-ClCcC8lO.js";e(),u(),f(),m(),g(),b(),v(),r(),c(),o(),d(),w();var N=`2023-06-01`;function P(e){return{Authorization:`Bearer ${e}`,"Content-Type":`application/json`,"anthropic-version":N}}async function ce(e,t,r,o,c){let l=`${e}/v1/code/sessions`,u;try{u=await n.post(l,{title:r,bridge:{},...c?.length?{tags:c}:{}},{headers:P(t),timeout:o,validateStatus:e=>e<500})}catch(e){return s(`[code-session] Session create request failed: ${a(e)}`),null}if(u.status!==200&&u.status!==201){let e=C(u.data);return s(`[code-session] Session create failed ${u.status}${e?`: ${e}`:``}`),null}let d=u.data;return!d||typeof d!=`object`||!(`session`in d)||!d.session||typeof d.session!=`object`||!(`id`in d.session)||typeof d.session.id!=`string`||!d.session.id.startsWith(`cse_`)?(s(`[code-session] No session.id (cse_*) in response: ${i(d).slice(0,200)}`),null):d.session.id}async function F(e,t,r,o,c){let l=`${t}/v1/code/sessions/${e}/bridge`,u=P(r);c&&(u[`X-Trusted-Device-Token`]=c);let d;try{d=await n.post(l,{},{headers:u,timeout:o,validateStatus:e=>e<500})}catch(e){return s(`[code-session] /bridge request failed: ${a(e)}`),null}if(d.status!==200){let e=C(d.data);return s(`[code-session] /bridge failed ${d.status}${e?`: ${e}`:``}`),null}let f=d.data;if(typeof f!=`object`||!f||!(`worker_jwt`in f)||typeof f.worker_jwt!=`string`||!(`expires_in`in f)||typeof f.expires_in!=`number`||!(`api_base_url`in f)||typeof f.api_base_url!=`string`||!(`worker_epoch`in f))return s(`[code-session] /bridge response malformed (need worker_jwt, expires_in, api_base_url, worker_epoch): ${i(f).slice(0,200)}`),null;let p=f.worker_epoch,m=typeof p==`string`?Number(p):p;return typeof m!=`number`||!Number.isFinite(m)||!Number.isSafeInteger(m)?(s(`[code-session] /bridge worker_epoch invalid: ${i(p)}`),null):{worker_jwt:f.worker_jwt,api_base_url:f.api_base_url,expires_in:f.expires_in,worker_epoch:m}}r(),w(),c(),o(),x();var I=`2023-06-01`;function L(e){return{Authorization:`Bearer ${e}`,"Content-Type":`application/json`,"anthropic-version":I}}async function R(e){let{baseUrl:n,orgUUID:r,title:i,getAccessToken:o,onAuth401:c,toSDKMessages:u,initialHistoryCap:d,initialMessages:f,onInboundMessage:m,onUserMessage:g,onPermissionResponse:_,onInterrupt:v,onSetModel:y,onSetMaxThinkingTokens:b,onSetPermissionMode:x,onStateChange:S,outboundOnly:C,tags:w}=e,M=await ae(),N=o();if(!N)return s(`[remote-bridge] No OAuth token`),null;let P=await z(()=>ce(n,N,i,M.http_timeout_ms,w),`createCodeSession`,M);if(!P)return S?.(`failed`,`Session creation failed — see debug log`),T(`v2_session_create_failed`,void 0,!0),null;let F=P;s(`[remote-bridge] Created session ${F}`),p(`info`,`bridge_repl_v2_session_created`);let I=await z(()=>B(F,n,N,M.http_timeout_ms),`fetchRemoteCredentials`,M);if(!I)return S?.(`failed`,`Remote credentials fetch failed — see debug log`),T(`v2_remote_creds_failed`,void 0,!0),V(F,n,N,r,M.http_timeout_ms),null;s(`[remote-bridge] Fetched bridge credentials (expires_in=${I.expires_in}s)`);let L=j(I.api_base_url,F);s(`[remote-bridge] v2 session URL: ${L}`);let R;try{R=await A({sessionUrl:L,ingressToken:I.worker_jwt,sessionId:F,epoch:I.worker_epoch,heartbeatIntervalMs:M.heartbeat_interval_ms,heartbeatJitterFraction:M.heartbeat_jitter_fraction,getAuthToken:()=>I.worker_jwt,outboundOnly:C})}catch(e){return s(`[remote-bridge] v2 transport setup failed: ${a(e)}`,{level:`error`}),S?.(`failed`,`Transport setup failed: ${a(e)}`),T(`v2_transport_setup_failed`,void 0,!0),V(F,n,N,r,M.http_timeout_ms),null}s(`[remote-bridge] v2 transport created (epoch=${I.worker_epoch})`),S?.(`ready`);let H=new k(M.uuid_dedup_buffer_size),U=new Set;if(f)for(let e of f)U.add(e.uuid),H.add(e.uuid);let le=new k(M.uuid_dedup_buffer_size),W=new oe,G=!1,K=!1,q=!1,J=!g,Y=`initial`,X;function Z(e){K||h(`tengu_bridge_repl_connect_timeout`,{v2:!0,elapsed_ms:M.connect_timeout_ms,cause:e})}ee(e=>{K||R.reportMetadata(e)},{replayCurrent:!0});let Q=se({refreshBufferMs:M.token_refresh_buffer_ms,getAccessToken:async()=>{let e=o();return c&&await c(e??``),o()??e},onRefresh:(e,t)=>{(async()=>{if(q||K){s(`[remote-bridge] Recovery already in flight, skipping proactive refresh`);return}q=!0;try{let r=await z(()=>B(e,n,t,M.http_timeout_ms),`fetchRemoteCredentials (proactive)`,M);if(!r||K)return;await ue(r,`proactive_refresh`),s(`[remote-bridge] Transport rebuilt (proactive refresh)`)}catch(e){s(`[remote-bridge] Proactive refresh rebuild failed: ${a(e)}`,{level:`error`}),p(`error`,`bridge_repl_v2_proactive_refresh_failed`),K||S?.(`failed`,`Refresh failed: ${a(e)}`)}finally{q=!1}})()},label:`remote`});Q.scheduleFromExpiresIn(F,I.expires_in);function $(){R.setOnConnect(()=>{if(clearTimeout(X),s(`[remote-bridge] v2 transport connected`),p(`info`,`bridge_repl_v2_transport_connected`),h(`tengu_bridge_repl_ws_connected`,{v2:!0,cause:Y}),!G&&f&&f.length>0){G=!0;let e=R;pe(f).catch(e=>s(`[remote-bridge] flushHistory failed: ${e}`)).finally(()=>{R!==e||K||q||(fe(),S?.(`connected`))})}else W.active||S?.(`connected`)}),R.setOnData(e=>{re(e,H,le,m,_?e=>{R.reportState(`running`),_(e)}:void 0,e=>te(e,{transport:R,sessionId:F,onInterrupt:v,onSetModel:y,onSetMaxThinkingTokens:b,onSetPermissionMode:x,outboundOnly:C}))}),R.setOnClose(e=>{if(clearTimeout(X),!K){if(s(`[remote-bridge] v2 transport closed (code=${e})`),h(`tengu_bridge_repl_ws_closed`,{code:e,v2:!0}),e===401&&!q){de();return}S?.(`failed`,`Transport closed (code ${e})`)}})}async function ue(e,t){Y=t,W.start();try{let t=R.getLastSequenceNum();if(R.close(),R=await A({sessionUrl:j(e.api_base_url,F),ingressToken:e.worker_jwt,sessionId:F,epoch:e.worker_epoch,heartbeatIntervalMs:M.heartbeat_interval_ms,heartbeatJitterFraction:M.heartbeat_jitter_fraction,initialSequenceNum:t,getAuthToken:()=>e.worker_jwt,outboundOnly:C}),K){R.close();return}$(),R.connect(),X=setTimeout(Z,M.connect_timeout_ms,Y),Q.scheduleFromExpiresIn(F,e.expires_in),fe()}finally{W.drop()}}async function de(){if(!q){q=!0,S?.(`reconnecting`,`JWT expired — refreshing`),s(`[remote-bridge] 401 on SSE — attempting JWT refresh`);try{let e=o();c&&await c(e??``);let t=o()??e;if(!t||K){K||S?.(`failed`,`JWT refresh failed: no OAuth token`);return}let r=await z(()=>B(F,n,t,M.http_timeout_ms),`fetchRemoteCredentials (recovery)`,M);if(!r||K){K||S?.(`failed`,`JWT refresh failed after 401`);return}G=!1,await ue(r,`auth_401_recovery`),s(`[remote-bridge] Transport rebuilt after 401`)}catch(e){s(`[remote-bridge] 401 recovery failed: ${a(e)}`,{level:`error`}),p(`error`,`bridge_repl_v2_jwt_refresh_failed`),K||S?.(`failed`,`JWT refresh failed: ${a(e)}`)}finally{q=!1}}}$(),f&&f.length>0&&W.start(),R.connect(),X=setTimeout(Z,M.connect_timeout_ms,Y);function fe(){let e=W.end();if(e.length===0)return;for(let t of e)H.add(t.uuid);let t=u(e).map(e=>({...e,session_id:F}));D(e)&&R.reportState(`running`),s(`[remote-bridge] Drained ${e.length} queued message(s) after flush`),R.writeBatch(t)}async function pe(e){let t=e.filter(E),n=d>0&&t.length>d?t.slice(-d):t;n.length<t.length&&s(`[remote-bridge] Capped initial flush: ${t.length} -> ${n.length} (cap=${d})`);let r=u(n).map(e=>({...e,session_id:F}));if(r.length===0)return;let i=t.at(-1);i&&ie(i)&&R.reportState(`running`),s(`[remote-bridge] Flushing ${r.length} history events`),await R.writeBatch(r)}async function me(){if(K)return;K=!0,Q.cancelAll(),clearTimeout(X),W.drop(),R.reportState(`idle`);let e={...O(F),session_id:F};R.write(e);let t=o(),i=await V(F,n,t,r,M.teardown_archive_timeout_ms);if(i===401&&c)try{await c(t??``),t=o(),i=await V(F,n,t,r,M.teardown_archive_timeout_ms)}catch(e){s(`[remote-bridge] Teardown 401 retry threw: ${a(e)}`,{level:`error`})}R.close();let l=i===`no_token`?`skipped_no_token`:i===`timeout`||i===`error`?`network_error`:i>=500?`server_5xx`:i>=400?`server_4xx`:`ok`;s(`[remote-bridge] Torn down (archive=${i})`),p(`info`,`bridge_repl_v2_teardown`),h(`tengu_bridge_repl_teardown`,{v2:!0,archive_status:l,archive_ok:typeof i==`number`&&i<400,archive_http_status:typeof i==`number`?i:void 0,archive_timeout:i===`timeout`,archive_no_token:i===`no_token`})}let he=l(me);return h(`tengu_bridge_repl_started`,{has_initial_messages:!!(f&&f.length>0),v2:!0,expires_in_s:I.expires_in,inProtectedNamespace:t()}),{bridgeSessionId:F,environmentId:``,sessionIngressUrl:I.api_base_url,writeMessages(e){let t=e.filter(e=>E(e)&&!U.has(e.uuid)&&!H.has(e.uuid));if(t.length===0)return;if(!J)for(let e of t){let t=ne(e);if(t!==void 0&&g?.(t,F)){J=!0;break}}if(W.enqueue(...t)){s(`[remote-bridge] Queued ${t.length} message(s) during flush`);return}for(let e of t)H.add(e.uuid);let n=u(t).map(e=>({...e,session_id:F}));D(t)&&R.reportState(`running`),s(`[remote-bridge] Sending ${t.length} message(s)`),R.writeBatch(n)},writeSdkMessages(e){let t=e.filter(e=>!e.uuid||!H.has(e.uuid));if(t.length===0)return;for(let e of t)e.uuid&&H.add(e.uuid);let n=t.map(e=>({...e,session_id:F}));R.writeBatch(n)},sendControlRequest(e){if(q){s(`[remote-bridge] Dropping control_request during 401 recovery: ${e.request_id}`);return}let t={...e,session_id:F};e.request?.subtype===`can_use_tool`&&R.reportState(`requires_action`),R.write(t),s(`[remote-bridge] Sent control_request request_id=${e.request_id}`)},sendControlResponse(e){if(q){s(`[remote-bridge] Dropping control_response during 401 recovery`);return}let t={...e,session_id:F};R.reportState(`running`),R.write(t),s(`[remote-bridge] Sent control_response`)},sendControlCancelRequest(e){if(q){s(`[remote-bridge] Dropping control_cancel_request during 401 recovery: ${e}`);return}let t={type:`control_cancel_request`,request_id:e,session_id:F};R.reportState(`running`),R.write(t),s(`[remote-bridge] Sent control_cancel_request request_id=${e}`)},sendResult(){if(q){s(`[remote-bridge] Dropping result during 401 recovery`);return}R.reportState(`idle`);let e={...O(F),session_id:F};R.write(e),s(`[remote-bridge] Sent result`)},async teardown(){he(),await me()}}}async function z(e,t,n){let r=n.init_retry_max_attempts;for(let i=1;i<=r;i++){let a=await e();if(a!==null)return a;if(i<r){let e=n.init_retry_base_delay_ms*2**(i-1),a=e*n.init_retry_jitter_fraction*(2*Math.random()-1),o=Math.min(e+a,n.init_retry_max_delay_ms);s(`[remote-bridge] ${t} failed (attempt ${i}/${r}), retrying in ${Math.round(o)}ms`),await _(o)}}return null}async function B(e,t,n,r){let i=await F(e,t,n,r,M());return i?S()?{...i,api_base_url:t}:i:null}async function V(e,t,r,i,o){if(!r)return`no_token`;let c=y(e);try{let e=await n.post(`${t}/v1/sessions/${c}/archive`,{},{headers:{...L(r),"anthropic-beta":`ccr-byoc-2025-07-29`,"x-organization-uuid":i},timeout:o,validateStatus:()=>!0});return s(`[remote-bridge] Archive ${c} status=${e.status}`),e.status}catch(e){return s(`[remote-bridge] Archive failed: ${a(e)}`),n.isAxiosError(e)&&e.code===`ECONNABORTED`?`timeout`:`error`}}export{R as initEnvLessBridgeCore};
@@ -0,0 +1 @@
1
+ import{n as e,t}from"./axios-DaWTGg7G.js";import{Av as n,dT as r,jv as i,uT as a}from"./loadAgentsDir-DnsldjYU.js";import{D as o,F as s,N as c,j as l,n as u,r as ee,t as te}from"./lazySchema-DULtBUCI.js";import{C as d,F as f,N as p,R as m,c as h,i as g,nt as _,tt as ne,x as re}from"./debug-D7OBvqC2.js";import{Hn as v,Kn as y,N as ie,P as b,Un as x,Vn as S}from"./settings-DUyIag_5.js";import{l as C,s as w,u as T}from"./oauth-D38aRTUb.js";import{Pt as E,St as D,ct as O,dn as k,fn as A,gt as j}from"./model-xI2MbgRj.js";import{n as M,t as N}from"./userAgent-D8vvjitA.js";import{n as P,r as F,t as I}from"./syncCache-BiqQEess.js";import{createHash as L}from"crypto";import{open as R,unlink as z}from"fs/promises";t(),ee(),ne(),m(),re(),g(),te(),T(),b(),M(),k(),E(),a(),i();async function ae(e,t){return`no_check_needed`}function B(e){return!0}x(),I();var V=u(()=>o({uuid:c(),checksum:c(),settings:l(c(),s())})),H=1e4,U=5,W=3600*1e3,G=null,K=null,q=null,J=3e4;function oe(){K||P()&&(K=new Promise(e=>{q=e,setTimeout(()=>{q&&(h(`Remote settings: Loading promise timed out, resolving anyway`),q(),q=null)},J)}))}function se(){return`${C().BASE_API_URL}/api/claude_code/settings`}function Y(e){if(Array.isArray(e))return e.map(Y);if(typeof e==`object`&&e){let t={};for(let n of Object.keys(e).sort())t[n]=Y(e[n]);return t}return e}function ce(e){let t=d(Y(e));return`sha256:${L(`sha256`).update(t).digest(`hex`)}`}function le(){return P()}async function ue(){K&&await K}function de(){try{let{key:e}=j({skipRetrievingKeyFromApiKeyHelper:!0});if(e)return{headers:{"x-api-key":e}}}catch{}let e=D();return e?.accessToken?{headers:{Authorization:`Bearer ${e.accessToken}`,"anthropic-beta":w}}:{headers:{},error:`No authentication available`}}async function fe(e){let t=null;for(let r=1;r<=6;r++){if(t=await pe(e),t.success||t.skipRetry||r>U)return t;let i=n(r);h(`Remote settings: Retry ${r}/${U} after ${i}ms`),await A(i)}return t}async function pe(t){try{await O();let n=de();if(n.error)return{success:!1,error:`Authentication required for remote settings`,skipRetry:!0};let r=se(),i={...n.headers,"User-Agent":N()};t&&(i[`If-None-Match`]=`"${t}"`);let a=await e.get(r,{headers:i,timeout:H,validateStatus:e=>e===200||e===204||e===304||e===404});if(a.status===304)return h(`Remote settings: Using cached settings (304)`),{success:!0,settings:null,checksum:t};if(a.status===204||a.status===404)return h(`Remote settings: No settings found (${a.status})`),{success:!0,settings:{},checksum:void 0};let o=V().safeParse(a.data);if(!o.success)return h(`Remote settings: Invalid response format - ${o.error.message}`),{success:!1,error:`Invalid remote settings format`};let s=ie().safeParse(o.data.settings);return s.success?(h(`Remote settings: Fetched successfully`),{success:!0,settings:s.data,checksum:o.data.checksum}):(h(`Remote settings: Settings validation failed - ${s.error.message}`),{success:!1,error:`Invalid settings structure`})}catch(e){let{kind:t,status:n,message:r}=p(e);if(n===404)return{success:!0,settings:{},checksum:``};switch(t){case`auth`:return{success:!1,error:`Not authorized for remote settings`,skipRetry:!0};case`timeout`:return{success:!1,error:`Remote settings request timeout`};case`network`:return{success:!1,error:`Cannot connect to server`};default:return{success:!1,error:r}}}}async function me(e){try{let t=v(),n=await R(t,`w`,384);try{await n.writeFile(d(e,null,2),{encoding:`utf-8`}),await n.datasync()}finally{await n.close()}h(`Remote settings: Saved to ${t}`)}catch(e){h(`Remote settings: Failed to save - ${e instanceof Error?e.message:`unknown error`}`)}}async function X(){$(),F(),K=null,q=null;try{await z(v())}catch{}}async function Z(){if(!P())return null;let e=S(),t=e?ce(e):void 0;try{let n=await fe(t);if(!n.success)return e?(h(`Remote settings: Using stale cache after fetch failure`),y(e),e):null;if(n.settings===null&&e)return h(`Remote settings: Cache still valid (304 Not Modified)`),y(e),e;let r=n.settings||{};if(Object.keys(r).length>0)return B(await ae(e,r))?(y(r),await me(r),h(`Remote settings: Applied new settings successfully`),r):(h(`Remote settings: User rejected new settings, using cached settings`),e);y(r);try{await z(v()),h(`Remote settings: Deleted cached file (404 response)`)}catch(e){f(e)!==`ENOENT`&&h(`Remote settings: Failed to delete cached file - ${e instanceof Error?e.message:`unknown error`}`)}return r}catch{return e?(h(`Remote settings: Using stale cache after error`),y(e),e):null}}async function Q(){P()&&!K&&(K=new Promise(e=>{q=e})),S()&&q&&(q(),q=null);try{let e=await Z();P()&&_e(),e!==null&&r.notifyChange(`policySettings`)}finally{q&&(q(),q=null)}}async function he(){if(await X(),!P()){r.notifyChange(`policySettings`);return}await Z(),h(`Remote settings: Refreshed after auth change`),r.notifyChange(`policySettings`)}async function ge(){if(!P())return;let e=S(),t=e?d(e):null;try{await Z();let e=S();(e?d(e):null)!==t&&(h(`Remote settings: Changed during background poll`),r.notifyChange(`policySettings`))}catch{}}function _e(){G===null&&P()&&(G=setInterval(()=>{ge()},W),G.unref(),_(async()=>$()))}function $(){G!==null&&(clearInterval(G),G=null)}export{he as a,Q as i,oe as n,ue as o,le as r,X as t};
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{La as t,br as n,hr as r,ka as i,oi as a,ri as o}from"./loadAgentsDir-CbtNPJV3.js";import{Wt as s,pt as c}from"./state-BPFYBqm1.js";import{a as l,i as u,r as d}from"./bridgeConfig-B3mR0kJ0.js";import{n as f,t as p}from"./generateSessionName-cAL5T7pG.js";async function m(e,t,n){let s;if(!n||n.trim()===``){let n=await p(i(t.messages),t.abortController.signal);if(!n)return e(`Could not generate a name: no conversation context yet. Usage: /rename <name>`,{display:`system`}),null;s=n}else s=n.trim();let l=c(),f=r();await a(l,s,f);let m=t.getAppState().replBridgeSessionId;if(m){let e=u();import(`./createSession-CnlPXXkA.js`).then(({updateBridgeSessionTitle:t})=>t(m,s,{baseUrl:d(),getAccessToken:e?()=>e:void 0}).catch(()=>{}))}return await o(l,s,f),t.setAppState(e=>({...e,standaloneAgentContext:{...e.standaloneAgentContext,name:s}})),e(`Session renamed to: ${s}`,{display:`system`}),null}e((()=>{s(),l(),t(),n(),f()}))();export{m as call};
1
+ import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{La as t,br as n,hr as r,ka as i,oi as a,ri as o}from"./loadAgentsDir-DnsldjYU.js";import{Wt as s,pt as c}from"./state-B3zvBu4R.js";import{a as l,i as u,r as d}from"./bridgeConfig-Bxkrv8ZL.js";import{n as f,t as p}from"./generateSessionName-CHaK44K-.js";async function m(e,t,n){let s;if(!n||n.trim()===``){let n=await p(i(t.messages),t.abortController.signal);if(!n)return e(`Could not generate a name: no conversation context yet. Usage: /rename <name>`,{display:`system`}),null;s=n}else s=n.trim();let l=c(),f=r();await a(l,s,f);let m=t.getAppState().replBridgeSessionId;if(m){let e=u();import(`./createSession-B4wkDNam.js`).then(({updateBridgeSessionTitle:t})=>t(m,s,{baseUrl:d(),getAccessToken:e?()=>e:void 0}).catch(()=>{}))}return await o(l,s,f),t.setAppState(e=>({...e,standaloneAgentContext:{...e.standaloneAgentContext,name:s}})),e(`Session renamed to: ${s}`,{display:`system`}),null}e((()=>{s(),l(),t(),n(),f()}))();export{m as call};
@@ -1 +1 @@
1
- import{l as e,o as t}from"./envUtils-DcaKZlRU.js";import{o as n,s as r}from"./log-BlJ7CcKG.js";import{ReadStream as i}from"tty";import{openSync as a}from"fs";t(),n();var o=null;function s(){if(o!==null)return o;if(process.stdin.isTTY){o=void 0;return}if(e(process.env.CI)){o=void 0;return}if(process.argv.includes(`mcp`)){o=void 0;return}if(process.platform===`win32`){o=void 0;return}try{let e=new i(a(`/dev/tty`,`r`));return e.isTTY=!0,o=e,o}catch(e){r(e),o=void 0;return}}function c(e=!1){let t=s(),n={exitOnCtrlC:e};return t&&(n.stdin=t),n}export{c as t};
1
+ import{l as e,o as t}from"./envUtils-DcaKZlRU.js";import{o as n,s as r}from"./log-CR0v5KUR.js";import{ReadStream as i}from"tty";import{openSync as a}from"fs";t(),n();var o=null;function s(){if(o!==null)return o;if(process.stdin.isTTY){o=void 0;return}if(e(process.env.CI)){o=void 0;return}if(process.argv.includes(`mcp`)){o=void 0;return}if(process.platform===`win32`){o=void 0;return}try{let e=new i(a(`/dev/tty`,`r`));return e.isTTY=!0,o=e,o}catch(e){r(e),o=void 0;return}}function c(e=!1){let t=s(),n={exitOnCtrlC:e};return t&&(n.stdin=t),n}export{c as t};
@@ -1,2 +1,2 @@
1
- import{n as e,o as t}from"./rolldown-runtime-DaDcL9Zw.js";import{n,t as r}from"./figures-5ThXQEtq.js";import{Ar as i,Ci as a,Fr as o,Mu as s,Nr as c,Pu as l,Si as u,Sr as d,Xp as f,Zp as p,ar as m,br as h,fi as g,fr as _,iC as v,rC as y,wr as b,xC as x}from"./loadAgentsDir-CbtNPJV3.js";import{I as S,P as C,ai as w,di as T,dr as E,fi as D,ot as O,t as k}from"./src-DL3w8VPk2.js";import{t as A}from"./jsx-runtime-Bb4Xn-E0.js";import{Wt as j,et as M,pt as N}from"./state-BPFYBqm1.js";import{o as P,s as F}from"./log-BlJ7CcKG.js";import{n as I,r as L}from"./modalContext-wY9CeN4G.js";import{a as R,i as z,n as B,o as V,r as H,t as U}from"./crossProjectResume-BCN462Wa.js";function W(e){switch(e.resultType){case`sessionNotFound`:return`Session ${T.bold(e.arg)} was not found. Run ${T.bold(`/resume`)} without arguments to browse all sessions.`;case`multipleMatches`:return`Found ${e.count} sessions matching ${T.bold(e.arg)}. Run ${T.bold(`/resume`)} to pick one from the list.`}}function G({message:e,args:t,onDone:n}){return J.useEffect(()=>{let e=setTimeout(n,0);return()=>clearTimeout(e)},[n]),(0,Y.jsxs)(S,{flexDirection:`column`,children:[(0,Y.jsxs)(C,{dimColor:!0,children:[r.pointer,` /resume `,t]}),(0,Y.jsx)(y,{children:(0,Y.jsx)(C,{children:e})})]})}function K({onDone:e,onResume:t}){let[n,r]=J.useState([]),[a,l]=J.useState([]),[d,f]=J.useState(!0),[m,h]=J.useState(!1),[g,v]=J.useState(!1),{rows:y}=O(),x=L(),w=J.useCallback(async(t,n)=>{f(!0);try{let a=q(t?await i():await o(n),N());if(a.length===0){e(`No conversations found to resume`);return}r(a)}catch{e(`Failed to load conversations`)}finally{f(!1)}},[e]);J.useEffect(()=>{async function e(){let e=await u(M());l(e),w(!1,e)}e()},[w]);let T=J.useCallback(()=>{let e=!g;v(e),w(e,a)},[g,w,a]);async function D(n){let r=p(_(n));if(!r){e(`Failed to resume conversation`);return}let i=b(n)?await c(n):n,a=U(i,g);if(a.isCrossProject){if(a.isSameRepoWorktree){h(!0),t(r,i,`slash_command_picker`);return}let n=await E(a.command);n&&process.stdout.write(n),e([``,`This conversation is from a different directory.`,``,`To resume, run:`,` ${a.command}`,``,`(Command copied to clipboard)`,``].join(`
1
+ import{n as e,o as t}from"./rolldown-runtime-DaDcL9Zw.js";import{n,t as r}from"./figures-5ThXQEtq.js";import{Ar as i,Ci as a,Fr as o,Mu as s,Nr as c,Pu as l,Si as u,Sr as d,Xp as f,Zp as p,ar as m,br as h,fi as g,fr as _,iC as v,rC as y,wr as b,xC as x}from"./loadAgentsDir-DnsldjYU.js";import{I as S,P as C,ai as w,di as T,dr as E,fi as D,ot as O,t as k}from"./src-DL3w8VPk2.js";import{t as A}from"./jsx-runtime-Bb4Xn-E0.js";import{Wt as j,et as M,pt as N}from"./state-B3zvBu4R.js";import{o as P,s as F}from"./log-CR0v5KUR.js";import{n as I,r as L}from"./modalContext-wY9CeN4G.js";import{a as R,i as z,n as B,o as V,r as H,t as U}from"./crossProjectResume-C5QtstD6.js";function W(e){switch(e.resultType){case`sessionNotFound`:return`Session ${T.bold(e.arg)} was not found. Run ${T.bold(`/resume`)} without arguments to browse all sessions.`;case`multipleMatches`:return`Found ${e.count} sessions matching ${T.bold(e.arg)}. Run ${T.bold(`/resume`)} to pick one from the list.`}}function G({message:e,args:t,onDone:n}){return J.useEffect(()=>{let e=setTimeout(n,0);return()=>clearTimeout(e)},[n]),(0,Y.jsxs)(S,{flexDirection:`column`,children:[(0,Y.jsxs)(C,{dimColor:!0,children:[r.pointer,` /resume `,t]}),(0,Y.jsx)(y,{children:(0,Y.jsx)(C,{children:e})})]})}function K({onDone:e,onResume:t}){let[n,r]=J.useState([]),[a,l]=J.useState([]),[d,f]=J.useState(!0),[m,h]=J.useState(!1),[g,v]=J.useState(!1),{rows:y}=O(),x=L(),w=J.useCallback(async(t,n)=>{f(!0);try{let a=q(t?await i():await o(n),N());if(a.length===0){e(`No conversations found to resume`);return}r(a)}catch{e(`Failed to load conversations`)}finally{f(!1)}},[e]);J.useEffect(()=>{async function e(){let e=await u(M());l(e),w(!1,e)}e()},[w]);let T=J.useCallback(()=>{let e=!g;v(e),w(e,a)},[g,w,a]);async function D(n){let r=p(_(n));if(!r){e(`Failed to resume conversation`);return}let i=b(n)?await c(n):n,a=U(i,g);if(a.isCrossProject){if(a.isSameRepoWorktree){h(!0),t(r,i,`slash_command_picker`);return}let n=await E(a.command);n&&process.stdout.write(n),e([``,`This conversation is from a different directory.`,``,`To resume, run:`,` ${a.command}`,``,`(Command copied to clipboard)`,``].join(`
2
2
  `),{display:`user`});return}h(!0),t(r,i,`slash_command_picker`)}function k(){e(`Resume cancelled`,{display:`system`})}return d?(0,Y.jsxs)(S,{children:[(0,Y.jsx)(s,{}),(0,Y.jsx)(C,{children:` Loading conversations…`})]}):m?(0,Y.jsxs)(S,{children:[(0,Y.jsx)(s,{}),(0,Y.jsx)(C,{children:` Resuming conversation…`})]}):(0,Y.jsx)(R,{logs:n,maxHeight:x?Math.floor(y/2):y-2,onCancel:k,onSelect:D,onLogsChanged:()=>w(g,a),showAllProjects:g,onToggleAllProjects:T,onAgenticSearch:H})}function q(e,t){return e.filter(e=>!e.isSidechain&&_(e)!==t)}var J,Y,X;e((()=>{D(),n(),J=t(w(),1),j(),V(),v(),l(),I(),x(),k(),z(),B(),a(),P(),h(),f(),Y=A(),X=async(e,t,n)=>{let r=async(n,r,i)=>{try{await t.resume?.(n,r,i),e(void 0,{display:`skip`})}catch(t){F(t),e(`Failed to resume: ${t.message}`)}},i=n?.trim();if(!i)return(0,Y.jsx)(K,{onDone:e,onResume:r},Date.now());let a=await o(await u(M()));if(a.length===0){let t=`No conversations found to resume.`;return(0,Y.jsx)(G,{message:t,args:i,onDone:()=>e(t)})}let s=p(i);if(s){let e=a.filter(e=>_(e)===s).sort((e,t)=>t.modified.getTime()-e.modified.getTime());if(e.length>0){let t=e[0];return r(s,b(t)?await c(t):t,`slash_command_session_id`),null}let t=await m(s);if(t)return r(s,t,`slash_command_session_id`),null}if(d()){let t=await g(i,{exact:!0});if(t.length===1){let e=t[0],n=_(e);if(n)return r(n,b(e)?await c(e):e,`slash_command_title`),null}if(t.length>1){let n=W({resultType:`multipleMatches`,arg:i,count:t.length});return(0,Y.jsx)(G,{message:n,args:i,onDone:()=>e(n)})}}let l=W({resultType:`sessionNotFound`,arg:i});return(0,Y.jsx)(G,{message:l,args:i,onDone:()=>e(l)})}}))();export{X as call,q as filterResumableSessions};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{n as t,t as n}from"./memoize-BK3gG5ob.js";import{c as r,o as i}from"./envUtils-DcaKZlRU.js";import{n as a,t as o}from"./defineProperty-C-QyHrDq.js";import{c as s,i as c}from"./debug-BQj6h99Q.js";import{r as l,t as u}from"./execFileNoThrow-DYm1GeGn.js";import{o as d,s as f}from"./log-BlJ7CcKG.js";import{i as p,o as m}from"./platform-DVeTi9mp.js";import{n as h,r as g}from"./analytics-DJobLaWP.js";import{n as _,t as v}from"./bundledMode--fG1S62b.js";import{f as y,o as b,p as x,r as S}from"./stringUtils-BjnclTLB.js";import{homedir as C}from"os";import*as w from"path";import{existsSync as T}from"fs";import{execFile as E,spawn as D}from"child_process";import{fileURLToPath as O}from"url";var k,A,j,M=e((()=>{k=O(import.meta.url),A=w.dirname(k),j=(()=>{let e=A.split(w.sep),t=e.lastIndexOf(`dist`);if(t!==-1)return e.slice(0,t+1).join(w.sep);let n=e.lastIndexOf(`src`);return n===-1?A:e.slice(0,n).join(w.sep)})()}));function N(e,t,n){let r=n??process.platform;return T(e)?{mode:`builtin`,command:e,args:[]}:(t===void 0?y(`rg`,[]).cmd:t??`rg`)===`rg`?{mode:`builtin`,command:e,args:[],note:`no ripgrep available on ${r}; install ripgrep via apt/pkg/brew`}:{mode:`system`,command:`rg`,args:[]}}function P(){let e=H();return{rgPath:e.command,rgArgs:e.args,argv0:e.argv0}}function F(e){return e.includes(`os error 11`)||e.includes(`Resource temporarily unavailable`)}function I(e,t,n,r,i=!1){let{rgPath:a,rgArgs:o,argv0:s}=P(),c=i?[`-j`,`1`]:[],l=[...o,...c,...e,t],u=p()===`wsl`?6e4:2e4,d=parseInt(process.env.CLAUDE_CODE_GLOB_TIMEOUT_SECONDS||``,10)||0,f=d>0?d*1e3:u;if(s){let e=D(a,l,{argv0:s,signal:n,windowsHide:!0}),t=``,i=``,o=!1,c=!1;e.stdout?.on(`data`,e=>{o||(t+=e.toString(),t.length>U&&(t=t.slice(0,U),o=!0))}),e.stderr?.on(`data`,e=>{c||(i+=e.toString(),i.length>U&&(i=i.slice(0,U),c=!0))});let u,d=setTimeout(()=>{process.platform===`win32`?e.kill():(e.kill(`SIGTERM`),u=setTimeout(e=>e.kill(`SIGKILL`),5e3,e))},f),p=!1;return e.on(`close`,(e,n)=>{if(!p)if(p=!0,clearTimeout(d),clearTimeout(u),e===0||e===1)r(null,t,i);else{let a=Error(`ripgrep exited with code ${e}`);a.code=e??void 0,a.signal=n??void 0,r(a,t,i)}}),e.on(`error`,e=>{p||(p=!0,clearTimeout(d),clearTimeout(u),r(e,t,i))}),e}return E(a,l,{maxBuffer:U,signal:n,timeout:f,killSignal:process.platform===`win32`?void 0:`SIGKILL`},r)}async function L(e,t,n){await B();let{rgPath:r,rgArgs:i,argv0:a}=P();return new Promise((o,s)=>{let c=D(r,[...i,...e,t],{argv0:a,signal:n,windowsHide:!0,stdio:[`ignore`,`pipe`,`ignore`]}),l=0;c.stdout?.on(`data`,e=>{l+=S(e,`
1
+ import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{n as t,t as n}from"./memoize-BK3gG5ob.js";import{c as r,o as i}from"./envUtils-DcaKZlRU.js";import{n as a,t as o}from"./defineProperty-C-QyHrDq.js";import{c as s,i as c}from"./debug-D7OBvqC2.js";import{r as l,t as u}from"./execFileNoThrow-BHDSgTpZ.js";import{o as d,s as f}from"./log-CR0v5KUR.js";import{i as p,o as m}from"./platform-BZm4WVLM.js";import{n as h,r as g}from"./analytics-DJobLaWP.js";import{n as _,t as v}from"./bundledMode--fG1S62b.js";import{f as y,o as b,p as x,r as S}from"./stringUtils-CGZoOfer.js";import{homedir as C}from"os";import*as w from"path";import{existsSync as T}from"fs";import{execFile as E,spawn as D}from"child_process";import{fileURLToPath as O}from"url";var k,A,j,M=e((()=>{k=O(import.meta.url),A=w.dirname(k),j=(()=>{let e=A.split(w.sep),t=e.lastIndexOf(`dist`);if(t!==-1)return e.slice(0,t+1).join(w.sep);let n=e.lastIndexOf(`src`);return n===-1?A:e.slice(0,n).join(w.sep)})()}));function N(e,t,n){let r=n??process.platform;return T(e)?{mode:`builtin`,command:e,args:[]}:(t===void 0?y(`rg`,[]).cmd:t??`rg`)===`rg`?{mode:`builtin`,command:e,args:[],note:`no ripgrep available on ${r}; install ripgrep via apt/pkg/brew`}:{mode:`system`,command:`rg`,args:[]}}function P(){let e=H();return{rgPath:e.command,rgArgs:e.args,argv0:e.argv0}}function F(e){return e.includes(`os error 11`)||e.includes(`Resource temporarily unavailable`)}function I(e,t,n,r,i=!1){let{rgPath:a,rgArgs:o,argv0:s}=P(),c=i?[`-j`,`1`]:[],l=[...o,...c,...e,t],u=p()===`wsl`?6e4:2e4,d=parseInt(process.env.CLAUDE_CODE_GLOB_TIMEOUT_SECONDS||``,10)||0,f=d>0?d*1e3:u;if(s){let e=D(a,l,{argv0:s,signal:n,windowsHide:!0}),t=``,i=``,o=!1,c=!1;e.stdout?.on(`data`,e=>{o||(t+=e.toString(),t.length>U&&(t=t.slice(0,U),o=!0))}),e.stderr?.on(`data`,e=>{c||(i+=e.toString(),i.length>U&&(i=i.slice(0,U),c=!0))});let u,d=setTimeout(()=>{process.platform===`win32`?e.kill():(e.kill(`SIGTERM`),u=setTimeout(e=>e.kill(`SIGKILL`),5e3,e))},f),p=!1;return e.on(`close`,(e,n)=>{if(!p)if(p=!0,clearTimeout(d),clearTimeout(u),e===0||e===1)r(null,t,i);else{let a=Error(`ripgrep exited with code ${e}`);a.code=e??void 0,a.signal=n??void 0,r(a,t,i)}}),e.on(`error`,e=>{p||(p=!0,clearTimeout(d),clearTimeout(u),r(e,t,i))}),e}return E(a,l,{maxBuffer:U,signal:n,timeout:f,killSignal:process.platform===`win32`?void 0:`SIGKILL`},r)}async function L(e,t,n){await B();let{rgPath:r,rgArgs:i,argv0:a}=P();return new Promise((o,s)=>{let c=D(r,[...i,...e,t],{argv0:a,signal:n,windowsHide:!0,stdio:[`ignore`,`pipe`,`ignore`]}),l=0;c.stdout?.on(`data`,e=>{l+=S(e,`
2
2
  `)});let u=!1;c.on(`close`,e=>{u||(u=!0,e===0||e===1?o(l):s(Error(`rg --files exited ${e}`)))}),c.on(`error`,e=>{u||(u=!0,s(e))})})}async function R(e,t,n){return await B(),q().catch(e=>{f(e)}),new Promise((r,i)=>{let a=(o,c,l,u)=>{if(!o){r(c.trim().split(`
3
3
  `).map(e=>e.replace(/\r$/,``)).filter(Boolean));return}if(o.code===1){r([]);return}if([`ENOENT`,`EACCES`,`EPERM`].includes(o.code)){i(o);return}if(!u&&F(l)){s(`rg EAGAIN error detected, retrying with single-threaded mode (-j 1)`),g(`tengu_ripgrep_eagain_retry`,{}),I(e,t,n,(e,t,n)=>{a(e,t,n,!0)},!0);return}let d=c&&c.trim().length>0,m=o.signal===`SIGTERM`||o.signal===`SIGKILL`||o.code===`ABORT_ERR`,h=o.code===`ERR_CHILD_PROCESS_STDIO_MAXBUFFER`,_=[];if(d&&(_=c.trim().split(`
4
4
  `).map(e=>e.replace(/\r$/,``)).filter(Boolean),_.length>0&&(m||h)&&(_=_.slice(0,-1))),s(`rg error (signal=${o.signal}, code=${o.code}, stderr: ${l}), ${_.length} results`),o.code!==2&&o.code!==`ABORT_ERR`&&f(o),m&&_.length===0){i(new W(`Ripgrep search timed out after ${p()===`wsl`?60:20} seconds. The search may have matched files but did not complete in time. Try searching a more specific path or pattern.`,_));return}r(_)};I(e,t,n,(e,t,n)=>{a(e,t,n,!1)})})}function z(){let e=H();return{mode:e.mode,path:e.command,working:K?.working??null,note:K?.note??e.note}}async function B(){if(process.platform!==`darwin`||J)return;J=!0;let e=H();if(e.mode!==`builtin`)return;let t=e.command;if((await u(`codesign`,[`-vv`,`-d`,t],{preserveOutputOnError:!1})).stdout.split(`
@@ -0,0 +1 @@
1
+ import{a as e,i as t}from"./ripgrep-C_XuTqp3.js";e();export{t as getRipgrepStatus};
@@ -1 +1 @@
1
- import{a as e,i as t,n,o as r,r as i,s as a,t as o}from"./runtimeObserver-Dov-m2dl.js";t();export{o as RUNTIME_SESSION_ID,n as getRuntimeTurn,i as initSkillLearning,e as resetRuntimeLLMBookkeeping,r as resetRuntimeObserverForTest,a as runSkillLearningPostSampling};
1
+ import{a as e,i as t,n,o as r,r as i,s as a,t as o}from"./runtimeObserver-D9sujsqj.js";t();export{o as RUNTIME_SESSION_ID,n as getRuntimeTurn,i as initSkillLearning,e as resetRuntimeLLMBookkeeping,r as resetRuntimeObserverForTest,a as runSkillLearningPostSampling};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{i as t,o as n}from"./envUtils-DcaKZlRU.js";import{Di as r,Li as i,cm as a,lm as o}from"./loadAgentsDir-CbtNPJV3.js";import{n as s,t as c}from"./featureCheck-D6FjD-nt.js";import{a as l,s as u}from"./projectContext-BN2ZWzOG.js";import{a as d,c as ee,i as f,l as p,n as m,o as h,r as te,s as ne,u as g}from"./instinctParser-Dt-lqnDe.js";import{a as re,i as ie,n as _,o as v,r as y,t as ae}from"./observationStore-D0rm3GhP.js";import{a as oe,i as se,o as ce,r as le}from"./sessionObserver-DpY0DOjI.js";import{a as ue,d as b,i as de,l as x,n as S,r as fe,s as C,t as pe,u as w}from"./skillLifecycle-CSNX2qOH.js";import{join as T}from"node:path";import{existsSync as E}from"node:fs";import{randomBytes as me}from"node:crypto";import{mkdir as D,readFile as he,readdir as O,rename as ge,unlink as _e,writeFile as k}from"node:fs/promises";function A(e){let t=_(e),n=e?.project;return(e?.scope??n?.scope??`project`)===`global`||!n||n.projectId===`global`?T(t,`global`,`instincts`,`personal`):T(t,`projects`,n.projectId,`instincts`,`personal`)}async function j(e,t){let n=h(e);await D(A(t),{recursive:!0});let r=N(n.id,t),i=`${r}.${me(6).toString(`hex`)}.tmp`;return await k(i,ee(n)),await ge(i,r),n}async function M(e){let t=A(e),n=[];try{n=await O(t)}catch(e){if(e.code===`ENOENT`)return[];throw e}let r=[];for(let e of n.filter(e=>e.endsWith(`.json`))){let n=await he(T(t,e),`utf8`);r.push(ne(n))}return r.sort((e,t)=>e.id.localeCompare(t.id))}function ve(e,t){let n=P.then(()=>ye(e,t));return P=n.catch(()=>{}),n}async function ye(e,t){let n=await M(t),r=n.find(t=>t.id===e.id)??n.find(t=>t.trigger.toLowerCase()===e.trigger.toLowerCase()&&d(t,e)),i=new Date().toISOString();if(!r)return j(e,t);let a=d(r,e),o=a?-.1:Se(e.evidenceOutcome),s=m(r.confidence+o),c=be(r.status,s,a);return j(h({...r,confidence:s,evidence:[...r.evidence,...e.evidence],evidenceOutcome:e.evidenceOutcome??r.evidenceOutcome,observationIds:[...r.observationIds??[],...e.observationIds??[]],updatedAt:i,status:c}),t)}function be(e,t,n){return n&&t<.3?`conflict-hold`:e===`conflict-hold`&&t>=.5||e===`pending`&&t>=.8?`active`:e}async function xe(e){let t=await M(e),n=Date.now(),r=0;for(let i of t){if(i.status!==`pending`&&i.status!==`active`)continue;let t=Date.parse(i.updatedAt);if(Number.isNaN(t))continue;let a=Math.floor((n-t)/F);if(a<1)continue;let o=-.02*a,s=m(i.confidence+o);s!==i.confidence&&(await j(h({...i,confidence:s,updatedAt:new Date(n).toISOString()}),e),r+=1)}return r}function Se(e){return e===`failure`?-.05:.05}async function Ce(e,t){let n=await M(t),r=Date.now()-e*24*60*60*1e3,i=[];for(let e of n)e.status===`pending`&&Date.parse(e.updatedAt)<r&&(await _e(N(e.id,t)),i.push(e));return i}function N(e,t){return T(A(t),`${e}.json`)}var P,F,I=e((()=>{y(),f(),P=Promise.resolve(),F=10080*60*1e3}));function we(e,t){if(e.length===0)throw Error(`Cannot generate a command draft without instincts`);let n=t?.scope??e[0]?.scope??`project`,r=w(t?.name??De(e)),i=Ae(e),a=t?.description??Oe(e),o=Ee(r,n,t),s=ke({name:r,description:a,confidence:i,instincts:e});return{name:r,description:a,scope:n,sourceInstinctIds:e.map(e=>e.id),confidence:Number(i.toFixed(2)),content:s,outputPath:o}}async function Te(e){await D(e.outputPath,{recursive:!0});let t=T(e.outputPath,`${e.name}.md`);return E(t)?t:(await k(t,e.content,`utf8`),r(),t)}function Ee(e,n,r){return r?.outputRoot?r.outputRoot:n===`project`?T(r?.cwd??process.cwd(),`.workmate`,`commands`):r?.globalCommandsDir??T(t(),`commands`)}function De(e){return w([`learned`,...je(e,4)].join(`-`))||`learned-command`}function Oe(e){return(e[0]?.trigger??`Reuse the learned workflow`).replace(/\s+/g,` `).slice(0,120)}function ke(e){let{name:t,description:n,confidence:r,instincts:i}=e;return[`---`,`name: ${t}`,`description: ${JSON.stringify(n)}`,`origin: skill-learning`,`confidence: ${Number(r.toFixed(2))}`,`evolved_from: [${i.map(e=>JSON.stringify(e.id)).join(`, `)}]`,`---`,``,`# /${t}`,``,`## When to use`,``,i.map(e=>`- ${e.trigger}`).join(`
1
+ import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{i as t,o as n}from"./envUtils-DcaKZlRU.js";import{Di as r,Li as i,cm as a,lm as o}from"./loadAgentsDir-DnsldjYU.js";import{n as s,t as c}from"./featureCheck-D6FjD-nt.js";import{a as l,s as u}from"./projectContext-BN2ZWzOG.js";import{a as d,c as ee,i as f,l as p,n as m,o as h,r as te,s as ne,u as g}from"./instinctParser-Dt-lqnDe.js";import{a as re,i as ie,n as _,o as v,r as y,t as ae}from"./observationStore-D0rm3GhP.js";import{a as oe,i as se,o as ce,r as le}from"./sessionObserver-Cu7vykWp.js";import{a as ue,d as b,i as de,l as x,n as S,r as fe,s as C,t as pe,u as w}from"./skillLifecycle-BaqH5lw_.js";import{join as T}from"node:path";import{existsSync as E}from"node:fs";import{randomBytes as me}from"node:crypto";import{mkdir as D,readFile as he,readdir as O,rename as ge,unlink as _e,writeFile as k}from"node:fs/promises";function A(e){let t=_(e),n=e?.project;return(e?.scope??n?.scope??`project`)===`global`||!n||n.projectId===`global`?T(t,`global`,`instincts`,`personal`):T(t,`projects`,n.projectId,`instincts`,`personal`)}async function j(e,t){let n=h(e);await D(A(t),{recursive:!0});let r=N(n.id,t),i=`${r}.${me(6).toString(`hex`)}.tmp`;return await k(i,ee(n)),await ge(i,r),n}async function M(e){let t=A(e),n=[];try{n=await O(t)}catch(e){if(e.code===`ENOENT`)return[];throw e}let r=[];for(let e of n.filter(e=>e.endsWith(`.json`))){let n=await he(T(t,e),`utf8`);r.push(ne(n))}return r.sort((e,t)=>e.id.localeCompare(t.id))}function ve(e,t){let n=P.then(()=>ye(e,t));return P=n.catch(()=>{}),n}async function ye(e,t){let n=await M(t),r=n.find(t=>t.id===e.id)??n.find(t=>t.trigger.toLowerCase()===e.trigger.toLowerCase()&&d(t,e)),i=new Date().toISOString();if(!r)return j(e,t);let a=d(r,e),o=a?-.1:Se(e.evidenceOutcome),s=m(r.confidence+o),c=be(r.status,s,a);return j(h({...r,confidence:s,evidence:[...r.evidence,...e.evidence],evidenceOutcome:e.evidenceOutcome??r.evidenceOutcome,observationIds:[...r.observationIds??[],...e.observationIds??[]],updatedAt:i,status:c}),t)}function be(e,t,n){return n&&t<.3?`conflict-hold`:e===`conflict-hold`&&t>=.5||e===`pending`&&t>=.8?`active`:e}async function xe(e){let t=await M(e),n=Date.now(),r=0;for(let i of t){if(i.status!==`pending`&&i.status!==`active`)continue;let t=Date.parse(i.updatedAt);if(Number.isNaN(t))continue;let a=Math.floor((n-t)/F);if(a<1)continue;let o=-.02*a,s=m(i.confidence+o);s!==i.confidence&&(await j(h({...i,confidence:s,updatedAt:new Date(n).toISOString()}),e),r+=1)}return r}function Se(e){return e===`failure`?-.05:.05}async function Ce(e,t){let n=await M(t),r=Date.now()-e*24*60*60*1e3,i=[];for(let e of n)e.status===`pending`&&Date.parse(e.updatedAt)<r&&(await _e(N(e.id,t)),i.push(e));return i}function N(e,t){return T(A(t),`${e}.json`)}var P,F,I=e((()=>{y(),f(),P=Promise.resolve(),F=10080*60*1e3}));function we(e,t){if(e.length===0)throw Error(`Cannot generate a command draft without instincts`);let n=t?.scope??e[0]?.scope??`project`,r=w(t?.name??De(e)),i=Ae(e),a=t?.description??Oe(e),o=Ee(r,n,t),s=ke({name:r,description:a,confidence:i,instincts:e});return{name:r,description:a,scope:n,sourceInstinctIds:e.map(e=>e.id),confidence:Number(i.toFixed(2)),content:s,outputPath:o}}async function Te(e){await D(e.outputPath,{recursive:!0});let t=T(e.outputPath,`${e.name}.md`);return E(t)?t:(await k(t,e.content,`utf8`),r(),t)}function Ee(e,n,r){return r?.outputRoot?r.outputRoot:n===`project`?T(r?.cwd??process.cwd(),`.workmate`,`commands`):r?.globalCommandsDir??T(t(),`commands`)}function De(e){return w([`learned`,...je(e,4)].join(`-`))||`learned-command`}function Oe(e){return(e[0]?.trigger??`Reuse the learned workflow`).replace(/\s+/g,` `).slice(0,120)}function ke(e){let{name:t,description:n,confidence:r,instincts:i}=e;return[`---`,`name: ${t}`,`description: ${JSON.stringify(n)}`,`origin: skill-learning`,`confidence: ${Number(r.toFixed(2))}`,`evolved_from: [${i.map(e=>JSON.stringify(e.id)).join(`, `)}]`,`---`,``,`# /${t}`,``,`## When to use`,``,i.map(e=>`- ${e.trigger}`).join(`
2
2
  `),``,`## Steps`,``,i.map(e=>`- ${e.action}`).join(`
3
3
  `),``,`## Evidence`,``,i.flatMap(e=>e.evidence.map(e=>`- ${e}`)).join(`
4
4
  `),``].join(`
@@ -6,5 +6,5 @@ import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{i as t,o as n}from"./e
6
6
  `),``,`## Playbook`,``,i.map(e=>`- ${e.action}`).join(`
7
7
  `),``,`## Evidence`,``,i.flatMap(e=>e.evidence.map(e=>`- ${e}`)).slice(0,20).join(`
8
8
  `),``].join(`
9
- `)}function Re(e){return e.reduce((e,t)=>e+t.confidence,0)/e.length}function ze(e,t){let n=new Set([`when`,`with`,`this`,`that`,`user`,`asks`,`for`,`the`,`and`,`debug`,`investigate`,`research`]),r=[];for(let i of e)for(let e of`${i.trigger} ${i.action}`.toLowerCase().split(/[^a-z0-9]+/))if(e.length>2&&!n.has(e)&&!r.includes(e)&&r.push(e),r.length>=t)return r;return r}var R=e((()=>{n(),i(),x()}));function z(e){let t=new Map;for(let n of e){if(n.status!==`active`&&n.status!==`pending`)continue;let e=`${n.domain}:${Ue(n.trigger)}`,r=t.get(e)??[];r.push(n),t.set(e,r)}return Array.from(t.values()).filter(e=>e.length>=p().minClusterSize).map(e=>{let t=e.reduce((e,t)=>e+t.confidence,0)/e.length;return{target:Be(e),trigger:e[0]?.trigger??`learned pattern`,domain:e[0]?.domain??`project`,instincts:e,averageConfidence:Number(t.toFixed(2))}}).sort((e,t)=>t.averageConfidence-e.averageConfidence)}function Be(e){let t=Array.isArray(e)?e:e.instincts,n=t.map(e=>`${e.trigger} ${e.action}`).join(` `).toLowerCase();return/user asks|explicitly request|command|run /.test(n)?`command`:t.length>=4&&/(debug|investigate|research|multi-step)/.test(n)?`agent`:`skill`}function Ve(e,t){return z(e).filter(e=>e.target===`command`&&b(e.instincts)).map(e=>we(e.instincts,{...t,scope:e.instincts[0]?.scope??`project`}))}function He(e,t){return z(e).filter(e=>e.target===`agent`&&b(e.instincts)).map(e=>Me(e.instincts,{...t,scope:e.instincts[0]?.scope??`project`}))}function Ue(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,` `).split(/\s+/).filter(Boolean).slice(0,6).join(` `)}var We=e((()=>{x(),C(),L(),R(),g()}));function Ge(e){if(H.add(e),H.size>B){let e=H.size-V,t=H.values();for(let n=0;n<e;n++){let e=t.next();if(e.done)break;H.delete(e.value)}}}function Ke(e,t=2,n=.8){let r=new Map;for(let t of e){if(t.scope!==`project`)continue;let e=r.get(t.id)??[];e.push(t),r.set(t.id,e)}return Array.from(r.entries()).flatMap(([e,r])=>{let i=Array.from(new Set(r.map(e=>e.projectId).filter(Boolean))),a=r.reduce((e,t)=>e+t.confidence,0)/r.length;return i.length>=t&&a>=n?[{instinctId:e,projectIds:i,averageConfidence:Number(a.toFixed(2))}]:[]})}async function qe(e={}){let t=e.minProjects??2,n=e.minConfidence??.8,r=await Je(e.rootDir),i=Ke(r,t,n),a=[];for(let t of i){if(H.has(t.instinctId))continue;let n=r.find(e=>e.id===t.instinctId);n&&(await j({...n,scope:`global`,projectId:void 0,projectName:void 0,confidence:t.averageConfidence,updatedAt:new Date().toISOString()},{rootDir:e.rootDir,scope:`global`,project:Ye(e.rootDir)}),Ge(t.instinctId),a.push(t))}return a}async function Je(e){let t=T(_(e?{rootDir:e}:void 0),`projects`);if(!E(t))return[];let n=await O(t,{withFileTypes:!0}),r=[];for(let i of n){if(!i.isDirectory())continue;let n=await M({rootDir:e,project:{projectId:i.name,projectName:i.name,scope:`project`,source:`git_root`,cwd:t,storageDir:T(t,i.name)},scope:`project`});r.push(...n)}return r}function Ye(e){let t=_(e?{rootDir:e}:void 0);return{projectId:`global`,projectName:`Global`,scope:`global`,source:`global`,cwd:t,storageDir:T(t,`global`)}}var B,V,H,Xe=e((()=>{I(),y(),B=256,V=192,H=new Set}));function U(){X=0,Z=0,Q.clear()}function Ze(){return J}function Qe(){if(!q){q=!0;try{ce()}catch{}o(W),$e().catch(()=>{})}}async function $e(){if(!s()||process.env.CLAUDE_SKILL_LEARNING_DISABLE)return;let e={project:u(process.cwd())};await Promise.allSettled([xe(e),ie(e),Ce(30,e)])}function et(e){try{let t=_();return e.startsWith(t)}catch{return!1}}async function W(e){if(!s()||process.env.CLAUDE_SKILL_LEARNING_DISABLE||!e.querySource?.startsWith(`repl_main_thread`)||e.toolUseContext.agentId)return;let t=process.cwd();if(et(t))return;let n=u(t),r={project:n};++J;let i=[];for(let t of rt(e.messages,n))i.push(await ae(t,r));let a=(await re(r)).filter(e=>e.source===`tool-hook`&&e.sessionId===`runtime-session`&&typeof e.timestamp==`string`&&e.timestamp>Y);i.push(...a);for(let e of a)e.timestamp>Y&&(Y=e.timestamp);if(i.length===0)return;let o=Date.now(),{llm:c}=p(),l=i.length>=5&&X<c.maxCallsPerSession&&o-Z>=c.cooldownMs,d;if(l)X++,Z=o,d=await se(i,{project:n});else{let{heuristicObserverBackend:e}=await import(`./sessionObserver-BuhXr3FP.js`),t=e.analyze(i,{project:n});d=Array.isArray(t)?t:await t}for(let e of d)await ve(te(e),r);await nt(r)}function tt(){J=0,Y=``,U()}async function nt(e){let n=await M(e),r=process.cwd(),i=[T(r,`.workmate`,`skills`),T(t(),`skills`)],a=z(n).filter(e=>e.target===`skill`&&b(e.instincts));for(let e of a){let t=await ue(e.instincts,{cwd:r,scope:e.instincts[0]?.scope??`project`},i);if(t.action===`append-evidence`)continue;let n=t.draft;E(T(n.outputPath,`SKILL.md`))||await pe(fe(n,await S(`skill`,n,i)))}let o=Ve(n,{cwd:r});for(let e of o)(await S(`command`,e,[T(r,`.workmate`,`commands`),T(t(),`commands`)])).length>0||await Te(e);let s=He(n,{cwd:r});for(let e of s)(await S(`agent`,e,[T(r,`.workmate`,`agents`),T(t(),`agents`)])).length>0||await Ne(e);await qe()}function rt(e,t){let n=K,r={sessionId:n,projectId:t.projectId,projectName:t.projectName,cwd:t.cwd,timestamp:new Date().toISOString(),source:`hook`};return e.flatMap(e=>{let t=`${n}:${String(e.uuid)}`;if(Q.has(t))return[];if(Q.add(t),Q.size>$){let e=Q.size-ot,t=Q.values();for(let n=0;n<e;n++){let e=t.next();if(e.done)break;Q.delete(e.value)}}if(e.type===`user`){let t=at(e.message?.content);if(t.length>0)return t.map(e=>({...r,id:crypto.randomUUID(),event:`tool_complete`,toolName:e.toolName,toolOutput:e.output,outcome:e.isError?`failure`:`success`}));let n=G(e.message?.content);return n.trim()?[{...r,id:crypto.randomUUID(),event:`user_message`,messageText:n}]:[]}if(e.type===`assistant`){let t=it(e.message?.content),n=G(e.message?.content);return[...t.map(e=>({...r,id:crypto.randomUUID(),event:`tool_start`,toolName:e.toolName,toolInput:e.input})),...n.trim()?[{...r,id:crypto.randomUUID(),event:`assistant_message`,messageText:n}]:[]]}return[]})}function G(e){return typeof e==`string`?e:Array.isArray(e)?e.map(e=>{if(!e||typeof e!=`object`)return``;let t=e;return typeof t.text==`string`?t.text:``}).filter(Boolean).join(`
9
+ `)}function Re(e){return e.reduce((e,t)=>e+t.confidence,0)/e.length}function ze(e,t){let n=new Set([`when`,`with`,`this`,`that`,`user`,`asks`,`for`,`the`,`and`,`debug`,`investigate`,`research`]),r=[];for(let i of e)for(let e of`${i.trigger} ${i.action}`.toLowerCase().split(/[^a-z0-9]+/))if(e.length>2&&!n.has(e)&&!r.includes(e)&&r.push(e),r.length>=t)return r;return r}var R=e((()=>{n(),i(),x()}));function z(e){let t=new Map;for(let n of e){if(n.status!==`active`&&n.status!==`pending`)continue;let e=`${n.domain}:${Ue(n.trigger)}`,r=t.get(e)??[];r.push(n),t.set(e,r)}return Array.from(t.values()).filter(e=>e.length>=p().minClusterSize).map(e=>{let t=e.reduce((e,t)=>e+t.confidence,0)/e.length;return{target:Be(e),trigger:e[0]?.trigger??`learned pattern`,domain:e[0]?.domain??`project`,instincts:e,averageConfidence:Number(t.toFixed(2))}}).sort((e,t)=>t.averageConfidence-e.averageConfidence)}function Be(e){let t=Array.isArray(e)?e:e.instincts,n=t.map(e=>`${e.trigger} ${e.action}`).join(` `).toLowerCase();return/user asks|explicitly request|command|run /.test(n)?`command`:t.length>=4&&/(debug|investigate|research|multi-step)/.test(n)?`agent`:`skill`}function Ve(e,t){return z(e).filter(e=>e.target===`command`&&b(e.instincts)).map(e=>we(e.instincts,{...t,scope:e.instincts[0]?.scope??`project`}))}function He(e,t){return z(e).filter(e=>e.target===`agent`&&b(e.instincts)).map(e=>Me(e.instincts,{...t,scope:e.instincts[0]?.scope??`project`}))}function Ue(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,` `).split(/\s+/).filter(Boolean).slice(0,6).join(` `)}var We=e((()=>{x(),C(),L(),R(),g()}));function Ge(e){if(H.add(e),H.size>B){let e=H.size-V,t=H.values();for(let n=0;n<e;n++){let e=t.next();if(e.done)break;H.delete(e.value)}}}function Ke(e,t=2,n=.8){let r=new Map;for(let t of e){if(t.scope!==`project`)continue;let e=r.get(t.id)??[];e.push(t),r.set(t.id,e)}return Array.from(r.entries()).flatMap(([e,r])=>{let i=Array.from(new Set(r.map(e=>e.projectId).filter(Boolean))),a=r.reduce((e,t)=>e+t.confidence,0)/r.length;return i.length>=t&&a>=n?[{instinctId:e,projectIds:i,averageConfidence:Number(a.toFixed(2))}]:[]})}async function qe(e={}){let t=e.minProjects??2,n=e.minConfidence??.8,r=await Je(e.rootDir),i=Ke(r,t,n),a=[];for(let t of i){if(H.has(t.instinctId))continue;let n=r.find(e=>e.id===t.instinctId);n&&(await j({...n,scope:`global`,projectId:void 0,projectName:void 0,confidence:t.averageConfidence,updatedAt:new Date().toISOString()},{rootDir:e.rootDir,scope:`global`,project:Ye(e.rootDir)}),Ge(t.instinctId),a.push(t))}return a}async function Je(e){let t=T(_(e?{rootDir:e}:void 0),`projects`);if(!E(t))return[];let n=await O(t,{withFileTypes:!0}),r=[];for(let i of n){if(!i.isDirectory())continue;let n=await M({rootDir:e,project:{projectId:i.name,projectName:i.name,scope:`project`,source:`git_root`,cwd:t,storageDir:T(t,i.name)},scope:`project`});r.push(...n)}return r}function Ye(e){let t=_(e?{rootDir:e}:void 0);return{projectId:`global`,projectName:`Global`,scope:`global`,source:`global`,cwd:t,storageDir:T(t,`global`)}}var B,V,H,Xe=e((()=>{I(),y(),B=256,V=192,H=new Set}));function U(){X=0,Z=0,Q.clear()}function Ze(){return J}function Qe(){if(!q){q=!0;try{ce()}catch{}o(W),$e().catch(()=>{})}}async function $e(){if(!s()||process.env.CLAUDE_SKILL_LEARNING_DISABLE)return;let e={project:u(process.cwd())};await Promise.allSettled([xe(e),ie(e),Ce(30,e)])}function et(e){try{let t=_();return e.startsWith(t)}catch{return!1}}async function W(e){if(!s()||process.env.CLAUDE_SKILL_LEARNING_DISABLE||!e.querySource?.startsWith(`repl_main_thread`)||e.toolUseContext.agentId)return;let t=process.cwd();if(et(t))return;let n=u(t),r={project:n};++J;let i=[];for(let t of rt(e.messages,n))i.push(await ae(t,r));let a=(await re(r)).filter(e=>e.source===`tool-hook`&&e.sessionId===`runtime-session`&&typeof e.timestamp==`string`&&e.timestamp>Y);i.push(...a);for(let e of a)e.timestamp>Y&&(Y=e.timestamp);if(i.length===0)return;let o=Date.now(),{llm:c}=p(),l=i.length>=5&&X<c.maxCallsPerSession&&o-Z>=c.cooldownMs,d;if(l)X++,Z=o,d=await se(i,{project:n});else{let{heuristicObserverBackend:e}=await import(`./sessionObserver-DNjDoJmy.js`),t=e.analyze(i,{project:n});d=Array.isArray(t)?t:await t}for(let e of d)await ve(te(e),r);await nt(r)}function tt(){J=0,Y=``,U()}async function nt(e){let n=await M(e),r=process.cwd(),i=[T(r,`.workmate`,`skills`),T(t(),`skills`)],a=z(n).filter(e=>e.target===`skill`&&b(e.instincts));for(let e of a){let t=await ue(e.instincts,{cwd:r,scope:e.instincts[0]?.scope??`project`},i);if(t.action===`append-evidence`)continue;let n=t.draft;E(T(n.outputPath,`SKILL.md`))||await pe(fe(n,await S(`skill`,n,i)))}let o=Ve(n,{cwd:r});for(let e of o)(await S(`command`,e,[T(r,`.workmate`,`commands`),T(t(),`commands`)])).length>0||await Te(e);let s=He(n,{cwd:r});for(let e of s)(await S(`agent`,e,[T(r,`.workmate`,`agents`),T(t(),`agents`)])).length>0||await Ne(e);await qe()}function rt(e,t){let n=K,r={sessionId:n,projectId:t.projectId,projectName:t.projectName,cwd:t.cwd,timestamp:new Date().toISOString(),source:`hook`};return e.flatMap(e=>{let t=`${n}:${String(e.uuid)}`;if(Q.has(t))return[];if(Q.add(t),Q.size>$){let e=Q.size-ot,t=Q.values();for(let n=0;n<e;n++){let e=t.next();if(e.done)break;Q.delete(e.value)}}if(e.type===`user`){let t=at(e.message?.content);if(t.length>0)return t.map(e=>({...r,id:crypto.randomUUID(),event:`tool_complete`,toolName:e.toolName,toolOutput:e.output,outcome:e.isError?`failure`:`success`}));let n=G(e.message?.content);return n.trim()?[{...r,id:crypto.randomUUID(),event:`user_message`,messageText:n}]:[]}if(e.type===`assistant`){let t=it(e.message?.content),n=G(e.message?.content);return[...t.map(e=>({...r,id:crypto.randomUUID(),event:`tool_start`,toolName:e.toolName,toolInput:e.input})),...n.trim()?[{...r,id:crypto.randomUUID(),event:`assistant_message`,messageText:n}]:[]]}return[]})}function G(e){return typeof e==`string`?e:Array.isArray(e)?e.map(e=>{if(!e||typeof e!=`object`)return``;let t=e;return typeof t.text==`string`?t.text:``}).filter(Boolean).join(`
10
10
  `):``}function it(e){return Array.isArray(e)?e.flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e;return t.type===`tool_use`?[{toolName:String(t.name??`unknown_tool`),input:v(t.input)}]:[]}):[]}function at(e){return Array.isArray(e)?e.flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e;return t.type===`tool_result`?[{toolName:String(t.name??t.tool_name??`unknown_tool`),output:v(t.content),isError:t.is_error===!0}]:[]}):[]}var K,q,J,Y,X,Z,Q,$,ot,st=e((()=>{a(),g(),c(),y(),l(),le(),f(),oe(),I(),de(),We(),C(),x(),L(),R(),Xe(),n(),K=`runtime-session`,q=!1,J=0,Y=``,X=0,Z=0,Q=new Set,$=1e3,ot=500}));export{U as a,st as i,Ze as n,tt as o,Qe as r,W as s,K as t};
@@ -0,0 +1 @@
1
+ import{oT as e,rT as t}from"./loadAgentsDir-DnsldjYU.js";e();export{t as SandboxManager};
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{$u as t,Qu as n,hC as r,iT as i,lT as a,oT as o,rT as s}from"./loadAgentsDir-CbtNPJV3.js";import{Gt as c,H as l,I as u,Lt as d,P as f,a as p,j as m,n as h,r as g,t as _,x as v}from"./src-DL3w8VPk2.js";import{t as y}from"./jsx-runtime-Bb4Xn-E0.js";import{O as b,Wt as x}from"./state-BPFYBqm1.js";import{f as S,g as C,s as w}from"./settings-CvhsRFaT.js";import{i as T,o as E}from"./platform-DVeTi9mp.js";import{relative as D}from"path";function O(){let e=s.isSandboxingEnabled(),t=s.checkDependencies(),n=t.warnings.length>0?(0,k.jsx)(u,{marginTop:1,flexDirection:`column`,children:t.warnings.map((e,t)=>(0,k.jsx)(f,{dimColor:!0,children:e},t))}):null;if(!e)return(0,k.jsxs)(u,{flexDirection:`column`,paddingY:1,children:[(0,k.jsx)(f,{color:`subtle`,children:`Sandbox is not enabled`}),n]});let r=s.getFsReadConfig(),i=s.getFsWriteConfig(),o=s.getNetworkRestrictionConfig(),c=s.getAllowUnixSockets(),l=s.getExcludedCommands(),d=s.getLinuxGlobPatternWarnings();return(0,k.jsxs)(u,{flexDirection:`column`,paddingY:1,children:[(0,k.jsxs)(u,{flexDirection:`column`,children:[(0,k.jsx)(f,{bold:!0,color:`permission`,children:`Excluded Commands:`}),(0,k.jsx)(f,{dimColor:!0,children:l.length>0?l.join(`, `):`None`})]}),r.denyOnly.length>0&&(0,k.jsxs)(u,{marginTop:1,flexDirection:`column`,children:[(0,k.jsx)(f,{bold:!0,color:`permission`,children:`Filesystem Read Restrictions:`}),(0,k.jsxs)(f,{dimColor:!0,children:[`Denied: `,r.denyOnly.join(`, `)]}),r.allowWithinDeny&&r.allowWithinDeny.length>0&&(0,k.jsxs)(f,{dimColor:!0,children:[`Allowed within denied: `,r.allowWithinDeny.join(`, `)]})]}),i.allowOnly.length>0&&(0,k.jsxs)(u,{marginTop:1,flexDirection:`column`,children:[(0,k.jsx)(f,{bold:!0,color:`permission`,children:`Filesystem Write Restrictions:`}),(0,k.jsxs)(f,{dimColor:!0,children:[`Allowed: `,i.allowOnly.join(`, `)]}),i.denyWithinAllow.length>0&&(0,k.jsxs)(f,{dimColor:!0,children:[`Denied within allowed: `,i.denyWithinAllow.join(`, `)]})]}),(o.allowedHosts&&o.allowedHosts.length>0||o.deniedHosts&&o.deniedHosts.length>0)&&(0,k.jsxs)(u,{marginTop:1,flexDirection:`column`,children:[(0,k.jsxs)(f,{bold:!0,color:`permission`,children:[`Network Restrictions`,a()?` (Managed)`:``,`:`]}),o.allowedHosts&&o.allowedHosts.length>0&&(0,k.jsxs)(f,{dimColor:!0,children:[`Allowed: `,o.allowedHosts.join(`, `)]}),o.deniedHosts&&o.deniedHosts.length>0&&(0,k.jsxs)(f,{dimColor:!0,children:[`Denied: `,o.deniedHosts.join(`, `)]})]}),c&&c.length>0&&(0,k.jsxs)(u,{marginTop:1,flexDirection:`column`,children:[(0,k.jsx)(f,{bold:!0,color:`permission`,children:`Allowed Unix Sockets:`}),(0,k.jsx)(f,{dimColor:!0,children:c.join(`, `)})]}),d.length>0&&(0,k.jsxs)(u,{marginTop:1,flexDirection:`column`,children:[(0,k.jsx)(f,{bold:!0,color:`warning`,children:`⚠ Warning: Glob patterns not fully supported on Linux`}),(0,k.jsxs)(f,{dimColor:!0,children:[`The following patterns will be ignored: `,d.slice(0,3).join(`, `),d.length>3&&` (${d.length-3} more)`]})]}),n]})}var k,A=e((()=>{_(),o(),k=y()}));function j({depCheck:e}){let t=T()===`macos`,n=e.errors.some(e=>e.includes(`ripgrep`)),r=e.errors.some(e=>e.includes(`bwrap`)),i=e.errors.some(e=>e.includes(`socat`)),a=e.warnings.length>0,o=e.errors.filter(e=>!e.includes(`ripgrep`)&&!e.includes(`bwrap`)&&!e.includes(`socat`));return(0,M.jsxs)(u,{flexDirection:`column`,paddingY:1,gap:1,children:[t&&(0,M.jsx)(u,{flexDirection:`column`,children:(0,M.jsxs)(f,{children:[`seatbelt: `,(0,M.jsx)(f,{color:`success`,children:`built-in (macOS)`})]})}),(0,M.jsxs)(u,{flexDirection:`column`,children:[(0,M.jsxs)(f,{children:[`ripgrep (rg): `,n?(0,M.jsx)(f,{color:`error`,children:`not found`}):(0,M.jsx)(f,{color:`success`,children:`found`})]}),n&&(0,M.jsxs)(f,{dimColor:!0,children:[` `,`· `,t?`brew install ripgrep`:`apt install ripgrep`]})]}),!t&&(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)(u,{flexDirection:`column`,children:[(0,M.jsxs)(f,{children:[`bubblewrap (bwrap):`,` `,r?(0,M.jsx)(f,{color:`error`,children:`not installed`}):(0,M.jsx)(f,{color:`success`,children:`installed`})]}),r&&(0,M.jsxs)(f,{dimColor:!0,children:[` `,`· apt install bubblewrap`]})]}),(0,M.jsxs)(u,{flexDirection:`column`,children:[(0,M.jsxs)(f,{children:[`socat: `,i?(0,M.jsx)(f,{color:`error`,children:`not installed`}):(0,M.jsx)(f,{color:`success`,children:`installed`})]}),i&&(0,M.jsxs)(f,{dimColor:!0,children:[` `,`· apt install socat`]})]}),(0,M.jsxs)(u,{flexDirection:`column`,children:[(0,M.jsxs)(f,{children:[`seccomp filter:`,` `,a?(0,M.jsx)(f,{color:`warning`,children:`not installed`}):(0,M.jsx)(f,{color:`success`,children:`installed`}),a&&(0,M.jsx)(f,{dimColor:!0,children:` (required to block unix domain sockets)`})]}),a&&(0,M.jsxs)(u,{flexDirection:`column`,children:[(0,M.jsxs)(f,{dimColor:!0,children:[` `,`· npm install -g @anthropic-ai/sandbox-runtime`]}),(0,M.jsxs)(f,{dimColor:!0,children:[` `,`· or copy vendor/seccomp/* from sandbox-runtime and set`]}),(0,M.jsxs)(f,{dimColor:!0,children:[` `,`sandbox.seccomp.bpfPath and applyPath in settings.json`]})]})]})]}),o.map(e=>(0,M.jsx)(f,{color:`error`,children:e},e))]})}var M,N=e((()=>{_(),E(),M=y()}));function P({onComplete:e}){let t=s.isSandboxingEnabled(),n=s.areSandboxSettingsLockedByPolicy(),r=s.areUnsandboxedCommandsAllowed();return t?n?(0,I.jsxs)(u,{flexDirection:`column`,paddingY:1,children:[(0,I.jsx)(f,{color:`subtle`,children:`Override settings are managed by a higher-priority configuration and cannot be changed locally.`}),(0,I.jsx)(u,{marginTop:1,children:(0,I.jsxs)(f,{dimColor:!0,children:[`Current setting: `,r?`Allow unsandboxed fallback`:`Strict sandbox mode`]})})]}):(0,I.jsx)(F,{onComplete:e,currentMode:r?`open`:`closed`}):(0,I.jsx)(u,{flexDirection:`column`,paddingY:1,children:(0,I.jsx)(f,{color:`subtle`,children:`Sandbox is not enabled. Enable sandbox to configure override settings.`})})}function F({onComplete:e,currentMode:t}){let[r]=l(),{headerFocused:i,focusHeader:a}=p(),o=m(`success`,r)(`(current)`),c=[{label:t===`open`?`Allow unsandboxed fallback ${o}`:`Allow unsandboxed fallback`,value:`open`},{label:t===`closed`?`Strict sandbox mode ${o}`:`Strict sandbox mode`,value:`closed`}];async function h(t){let n=t;await s.setSandboxSettings({allowUnsandboxedCommands:n===`open`}),e(n===`open`?`✓ Unsandboxed fallback allowed - commands can run outside sandbox when necessary`:"✓ Strict sandbox mode - all commands must run in sandbox or be excluded via the `excludedCommands` option")}return(0,I.jsxs)(u,{flexDirection:`column`,paddingY:1,children:[(0,I.jsx)(u,{marginBottom:1,children:(0,I.jsx)(f,{bold:!0,children:`Configure Overrides:`})}),(0,I.jsx)(n,{options:c,onChange:h,onCancel:()=>e(void 0,{display:`skip`}),onUpFromFirstItem:a,isDisabled:i}),(0,I.jsxs)(u,{flexDirection:`column`,marginTop:1,gap:1,children:[(0,I.jsxs)(f,{dimColor:!0,children:[(0,I.jsx)(f,{bold:!0,dimColor:!0,children:`Allow unsandboxed fallback:`}),` `,`When a command fails due to sandbox restrictions, Work Mate can retry with dangerouslyDisableSandbox to run outside the sandbox (falling back to default permissions).`]}),(0,I.jsxs)(f,{dimColor:!0,children:[(0,I.jsx)(f,{bold:!0,dimColor:!0,children:`Strict sandbox mode:`}),` `,`All bash commands invoked by the model must run in the sandbox unless they are explicitly listed in excludedCommands.`]}),(0,I.jsxs)(f,{dimColor:!0,children:[`Learn more:`,` `,(0,I.jsx)(d,{url:`https://code.workmate.com/docs/en/sandboxing#configure-sandboxing`,children:`code.workmate.com/docs/en/sandboxing#configure-sandboxing`})]})]})]})}var I,L=e((()=>{_(),o(),t(),I=y()}));function R({onComplete:e,depCheck:t}){let[n]=l(),r=s.isSandboxingEnabled(),i=s.isAutoAllowBashIfSandboxedEnabled(),a=t.warnings.length>0,o=S().sandbox?.network?.allowAllUnixSockets,u=a&&!o,d=r?i?`auto-allow`:`regular`:`disabled`,f=m(`success`,n)(`(current)`),p=[{label:d===`auto-allow`?`Sandbox BashTool, with auto-allow ${f}`:`Sandbox BashTool, with auto-allow`,value:`auto-allow`},{label:d===`regular`?`Sandbox BashTool, with regular permissions ${f}`:`Sandbox BashTool, with regular permissions`,value:`regular`},{label:d===`disabled`?`No Sandbox ${f}`:`No Sandbox`,value:`disabled`}];async function _(t){switch(t){case`auto-allow`:await s.setSandboxSettings({enabled:!0,autoAllowBashIfSandboxed:!0}),e(`✓ Sandbox enabled with auto-allow for bash commands`);break;case`regular`:await s.setSandboxSettings({enabled:!0,autoAllowBashIfSandboxed:!1}),e(`✓ Sandbox enabled with regular bash permissions`);break;case`disabled`:await s.setSandboxSettings({enabled:!1,autoAllowBashIfSandboxed:!1}),e(`○ Sandbox disabled`);break}}c({"confirm:no":()=>e(void 0,{display:`skip`})},{context:`Settings`});let y=(0,B.jsx)(h,{title:`Mode`,children:(0,B.jsx)(z,{showSocketWarning:u,options:p,onSelect:_,onComplete:e})},`mode`),b=(0,B.jsx)(h,{title:`Overrides`,children:(0,B.jsx)(P,{onComplete:e})},`overrides`),x=(0,B.jsx)(h,{title:`Config`,children:(0,B.jsx)(O,{})},`config`);return(0,B.jsx)(v,{color:`permission`,children:(0,B.jsx)(g,{title:`Sandbox:`,color:`permission`,defaultTab:`Mode`,children:t.errors.length>0?[(0,B.jsx)(h,{title:`Dependencies`,children:(0,B.jsx)(j,{depCheck:t})},`dependencies`)]:[y,...a?[(0,B.jsx)(h,{title:`Dependencies`,children:(0,B.jsx)(j,{depCheck:t})},`dependencies`)]:[],b,x]})})}function z({showSocketWarning:e,options:t,onSelect:r,onComplete:i}){let{headerFocused:a,focusHeader:o}=p();return(0,B.jsxs)(u,{flexDirection:`column`,paddingY:1,children:[e&&(0,B.jsx)(u,{marginBottom:1,children:(0,B.jsx)(f,{color:`warning`,children:`Cannot block unix domain sockets (see Dependencies tab)`})}),(0,B.jsx)(u,{marginBottom:1,children:(0,B.jsx)(f,{bold:!0,children:`Configure Mode:`})}),(0,B.jsx)(n,{options:t,onChange:r,onCancel:()=>i(void 0,{display:`skip`}),onUpFromFirstItem:o,isDisabled:a}),(0,B.jsxs)(u,{flexDirection:`column`,marginTop:1,gap:1,children:[(0,B.jsxs)(f,{dimColor:!0,children:[(0,B.jsx)(f,{bold:!0,dimColor:!0,children:`Auto-allow mode:`}),` `,`Commands will try to run in the sandbox automatically, and attempts to run outside of the sandbox fallback to regular permissions. Explicit ask/deny rules are always respected.`]}),(0,B.jsxs)(f,{dimColor:!0,children:[`Learn more:`,` `,(0,B.jsx)(d,{url:`https://code.workmate.com/docs/en/sandboxing`,children:`code.workmate.com/docs/en/sandboxing`})]})]})]})}var B,V=e((()=>{_(),r(),o(),C(),t(),A(),N(),L(),B=y()}));async function H(e,t,n){let r=S().theme||`light`,a=T();if(!s.isSupportedPlatform()){let t=a===`wsl`?`Error: Sandboxing requires WSL2. WSL1 is not supported.`:`Error: Sandboxing is currently only supported on macOS, Linux, and WSL2.`;return e(m(`error`,r)(t)),null}let o=s.checkDependencies();if(!s.isPlatformInEnabledList())return e(m(`error`,r)(`Error: Sandboxing is disabled for this platform (${a}) via the enabledPlatforms setting.`)),null;if(s.areSandboxSettingsLockedByPolicy())return e(m(`error`,r)(`Error: Sandbox settings are overridden by a higher-priority configuration and cannot be changed locally.`)),null;let c=n?.trim()||``;if(!c)return(0,U.jsx)(R,{onComplete:e,depCheck:o});if(c){let t=c.split(` `)[0];if(t===`exclude`){let t=c.slice(8).trim();if(!t)return e(m(`error`,r)(`Error: Please provide a command pattern to exclude (e.g., /sandbox exclude "npm run test:*")`)),null;let n=t.replace(/^["']|["']$/g,``);i(n);let a=w(`localSettings`),o=a?D(b(),a):`.workmate/settings.local.json`;return e(m(`success`,r)(`Added "${n}" to excluded commands in ${o}`)),null}else return e(m(`error`,r)(`Error: Unknown subcommand "${t}". Available subcommand: exclude`)),null}return null}var U;e((()=>{x(),V(),_(),E(),o(),C(),U=y()}))();export{H as call};
1
+ import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{$u as t,Qu as n,hC as r,iT as i,lT as a,oT as o,rT as s}from"./loadAgentsDir-DnsldjYU.js";import{Gt as c,H as l,I as u,Lt as d,P as f,a as p,j as m,n as h,r as g,t as _,x as v}from"./src-DL3w8VPk2.js";import{t as y}from"./jsx-runtime-Bb4Xn-E0.js";import{O as b,Wt as x}from"./state-B3zvBu4R.js";import{f as S,g as C,s as w}from"./settings-DUyIag_5.js";import{i as T,o as E}from"./platform-BZm4WVLM.js";import{relative as D}from"path";function O(){let e=s.isSandboxingEnabled(),t=s.checkDependencies(),n=t.warnings.length>0?(0,k.jsx)(u,{marginTop:1,flexDirection:`column`,children:t.warnings.map((e,t)=>(0,k.jsx)(f,{dimColor:!0,children:e},t))}):null;if(!e)return(0,k.jsxs)(u,{flexDirection:`column`,paddingY:1,children:[(0,k.jsx)(f,{color:`subtle`,children:`Sandbox is not enabled`}),n]});let r=s.getFsReadConfig(),i=s.getFsWriteConfig(),o=s.getNetworkRestrictionConfig(),c=s.getAllowUnixSockets(),l=s.getExcludedCommands(),d=s.getLinuxGlobPatternWarnings();return(0,k.jsxs)(u,{flexDirection:`column`,paddingY:1,children:[(0,k.jsxs)(u,{flexDirection:`column`,children:[(0,k.jsx)(f,{bold:!0,color:`permission`,children:`Excluded Commands:`}),(0,k.jsx)(f,{dimColor:!0,children:l.length>0?l.join(`, `):`None`})]}),r.denyOnly.length>0&&(0,k.jsxs)(u,{marginTop:1,flexDirection:`column`,children:[(0,k.jsx)(f,{bold:!0,color:`permission`,children:`Filesystem Read Restrictions:`}),(0,k.jsxs)(f,{dimColor:!0,children:[`Denied: `,r.denyOnly.join(`, `)]}),r.allowWithinDeny&&r.allowWithinDeny.length>0&&(0,k.jsxs)(f,{dimColor:!0,children:[`Allowed within denied: `,r.allowWithinDeny.join(`, `)]})]}),i.allowOnly.length>0&&(0,k.jsxs)(u,{marginTop:1,flexDirection:`column`,children:[(0,k.jsx)(f,{bold:!0,color:`permission`,children:`Filesystem Write Restrictions:`}),(0,k.jsxs)(f,{dimColor:!0,children:[`Allowed: `,i.allowOnly.join(`, `)]}),i.denyWithinAllow.length>0&&(0,k.jsxs)(f,{dimColor:!0,children:[`Denied within allowed: `,i.denyWithinAllow.join(`, `)]})]}),(o.allowedHosts&&o.allowedHosts.length>0||o.deniedHosts&&o.deniedHosts.length>0)&&(0,k.jsxs)(u,{marginTop:1,flexDirection:`column`,children:[(0,k.jsxs)(f,{bold:!0,color:`permission`,children:[`Network Restrictions`,a()?` (Managed)`:``,`:`]}),o.allowedHosts&&o.allowedHosts.length>0&&(0,k.jsxs)(f,{dimColor:!0,children:[`Allowed: `,o.allowedHosts.join(`, `)]}),o.deniedHosts&&o.deniedHosts.length>0&&(0,k.jsxs)(f,{dimColor:!0,children:[`Denied: `,o.deniedHosts.join(`, `)]})]}),c&&c.length>0&&(0,k.jsxs)(u,{marginTop:1,flexDirection:`column`,children:[(0,k.jsx)(f,{bold:!0,color:`permission`,children:`Allowed Unix Sockets:`}),(0,k.jsx)(f,{dimColor:!0,children:c.join(`, `)})]}),d.length>0&&(0,k.jsxs)(u,{marginTop:1,flexDirection:`column`,children:[(0,k.jsx)(f,{bold:!0,color:`warning`,children:`⚠ Warning: Glob patterns not fully supported on Linux`}),(0,k.jsxs)(f,{dimColor:!0,children:[`The following patterns will be ignored: `,d.slice(0,3).join(`, `),d.length>3&&` (${d.length-3} more)`]})]}),n]})}var k,A=e((()=>{_(),o(),k=y()}));function j({depCheck:e}){let t=T()===`macos`,n=e.errors.some(e=>e.includes(`ripgrep`)),r=e.errors.some(e=>e.includes(`bwrap`)),i=e.errors.some(e=>e.includes(`socat`)),a=e.warnings.length>0,o=e.errors.filter(e=>!e.includes(`ripgrep`)&&!e.includes(`bwrap`)&&!e.includes(`socat`));return(0,M.jsxs)(u,{flexDirection:`column`,paddingY:1,gap:1,children:[t&&(0,M.jsx)(u,{flexDirection:`column`,children:(0,M.jsxs)(f,{children:[`seatbelt: `,(0,M.jsx)(f,{color:`success`,children:`built-in (macOS)`})]})}),(0,M.jsxs)(u,{flexDirection:`column`,children:[(0,M.jsxs)(f,{children:[`ripgrep (rg): `,n?(0,M.jsx)(f,{color:`error`,children:`not found`}):(0,M.jsx)(f,{color:`success`,children:`found`})]}),n&&(0,M.jsxs)(f,{dimColor:!0,children:[` `,`· `,t?`brew install ripgrep`:`apt install ripgrep`]})]}),!t&&(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)(u,{flexDirection:`column`,children:[(0,M.jsxs)(f,{children:[`bubblewrap (bwrap):`,` `,r?(0,M.jsx)(f,{color:`error`,children:`not installed`}):(0,M.jsx)(f,{color:`success`,children:`installed`})]}),r&&(0,M.jsxs)(f,{dimColor:!0,children:[` `,`· apt install bubblewrap`]})]}),(0,M.jsxs)(u,{flexDirection:`column`,children:[(0,M.jsxs)(f,{children:[`socat: `,i?(0,M.jsx)(f,{color:`error`,children:`not installed`}):(0,M.jsx)(f,{color:`success`,children:`installed`})]}),i&&(0,M.jsxs)(f,{dimColor:!0,children:[` `,`· apt install socat`]})]}),(0,M.jsxs)(u,{flexDirection:`column`,children:[(0,M.jsxs)(f,{children:[`seccomp filter:`,` `,a?(0,M.jsx)(f,{color:`warning`,children:`not installed`}):(0,M.jsx)(f,{color:`success`,children:`installed`}),a&&(0,M.jsx)(f,{dimColor:!0,children:` (required to block unix domain sockets)`})]}),a&&(0,M.jsxs)(u,{flexDirection:`column`,children:[(0,M.jsxs)(f,{dimColor:!0,children:[` `,`· npm install -g @anthropic-ai/sandbox-runtime`]}),(0,M.jsxs)(f,{dimColor:!0,children:[` `,`· or copy vendor/seccomp/* from sandbox-runtime and set`]}),(0,M.jsxs)(f,{dimColor:!0,children:[` `,`sandbox.seccomp.bpfPath and applyPath in settings.json`]})]})]})]}),o.map(e=>(0,M.jsx)(f,{color:`error`,children:e},e))]})}var M,N=e((()=>{_(),E(),M=y()}));function P({onComplete:e}){let t=s.isSandboxingEnabled(),n=s.areSandboxSettingsLockedByPolicy(),r=s.areUnsandboxedCommandsAllowed();return t?n?(0,I.jsxs)(u,{flexDirection:`column`,paddingY:1,children:[(0,I.jsx)(f,{color:`subtle`,children:`Override settings are managed by a higher-priority configuration and cannot be changed locally.`}),(0,I.jsx)(u,{marginTop:1,children:(0,I.jsxs)(f,{dimColor:!0,children:[`Current setting: `,r?`Allow unsandboxed fallback`:`Strict sandbox mode`]})})]}):(0,I.jsx)(F,{onComplete:e,currentMode:r?`open`:`closed`}):(0,I.jsx)(u,{flexDirection:`column`,paddingY:1,children:(0,I.jsx)(f,{color:`subtle`,children:`Sandbox is not enabled. Enable sandbox to configure override settings.`})})}function F({onComplete:e,currentMode:t}){let[r]=l(),{headerFocused:i,focusHeader:a}=p(),o=m(`success`,r)(`(current)`),c=[{label:t===`open`?`Allow unsandboxed fallback ${o}`:`Allow unsandboxed fallback`,value:`open`},{label:t===`closed`?`Strict sandbox mode ${o}`:`Strict sandbox mode`,value:`closed`}];async function h(t){let n=t;await s.setSandboxSettings({allowUnsandboxedCommands:n===`open`}),e(n===`open`?`✓ Unsandboxed fallback allowed - commands can run outside sandbox when necessary`:"✓ Strict sandbox mode - all commands must run in sandbox or be excluded via the `excludedCommands` option")}return(0,I.jsxs)(u,{flexDirection:`column`,paddingY:1,children:[(0,I.jsx)(u,{marginBottom:1,children:(0,I.jsx)(f,{bold:!0,children:`Configure Overrides:`})}),(0,I.jsx)(n,{options:c,onChange:h,onCancel:()=>e(void 0,{display:`skip`}),onUpFromFirstItem:a,isDisabled:i}),(0,I.jsxs)(u,{flexDirection:`column`,marginTop:1,gap:1,children:[(0,I.jsxs)(f,{dimColor:!0,children:[(0,I.jsx)(f,{bold:!0,dimColor:!0,children:`Allow unsandboxed fallback:`}),` `,`When a command fails due to sandbox restrictions, Work Mate can retry with dangerouslyDisableSandbox to run outside the sandbox (falling back to default permissions).`]}),(0,I.jsxs)(f,{dimColor:!0,children:[(0,I.jsx)(f,{bold:!0,dimColor:!0,children:`Strict sandbox mode:`}),` `,`All bash commands invoked by the model must run in the sandbox unless they are explicitly listed in excludedCommands.`]}),(0,I.jsxs)(f,{dimColor:!0,children:[`Learn more:`,` `,(0,I.jsx)(d,{url:`https://code.workmate.com/docs/en/sandboxing#configure-sandboxing`,children:`code.workmate.com/docs/en/sandboxing#configure-sandboxing`})]})]})]})}var I,L=e((()=>{_(),o(),t(),I=y()}));function R({onComplete:e,depCheck:t}){let[n]=l(),r=s.isSandboxingEnabled(),i=s.isAutoAllowBashIfSandboxedEnabled(),a=t.warnings.length>0,o=S().sandbox?.network?.allowAllUnixSockets,u=a&&!o,d=r?i?`auto-allow`:`regular`:`disabled`,f=m(`success`,n)(`(current)`),p=[{label:d===`auto-allow`?`Sandbox BashTool, with auto-allow ${f}`:`Sandbox BashTool, with auto-allow`,value:`auto-allow`},{label:d===`regular`?`Sandbox BashTool, with regular permissions ${f}`:`Sandbox BashTool, with regular permissions`,value:`regular`},{label:d===`disabled`?`No Sandbox ${f}`:`No Sandbox`,value:`disabled`}];async function _(t){switch(t){case`auto-allow`:await s.setSandboxSettings({enabled:!0,autoAllowBashIfSandboxed:!0}),e(`✓ Sandbox enabled with auto-allow for bash commands`);break;case`regular`:await s.setSandboxSettings({enabled:!0,autoAllowBashIfSandboxed:!1}),e(`✓ Sandbox enabled with regular bash permissions`);break;case`disabled`:await s.setSandboxSettings({enabled:!1,autoAllowBashIfSandboxed:!1}),e(`○ Sandbox disabled`);break}}c({"confirm:no":()=>e(void 0,{display:`skip`})},{context:`Settings`});let y=(0,B.jsx)(h,{title:`Mode`,children:(0,B.jsx)(z,{showSocketWarning:u,options:p,onSelect:_,onComplete:e})},`mode`),b=(0,B.jsx)(h,{title:`Overrides`,children:(0,B.jsx)(P,{onComplete:e})},`overrides`),x=(0,B.jsx)(h,{title:`Config`,children:(0,B.jsx)(O,{})},`config`);return(0,B.jsx)(v,{color:`permission`,children:(0,B.jsx)(g,{title:`Sandbox:`,color:`permission`,defaultTab:`Mode`,children:t.errors.length>0?[(0,B.jsx)(h,{title:`Dependencies`,children:(0,B.jsx)(j,{depCheck:t})},`dependencies`)]:[y,...a?[(0,B.jsx)(h,{title:`Dependencies`,children:(0,B.jsx)(j,{depCheck:t})},`dependencies`)]:[],b,x]})})}function z({showSocketWarning:e,options:t,onSelect:r,onComplete:i}){let{headerFocused:a,focusHeader:o}=p();return(0,B.jsxs)(u,{flexDirection:`column`,paddingY:1,children:[e&&(0,B.jsx)(u,{marginBottom:1,children:(0,B.jsx)(f,{color:`warning`,children:`Cannot block unix domain sockets (see Dependencies tab)`})}),(0,B.jsx)(u,{marginBottom:1,children:(0,B.jsx)(f,{bold:!0,children:`Configure Mode:`})}),(0,B.jsx)(n,{options:t,onChange:r,onCancel:()=>i(void 0,{display:`skip`}),onUpFromFirstItem:o,isDisabled:a}),(0,B.jsxs)(u,{flexDirection:`column`,marginTop:1,gap:1,children:[(0,B.jsxs)(f,{dimColor:!0,children:[(0,B.jsx)(f,{bold:!0,dimColor:!0,children:`Auto-allow mode:`}),` `,`Commands will try to run in the sandbox automatically, and attempts to run outside of the sandbox fallback to regular permissions. Explicit ask/deny rules are always respected.`]}),(0,B.jsxs)(f,{dimColor:!0,children:[`Learn more:`,` `,(0,B.jsx)(d,{url:`https://code.workmate.com/docs/en/sandboxing`,children:`code.workmate.com/docs/en/sandboxing`})]})]})]})}var B,V=e((()=>{_(),r(),o(),C(),t(),A(),N(),L(),B=y()}));async function H(e,t,n){let r=S().theme||`light`,a=T();if(!s.isSupportedPlatform()){let t=a===`wsl`?`Error: Sandboxing requires WSL2. WSL1 is not supported.`:`Error: Sandboxing is currently only supported on macOS, Linux, and WSL2.`;return e(m(`error`,r)(t)),null}let o=s.checkDependencies();if(!s.isPlatformInEnabledList())return e(m(`error`,r)(`Error: Sandboxing is disabled for this platform (${a}) via the enabledPlatforms setting.`)),null;if(s.areSandboxSettingsLockedByPolicy())return e(m(`error`,r)(`Error: Sandbox settings are overridden by a higher-priority configuration and cannot be changed locally.`)),null;let c=n?.trim()||``;if(!c)return(0,U.jsx)(R,{onComplete:e,depCheck:o});if(c){let t=c.split(` `)[0];if(t===`exclude`){let t=c.slice(8).trim();if(!t)return e(m(`error`,r)(`Error: Please provide a command pattern to exclude (e.g., /sandbox exclude "npm run test:*")`)),null;let n=t.replace(/^["']|["']$/g,``);i(n);let a=w(`localSettings`),o=a?D(b(),a):`.workmate/settings.local.json`;return e(m(`success`,r)(`Added "${n}" to excluded commands in ${o}`)),null}else return e(m(`error`,r)(`Error: Unknown subcommand "${t}". Available subcommand: exclude`)),null}return null}var U;e((()=>{x(),V(),_(),E(),o(),C(),U=y()}))();export{H as call};
@@ -0,0 +1 @@
1
+ import{F_ as e,N_ as t}from"./loadAgentsDir-DnsldjYU.js";t();export{e as isSearchExtraToolsEnabled};
@@ -1,2 +1,2 @@
1
- import{n as e,o as t}from"./rolldown-runtime-DaDcL9Zw.js";import{Xh as n,Zh as r,hC as i}from"./loadAgentsDir-CbtNPJV3.js";import{I as a,P as o,Wt as s,ai as c,t as l,x as u}from"./src-DL3w8VPk2.js";import{t as d}from"./jsx-runtime-Bb4Xn-E0.js";import{c as f,i as p}from"./debug-BQj6h99Q.js";import{t as m}from"./lib-BlVGipXx.js";function h({onDone:e}){let t=r(e=>e.remoteSessionUrl),[n,i]=(0,_.useState)(``);if((0,_.useEffect)(()=>{if(!t)return;let e=t;async function n(){let t=await(0,g.toString)(e,{type:`utf8`,errorCorrectionLevel:`L`});i(t)}n().catch(e=>{f(`QR code generation failed`,e)})},[t]),s(`confirm:no`,e,{context:`Confirmation`}),!t)return(0,v.jsxs)(u,{children:[(0,v.jsx)(o,{color:`warning`,children:"Not in remote mode. Start with `claude --remote` to use this command."}),(0,v.jsx)(o,{dimColor:!0,children:`(press esc to close)`})]});let c=n.split(`
1
+ import{n as e,o as t}from"./rolldown-runtime-DaDcL9Zw.js";import{Xh as n,Zh as r,hC as i}from"./loadAgentsDir-DnsldjYU.js";import{I as a,P as o,Wt as s,ai as c,t as l,x as u}from"./src-DL3w8VPk2.js";import{t as d}from"./jsx-runtime-Bb4Xn-E0.js";import{c as f,i as p}from"./debug-D7OBvqC2.js";import{t as m}from"./lib-BlVGipXx.js";function h({onDone:e}){let t=r(e=>e.remoteSessionUrl),[n,i]=(0,_.useState)(``);if((0,_.useEffect)(()=>{if(!t)return;let e=t;async function n(){let t=await(0,g.toString)(e,{type:`utf8`,errorCorrectionLevel:`L`});i(t)}n().catch(e=>{f(`QR code generation failed`,e)})},[t]),s(`confirm:no`,e,{context:`Confirmation`}),!t)return(0,v.jsxs)(u,{children:[(0,v.jsx)(o,{color:`warning`,children:"Not in remote mode. Start with `claude --remote` to use this command."}),(0,v.jsx)(o,{dimColor:!0,children:`(press esc to close)`})]});let c=n.split(`
2
2
  `).filter(e=>e.length>0),l=c.length===0;return(0,v.jsxs)(u,{children:[(0,v.jsx)(a,{marginBottom:1,children:(0,v.jsx)(o,{bold:!0,children:`Remote session`})}),l?(0,v.jsx)(o,{dimColor:!0,children:`Generating QR code…`}):c.map((e,t)=>(0,v.jsx)(o,{children:e},t)),(0,v.jsxs)(a,{marginTop:1,children:[(0,v.jsx)(o,{dimColor:!0,children:`Open in browser: `}),(0,v.jsx)(o,{color:`ide`,children:t})]}),(0,v.jsx)(a,{marginTop:1,children:(0,v.jsx)(o,{dimColor:!0,children:`(press esc to close)`})})]})}var g,_,v,y;e((()=>{g=m(),_=t(c(),1),l(),i(),n(),p(),v=d(),y=async e=>(0,v.jsx)(h,{onDone:e})}))();export{y as call};
@@ -0,0 +1 @@
1
+ import{nh as e,rh as t}from"./loadAgentsDir-DnsldjYU.js";e();export{t as registerSessionFileAccessHooks};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{X as t,Z as n,by as r}from"./loadAgentsDir-CbtNPJV3.js";import{Q as i}from"./sessionState-BlbRQ3Y6.js";import{i as a,l as o,t as s,u as c}from"./instinctParser-Dt-lqnDe.js";function l(e){h.set(e.name,e),g||(g=e.name)}function u(e){if(!h.has(e))throw Error(`Observer backend "${e}" is not registered`);g=e}function d(){let e=g?h.get(g):void 0;if(!e)throw Error(`No observer backend is active — register one before analyzing observations`);return e}async function f(e,t){return Promise.resolve(d().analyze(e,t))}function p(){let e=process.env.SKILL_LEARNING_OBSERVER_BACKEND?.trim();return e&&h.has(e)?e:void 0}function m(){let e=p();return e&&u(e),d()}var h,g,_=e((()=>{h=new Map})),v,y=e((()=>{v=[`workflow`,`testing`,`debugging`,`code-style`,`security`,`git`,`project`]}));async function b(e,t){if(e.length===0)return[];if(Date.now()<L)return x(e,t);let r=e.slice(-30),a=S(r),s=P(o().llm.timeoutMs),c;try{let e=await n({systemPrompt:i([R]),userPrompt:a,signal:s,options:{querySource:`skill_learning_observer`,enablePromptCaching:!0,agents:[],isNonInteractiveSession:!0,hasAppendSystemPrompt:!1,mcpTools:[]}});I=0,c=T(e.message?.content)}catch{return I++,I>=o().llm.failureThreshold&&(L=Date.now()+o().llm.circuitCooldownMs),x(e,t)}let l=E(c,t,r);return l.length===0?(I++,I>=o().llm.failureThreshold&&(L=Date.now()+o().llm.circuitCooldownMs),x(e,t)):l}async function x(e,t){try{let{heuristicObserverBackend:n}=await import(`./sessionObserver-BuhXr3FP.js`),r=n.analyze(e,t);return Array.isArray(r)?r:await r}catch{return[]}}function S(e){return`Observations (chronological, newest last):\n${e.map((e,t)=>C(e,t)).join(`
1
+ import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{X as t,Z as n,by as r}from"./loadAgentsDir-DnsldjYU.js";import{Q as i}from"./sessionState-B3tFm9SC.js";import{i as a,l as o,t as s,u as c}from"./instinctParser-Dt-lqnDe.js";function l(e){h.set(e.name,e),g||(g=e.name)}function u(e){if(!h.has(e))throw Error(`Observer backend "${e}" is not registered`);g=e}function d(){let e=g?h.get(g):void 0;if(!e)throw Error(`No observer backend is active — register one before analyzing observations`);return e}async function f(e,t){return Promise.resolve(d().analyze(e,t))}function p(){let e=process.env.SKILL_LEARNING_OBSERVER_BACKEND?.trim();return e&&h.has(e)?e:void 0}function m(){let e=p();return e&&u(e),d()}var h,g,_=e((()=>{h=new Map})),v,y=e((()=>{v=[`workflow`,`testing`,`debugging`,`code-style`,`security`,`git`,`project`]}));async function b(e,t){if(e.length===0)return[];if(Date.now()<L)return x(e,t);let r=e.slice(-30),a=S(r),s=P(o().llm.timeoutMs),c;try{let e=await n({systemPrompt:i([R]),userPrompt:a,signal:s,options:{querySource:`skill_learning_observer`,enablePromptCaching:!0,agents:[],isNonInteractiveSession:!0,hasAppendSystemPrompt:!1,mcpTools:[]}});I=0,c=T(e.message?.content)}catch{return I++,I>=o().llm.failureThreshold&&(L=Date.now()+o().llm.circuitCooldownMs),x(e,t)}let l=E(c,t,r);return l.length===0?(I++,I>=o().llm.failureThreshold&&(L=Date.now()+o().llm.circuitCooldownMs),x(e,t)):l}async function x(e,t){try{let{heuristicObserverBackend:n}=await import(`./sessionObserver-DNjDoJmy.js`),r=n.analyze(e,t);return Array.isArray(r)?r:await r}catch{return[]}}function S(e){return`Observations (chronological, newest last):\n${e.map((e,t)=>C(e,t)).join(`
2
2
  `)}\n\nExtract up to ${F} atomic instincts. JSON array only.`}function C(e,t){let n=[`#${t+1}`,`event=${e.event}`];return e.toolName&&n.push(`tool=${e.toolName}`),e.outcome&&n.push(`outcome=${e.outcome}`),e.messageText&&n.push(`text=${JSON.stringify(w(e.messageText,200))}`),e.toolInput&&n.push(`in=${JSON.stringify(w(e.toolInput,120))}`),e.toolOutput&&n.push(`out=${JSON.stringify(w(e.toolOutput,120))}`),n.join(` | `)}function w(e,t){return e.length<=t?e:`${e.slice(0,t)}…`}function T(e){if(!Array.isArray(e))return``;let t=[];for(let n of e){if(!n||typeof n!=`object`)continue;let e=n;e.type===`text`&&typeof e.text==`string`&&t.push(e.text)}return t.join(``).trim()}function E(e,t,n){let r=D(e);if(!r)return[];let i;try{i=JSON.parse(r)}catch{return[]}if(!Array.isArray(i))return[];let a=n.map(e=>e.id),o=[];for(let e of i.slice(0,F)){let n=O(e,t,a);n&&o.push(n)}return o}function D(e){if(!e)return;let t=e.indexOf(`[`),n=e.lastIndexOf(`]`);if(!(t<0||n<=t))return e.slice(t,n+1)}function O(e,t,n){if(!e||typeof e!=`object`)return;let r=e,i=k(r.trigger,80),a=k(r.action,120);if(!i||!a)return;let o=N(r.evidence);if(o.length!==0)return{trigger:i,action:a,confidence:A(r.confidence),domain:j(r.domain),source:`session-observation`,scope:M(r.scope),projectId:t?.project?.projectId,projectName:t?.project?.projectName,evidence:o,observationIds:n}}function k(e,t){if(typeof e!=`string`)return;let n=e.trim();if(n)return n.length>t?n.slice(0,t):n}function A(e){return typeof e!=`number`||!Number.isFinite(e)?.5:e<0?0:e>1?1:e}function j(e){return typeof e==`string`&&v.includes(e)?e:`project`}function M(e){return e===`global`?`global`:`project`}function N(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){if(typeof n!=`string`)continue;let e=n.trim();if(e&&(t.push(e.length>200?`${e.slice(0,200)}…`:e),t.length===3))break}return t}function P(e){return AbortSignal.timeout(e)}var F,I,L,R,z,B=e((()=>{t(),r(),c(),y(),F=3,I=0,L=0,R=`You analyse a short sequence of observations from a coding-assistant session (user messages, tool invocations with outcomes, assistant messages) and extract atomic, reusable "instincts" — behavioural patterns that would help the assistant act correctly in future similar situations.
3
3
 
4
4
  Respond with ONLY a JSON array (no prose, no code fences, no commentary). Each item must match this schema:
@@ -0,0 +1 @@
1
+ import{n as e,r as t}from"./sessionObserver-Cu7vykWp.js";t();export{e as heuristicObserverBackend};