claude-code-best 2.8.2 → 2.8.3

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 (443) hide show
  1. package/README.md +1 -1
  2. package/dist/chunks/{AddWorkspaceDirectory-BCCbaWoh.js → AddWorkspaceDirectory-CM5PYqoF.js} +1 -1
  3. package/dist/chunks/{App-BIAYUFvT.js → App-BLLQEMkd.js} +1 -1
  4. package/dist/chunks/ApproveApiKey-AMXQPmfE.js +1 -0
  5. package/dist/chunks/{ApproveApiKey-DRARgWX3.js → ApproveApiKey-DrflOSA-.js} +1 -1
  6. package/dist/chunks/{AssistantSessionChooser-eUrEGDlX.js → AssistantSessionChooser-SlRne98s.js} +1 -1
  7. package/dist/chunks/BackgroundTasksDialog-Cciww_FF.js +2 -0
  8. package/dist/chunks/{BypassPermissionsModeDialog-8z7R5EpU.js → BypassPermissionsModeDialog-HaciDdx0.js} +1 -1
  9. package/dist/chunks/{ClaudeInChromeOnboarding-B7mDm5Hb.js → ClaudeInChromeOnboarding-EA3k_q2M.js} +1 -1
  10. package/dist/chunks/ClaudeMdExternalIncludesDialog-C-T8G8O7.js +1 -0
  11. package/dist/chunks/{ClaudeMdExternalIncludesDialog-DE9dpWtg.js → ClaudeMdExternalIncludesDialog-xBclyqKk.js} +1 -1
  12. package/dist/chunks/ConsoleOAuthFlow-BTN62PKj.js +1 -0
  13. package/dist/chunks/{DesktopHandoff-Ce0nE7D6.js → DesktopHandoff-BhY_F3Ob.js} +1 -1
  14. package/dist/chunks/{DevChannelsDialog-mt0lA5wR.js → DevChannelsDialog-DU5komVT.js} +1 -1
  15. package/dist/chunks/DiffDialog-D_-znREV.js +3 -0
  16. package/dist/chunks/Doctor-BhrEYzPO.js +3 -0
  17. package/dist/chunks/Doctor-CjnUU1CY.js +1 -0
  18. package/dist/chunks/{ExitFlow-C3BGvwv-.js → ExitFlow-cRfxceuS.js} +2 -2
  19. package/dist/chunks/{Feedback-BtZb1A8b.js → Feedback-BMv8Kt05.js} +2 -2
  20. package/dist/chunks/Grove-CRAZGlvf.js +1 -0
  21. package/dist/chunks/{Grove-HpMLktXp.js → Grove-CjfR7Acp.js} +1 -1
  22. package/dist/chunks/{HybridTransport-COk7jAC7.js → HybridTransport-D32dn9xc.js} +1 -1
  23. package/dist/chunks/{ITermBackend-BlwyeN8U.js → ITermBackend-BxjzkptA.js} +1 -1
  24. package/dist/chunks/{InvalidConfigDialog-QVIRDXwA.js → InvalidConfigDialog-CnCOCqMT.js} +1 -1
  25. package/dist/chunks/{InvalidSettingsDialog-CZRZm0oa.js → InvalidSettingsDialog-CLOgpfR2.js} +1 -1
  26. package/dist/chunks/MCPConnectionManager-BhbT4Sah.js +1 -0
  27. package/dist/chunks/{McpParsingWarnings-DWMO0bV6.js → McpParsingWarnings-B5X5HVnQ.js} +1 -1
  28. package/dist/chunks/MessageSelector-DLofsxam.js +3 -0
  29. package/dist/chunks/Messages-D1-i4MMT.js +11 -0
  30. package/dist/chunks/{Onboarding-CHcND5Tt.js → Onboarding-Co5P3gZs.js} +1 -1
  31. package/dist/chunks/{OverageCreditUpsell-CMBqZrnz.js → OverageCreditUpsell-DjgcfVt2.js} +1 -1
  32. package/dist/chunks/PluginSettings-NB-Wod-9.js +17 -0
  33. package/dist/chunks/{PromptInputHelpMenu-CAwbW7z2.js → PromptInputHelpMenu-BDI5IF1s.js} +1 -1
  34. package/dist/chunks/QueryEngine-B217mLel.js +1 -0
  35. package/dist/chunks/REPL-BfprHNDt.js +1 -0
  36. package/dist/chunks/{REPL-Dx3SPe95.js → REPL-DCm_BFr_.js} +36 -36
  37. package/dist/chunks/{RemoteCallout-CwI1mLQ9.js → RemoteCallout-dGnKRIDB.js} +1 -1
  38. package/dist/chunks/{RemoteSessionManager-BXMBhfQD.js → RemoteSessionManager-BidAIOqZ.js} +2 -2
  39. package/dist/chunks/ResumeConversation-SDRT6hO3.js +1 -0
  40. package/dist/chunks/{SSETransport-Co-0nMlR.js → SSETransport-BM2xz03M.js} +1 -1
  41. package/dist/chunks/SearchExtraToolsTool-DCSReOsq.js +1 -0
  42. package/dist/chunks/{SentryErrorBoundary-kEgE7qeH.js → SentryErrorBoundary-D5niZGEU.js} +1 -1
  43. package/dist/chunks/SentryErrorBoundary-DzwCuftg.js +1 -0
  44. package/dist/chunks/Settings-D3ds_WCz.js +2 -0
  45. package/dist/chunks/{TeleportProgress--n-u7MYY.js → TeleportProgress-Dg6HcEO9.js} +1 -1
  46. package/dist/chunks/{TeleportRepoMismatchDialog-CzQzdYb2.js → TeleportRepoMismatchDialog-BUKNU2jx.js} +1 -1
  47. package/dist/chunks/{TeleportResumeWrapper-CtANoO1Z.js → TeleportResumeWrapper-5FTzA9R_.js} +1 -1
  48. package/dist/chunks/{ThemePicker-kBt6obJb.js → ThemePicker-Bdm12PmJ.js} +1 -1
  49. package/dist/chunks/{TmuxBackend-Q5xdOkW4.js → TmuxBackend-CYx3Hdf1.js} +2 -2
  50. package/dist/chunks/{TrustDialog-CoCFqyRD.js → TrustDialog-DGKf4iwh.js} +1 -1
  51. package/dist/chunks/{ValidationErrorsList-CL42YlaS.js → ValidationErrorsList-BP7vG1uX.js} +1 -1
  52. package/dist/chunks/{WelcomeV2-B0d9sH1c.js → WelcomeV2-k_969SnB.js} +1 -1
  53. package/dist/chunks/{WindowsTerminalBackend-CLSeqqHh.js → WindowsTerminalBackend-K_zVZBSP.js} +2 -2
  54. package/dist/chunks/{add-dir-IrADCHV-.js → add-dir-DnfUkb1n.js} +1 -1
  55. package/dist/chunks/{agentDisplay-BUXpQhYh.js → agentDisplay-DT04Kqdm.js} +1 -1
  56. package/dist/chunks/{agents-Cx0f6suK.js → agents-ELZyUElQ.js} +7 -7
  57. package/dist/chunks/{agents-BqQtaTaM.js → agents-hh7Zcqm6.js} +1 -1
  58. package/dist/chunks/{ant-BUkS8Em4.js → ant-CuQC6xHS.js} +1 -1
  59. package/dist/chunks/api-BY3NFL4L.js +1 -0
  60. package/dist/chunks/{api-Cy1N7XAQ.js → api-C-KY7A3r.js} +1 -1
  61. package/dist/chunks/asciicast-BeEmDIKr.js +1 -0
  62. package/dist/chunks/{asciicast-C_1Pi99k.js → asciicast-C0fPsv7_.js} +1 -1
  63. package/dist/chunks/assistant-C669PK45.js +1 -0
  64. package/dist/chunks/{assistant-C3dP-BSJ.js → assistant-DbtrknMt.js} +1 -1
  65. package/dist/chunks/{assistant-BGzd9a5x.js → assistant-Z-xFHPiY.js} +1 -1
  66. package/dist/chunks/{auth-DVtMm7Hj.js → auth-Bo_eeRO9.js} +1 -1
  67. package/dist/chunks/auth-C-rD91K7.js +1 -0
  68. package/dist/chunks/{autoMode-ThlM20qr.js → autoMode-BhsFtU8_.js} +6 -6
  69. package/dist/chunks/{autonomy-B637YdCF.js → autonomy-B-d3Xamr.js} +1 -1
  70. package/dist/chunks/{autonomy-B_vxYZbV.js → autonomy-C5wE-5B8.js} +12 -12
  71. package/dist/chunks/{autonomyPanel-BM2VhTsn.js → autonomyPanel-CMy4Zs1a.js} +1 -1
  72. package/dist/chunks/backgroundHousekeeping-YAOGWoo4.js +17 -0
  73. package/dist/chunks/backgroundHousekeeping-xFmPDL7y.js +1 -0
  74. package/dist/chunks/{branch-BlH5WYNu.js → branch-DoV3sEJf.js} +2 -2
  75. package/dist/chunks/{bridge-QRFJRzVG.js → bridge-8RYx23zW.js} +2 -2
  76. package/dist/chunks/{bridgeConfig-Di9LziJ3.js → bridgeConfig-C8tQXEsd.js} +1 -1
  77. package/dist/chunks/bridgeConfig-D5awYlvd.js +1 -0
  78. package/dist/chunks/bridgeEnabled-0tZw2TlM.js +1 -0
  79. package/dist/chunks/{bridgeEnabled-z1fPRzzV.js → bridgeEnabled-B3KTIVe4.js} +1 -1
  80. package/dist/chunks/bridgeMain-DKkE8RYG.js +1 -0
  81. package/dist/chunks/bridgeMain-Ssp8HRcV.js +68 -0
  82. package/dist/chunks/{bridgeMessaging-BG8fNZac.js → bridgeMessaging-DGTm_wDk.js} +1 -1
  83. package/dist/chunks/{btw-DpeWZQbf.js → btw-Du0mHeiD.js} +1 -1
  84. package/dist/chunks/{buddy-Bni2g0Km.js → buddy-D04AYSW6.js} +1 -1
  85. package/dist/chunks/{bypassPermissionsKillswitch-7e56Rquc.js → bypassPermissionsKillswitch-CRYkShwu.js} +1 -1
  86. package/dist/chunks/caches-Byd8SjTZ.js +1 -0
  87. package/dist/chunks/{caches-CzEBsMvP.js → caches-DYf69-N9.js} +2 -2
  88. package/dist/chunks/{ccrClient-iR6zwGb1.js → ccrClient-CDrBxSox.js} +1 -1
  89. package/dist/chunks/changeDetector-CGzGs92S.js +1 -0
  90. package/dist/chunks/{channelNotification-CSmLgwtO.js → channelNotification-CtA9HHFW.js} +1 -1
  91. package/dist/chunks/channelNotification-DOvTvOGt.js +1 -0
  92. package/dist/chunks/{chrome-BO1vbvZ0.js → chrome-BHbT4cc4.js} +1 -1
  93. package/dist/chunks/clear-BGLxPs_B.js +1 -0
  94. package/dist/chunks/client-CtOmoNuQ.js +1 -0
  95. package/dist/chunks/color-MOZYZ1cM.js +1 -0
  96. package/dist/chunks/commands-B3XpQmEm.js +1 -0
  97. package/dist/chunks/{commitAttribution-Djh1ZpYH.js → commitAttribution-BTtCTr8c.js} +1 -1
  98. package/dist/chunks/commitAttribution-CXNK79GW.js +1 -0
  99. package/dist/chunks/compact-CMqxm2yG.js +3 -0
  100. package/dist/chunks/{companion-C-jfFhlz.js → companion-ChxkOPHB.js} +1 -1
  101. package/dist/chunks/{config-DwsIX0hc.js → config-cRyRIPI7.js} +1 -1
  102. package/dist/chunks/{config-CloXpblh.js → config-wvQYYbwU.js} +1 -1
  103. package/dist/chunks/{context-DdwMoH4j.js → context-7ds9guuJ.js} +1 -1
  104. package/dist/chunks/{context-noninteractive-BWbEqad6.js → context-noninteractive-CISZymIU.js} +2 -2
  105. package/dist/chunks/context-noninteractive-CwJBBF8h.js +1 -0
  106. package/dist/chunks/conversation-Bgsdn99n.js +1 -0
  107. package/dist/chunks/conversation-D30CU_jS.js +1 -0
  108. package/dist/chunks/{copy-tl-41wwU.js → copy-Dvz2Mge4.js} +2 -2
  109. package/dist/chunks/{createSSHSession-B_IyqOll.js → createSSHSession-Befx8LiM.js} +1 -1
  110. package/dist/chunks/createSession-Cp0KTjPL.js +1 -0
  111. package/dist/chunks/{createSession-Csaqw8kb.js → createSession-CsZGoika.js} +1 -1
  112. package/dist/chunks/{cronJitterConfig-2sHTXBLu.js → cronJitterConfig-Dfl7iZqE.js} +3 -3
  113. package/dist/chunks/{crossProjectResume-C1I0X__e.js → crossProjectResume-DK8nt_cn.js} +3 -3
  114. package/dist/chunks/{datadog-BzkFYNcv.js → datadog-2vPhbh6g.js} +1 -1
  115. package/dist/chunks/datadog-DLTYg-S2.js +1 -0
  116. package/dist/chunks/{desktop-oTXppB2O.js → desktop-DY9Nw2Fi.js} +1 -1
  117. package/dist/chunks/{diff-B23DUoT8.js → diff-Ci6rs6S6.js} +1 -1
  118. package/dist/chunks/{directoryCompletion-DqtWZsoW.js → directoryCompletion-DLxCFk_m.js} +1 -1
  119. package/dist/chunks/{doctor-o2MJvjAE.js → doctor-DBYGgS-y.js} +1 -1
  120. package/dist/chunks/{effort-B1X_S_oa.js → effort-Bi_t4J_o.js} +2 -2
  121. package/dist/chunks/{entry-BAXMpXJ0.js → entry-p_5l64_p.js} +4 -4
  122. package/dist/chunks/{envLessBridgeConfig-YNTOVEqU.js → envLessBridgeConfig-C_sqoGX6.js} +1 -1
  123. package/dist/chunks/envLessBridgeConfig-Cfbqwjew.js +1 -0
  124. package/dist/chunks/exit-Bc8L5oQT.js +1 -0
  125. package/dist/chunks/{export-CqbYdFmJ.js → export-kvnEu9Iw.js} +1 -1
  126. package/dist/chunks/{exportRenderer-DP_z8YD1.js → exportRenderer-DmpMgUiv.js} +1 -1
  127. package/dist/chunks/extra-usage-BnO6knuC.js +1 -0
  128. package/dist/chunks/{extra-usage-BQ5Z1wJb.js → extra-usage-CmP6V7HX.js} +1 -1
  129. package/dist/chunks/{extra-usage-core-B1oJoxYa.js → extra-usage-core-BqJClmf4.js} +1 -1
  130. package/dist/chunks/{extra-usage-noninteractive-BV_6cpdd.js → extra-usage-noninteractive-BWyPFx53.js} +1 -1
  131. package/dist/chunks/extraUsage-DgMspmL4.js +1 -0
  132. package/dist/chunks/extractMemories-uQJS_i6E.js +1 -0
  133. package/dist/chunks/fast-Bunl4ivM.js +1 -0
  134. package/dist/chunks/{fast-BJMGfO_S.js → fast-Dd2jZVF-.js} +1 -1
  135. package/dist/chunks/{feedback-O0Gushxg.js → feedback-8UeDx3Yc.js} +1 -1
  136. package/dist/chunks/{firstPartyEventLogger-0s2WJ6SR.js → firstPartyEventLogger-cKEuzfyR.js} +1 -1
  137. package/dist/chunks/{flushGate-CLjpgnG6.js → flushGate-B3upNVdV.js} +1 -1
  138. package/dist/chunks/{gates-C5y8P5t9.js → gates-lWoKqpJ1.js} +1 -1
  139. package/dist/chunks/gates-uo2owWkc.js +1 -0
  140. package/dist/chunks/{gemini-D6lfJRGH.js → gemini-DDSP4ArG.js} +1 -1
  141. package/dist/chunks/{generateRecap-AYujRzfu.js → generateRecap-DCBzHqag.js} +1 -1
  142. package/dist/chunks/{generateSessionName-CXg1uVLN.js → generateSessionName-Db5pZ3cL.js} +1 -1
  143. package/dist/chunks/{githubRepoPathMapping-CdjkMIX3.js → githubRepoPathMapping-v_U9b0Fe.js} +1 -1
  144. package/dist/chunks/{goal-BGr-SlcA.js → goal-EZCOCHZa.js} +3 -3
  145. package/dist/chunks/{grok-DxyRt4Jq.js → grok-H8K_fDKF.js} +1 -1
  146. package/dist/chunks/{growthbook-D93ZmHUL.js → growthbook-mMD0jkbu.js} +1 -1
  147. package/dist/chunks/{heapdump-DZz5qnZg.js → heapdump-CbVvtQuH.js} +1 -1
  148. package/dist/chunks/{help-C8HhaC70.js → help-Bq4jxCSJ.js} +1 -1
  149. package/dist/chunks/hooks-CVlFJfV0.js +1 -0
  150. package/dist/chunks/{hooks-De2yBPig.js → hooks-DbKUS0fN.js} +2 -2
  151. package/dist/chunks/{hostAdapter-CZdJUeS1.js → hostAdapter-BhVpIn1Y.js} +1 -1
  152. package/dist/chunks/{ide-GnSLasRI.js → ide-DZJheXyl.js} +2 -2
  153. package/dist/chunks/{inboundAttachments-C8y3D5mp.js → inboundAttachments-B9NxWIDx.js} +1 -1
  154. package/dist/chunks/inboundAttachments-_vhgWPEL.js +1 -0
  155. package/dist/chunks/initReplBridge-BCIaWf78.js +1 -0
  156. package/dist/chunks/{insights-23tyPxXV.js → insights-D1BFvhw_.js} +68 -68
  157. package/dist/chunks/{install-BXi4d63r.js → install-D_xm-9s1.js} +1 -1
  158. package/dist/chunks/{install-github-app-D2X7BgzJ.js → install-github-app-CUEACXdr.js} +2 -2
  159. package/dist/chunks/{install-slack-app-_J1t0kSP.js → install-slack-app-DGV6l9wy.js} +1 -1
  160. package/dist/chunks/{instrumentation-C9WDRy-K.js → instrumentation-CEfWNakt.js} +3 -3
  161. package/dist/chunks/{job-DXX7dNN_.js → job-BeeAFieV.js} +1 -1
  162. package/dist/chunks/{keybindings-CChhkkE0.js → keybindings-CeYhuE5G.js} +2 -2
  163. package/dist/chunks/{lang-COIVItM_.js → lang-BmwAsgo1.js} +1 -1
  164. package/dist/chunks/{language-DzWvcLCu.js → language-BcWiv2lr.js} +1 -1
  165. package/dist/chunks/language-BnQye2Mx.js +1 -0
  166. package/dist/chunks/{launchAgentsPlatform-Du_WvKeU.js → launchAgentsPlatform-DqQzwcqV.js} +1 -1
  167. package/dist/chunks/{launchAutofixPr-CypNniKH.js → launchAutofixPr-XltBpICW.js} +3 -3
  168. package/dist/chunks/{launchLocalMemory-GkqB_Gcr.js → launchLocalMemory-CHSU4_or.js} +2 -2
  169. package/dist/chunks/{launchLocalVault-CBihJDzq.js → launchLocalVault-CnvCdQ1M.js} +3 -3
  170. package/dist/chunks/{launchMemoryStores-BkK0wwq0.js → launchMemoryStores-DD2duIDU.js} +1 -1
  171. package/dist/chunks/{launchOnboarding-BubTG5vY.js → launchOnboarding-JTKef_jU.js} +1 -1
  172. package/dist/chunks/{launchSchedule-CkV6Ai-0.js → launchSchedule-BVtfNQtS.js} +1 -1
  173. package/dist/chunks/{launchSkillStore-DIrFg_WZ.js → launchSkillStore-TisTmZ3O.js} +1 -1
  174. package/dist/chunks/{launchTeleport-DFrgN9sU.js → launchTeleport-BO_V6ggj.js} +3 -3
  175. package/dist/chunks/{launchVault-CIiNsg91.js → launchVault-Civro2KB.js} +1 -1
  176. package/dist/chunks/{loadAgentsDir-DC4jN6-f.js → loadAgentsDir-BfEZacjM.js} +740 -690
  177. package/dist/chunks/loadAgentsDir-rYxb2igq.js +1 -0
  178. package/dist/chunks/loadPluginHooks-Cniyh-tZ.js +1 -0
  179. package/dist/chunks/localSearch-C0J7ETJQ.js +1 -0
  180. package/dist/chunks/{localSearch-But4wyLg.js → localSearch-COJcqOWl.js} +1 -1
  181. package/dist/chunks/login-B4wjtpEU.js +1 -0
  182. package/dist/chunks/{login-ajsn1Sg7.js → login-SuUxFLIY.js} +1 -1
  183. package/dist/chunks/{logoV2Utils-CpeUvaOM.js → logoV2Utils-DvjpZkyF.js} +1 -1
  184. package/dist/chunks/logout-o16yNWNB.js +1 -0
  185. package/dist/chunks/{magicDocs-TF6U6QoB.js → magicDocs-BZBrH9zB.js} +2 -2
  186. package/dist/chunks/{main-bjQRqaUr.js → main-p9Tke3lb.js} +90 -63
  187. package/dist/chunks/{mappers-Bg-xtimK.js → mappers-BcXg_fI3.js} +1 -1
  188. package/dist/chunks/mcp-BFxLEf3X.js +1 -0
  189. package/dist/chunks/{mcp-i8lqdWTr.js → mcp-CIJL0PTq.js} +2 -2
  190. package/dist/chunks/mcp-DfuQ1MJu.js +6 -0
  191. package/dist/chunks/{mcpServer-CuqaXxiJ.js → mcpServer-D2kI_m2H.js} +1 -1
  192. package/dist/chunks/{mcpServer-Dr9UfcEd.js → mcpServer-DPk-oJOU.js} +1 -1
  193. package/dist/chunks/{memory-DVJxsbcO.js → memory-CJOtY_Uv.js} +1 -1
  194. package/dist/chunks/{mode-C9yWWppB.js → mode-DkpKiyTE.js} +1 -1
  195. package/dist/chunks/{model-Dq-13vaB.js → model-DZyzd39E.js} +1 -1
  196. package/dist/chunks/model-De0AGQ3F.js +1 -0
  197. package/dist/chunks/{onChangeAppState-Cc4zOnqx.js → onChangeAppState-CvtxqUDG.js} +1 -1
  198. package/dist/chunks/{openai-DMCGGZts.js → openai-B888nVou.js} +3 -3
  199. package/dist/chunks/{overageCreditGrant-CzkWDmsQ.js → overageCreditGrant-BOSyVk3U.js} +1 -1
  200. package/dist/chunks/{panelCall-D36EWzwF.js → panelCall-BVdu8oii.js} +1 -1
  201. package/dist/chunks/{passes-CPAwB9_F.js → passes-DeSsjipz.js} +1 -1
  202. package/dist/chunks/{path-BE28AJwZ.js → path-Cit7LKW-.js} +1 -1
  203. package/dist/chunks/{paths-CEAy4QCs.js → paths-nIHVpTn2.js} +3 -3
  204. package/dist/chunks/permissions-DGdr-wOj.js +3 -0
  205. package/dist/chunks/{pipeTransport-7auNUakO.js → pipeTransport-ClZYq1sd.js} +1 -1
  206. package/dist/chunks/{plan-pCEs76NM.js → plan-D9bnkDwv.js} +1 -1
  207. package/dist/chunks/{plugin-BSC-7wQh.js → plugin-BE0r1g1g.js} +1 -1
  208. package/dist/chunks/{pluginAutoupdate-Cre72Rtf.js → pluginAutoupdate-xyXksEJv.js} +1 -1
  209. package/dist/chunks/pluginBlocklist-Dd7XBe8U.js +1 -0
  210. package/dist/chunks/{pluginCliCommands-CTxmCPph.js → pluginCliCommands-8MJCk1nq.js} +1 -1
  211. package/dist/chunks/{pluginFlagging-C5EGcjZe.js → pluginFlagging-7zuXXBD5.js} +1 -1
  212. package/dist/chunks/pluginOperations-DFzbASMD.js +2 -0
  213. package/dist/chunks/{pluginStartupCheck-B3QqfRt6.js → pluginStartupCheck-BC5npqdw.js} +1 -1
  214. package/dist/chunks/pluginStartupCheck-C6IH0haF.js +1 -0
  215. package/dist/chunks/plugins-Bhc2pbAj.js +4 -0
  216. package/dist/chunks/policyLimits-CfrU0rIR.js +1 -0
  217. package/dist/chunks/{pollConfig-CyO4Ycwc.js → pollConfig-B3hNYQ_n.js} +1 -1
  218. package/dist/chunks/{poor-eRoBwI0Z.js → poor-BjTGCuqc.js} +1 -1
  219. package/dist/chunks/{poorMode-BdNsLBQ-.js → poorMode-CGVMMLlz.js} +1 -1
  220. package/dist/chunks/poorMode-DWLhTldO.js +1 -0
  221. package/dist/chunks/{print-Ogibzjap.js → print-BJkyuCzw.js} +11 -11
  222. package/dist/chunks/{privacy-settings-Dd7PtKbY.js → privacy-settings-BDVjqVcX.js} +1 -1
  223. package/dist/chunks/processBashCommand-DnzyTwtS.js +1 -0
  224. package/dist/chunks/processSlashCommand-BGBRvSCA.js +6 -0
  225. package/dist/chunks/prompt-BXrvaHyx.js +1 -0
  226. package/dist/chunks/{prompt-BHI7PZe4.js → prompt-DgIuTC6Q.js} +1 -1
  227. package/dist/chunks/prompt-Fax-fxAf.js +1 -0
  228. package/dist/chunks/{promptEditor-DoJ-xPi4.js → promptEditor-BkHY_Vzb.js} +2 -2
  229. package/dist/chunks/{protocolHandler-Dgzu5UWb.js → protocolHandler-CrXWRkxh.js} +1 -1
  230. package/dist/chunks/rate-limit-options-skMSi19l.js +1 -0
  231. package/dist/chunks/{rcDebugLog-C0Bam8V9.js → rcDebugLog-Bv_x5w_B.js} +1 -1
  232. package/dist/chunks/{referral-B10JtHMk.js → referral-DfKWr4Jf.js} +1 -1
  233. package/dist/chunks/refresh-zosTlttX.js +1 -0
  234. package/dist/chunks/{registerProtocol-CQjmvg7a.js → registerProtocol-De6y1iOi.js} +1 -1
  235. package/dist/chunks/registry-C8JbYbJI.js +1 -0
  236. package/dist/chunks/{release-notes-dxng0ob_.js → release-notes-Su1UPyE4.js} +1 -1
  237. package/dist/chunks/{releaseNotes-CS5L5W0H.js → releaseNotes-C7-JnhrH.js} +2 -2
  238. package/dist/chunks/{reload-plugins-CgzAjBDp.js → reload-plugins-C8lWCq8M.js} +1 -1
  239. package/dist/chunks/{remote-env-BasfU8Ra.js → remote-env-tQuvJmrt.js} +1 -1
  240. package/dist/chunks/{remoteBridgeCore-IJI5koHz.js → remoteBridgeCore-CwOTDmNP.js} +1 -1
  241. package/dist/chunks/{remoteControlServer-BBCt7ySV.js → remoteControlServer-DIKi-0lr.js} +2 -2
  242. package/dist/chunks/rename-Trg9EHjT.js +1 -0
  243. package/dist/chunks/{resume-DjnfattK.js → resume-Nt_EbjKh.js} +2 -2
  244. package/dist/chunks/{runtimeObserver-ByTBtmBf.js → runtimeObserver-CyWhTJpz.js} +4 -4
  245. package/dist/chunks/{runtimeObserver-COpkJmg-.js → runtimeObserver-T9QERJ_O.js} +1 -1
  246. package/dist/chunks/sandbox-adapter-BDGhDrPl.js +1 -0
  247. package/dist/chunks/{sandbox-toggle-CQohaYND.js → sandbox-toggle-C6v31S7-.js} +1 -1
  248. package/dist/chunks/searchExtraTools-C8ehknh0.js +1 -0
  249. package/dist/chunks/{sentry-C0bQlih_.js → sentry-CK_GHX79.js} +1 -1
  250. package/dist/chunks/{session-Dx_ODOHl.js → session-Ys3KvmQ0.js} +1 -1
  251. package/dist/chunks/{sessionDiscovery-DAqs0Ra6.js → sessionDiscovery-Cg3X2fKe.js} +1 -1
  252. package/dist/chunks/sessionFileAccessHooks-vthxapHk.js +1 -0
  253. package/dist/chunks/sessionMemory-ek1SfYG_.js +1 -0
  254. package/dist/chunks/sessionMemory-l-S0jpuk.js +1 -0
  255. package/dist/chunks/sessionMemoryUtils-BGJeJyKn.js +1 -0
  256. package/dist/chunks/sessionObserver-COTvvM3Z.js +1 -0
  257. package/dist/chunks/{sessionObserver-rd6RRTzc.js → sessionObserver-DvAdG6vQ.js} +2 -2
  258. package/dist/chunks/sessionStorage-GKe4ALVr.js +1 -0
  259. package/dist/chunks/{sessionTitle-1k_2BhFL.js → sessionTitle-DJMmUKBJ.js} +2 -2
  260. package/dist/chunks/{sessionTracing-DNSDPYdR.js → sessionTracing-DuQ3kbq6.js} +1 -1
  261. package/dist/chunks/{settingsSync-3xG2A_wN.js → settingsSync-1mhDakFG.js} +1 -1
  262. package/dist/chunks/{setup-Hlga8GJ_.js → setup-CAy0HkI3.js} +1 -1
  263. package/dist/chunks/setup-CGxUKG8x.js +3 -0
  264. package/dist/chunks/{setup-CY808VaY.js → setup-D5ioKRsS.js} +1 -1
  265. package/dist/chunks/{shadowedRuleDetection-BdBNo5eP.js → shadowedRuleDetection-Cq0y9pLR.js} +1 -1
  266. package/dist/chunks/{sideQuestion-DWOCUKMh.js → sideQuestion-ZII6LMSM.js} +3 -3
  267. package/dist/chunks/{sink-DCh0VJ4g.js → sink-Cd5g6Qqh.js} +1 -1
  268. package/dist/chunks/sink-Df9tds-b.js +1 -0
  269. package/dist/chunks/sinks-C4DwU8Xs.js +1 -0
  270. package/dist/chunks/{sinks-_9T2oPB_.js → sinks-DZlIEjLZ.js} +2 -2
  271. package/dist/chunks/{skill-learning-CzZFGFZO.js → skill-learning-DO21PjpF.js} +1 -1
  272. package/dist/chunks/skillChangeDetector-B6tL2yC9.js +1 -0
  273. package/dist/chunks/{skillGapStore-DJm3SULe.js → skillGapStore-B_xv3GUy.js} +1 -1
  274. package/dist/chunks/{skillGapStore-Bz_qbwI1.js → skillGapStore-CTD8MYTx.js} +2 -2
  275. package/dist/chunks/{skillGenerator-BcNv-VZ5.js → skillGenerator-CO9r-gft.js} +2 -2
  276. package/dist/chunks/skillLearning-BJS4lsNk.js +1 -0
  277. package/dist/chunks/skillLearning-C2NmdcYQ.js +1 -0
  278. package/dist/chunks/{skillPanel-Q85P-Gg4.js → skillPanel-DSumFGKN.js} +3 -3
  279. package/dist/chunks/{skillSearchPanel-CMCQDAcX.js → skillSearchPanel-SqkfYBjV.js} +4 -4
  280. package/dist/chunks/{skills-D3eUg3HG.js → skills-Bj3g5apl.js} +1 -1
  281. package/dist/chunks/{sprites-ChoMSqpa.js → sprites-CxMz3tIE.js} +1 -1
  282. package/dist/chunks/{stats-DdhEa_6-.js → stats-D1wYx84O.js} +1 -1
  283. package/dist/chunks/{status-CX7Kgn21.js → status-BWCqbeJ3.js} +1 -1
  284. package/dist/chunks/statusNoticeHelpers-DY0Cblkd.js +1 -0
  285. package/dist/chunks/{tag-BJ_u3aJm.js → tag-Hc7nOYm5.js} +2 -2
  286. package/dist/chunks/{tasks-DeEWOchP.js → tasks-BSqecqVm.js} +1 -1
  287. package/dist/chunks/{teamHelpers-WmWa_h3B.js → teamHelpers-BOmVFTLS.js} +1 -1
  288. package/dist/chunks/teamHelpers-BueGmQcw.js +1 -0
  289. package/dist/chunks/{teammateModeSnapshot-DZ6ulELC.js → teammateModeSnapshot-DhXjREuo.js} +1 -1
  290. package/dist/chunks/teammateModeSnapshot-_MCm6NGJ.js +1 -0
  291. package/dist/chunks/teleport-W2iPwivh.js +1 -0
  292. package/dist/chunks/{templateJobs-nFBp68za.js → templateJobs-1oMC9yLQ.js} +1 -1
  293. package/dist/chunks/{terminalSetup-DULcnnWe.js → terminalSetup-Bkml3uSP.js} +1 -1
  294. package/dist/chunks/{terminalSetup-BORjK3qH.js → terminalSetup-DJX1hqKs.js} +1 -1
  295. package/dist/chunks/{theme-Bf2QD0ja.js → theme-ia4cIc4d.js} +1 -1
  296. package/dist/chunks/thinkback-1NYskewu.js +1 -0
  297. package/dist/chunks/{thinkback-DZEhr3Ii.js → thinkback-DWLUXUQC.js} +1 -1
  298. package/dist/chunks/thinkback-play-DZmXMRtq.js +1 -0
  299. package/dist/chunks/{toolEventObserver-DMdrez6V.js → toolEventObserver-Ci0BECRu.js} +1 -1
  300. package/dist/chunks/{toolEventObserver-CNZy5TpN.js → toolEventObserver-nPwMQ5Vf.js} +1 -1
  301. package/dist/chunks/toolPool-ByCdlOak.js +1 -0
  302. package/dist/chunks/toolPool-IkNWjuk2.js +1 -0
  303. package/dist/chunks/{trustedDevice-Dw2crViN.js → trustedDevice-BynTLVs4.js} +1 -1
  304. package/dist/chunks/{trustedDevice-DWb5CPB_.js → trustedDevice-CtL2IGDX.js} +1 -1
  305. package/dist/chunks/{ultrareviewCommand-BfN25zni.js → ultrareviewCommand-DN-QhQ-f.js} +2 -2
  306. package/dist/chunks/undercover-CqJzV_Ar.js +1 -0
  307. package/dist/chunks/{undercover-rcR56jZx.js → undercover-DLr5xI3K.js} +1 -1
  308. package/dist/chunks/{updateCCB-DlTAqQJq.js → updateCCB-C6Ov8SNx.js} +4 -4
  309. package/dist/chunks/{upgrade-ClLcX7zy.js → upgrade-CVM1ffhq.js} +1 -1
  310. package/dist/chunks/upgrade-d40dVpDc.js +1 -0
  311. package/dist/chunks/{upload-BqEzK59v.js → upload-DSNwGLNd.js} +1 -1
  312. package/dist/chunks/{usage-BgKDh8pQ.js → usage-BRv8mBDf.js} +1 -1
  313. package/dist/chunks/{usage-DW-akzSR.js → usage-GMw8NiO_.js} +1 -1
  314. package/dist/chunks/{useMainLoopModel-BTpZ8k3k.js → useMainLoopModel-CEM_50a0.js} +1 -1
  315. package/dist/chunks/{useManagePlugins-z0qezP5r.js → useManagePlugins-hCqb5F5n.js} +1 -1
  316. package/dist/chunks/{useMergedTools-B78rAreW.js → useMergedTools-DxvRmxVF.js} +1 -1
  317. package/dist/chunks/{useSearchInput-CwxF3CHN.js → useSearchInput-BCErnYur.js} +1 -1
  318. package/dist/chunks/useSettingsErrors-BwNeCSA6.js +1 -0
  319. package/dist/chunks/{useVoice-X5WSnyed.js → useVoice-Cu39ifSa.js} +1 -1
  320. package/dist/chunks/{util-CP-_gsEO.js → util-DYuasrIE.js} +1 -1
  321. package/dist/chunks/utils-DSGFJaZ_.js +1 -0
  322. package/dist/chunks/{validatePlugin-DUuaprqR.js → validatePlugin-b1ec7M7n.js} +1 -1
  323. package/dist/chunks/{vim-BfmsdxOa.js → vim-CrAzv4cM.js} +1 -1
  324. package/dist/chunks/{voice-B3GIfFlB.js → voice-DKG3SYqi.js} +2 -2
  325. package/dist/chunks/{voiceModeEnabled-C1Q9j5q6.js → voiceModeEnabled-By2qa3A2.js} +1 -1
  326. package/dist/chunks/voiceModeEnabled-DwYcj-FH.js +1 -0
  327. package/dist/chunks/voiceStreamSTT-DD8ulbg1.js +1 -0
  328. package/dist/chunks/{voiceStreamSTT-BguyxdrW.js → voiceStreamSTT-DEV82xnN.js} +1 -1
  329. package/dist/chunks/{web-tools-qf_VwWRn.js → web-tools-8QRyE7va.js} +1 -1
  330. package/dist/chunks/windowsPaths-CRq9Bt5c.js +1 -0
  331. package/dist/chunks/windowsPaths-jbJ-skB_.js +1 -0
  332. package/dist/chunks/{workerRegistry-SbiLJIsG.js → workerRegistry-S7pO5khK.js} +1 -1
  333. package/dist/chunks/worktree-CfXrXsQ2.js +1 -0
  334. package/dist/chunks/{xml-D7-jJqSA.js → xml-CPJXOUFt.js} +1 -1
  335. package/dist/cli.js +1 -1
  336. package/package.json +1 -1
  337. package/dist/chunks/ApproveApiKey-Do-Qth0X.js +0 -1
  338. package/dist/chunks/BackgroundTasksDialog-DSeAqhMC.js +0 -2
  339. package/dist/chunks/ClaudeMdExternalIncludesDialog-DTZS-dek.js +0 -1
  340. package/dist/chunks/ConsoleOAuthFlow-UcQCmIWd.js +0 -1
  341. package/dist/chunks/DiffDialog-BfSnz8L-.js +0 -3
  342. package/dist/chunks/Doctor-BOVjkAKn.js +0 -3
  343. package/dist/chunks/Doctor-osWC5WVY.js +0 -1
  344. package/dist/chunks/Grove-DyC_Wrfx.js +0 -1
  345. package/dist/chunks/MCPConnectionManager-2Fulnp8q.js +0 -1
  346. package/dist/chunks/MessageSelector-B4jJQ-KQ.js +0 -3
  347. package/dist/chunks/Messages-ltcn1Qkf.js +0 -11
  348. package/dist/chunks/PluginSettings-DIS_qrVA.js +0 -17
  349. package/dist/chunks/QueryEngine-BQs519Rb.js +0 -1
  350. package/dist/chunks/REPL-DJh_wVWI.js +0 -1
  351. package/dist/chunks/ResumeConversation-BK7L_YBI.js +0 -1
  352. package/dist/chunks/SearchExtraToolsTool-DVi-ggud.js +0 -1
  353. package/dist/chunks/SentryErrorBoundary-DLML64E_.js +0 -1
  354. package/dist/chunks/Settings-DOve7mW1.js +0 -2
  355. package/dist/chunks/api-CoBZPEi-.js +0 -1
  356. package/dist/chunks/asciicast-DA6TudSH.js +0 -1
  357. package/dist/chunks/assistant-B2_c5C4T.js +0 -1
  358. package/dist/chunks/auth-CRVuUNwf.js +0 -1
  359. package/dist/chunks/backgroundHousekeeping-BWAfdRVf.js +0 -1
  360. package/dist/chunks/backgroundHousekeeping-Cll7XHG1.js +0 -17
  361. package/dist/chunks/bridgeConfig-pVTHa_ED.js +0 -1
  362. package/dist/chunks/bridgeEnabled-c_BeJX3S.js +0 -1
  363. package/dist/chunks/bridgeMain-CHk_DCxy.js +0 -1
  364. package/dist/chunks/bridgeMain-DVoobI7G.js +0 -68
  365. package/dist/chunks/caches-3byHT6VF.js +0 -1
  366. package/dist/chunks/changeDetector-Cg75mKOu.js +0 -1
  367. package/dist/chunks/channelNotification-BSmZprUZ.js +0 -1
  368. package/dist/chunks/clear-CTOCrXv_.js +0 -1
  369. package/dist/chunks/client-BgdjJNnC.js +0 -1
  370. package/dist/chunks/color-BP4FmcMn.js +0 -1
  371. package/dist/chunks/commands-CkfOhzGE.js +0 -1
  372. package/dist/chunks/commitAttribution-DKvggTZx.js +0 -1
  373. package/dist/chunks/compact-BtAvCkY0.js +0 -3
  374. package/dist/chunks/context-noninteractive-DNOyQYnM.js +0 -1
  375. package/dist/chunks/conversation-DR4MFYYi.js +0 -1
  376. package/dist/chunks/conversation-DVhyJA1O.js +0 -1
  377. package/dist/chunks/createSession-CIM50iEU.js +0 -1
  378. package/dist/chunks/datadog-vQKKqB6Z.js +0 -1
  379. package/dist/chunks/envLessBridgeConfig-Dj0umjOo.js +0 -1
  380. package/dist/chunks/exit-CwGJifQF.js +0 -1
  381. package/dist/chunks/extra-usage-1FUBiJOE.js +0 -1
  382. package/dist/chunks/extraUsage-Ca_6qcke.js +0 -1
  383. package/dist/chunks/extractMemories-B-yrLjpP.js +0 -1
  384. package/dist/chunks/fast-CFtN26up.js +0 -1
  385. package/dist/chunks/gates-4fq2Ws2D.js +0 -1
  386. package/dist/chunks/hooks-CmW7bdtz.js +0 -1
  387. package/dist/chunks/inboundAttachments-DZiITyN8.js +0 -1
  388. package/dist/chunks/initReplBridge-YGXqLbNZ.js +0 -1
  389. package/dist/chunks/language-CiMwEWO-.js +0 -1
  390. package/dist/chunks/loadAgentsDir-CjhNkoq0.js +0 -1
  391. package/dist/chunks/loadPluginHooks-DukITDP2.js +0 -1
  392. package/dist/chunks/localSearch-D8FFon8N.js +0 -1
  393. package/dist/chunks/login-B3TV33p4.js +0 -1
  394. package/dist/chunks/logout-BqbTEPv9.js +0 -1
  395. package/dist/chunks/mcp-DtHGTZUo.js +0 -1
  396. package/dist/chunks/mcp-Vj0ijoSq.js +0 -6
  397. package/dist/chunks/model-BYSyXf9-.js +0 -1
  398. package/dist/chunks/permissions-B39hfy0O.js +0 -3
  399. package/dist/chunks/pluginBlocklist-D2Cj4TR2.js +0 -1
  400. package/dist/chunks/pluginOperations-DDI1CG0K.js +0 -2
  401. package/dist/chunks/pluginStartupCheck-DYC8CWxw.js +0 -1
  402. package/dist/chunks/plugins-Bz7JxD43.js +0 -4
  403. package/dist/chunks/policyLimits-C-oHygGe.js +0 -1
  404. package/dist/chunks/poorMode-D2-4vRxb.js +0 -1
  405. package/dist/chunks/processBashCommand-BjdUo_Na.js +0 -1
  406. package/dist/chunks/processSlashCommand-tetvMLMl.js +0 -6
  407. package/dist/chunks/prompt-DZ1EAUlC.js +0 -1
  408. package/dist/chunks/prompt-DeRHlPn1.js +0 -1
  409. package/dist/chunks/rate-limit-options-B6QH2-xn.js +0 -1
  410. package/dist/chunks/refresh-DmEsCaJ0.js +0 -1
  411. package/dist/chunks/registry-CLaXh4Gk.js +0 -1
  412. package/dist/chunks/rename-eEdSZsJ2.js +0 -1
  413. package/dist/chunks/sandbox-adapter-DagBhoTC.js +0 -1
  414. package/dist/chunks/searchExtraTools-kk-wV-cC.js +0 -1
  415. package/dist/chunks/sessionFileAccessHooks-C-Ic-0Ry.js +0 -1
  416. package/dist/chunks/sessionMemory-BMtFup-Y.js +0 -1
  417. package/dist/chunks/sessionMemory-Bq3ECr1S.js +0 -1
  418. package/dist/chunks/sessionMemoryUtils-BU7N_IQG.js +0 -1
  419. package/dist/chunks/sessionObserver-BwAfzGUg.js +0 -1
  420. package/dist/chunks/sessionStorage-X2u45U9z.js +0 -1
  421. package/dist/chunks/setup-C2V4elOv.js +0 -3
  422. package/dist/chunks/sink-nZmawD5W.js +0 -1
  423. package/dist/chunks/sinks-BTZnXPr_.js +0 -1
  424. package/dist/chunks/skillChangeDetector-345QNWDp.js +0 -1
  425. package/dist/chunks/skillLearning-BJAfTX2G.js +0 -1
  426. package/dist/chunks/skillLearning-DPhuKS4j.js +0 -1
  427. package/dist/chunks/statusNoticeHelpers-AibXOONm.js +0 -1
  428. package/dist/chunks/teamHelpers-CxoQp7OY.js +0 -1
  429. package/dist/chunks/teammateModeSnapshot-KWxn1jxl.js +0 -1
  430. package/dist/chunks/teleport-CuDXJj_f.js +0 -1
  431. package/dist/chunks/thinkback-C1nnGg5r.js +0 -1
  432. package/dist/chunks/thinkback-play-BtEBESXM.js +0 -1
  433. package/dist/chunks/toolPool-DDj2TbY6.js +0 -1
  434. package/dist/chunks/toolPool-DHQyHmDY.js +0 -1
  435. package/dist/chunks/undercover-DSp7SB7e.js +0 -1
  436. package/dist/chunks/upgrade-kf1QWUo7.js +0 -1
  437. package/dist/chunks/useSettingsErrors-CjDaon07.js +0 -1
  438. package/dist/chunks/utils-CULcnflj.js +0 -1
  439. package/dist/chunks/voiceModeEnabled-BrA5ZhH4.js +0 -1
  440. package/dist/chunks/voiceStreamSTT-Dmp7Vm1S.js +0 -1
  441. package/dist/chunks/windowsPaths-BeDSnJ23.js +0 -2
  442. package/dist/chunks/windowsPaths-ttHiMKpR.js +0 -1
  443. package/dist/chunks/worktree-Djga1wtm.js +0 -1
@@ -1,11 +1,11 @@
1
- import{n as e}from"./chunk-DR8-3Aex.js";import{n as t,s as n}from"./envUtils-BWeoiL4Y.js";import{Ko as r,Pr as i,Tr as a}from"./paths-CEAy4QCs.js";import{D as o,E as s,J as c,O as l,U as u}from"./debug-otxXY3j-.js";import{o as d,s as f}from"./log-DSV4Ht5l.js";import{r as p,t as m}from"./execFileNoThrow-azCkYhmF.js";import{o as h,r as g}from"./stringUtils-KZoO4GUd.js";import{Er as _,Fr as v,Or as y,Uo as b,Wr as x,ck as S,hA as ee,it as C,ko as w,kr as te,mA as ne,tt as re}from"./loadAgentsDir-DC4jN6-f.js";import{n as T,r as ie}from"./xml-D7-jJqSA.js";import{X as E}from"./rcDebugLog-C0Bam8V9.js";import{tmpdir as ae}from"os";import{extname as oe,join as D}from"path";import{constants as se}from"fs";import{copyFile as ce,mkdir as O,mkdtemp as le,readFile as k,readdir as A,rm as ue,unlink as de,writeFile as j}from"fs/promises";import{execFileSync as fe}from"child_process";function M(){return a()}function pe(){return a()}function N(){return D(t(),`usage-data`)}function P(){return D(N(),`facets`)}function F(){return D(N(),`session-meta`)}function me(e){return K[oe(e).toLowerCase()]||null}function he(e){let t={},n={},r=0,i=0,a=0,o=0,s=0,c=[],l=0,u={},d=!1,f=0,p=0,m=new Set,h=[],_=[],v=!1,y=!1,b=!1,x=null;for(let S of e.messages){let e=S.timestamp;if(S.type===`assistant`&&S.message){e&&(x=e);let s=S.message.usage;s&&(a+=s.input_tokens||0,o+=s.output_tokens||0);let c=S.message.content;if(Array.isArray(c)){for(let e of c)if(e.type===`tool_use`&&`name`in e){let a=e.name;t[a]=(t[a]||0)+1,(a===`Agent`||a===`Task`)&&(d=!0),a.startsWith(`mcp__`)&&(v=!0),a===`WebSearch`&&(y=!0),a===`WebFetch`&&(b=!0);let o=e.input;if(o){let e=o.file_path||``;if(e){let t=me(e);t&&(n[t]=(n[t]||0)+1),(a===`Edit`||a===`Write`)&&m.add(e)}if(a===`Edit`){let e=o.old_string||``,t=o.new_string||``;for(let n of ee(e,t))n.added&&(f+=n.count||0),n.removed&&(p+=n.count||0)}if(a===`Write`){let e=o.content||``;e&&(f+=g(e,`
2
- `)+1)}let t=o.command||``;t.includes(`git commit`)&&r++,t.includes(`git push`)&&i++}}}}if(S.type===`user`&&S.message){let t=S.message.content,n=!1;if(typeof t==`string`&&t.trim())n=!0;else if(Array.isArray(t)){for(let e of t)if(e.type===`text`&&`text`in e){n=!0;break}}if(n){if(e)try{let t=new Date(e).getHours();h.push(t),_.push(e)}catch{}if(x&&e){let t=new Date(x).getTime(),n=(new Date(e).getTime()-t)/1e3;n>2&&n<3600&&c.push(n)}}if(Array.isArray(t)){for(let e of t)if(e.type===`tool_result`&&`content`in e&&e.is_error){l++;let t=e.content,n=`Other`;if(typeof t==`string`){let e=t.toLowerCase();e.includes(`exit code`)?n=`Command Failed`:e.includes(`rejected`)||e.includes(`doesn't want`)?n=`User Rejected`:e.includes(`string to replace not found`)||e.includes(`no changes`)?n=`Edit Failed`:e.includes(`modified since read`)?n=`File Changed`:e.includes(`exceeds maximum`)||e.includes(`too large`)?n=`File Too Large`:(e.includes(`file not found`)||e.includes(`does not exist`))&&(n=`File Not Found`)}u[n]=(u[n]||0)+1}}if(typeof t==`string`)t.includes(`[Request interrupted by user`)&&s++;else if(Array.isArray(t)){for(let e of t)if(e.type===`text`&&`text`in e&&e.text.includes(`[Request interrupted by user`)){s++;break}}}}return{toolCounts:t,languages:n,gitCommits:r,gitPushes:i,inputTokens:a,outputTokens:o,userInterruptions:s,userResponseTimes:c,toolErrors:l,toolErrorCategories:u,usesTaskAgent:d,usesMcp:v,usesWebSearch:y,usesWebFetch:b,linesAdded:f,linesRemoved:p,filesModified:m,messageHours:h,userMessageTimestamps:_}}function ge(e){return!Number.isNaN(e.created.getTime())&&!Number.isNaN(e.modified.getTime())}function I(e){let t=he(e),n=te(e)||`unknown`,r=e.created.toISOString(),i=Math.round((e.modified.getTime()-e.created.getTime())/1e3/60),a=0,o=0;for(let t of e.messages)if(t.type===`assistant`&&o++,t.type===`user`&&t.message){let e=t.message.content,n=!1;if(typeof e==`string`&&e.trim())n=!0;else if(Array.isArray(e)){for(let t of e)if(t.type===`text`&&`text`in t){n=!0;break}}n&&a++}return{session_id:n,project_path:e.projectPath||``,start_time:r,duration_minutes:i,user_message_count:a,assistant_message_count:o,tool_counts:t.toolCounts,languages:t.languages,git_commits:t.gitCommits,git_pushes:t.gitPushes,input_tokens:t.inputTokens,output_tokens:t.outputTokens,first_prompt:e.firstPrompt||``,summary:e.summary,user_interruptions:t.userInterruptions,user_response_times:t.userResponseTimes,tool_errors:t.toolErrors,tool_error_categories:t.toolErrorCategories,uses_task_agent:t.usesTaskAgent,uses_mcp:t.usesMcp,uses_web_search:t.usesWebSearch,uses_web_fetch:t.usesWebFetch,lines_added:t.linesAdded,lines_removed:t.linesRemoved,files_modified:t.filesModified.size,message_hours:t.messageHours,user_message_timestamps:t.userMessageTimestamps}}function _e(e){let t=[],n=I(e);t.push(`Session: ${n.session_id.slice(0,8)}`),t.push(`Date: ${n.start_time}`),t.push(`Project: ${n.project_path}`),t.push(`Duration: ${n.duration_minutes} min`),t.push(``);for(let n of e.messages)if(n.type===`user`&&n.message){let e=n.message.content;if(typeof e==`string`)t.push(`[User]: ${e.slice(0,500)}`);else if(Array.isArray(e))for(let n of e)n.type===`text`&&`text`in n&&t.push(`[User]: ${n.text.slice(0,500)}`)}else if(n.type===`assistant`&&n.message){let e=n.message.content;if(Array.isArray(e))for(let n of e)n.type===`text`&&`text`in n?t.push(`[Assistant]: ${n.text.slice(0,300)}`):n.type===`tool_use`&&`name`in n&&t.push(`[Tool: ${n.name}]`)}return t.join(`
3
- `)}async function ve(e){try{return w((await C({systemPrompt:E([]),userPrompt:Y+e,signal:new AbortController().signal,options:{model:M(),querySource:`insights`,agents:[],isNonInteractiveSession:!0,hasAppendSystemPrompt:!1,mcpTools:[],maxOutputTokensOverride:500}})).message.content)||e.slice(0,2e3)}catch{return e.slice(0,2e3)}}async function ye(e){let t=_e(e);if(t.length<=3e4)return t;let n=25e3,r=[];for(let e=0;e<t.length;e+=n)r.push(t.slice(e,e+n));let i=await Promise.all(r.map(ve)),a=I(e);return[`Session: ${a.session_id.slice(0,8)}`,`Date: ${a.start_time}`,`Project: ${a.project_path}`,`Duration: ${a.duration_minutes} min`,`[Long session - ${r.length} parts summarized]`,``].join(`
1
+ import{n as e}from"./chunk-DR8-3Aex.js";import{n as t,s as n}from"./envUtils-BWeoiL4Y.js";import{Ko as r,Pr as i,Tr as a}from"./paths-nIHVpTn2.js";import{D as o,E as s,J as c,O as l,U as u}from"./debug-otxXY3j-.js";import{o as d,s as f}from"./log-DSV4Ht5l.js";import{r as p,t as m}from"./execFileNoThrow-azCkYhmF.js";import{o as h,r as g}from"./stringUtils-KZoO4GUd.js";import{Er as _,Go as v,Kr as y,Lr as b,Or as x,_A as S,gA as C,it as w,jo as T,kr as ee,tt as te,uk as ne}from"./loadAgentsDir-BfEZacjM.js";import{n as E,r as re}from"./xml-CPJXOUFt.js";import{X as D}from"./rcDebugLog-Bv_x5w_B.js";import{tmpdir as ie}from"os";import{extname as ae,join as O}from"path";import{constants as oe}from"fs";import{copyFile as se,mkdir as k,mkdtemp as ce,readFile as A,readdir as j,rm as le,unlink as ue,writeFile as M}from"fs/promises";import{execFileSync as de}from"child_process";function N(){return a()}function fe(){return a()}function P(){return O(t(),`usage-data`)}function F(){return O(P(),`facets`)}function I(){return O(P(),`session-meta`)}function pe(e){return q[ae(e).toLowerCase()]||null}function me(e){let t={},n={},r=0,i=0,a=0,o=0,s=0,c=[],l=0,u={},d=!1,f=0,p=0,m=new Set,h=[],_=[],v=!1,y=!1,b=!1,x=null;for(let C of e.messages){let e=C.timestamp;if(C.type===`assistant`&&C.message){e&&(x=e);let s=C.message.usage;s&&(a+=s.input_tokens||0,o+=s.output_tokens||0);let c=C.message.content;if(Array.isArray(c)){for(let e of c)if(e.type===`tool_use`&&`name`in e){let a=e.name;t[a]=(t[a]||0)+1,(a===`Agent`||a===`Task`)&&(d=!0),a.startsWith(`mcp__`)&&(v=!0),a===`WebSearch`&&(y=!0),a===`WebFetch`&&(b=!0);let o=e.input;if(o){let e=o.file_path||``;if(e){let t=pe(e);t&&(n[t]=(n[t]||0)+1),(a===`Edit`||a===`Write`)&&m.add(e)}if(a===`Edit`){let e=o.old_string||``,t=o.new_string||``;for(let n of S(e,t))n.added&&(f+=n.count||0),n.removed&&(p+=n.count||0)}if(a===`Write`){let e=o.content||``;e&&(f+=g(e,`
2
+ `)+1)}let t=o.command||``;t.includes(`git commit`)&&r++,t.includes(`git push`)&&i++}}}}if(C.type===`user`&&C.message){let t=C.message.content,n=!1;if(typeof t==`string`&&t.trim())n=!0;else if(Array.isArray(t)){for(let e of t)if(e.type===`text`&&`text`in e){n=!0;break}}if(n){if(e)try{let t=new Date(e).getHours();h.push(t),_.push(e)}catch{}if(x&&e){let t=new Date(x).getTime(),n=(new Date(e).getTime()-t)/1e3;n>2&&n<3600&&c.push(n)}}if(Array.isArray(t)){for(let e of t)if(e.type===`tool_result`&&`content`in e&&e.is_error){l++;let t=e.content,n=`Other`;if(typeof t==`string`){let e=t.toLowerCase();e.includes(`exit code`)?n=`Command Failed`:e.includes(`rejected`)||e.includes(`doesn't want`)?n=`User Rejected`:e.includes(`string to replace not found`)||e.includes(`no changes`)?n=`Edit Failed`:e.includes(`modified since read`)?n=`File Changed`:e.includes(`exceeds maximum`)||e.includes(`too large`)?n=`File Too Large`:(e.includes(`file not found`)||e.includes(`does not exist`))&&(n=`File Not Found`)}u[n]=(u[n]||0)+1}}if(typeof t==`string`)t.includes(`[Request interrupted by user`)&&s++;else if(Array.isArray(t)){for(let e of t)if(e.type===`text`&&`text`in e&&e.text.includes(`[Request interrupted by user`)){s++;break}}}}return{toolCounts:t,languages:n,gitCommits:r,gitPushes:i,inputTokens:a,outputTokens:o,userInterruptions:s,userResponseTimes:c,toolErrors:l,toolErrorCategories:u,usesTaskAgent:d,usesMcp:v,usesWebSearch:y,usesWebFetch:b,linesAdded:f,linesRemoved:p,filesModified:m,messageHours:h,userMessageTimestamps:_}}function he(e){return!Number.isNaN(e.created.getTime())&&!Number.isNaN(e.modified.getTime())}function L(e){let t=me(e),n=ee(e)||`unknown`,r=e.created.toISOString(),i=Math.round((e.modified.getTime()-e.created.getTime())/1e3/60),a=0,o=0;for(let t of e.messages)if(t.type===`assistant`&&o++,t.type===`user`&&t.message){let e=t.message.content,n=!1;if(typeof e==`string`&&e.trim())n=!0;else if(Array.isArray(e)){for(let t of e)if(t.type===`text`&&`text`in t){n=!0;break}}n&&a++}return{session_id:n,project_path:e.projectPath||``,start_time:r,duration_minutes:i,user_message_count:a,assistant_message_count:o,tool_counts:t.toolCounts,languages:t.languages,git_commits:t.gitCommits,git_pushes:t.gitPushes,input_tokens:t.inputTokens,output_tokens:t.outputTokens,first_prompt:e.firstPrompt||``,summary:e.summary,user_interruptions:t.userInterruptions,user_response_times:t.userResponseTimes,tool_errors:t.toolErrors,tool_error_categories:t.toolErrorCategories,uses_task_agent:t.usesTaskAgent,uses_mcp:t.usesMcp,uses_web_search:t.usesWebSearch,uses_web_fetch:t.usesWebFetch,lines_added:t.linesAdded,lines_removed:t.linesRemoved,files_modified:t.filesModified.size,message_hours:t.messageHours,user_message_timestamps:t.userMessageTimestamps}}function ge(e){let t=[],n=L(e);t.push(`Session: ${n.session_id.slice(0,8)}`),t.push(`Date: ${n.start_time}`),t.push(`Project: ${n.project_path}`),t.push(`Duration: ${n.duration_minutes} min`),t.push(``);for(let n of e.messages)if(n.type===`user`&&n.message){let e=n.message.content;if(typeof e==`string`)t.push(`[User]: ${e.slice(0,500)}`);else if(Array.isArray(e))for(let n of e)n.type===`text`&&`text`in n&&t.push(`[User]: ${n.text.slice(0,500)}`)}else if(n.type===`assistant`&&n.message){let e=n.message.content;if(Array.isArray(e))for(let n of e)n.type===`text`&&`text`in n?t.push(`[Assistant]: ${n.text.slice(0,300)}`):n.type===`tool_use`&&`name`in n&&t.push(`[Tool: ${n.name}]`)}return t.join(`
3
+ `)}async function _e(e){try{return T((await w({systemPrompt:D([]),userPrompt:X+e,signal:new AbortController().signal,options:{model:N(),querySource:`insights`,agents:[],isNonInteractiveSession:!0,hasAppendSystemPrompt:!1,mcpTools:[],maxOutputTokensOverride:500}})).message.content)||e.slice(0,2e3)}catch{return e.slice(0,2e3)}}async function ve(e){let t=ge(e);if(t.length<=3e4)return t;let n=25e3,r=[];for(let e=0;e<t.length;e+=n)r.push(t.slice(e,e+n));let i=await Promise.all(r.map(_e)),a=L(e);return[`Session: ${a.session_id.slice(0,8)}`,`Date: ${a.start_time}`,`Project: ${a.project_path}`,`Duration: ${a.duration_minutes} min`,`[Long session - ${r.length} parts summarized]`,``].join(`
4
4
  `)+i.join(`
5
5
 
6
6
  ---
7
7
 
8
- `)}async function be(e){let t=D(P(),`${e}.json`);try{let e=o(await k(t,{encoding:`utf-8`}));if(!V(e)){try{await de(t)}catch{}return null}return e}catch{return null}}async function xe(e){try{await O(P(),{recursive:!0})}catch{}await j(D(P(),`${e.session_id}.json`),l(e,null,2),{encoding:`utf-8`,mode:384})}async function Se(e){let t=D(F(),`${e}.json`);try{return o(await k(t,{encoding:`utf-8`}))}catch{return null}}async function Ce(e){try{await O(F(),{recursive:!0})}catch{}await j(D(F(),`${e.session_id}.json`),l(e,null,2),{encoding:`utf-8`,mode:384})}async function we(e,t){try{let n=`${J}${await ye(e)}
8
+ `)}async function ye(e){let t=O(F(),`${e}.json`);try{let e=o(await A(t,{encoding:`utf-8`}));if(!H(e)){try{await ue(t)}catch{}return null}return e}catch{return null}}async function be(e){try{await k(F(),{recursive:!0})}catch{}await M(O(F(),`${e.session_id}.json`),l(e,null,2),{encoding:`utf-8`,mode:384})}async function xe(e){let t=O(I(),`${e}.json`);try{return o(await A(t,{encoding:`utf-8`}))}catch{return null}}async function Se(e){try{await k(I(),{recursive:!0})}catch{}await M(O(I(),`${e.session_id}.json`),l(e,null,2),{encoding:`utf-8`,mode:384})}async function Ce(e,t){try{let n=`${Y}${await ve(e)}
9
9
 
10
10
  RESPOND WITH ONLY A VALID JSON OBJECT matching this schema:
11
11
  {
@@ -19,10 +19,10 @@ RESPOND WITH ONLY A VALID JSON OBJECT matching this schema:
19
19
  "friction_detail": "One sentence describing friction or empty",
20
20
  "primary_success": "none|fast_accurate_search|correct_code_edits|good_explanations|proactive_help|multi_file_changes|good_debugging",
21
21
  "brief_summary": "One sentence: what user wanted and whether they got it"
22
- }`,r=w((await C({systemPrompt:E([]),userPrompt:n,signal:new AbortController().signal,options:{model:M(),querySource:`insights`,agents:[],isNonInteractiveSession:!0,hasAppendSystemPrompt:!1,mcpTools:[],maxOutputTokensOverride:4096}})).message.content).match(/\{[\s\S]*\}/);if(!r)return null;let i=o(r[0]);return V(i)?{...i,session_id:t}:null}catch(e){return f(Error(`Facet extraction failed: ${c(e).message}`)),null}}function Te(e){let t=[];for(let n of e)for(let e of n.user_message_timestamps)try{let r=new Date(e).getTime();t.push({ts:r,sessionId:n.session_id})}catch{}t.sort((e,t)=>e.ts-t.ts);let n=new Set,r=new Set,i=0,a=new Map;for(let e=0;e<t.length;e++){let o=t[e];for(;i<e&&o.ts-t[i].ts>18e5;){let e=t[i];a.get(e.sessionId)===i&&a.delete(e.sessionId),i++}let s=a.get(o.sessionId);if(s!==void 0)for(let i=s+1;i<e;i++){let e=t[i];if(e.sessionId!==o.sessionId){let i=[o.sessionId,e.sessionId].sort().join(`:`);n.add(i),r.add(`${t[s].ts}:${o.sessionId}`),r.add(`${e.ts}:${e.sessionId}`),r.add(`${o.ts}:${o.sessionId}`);break}}a.set(o.sessionId,e)}let o=new Set;for(let e of n){let[t,n]=e.split(`:`);t&&o.add(t),n&&o.add(n)}return{overlap_events:n.size,sessions_involved:o.size,user_messages_during:r.size}}function Ee(e,t){let n={total_sessions:e.length,sessions_with_facets:t.size,date_range:{start:``,end:``},total_messages:0,total_duration_hours:0,total_input_tokens:0,total_output_tokens:0,tool_counts:{},languages:{},git_commits:0,git_pushes:0,projects:{},goal_categories:{},outcomes:{},satisfaction:{},helpfulness:{},session_types:{},friction:{},success:{},session_summaries:[],total_interruptions:0,total_tool_errors:0,tool_error_categories:{},user_response_times:[],median_response_time:0,avg_response_time:0,sessions_using_task_agent:0,sessions_using_mcp:0,sessions_using_web_search:0,sessions_using_web_fetch:0,total_lines_added:0,total_lines_removed:0,total_files_modified:0,days_active:0,messages_per_day:0,message_hours:[],multi_clauding:{overlap_events:0,sessions_involved:0,user_messages_during:0}},r=[],i=[],a=[];for(let o of e){r.push(o.start_time),n.total_messages+=o.user_message_count,n.total_duration_hours+=o.duration_minutes/60,n.total_input_tokens+=o.input_tokens,n.total_output_tokens+=o.output_tokens,n.git_commits+=o.git_commits,n.git_pushes+=o.git_pushes,n.total_interruptions+=o.user_interruptions,n.total_tool_errors+=o.tool_errors;for(let[e,t]of Object.entries(o.tool_error_categories))n.tool_error_categories[e]=(n.tool_error_categories[e]||0)+t;i.push(...o.user_response_times),o.uses_task_agent&&n.sessions_using_task_agent++,o.uses_mcp&&n.sessions_using_mcp++,o.uses_web_search&&n.sessions_using_web_search++,o.uses_web_fetch&&n.sessions_using_web_fetch++,n.total_lines_added+=o.lines_added,n.total_lines_removed+=o.lines_removed,n.total_files_modified+=o.files_modified,a.push(...o.message_hours);for(let[e,t]of Object.entries(o.tool_counts))n.tool_counts[e]=(n.tool_counts[e]||0)+t;for(let[e,t]of Object.entries(o.languages))n.languages[e]=(n.languages[e]||0)+t;o.project_path&&(n.projects[o.project_path]=(n.projects[o.project_path]||0)+1);let e=t.get(o.session_id);if(e){for(let[t,r]of B(e.goal_categories))r>0&&(n.goal_categories[t]=(n.goal_categories[t]||0)+r);n.outcomes[e.outcome]=(n.outcomes[e.outcome]||0)+1;for(let[t,r]of B(e.user_satisfaction_counts))r>0&&(n.satisfaction[t]=(n.satisfaction[t]||0)+r);n.helpfulness[e.claude_helpfulness]=(n.helpfulness[e.claude_helpfulness]||0)+1,n.session_types[e.session_type]=(n.session_types[e.session_type]||0)+1;for(let[t,r]of B(e.friction_counts))r>0&&(n.friction[t]=(n.friction[t]||0)+r);e.primary_success!==`none`&&(n.success[e.primary_success]=(n.success[e.primary_success]||0)+1)}n.session_summaries.length<50&&n.session_summaries.push({id:o.session_id.slice(0,8),date:o.start_time.split(`T`)[0]||``,summary:o.summary||o.first_prompt.slice(0,100),goal:e?.underlying_goal})}if(r.sort(),n.date_range.start=r[0]?.split(`T`)[0]||``,n.date_range.end=r[r.length-1]?.split(`T`)[0]||``,n.user_response_times=i,i.length>0){let e=[...i].sort((e,t)=>e-t);n.median_response_time=e[Math.floor(e.length/2)]||0,n.avg_response_time=i.reduce((e,t)=>e+t,0)/i.length}return n.days_active=new Set(r.map(e=>e.split(`T`)[0])).size,n.messages_per_day=n.days_active>0?Math.round(n.total_messages/n.days_active*10)/10:0,n.message_hours=a,n.multi_clauding=Te(e),n}async function L(e,t){try{let n=w((await C({systemPrompt:E([]),userPrompt:e.prompt+`
22
+ }`,r=T((await w({systemPrompt:D([]),userPrompt:n,signal:new AbortController().signal,options:{model:N(),querySource:`insights`,agents:[],isNonInteractiveSession:!0,hasAppendSystemPrompt:!1,mcpTools:[],maxOutputTokensOverride:4096}})).message.content).match(/\{[\s\S]*\}/);if(!r)return null;let i=o(r[0]);return H(i)?{...i,session_id:t}:null}catch(e){return f(Error(`Facet extraction failed: ${c(e).message}`)),null}}function we(e){let t=[];for(let n of e)for(let e of n.user_message_timestamps)try{let r=new Date(e).getTime();t.push({ts:r,sessionId:n.session_id})}catch{}t.sort((e,t)=>e.ts-t.ts);let n=new Set,r=new Set,i=0,a=new Map;for(let e=0;e<t.length;e++){let o=t[e];for(;i<e&&o.ts-t[i].ts>18e5;){let e=t[i];a.get(e.sessionId)===i&&a.delete(e.sessionId),i++}let s=a.get(o.sessionId);if(s!==void 0)for(let i=s+1;i<e;i++){let e=t[i];if(e.sessionId!==o.sessionId){let i=[o.sessionId,e.sessionId].sort().join(`:`);n.add(i),r.add(`${t[s].ts}:${o.sessionId}`),r.add(`${e.ts}:${e.sessionId}`),r.add(`${o.ts}:${o.sessionId}`);break}}a.set(o.sessionId,e)}let o=new Set;for(let e of n){let[t,n]=e.split(`:`);t&&o.add(t),n&&o.add(n)}return{overlap_events:n.size,sessions_involved:o.size,user_messages_during:r.size}}function Te(e,t){let n={total_sessions:e.length,sessions_with_facets:t.size,date_range:{start:``,end:``},total_messages:0,total_duration_hours:0,total_input_tokens:0,total_output_tokens:0,tool_counts:{},languages:{},git_commits:0,git_pushes:0,projects:{},goal_categories:{},outcomes:{},satisfaction:{},helpfulness:{},session_types:{},friction:{},success:{},session_summaries:[],total_interruptions:0,total_tool_errors:0,tool_error_categories:{},user_response_times:[],median_response_time:0,avg_response_time:0,sessions_using_task_agent:0,sessions_using_mcp:0,sessions_using_web_search:0,sessions_using_web_fetch:0,total_lines_added:0,total_lines_removed:0,total_files_modified:0,days_active:0,messages_per_day:0,message_hours:[],multi_clauding:{overlap_events:0,sessions_involved:0,user_messages_during:0}},r=[],i=[],a=[];for(let o of e){r.push(o.start_time),n.total_messages+=o.user_message_count,n.total_duration_hours+=o.duration_minutes/60,n.total_input_tokens+=o.input_tokens,n.total_output_tokens+=o.output_tokens,n.git_commits+=o.git_commits,n.git_pushes+=o.git_pushes,n.total_interruptions+=o.user_interruptions,n.total_tool_errors+=o.tool_errors;for(let[e,t]of Object.entries(o.tool_error_categories))n.tool_error_categories[e]=(n.tool_error_categories[e]||0)+t;i.push(...o.user_response_times),o.uses_task_agent&&n.sessions_using_task_agent++,o.uses_mcp&&n.sessions_using_mcp++,o.uses_web_search&&n.sessions_using_web_search++,o.uses_web_fetch&&n.sessions_using_web_fetch++,n.total_lines_added+=o.lines_added,n.total_lines_removed+=o.lines_removed,n.total_files_modified+=o.files_modified,a.push(...o.message_hours);for(let[e,t]of Object.entries(o.tool_counts))n.tool_counts[e]=(n.tool_counts[e]||0)+t;for(let[e,t]of Object.entries(o.languages))n.languages[e]=(n.languages[e]||0)+t;o.project_path&&(n.projects[o.project_path]=(n.projects[o.project_path]||0)+1);let e=t.get(o.session_id);if(e){for(let[t,r]of V(e.goal_categories))r>0&&(n.goal_categories[t]=(n.goal_categories[t]||0)+r);n.outcomes[e.outcome]=(n.outcomes[e.outcome]||0)+1;for(let[t,r]of V(e.user_satisfaction_counts))r>0&&(n.satisfaction[t]=(n.satisfaction[t]||0)+r);n.helpfulness[e.claude_helpfulness]=(n.helpfulness[e.claude_helpfulness]||0)+1,n.session_types[e.session_type]=(n.session_types[e.session_type]||0)+1;for(let[t,r]of V(e.friction_counts))r>0&&(n.friction[t]=(n.friction[t]||0)+r);e.primary_success!==`none`&&(n.success[e.primary_success]=(n.success[e.primary_success]||0)+1)}n.session_summaries.length<50&&n.session_summaries.push({id:o.session_id.slice(0,8),date:o.start_time.split(`T`)[0]||``,summary:o.summary||o.first_prompt.slice(0,100),goal:e?.underlying_goal})}if(r.sort(),n.date_range.start=r[0]?.split(`T`)[0]||``,n.date_range.end=r[r.length-1]?.split(`T`)[0]||``,n.user_response_times=i,i.length>0){let e=[...i].sort((e,t)=>e-t);n.median_response_time=e[Math.floor(e.length/2)]||0,n.avg_response_time=i.reduce((e,t)=>e+t,0)/i.length}return n.days_active=new Set(r.map(e=>e.split(`T`)[0])).size,n.messages_per_day=n.days_active>0?Math.round(n.total_messages/n.days_active*10)/10:0,n.message_hours=a,n.multi_clauding=we(e),n}async function R(e,t){try{let n=T((await w({systemPrompt:D([]),userPrompt:e.prompt+`
23
23
 
24
24
  DATA:
25
- `+t,signal:new AbortController().signal,options:{model:pe(),querySource:`insights`,agents:[],isNonInteractiveSession:!0,hasAppendSystemPrompt:!1,mcpTools:[],maxOutputTokensOverride:e.maxTokens}})).message.content);if(n){let t=n.match(/\{[\s\S]*\}/);if(t)try{return{name:e.name,result:o(t[0])}}catch{return{name:e.name,result:null}}}return{name:e.name,result:null}}catch(t){return f(Error(`${e.name} failed: ${c(t).message}`)),{name:e.name,result:null}}}async function De(e,t){let n=Array.from(t.values()).slice(0,50).map(e=>`- ${e.brief_summary} (${e.outcome}, ${e.claude_helpfulness})`).join(`
25
+ `+t,signal:new AbortController().signal,options:{model:fe(),querySource:`insights`,agents:[],isNonInteractiveSession:!0,hasAppendSystemPrompt:!1,mcpTools:[],maxOutputTokensOverride:e.maxTokens}})).message.content);if(n){let t=n.match(/\{[\s\S]*\}/);if(t)try{return{name:e.name,result:o(t[0])}}catch{return{name:e.name,result:null}}}return{name:e.name,result:null}}catch(t){return f(Error(`${e.name} failed: ${c(t).message}`)),{name:e.name,result:null}}}async function Ee(e,t){let n=Array.from(t.values()).slice(0,50).map(e=>`- ${e.brief_summary} (${e.outcome}, ${e.claude_helpfulness})`).join(`
26
26
  `),r=Array.from(t.values()).filter(e=>e.friction_detail).slice(0,20).map(e=>`- ${e.friction_detail}`).join(`
27
27
  `),i=Array.from(t.values()).flatMap(e=>e.user_instructions_to_claude||[]).slice(0,15).map(e=>`- ${e}`).join(`
28
28
  `),a=l({sessions:e.total_sessions,analyzed:e.sessions_with_facets,date_range:e.date_range,messages:e.total_messages,hours:Math.round(e.total_duration_hours),commits:e.git_commits,top_tools:Object.entries(e.tool_counts).sort((e,t)=>t[1]-e[1]).slice(0,8),top_goals:Object.entries(e.goal_categories).sort((e,t)=>t[1]-e[1]).slice(0,8),outcomes:e.outcomes,satisfaction:e.satisfaction,friction:e.friction,success:e.success,languages:e.languages},null,2)+`
@@ -34,7 +34,7 @@ FRICTION DETAILS:
34
34
  `+r+`
35
35
 
36
36
  USER INSTRUCTIONS TO CLAUDE:
37
- `+(i||`None captured`),o=await Promise.all(X.map(e=>L(e,a))),s={};for(let{name:e,result:t}of o)t&&(s[e]=t);let c=await L({name:`at_a_glance`,prompt:`You're writing an "At a Glance" summary for a Claude Code usage insights report for Claude Code users. The goal is to help them understand their usage and improve how they can use Claude better, especially as models improve.
37
+ `+(i||`None captured`),o=await Promise.all(Z.map(e=>R(e,a))),s={};for(let{name:e,result:t}of o)t&&(s[e]=t);let c=await R({name:`at_a_glance`,prompt:`You're writing an "At a Glance" summary for a Claude Code usage insights report for Claude Code users. The goal is to help them understand their usage and improve how they can use Claude better, especially as models improve.
38
38
 
39
39
  Use this 4-part structure:
40
40
 
@@ -81,33 +81,33 @@ ${s.suggestions?.usage_patterns?.map(e=>`- ${e.title}: ${e.suggestion}`).join(`
81
81
 
82
82
  ## On the Horizon (ambitious workflows for better models)
83
83
  ${s.on_the_horizon?.opportunities?.map(e=>`- ${e.title}: ${e.whats_possible}`).join(`
84
- `)||``}`,maxTokens:8192},``);return c.result&&(s.at_a_glance=c.result),s}function R(e){return T(e).replace(/\*\*(.+?)\*\*/g,`<strong>$1</strong>`)}function z(e,t,n=6,r){let i;if(i=r?r.filter(t=>t in e&&(e[t]??0)>0).map(t=>[t,e[t]??0]):Object.entries(e).sort((e,t)=>t[1]-e[1]).slice(0,n),i.length===0)return`<p class="empty">No data</p>`;let a=Math.max(...i.map(e=>e[1]));return i.map(([e,n])=>{let r=n/a*100;return`<div class="bar-row">
85
- <div class="bar-label">${T(q[e]||e.replace(/_/g,` `).replace(/\b\w/g,e=>e.toUpperCase()))}</div>
84
+ `)||``}`,maxTokens:8192},``);return c.result&&(s.at_a_glance=c.result),s}function z(e){return E(e).replace(/\*\*(.+?)\*\*/g,`<strong>$1</strong>`)}function B(e,t,n=6,r){let i;if(i=r?r.filter(t=>t in e&&(e[t]??0)>0).map(t=>[t,e[t]??0]):Object.entries(e).sort((e,t)=>t[1]-e[1]).slice(0,n),i.length===0)return`<p class="empty">No data</p>`;let a=Math.max(...i.map(e=>e[1]));return i.map(([e,n])=>{let r=n/a*100;return`<div class="bar-row">
85
+ <div class="bar-label">${E(J[e]||e.replace(/_/g,` `).replace(/\b\w/g,e=>e.toUpperCase()))}</div>
86
86
  <div class="bar-track"><div class="bar-fill" style="width:${r}%;background:${t}"></div></div>
87
87
  <div class="bar-value">${n}</div>
88
88
  </div>`}).join(`
89
- `)}function Oe(e){if(e.length===0)return`<p class="empty">No response time data</p>`;let t={"2-10s":0,"10-30s":0,"30s-1m":0,"1-2m":0,"2-5m":0,"5-15m":0,">15m":0};for(let n of e)n<10?t[`2-10s`]=(t[`2-10s`]??0)+1:n<30?t[`10-30s`]=(t[`10-30s`]??0)+1:n<60?t[`30s-1m`]=(t[`30s-1m`]??0)+1:n<120?t[`1-2m`]=(t[`1-2m`]??0)+1:n<300?t[`2-5m`]=(t[`2-5m`]??0)+1:n<900?t[`5-15m`]=(t[`5-15m`]??0)+1:t[`>15m`]=(t[`>15m`]??0)+1;let n=Math.max(...Object.values(t));return n===0?`<p class="empty">No response time data</p>`:Object.entries(t).map(([e,t])=>`<div class="bar-row">
89
+ `)}function De(e){if(e.length===0)return`<p class="empty">No response time data</p>`;let t={"2-10s":0,"10-30s":0,"30s-1m":0,"1-2m":0,"2-5m":0,"5-15m":0,">15m":0};for(let n of e)n<10?t[`2-10s`]=(t[`2-10s`]??0)+1:n<30?t[`10-30s`]=(t[`10-30s`]??0)+1:n<60?t[`30s-1m`]=(t[`30s-1m`]??0)+1:n<120?t[`1-2m`]=(t[`1-2m`]??0)+1:n<300?t[`2-5m`]=(t[`2-5m`]??0)+1:n<900?t[`5-15m`]=(t[`5-15m`]??0)+1:t[`>15m`]=(t[`>15m`]??0)+1;let n=Math.max(...Object.values(t));return n===0?`<p class="empty">No response time data</p>`:Object.entries(t).map(([e,t])=>`<div class="bar-row">
90
90
  <div class="bar-label">${e}</div>
91
91
  <div class="bar-track"><div class="bar-fill" style="width:${t/n*100}%;background:#6366f1"></div></div>
92
92
  <div class="bar-value">${t}</div>
93
93
  </div>`).join(`
94
- `)}function ke(e){if(e.length===0)return`<p class="empty">No time data</p>`;let t=[{label:`Morning (6-12)`,range:[6,7,8,9,10,11]},{label:`Afternoon (12-18)`,range:[12,13,14,15,16,17]},{label:`Evening (18-24)`,range:[18,19,20,21,22,23]},{label:`Night (0-6)`,range:[0,1,2,3,4,5]}],n={};for(let t of e)n[t]=(n[t]||0)+1;let r=t.map(e=>({label:e.label,count:e.range.reduce((e,t)=>e+(n[t]||0),0)})),i=Math.max(...r.map(e=>e.count))||1;return`<div id="hour-histogram">${r.map(e=>`
94
+ `)}function Oe(e){if(e.length===0)return`<p class="empty">No time data</p>`;let t=[{label:`Morning (6-12)`,range:[6,7,8,9,10,11]},{label:`Afternoon (12-18)`,range:[12,13,14,15,16,17]},{label:`Evening (18-24)`,range:[18,19,20,21,22,23]},{label:`Night (0-6)`,range:[0,1,2,3,4,5]}],n={};for(let t of e)n[t]=(n[t]||0)+1;let r=t.map(e=>({label:e.label,count:e.range.reduce((e,t)=>e+(n[t]||0),0)})),i=Math.max(...r.map(e=>e.count))||1;return`<div id="hour-histogram">${r.map(e=>`
95
95
  <div class="bar-row">
96
96
  <div class="bar-label">${e.label}</div>
97
97
  <div class="bar-track"><div class="bar-fill" style="width:${e.count/i*100}%;background:#8b5cf6"></div></div>
98
98
  <div class="bar-value">${e.count}</div>
99
99
  </div>`).join(`
100
- `)}</div>`}function Ae(e){let t={};for(let n of e)t[n]=(t[n]||0)+1;return l(t)}function je(e,t){let n=e=>e?e.split(`
100
+ `)}</div>`}function ke(e){let t={};for(let n of e)t[n]=(t[n]||0)+1;return l(t)}function Ae(e,t){let n=e=>e?e.split(`
101
101
 
102
- `).map(e=>{let t=T(e);return t=t.replace(/\*\*(.+?)\*\*/g,`<strong>$1</strong>`),t=t.replace(/^- /gm,`• `),t=t.replace(/\n/g,`<br>`),`<p>${t}</p>`}).join(`
102
+ `).map(e=>{let t=E(e);return t=t.replace(/\*\*(.+?)\*\*/g,`<strong>$1</strong>`),t=t.replace(/^- /gm,`• `),t=t.replace(/\n/g,`<br>`),`<p>${t}</p>`}).join(`
103
103
  `):``,r=t.at_a_glance,i=r?`
104
104
  <div class="at-a-glance">
105
105
  <div class="glance-title">At a Glance</div>
106
106
  <div class="glance-sections">
107
- ${r.whats_working?`<div class="glance-section"><strong>What's working:</strong> ${R(r.whats_working)} <a href="#section-wins" class="see-more">Impressive Things You Did →</a></div>`:``}
108
- ${r.whats_hindering?`<div class="glance-section"><strong>What's hindering you:</strong> ${R(r.whats_hindering)} <a href="#section-friction" class="see-more">Where Things Go Wrong →</a></div>`:``}
109
- ${r.quick_wins?`<div class="glance-section"><strong>Quick wins to try:</strong> ${R(r.quick_wins)} <a href="#section-features" class="see-more">Features to Try →</a></div>`:``}
110
- ${r.ambitious_workflows?`<div class="glance-section"><strong>Ambitious workflows:</strong> ${R(r.ambitious_workflows)} <a href="#section-horizon" class="see-more">On the Horizon →</a></div>`:``}
107
+ ${r.whats_working?`<div class="glance-section"><strong>What's working:</strong> ${z(r.whats_working)} <a href="#section-wins" class="see-more">Impressive Things You Did →</a></div>`:``}
108
+ ${r.whats_hindering?`<div class="glance-section"><strong>What's hindering you:</strong> ${z(r.whats_hindering)} <a href="#section-friction" class="see-more">Where Things Go Wrong →</a></div>`:``}
109
+ ${r.quick_wins?`<div class="glance-section"><strong>Quick wins to try:</strong> ${z(r.quick_wins)} <a href="#section-features" class="see-more">Features to Try →</a></div>`:``}
110
+ ${r.ambitious_workflows?`<div class="glance-section"><strong>Ambitious workflows:</strong> ${z(r.ambitious_workflows)} <a href="#section-horizon" class="see-more">On the Horizon →</a></div>`:``}
111
111
  </div>
112
112
  </div>
113
113
  `:``,a=t.project_areas?.areas||[],o=a.length>0?`
@@ -116,10 +116,10 @@ ${s.on_the_horizon?.opportunities?.map(e=>`- ${e.title}: ${e.whats_possible}`).j
116
116
  ${a.map(e=>`
117
117
  <div class="project-area">
118
118
  <div class="area-header">
119
- <span class="area-name">${T(e.name)}</span>
119
+ <span class="area-name">${E(e.name)}</span>
120
120
  <span class="area-count">~${e.session_count} sessions</span>
121
121
  </div>
122
- <div class="area-desc">${T(e.description)}</div>
122
+ <div class="area-desc">${E(e.description)}</div>
123
123
  </div>
124
124
  `).join(``)}
125
125
  </div>
@@ -127,28 +127,28 @@ ${s.on_the_horizon?.opportunities?.map(e=>`- ${e.title}: ${e.whats_possible}`).j
127
127
  <h2 id="section-usage">How You Use Claude Code</h2>
128
128
  <div class="narrative">
129
129
  ${n(s.narrative)}
130
- ${s.key_pattern?`<div class="key-insight"><strong>Key pattern:</strong> ${T(s.key_pattern)}</div>`:``}
130
+ ${s.key_pattern?`<div class="key-insight"><strong>Key pattern:</strong> ${E(s.key_pattern)}</div>`:``}
131
131
  </div>
132
132
  `:``,l=t.what_works,u=l?.impressive_workflows&&l.impressive_workflows.length>0?`
133
133
  <h2 id="section-wins">Impressive Things You Did</h2>
134
- ${l.intro?`<p class="section-intro">${T(l.intro)}</p>`:``}
134
+ ${l.intro?`<p class="section-intro">${E(l.intro)}</p>`:``}
135
135
  <div class="big-wins">
136
136
  ${l.impressive_workflows.map(e=>`
137
137
  <div class="big-win">
138
- <div class="big-win-title">${T(e.title||``)}</div>
139
- <div class="big-win-desc">${T(e.description||``)}</div>
138
+ <div class="big-win-title">${E(e.title||``)}</div>
139
+ <div class="big-win-desc">${E(e.description||``)}</div>
140
140
  </div>
141
141
  `).join(``)}
142
142
  </div>
143
143
  `:``,d=t.friction_analysis,f=d?.categories&&d.categories.length>0?`
144
144
  <h2 id="section-friction">Where Things Go Wrong</h2>
145
- ${d.intro?`<p class="section-intro">${T(d.intro)}</p>`:``}
145
+ ${d.intro?`<p class="section-intro">${E(d.intro)}</p>`:``}
146
146
  <div class="friction-categories">
147
147
  ${d.categories.map(e=>`
148
148
  <div class="friction-category">
149
- <div class="friction-title">${T(e.category||``)}</div>
150
- <div class="friction-desc">${T(e.description||``)}</div>
151
- ${e.examples?`<ul class="friction-examples">${e.examples.map(e=>`<li>${T(e)}</li>`).join(``)}</ul>`:``}
149
+ <div class="friction-title">${E(e.category||``)}</div>
150
+ <div class="friction-desc">${E(e.description||``)}</div>
151
+ ${e.examples?`<ul class="friction-examples">${e.examples.map(e=>`<li>${E(e)}</li>`).join(``)}</ul>`:``}
152
152
  </div>
153
153
  `).join(``)}
154
154
  </div>
@@ -163,12 +163,12 @@ ${s.on_the_horizon?.opportunities?.map(e=>`- ${e.title}: ${e.whats_possible}`).j
163
163
  </div>
164
164
  ${p.claude_md_additions.map((e,t)=>`
165
165
  <div class="claude-md-item">
166
- <input type="checkbox" id="cmd-${t}" class="cmd-checkbox" checked data-text="${T(e.prompt_scaffold||e.where||`Add to CLAUDE.md`)}\\n\\n${T(e.addition)}">
166
+ <input type="checkbox" id="cmd-${t}" class="cmd-checkbox" checked data-text="${E(e.prompt_scaffold||e.where||`Add to CLAUDE.md`)}\\n\\n${E(e.addition)}">
167
167
  <label for="cmd-${t}">
168
- <code class="cmd-code">${T(e.addition)}</code>
168
+ <code class="cmd-code">${E(e.addition)}</code>
169
169
  <button class="copy-btn" onclick="copyCmdItem(${t})">Copy</button>
170
170
  </label>
171
- <div class="cmd-why">${T(e.why)}</div>
171
+ <div class="cmd-why">${E(e.why)}</div>
172
172
  </div>
173
173
  `).join(``)}
174
174
  </div>
@@ -178,14 +178,14 @@ ${s.on_the_horizon?.opportunities?.map(e=>`- ${e.title}: ${e.whats_possible}`).j
178
178
  <div class="features-section">
179
179
  ${p.features_to_try.map(e=>`
180
180
  <div class="feature-card">
181
- <div class="feature-title">${T(e.feature||``)}</div>
182
- <div class="feature-oneliner">${T(e.one_liner||``)}</div>
183
- <div class="feature-why"><strong>Why for you:</strong> ${T(e.why_for_you||``)}</div>
181
+ <div class="feature-title">${E(e.feature||``)}</div>
182
+ <div class="feature-oneliner">${E(e.one_liner||``)}</div>
183
+ <div class="feature-why"><strong>Why for you:</strong> ${E(e.why_for_you||``)}</div>
184
184
  ${e.example_code?`
185
185
  <div class="feature-examples">
186
186
  <div class="feature-example">
187
187
  <div class="example-code-row">
188
- <code class="example-code">${T(e.example_code)}</code>
188
+ <code class="example-code">${E(e.example_code)}</code>
189
189
  <button class="copy-btn" onclick="copyText(this)">Copy</button>
190
190
  </div>
191
191
  </div>
@@ -201,14 +201,14 @@ ${s.on_the_horizon?.opportunities?.map(e=>`- ${e.title}: ${e.whats_possible}`).j
201
201
  <div class="patterns-section">
202
202
  ${p.usage_patterns.map(e=>`
203
203
  <div class="pattern-card">
204
- <div class="pattern-title">${T(e.title||``)}</div>
205
- <div class="pattern-summary">${T(e.suggestion||``)}</div>
206
- ${e.detail?`<div class="pattern-detail">${T(e.detail)}</div>`:``}
204
+ <div class="pattern-title">${E(e.title||``)}</div>
205
+ <div class="pattern-summary">${E(e.suggestion||``)}</div>
206
+ ${e.detail?`<div class="pattern-detail">${E(e.detail)}</div>`:``}
207
207
  ${e.copyable_prompt?`
208
208
  <div class="copyable-prompt-section">
209
209
  <div class="prompt-label">Paste into Claude Code:</div>
210
210
  <div class="copyable-prompt-row">
211
- <code class="copyable-prompt">${T(e.copyable_prompt)}</code>
211
+ <code class="copyable-prompt">${E(e.copyable_prompt)}</code>
212
212
  <button class="copy-btn" onclick="copyText(this)">Copy</button>
213
213
  </div>
214
214
  </div>
@@ -219,14 +219,14 @@ ${s.on_the_horizon?.opportunities?.map(e=>`- ${e.title}: ${e.whats_possible}`).j
219
219
  `:``}
220
220
  `:``,h=t.on_the_horizon,g=h?.opportunities&&h.opportunities.length>0?`
221
221
  <h2 id="section-horizon">On the Horizon</h2>
222
- ${h.intro?`<p class="section-intro">${T(h.intro)}</p>`:``}
222
+ ${h.intro?`<p class="section-intro">${E(h.intro)}</p>`:``}
223
223
  <div class="horizon-section">
224
224
  ${h.opportunities.map(e=>`
225
225
  <div class="horizon-card">
226
- <div class="horizon-title">${T(e.title||``)}</div>
227
- <div class="horizon-possible">${T(e.whats_possible||``)}</div>
228
- ${e.how_to_try?`<div class="horizon-tip"><strong>Getting started:</strong> ${T(e.how_to_try)}</div>`:``}
229
- ${e.copyable_prompt?`<div class="pattern-prompt"><div class="prompt-label">Paste into Claude Code:</div><code>${T(e.copyable_prompt)}</code><button class="copy-btn" onclick="copyText(this)">Copy</button></div>`:``}
226
+ <div class="horizon-title">${E(e.title||``)}</div>
227
+ <div class="horizon-possible">${E(e.whats_possible||``)}</div>
228
+ ${e.how_to_try?`<div class="horizon-tip"><strong>Getting started:</strong> ${E(e.how_to_try)}</div>`:``}
229
+ ${e.copyable_prompt?`<div class="pattern-prompt"><div class="prompt-label">Paste into Claude Code:</div><code>${E(e.copyable_prompt)}</code><button class="copy-btn" onclick="copyText(this)">Copy</button></div>`:``}
230
230
  </div>
231
231
  `).join(``)}
232
232
  </div>
@@ -243,9 +243,9 @@ ${s.on_the_horizon?.opportunities?.map(e=>`- ${e.title}: ${e.whats_possible}`).j
243
243
  <div class="suggestions-section">
244
244
  ${_.map(e=>`
245
245
  <div class="feedback-card team-card">
246
- <div class="feedback-title">${T(e.title||``)}</div>
247
- <div class="feedback-detail">${T(e.detail||``)}</div>
248
- ${e.evidence?`<div class="feedback-evidence"><em>Evidence:</em> ${T(e.evidence)}</div>`:``}
246
+ <div class="feedback-title">${E(e.title||``)}</div>
247
+ <div class="feedback-detail">${E(e.detail||``)}</div>
248
+ ${e.evidence?`<div class="feedback-evidence"><em>Evidence:</em> ${E(e.evidence)}</div>`:``}
249
249
  </div>
250
250
  `).join(``)}
251
251
  </div>
@@ -262,9 +262,9 @@ ${s.on_the_horizon?.opportunities?.map(e=>`- ${e.title}: ${e.whats_possible}`).j
262
262
  <div class="suggestions-section">
263
263
  ${v.map(e=>`
264
264
  <div class="feedback-card model-card">
265
- <div class="feedback-title">${T(e.title||``)}</div>
266
- <div class="feedback-detail">${T(e.detail||``)}</div>
267
- ${e.evidence?`<div class="feedback-evidence"><em>Evidence:</em> ${T(e.evidence)}</div>`:``}
265
+ <div class="feedback-title">${E(e.title||``)}</div>
266
+ <div class="feedback-detail">${E(e.detail||``)}</div>
267
+ ${e.evidence?`<div class="feedback-evidence"><em>Evidence:</em> ${E(e.evidence)}</div>`:``}
268
268
  </div>
269
269
  `).join(``)}
270
270
  </div>
@@ -273,8 +273,8 @@ ${s.on_the_horizon?.opportunities?.map(e=>`- ${e.title}: ${e.whats_possible}`).j
273
273
  `:``}
274
274
  `:``,b=t.fun_ending,x=b?.headline?`
275
275
  <div class="fun-ending">
276
- <div class="fun-headline">"${T(b.headline)}"</div>
277
- ${b.detail?`<div class="fun-detail">${T(b.detail)}</div>`:``}
276
+ <div class="fun-headline">"${E(b.headline)}"</div>
277
+ ${b.detail?`<div class="fun-detail">${E(b.detail)}</div>`:``}
278
278
  </div>
279
279
  `:``,S=`
280
280
  function toggleCollapsible(header) {
@@ -316,7 +316,7 @@ ${s.on_the_horizon?.opportunities?.map(e=>`- ${e.title}: ${e.whats_possible}`).j
316
316
  }
317
317
  }
318
318
  // Timezone selector for time of day chart (data is from our own analytics, not user input)
319
- const rawHourCounts = ${Ae(e.message_hours)};
319
+ const rawHourCounts = ${ke(e.message_hours)};
320
320
  function updateHourHistogram(offsetFromPT) {
321
321
  const periods = [
322
322
  { label: "Morning (6-12)", range: [6,7,8,9,10,11] },
@@ -521,22 +521,22 @@ ${s.on_the_horizon?.opportunities?.map(e=>`- ${e.title}: ${e.whats_possible}`).j
521
521
  <div class="charts-row">
522
522
  <div class="chart-card">
523
523
  <div class="chart-title">What You Wanted</div>
524
- ${z(e.goal_categories,`#2563eb`)}
524
+ ${B(e.goal_categories,`#2563eb`)}
525
525
  </div>
526
526
  <div class="chart-card">
527
527
  <div class="chart-title">Top Tools Used</div>
528
- ${z(e.tool_counts,`#0891b2`)}
528
+ ${B(e.tool_counts,`#0891b2`)}
529
529
  </div>
530
530
  </div>
531
531
 
532
532
  <div class="charts-row">
533
533
  <div class="chart-card">
534
534
  <div class="chart-title">Languages</div>
535
- ${z(e.languages,`#10b981`)}
535
+ ${B(e.languages,`#10b981`)}
536
536
  </div>
537
537
  <div class="chart-card">
538
538
  <div class="chart-title">Session Types</div>
539
- ${z(e.session_types||{},`#8b5cf6`)}
539
+ ${B(e.session_types||{},`#8b5cf6`)}
540
540
  </div>
541
541
  </div>
542
542
 
@@ -545,7 +545,7 @@ ${s.on_the_horizon?.opportunities?.map(e=>`- ${e.title}: ${e.whats_possible}`).j
545
545
  <!-- Response Time Distribution -->
546
546
  <div class="chart-card" style="margin: 24px 0;">
547
547
  <div class="chart-title">User Response Time Distribution</div>
548
- ${Oe(e.user_response_times)}
548
+ ${De(e.user_response_times)}
549
549
  <div style="font-size: 12px; color: #64748b; margin-top: 8px;">
550
550
  Median: ${e.median_response_time.toFixed(1)}s &bull; Average: ${e.avg_response_time.toFixed(1)}s
551
551
  </div>
@@ -595,11 +595,11 @@ ${s.on_the_horizon?.opportunities?.map(e=>`- ${e.title}: ${e.whats_possible}`).j
595
595
  </select>
596
596
  <input type="number" id="custom-offset" placeholder="UTC offset" style="display: none; width: 80px; font-size: 12px; padding: 4px; border-radius: 4px; border: 1px solid #e2e8f0;">
597
597
  </div>
598
- ${ke(e.message_hours)}
598
+ ${Oe(e.message_hours)}
599
599
  </div>
600
600
  <div class="chart-card">
601
601
  <div class="chart-title">Tool Errors Encountered</div>
602
- ${Object.keys(e.tool_error_categories).length>0?z(e.tool_error_categories,`#dc2626`):`<p class="empty">No tool errors</p>`}
602
+ ${Object.keys(e.tool_error_categories).length>0?B(e.tool_error_categories,`#dc2626`):`<p class="empty">No tool errors</p>`}
603
603
  </div>
604
604
  </div>
605
605
 
@@ -608,11 +608,11 @@ ${s.on_the_horizon?.opportunities?.map(e=>`- ${e.title}: ${e.whats_possible}`).j
608
608
  <div class="charts-row">
609
609
  <div class="chart-card">
610
610
  <div class="chart-title">What Helped Most (Claude's Capabilities)</div>
611
- ${z(e.success,`#16a34a`)}
611
+ ${B(e.success,`#16a34a`)}
612
612
  </div>
613
613
  <div class="chart-card">
614
614
  <div class="chart-title">Outcomes</div>
615
- ${z(e.outcomes,`#8b5cf6`,6,Q)}
615
+ ${B(e.outcomes,`#8b5cf6`,6,Pe)}
616
616
  </div>
617
617
  </div>
618
618
 
@@ -621,11 +621,11 @@ ${s.on_the_horizon?.opportunities?.map(e=>`- ${e.title}: ${e.whats_possible}`).j
621
621
  <div class="charts-row">
622
622
  <div class="chart-card">
623
623
  <div class="chart-title">Primary Friction Types</div>
624
- ${z(e.friction,`#dc2626`)}
624
+ ${B(e.friction,`#dc2626`)}
625
625
  </div>
626
626
  <div class="chart-card">
627
627
  <div class="chart-title">Inferred Satisfaction (model-estimated)</div>
628
- ${z(e.satisfaction,`#eab308`,6,Z)}
628
+ ${B(e.satisfaction,`#eab308`,6,Q)}
629
629
  </div>
630
630
  </div>
631
631
 
@@ -639,7 +639,7 @@ ${s.on_the_horizon?.opportunities?.map(e=>`- ${e.title}: ${e.whats_possible}`).j
639
639
  </div>
640
640
  <script>${S}<\/script>
641
641
  </body>
642
- </html>`}async function Me(){let e=_(),t;try{t=await A(e,{withFileTypes:!0})}catch{return[]}let n=t.filter(e=>e.isDirectory()).map(t=>D(e,t.name)),r=[];for(let e=0;e<n.length;e++){let t=await y(n[e]);for(let[e,n]of t)r.push({sessionId:e,path:n.path,mtime:n.mtime,size:n.size});e%10==9&&await new Promise(e=>setImmediate(e))}return r.sort((e,t)=>t.mtime-e.mtime),r}async function Ne(e){let n;if(process.env.USER_TYPE===`ant`&&e?.collectRemote){let{hosts:e,totalCopied:r}=await G(D(t(),`projects`));n={hosts:e,totalCopied:r}}let r=await Me(),i=r.length,a=[],o=[];for(let e=0;e<r.length;e+=50){let t=r.slice(e,e+50),n=await Promise.all(t.map(async e=>({sessionInfo:e,cached:await Se(e.sessionId)})));for(let{sessionInfo:e,cached:t}of n)t?a.push(t):o.length<200&&o.push(e)}let s=new Map,c=e=>{for(let t of e.messages.slice(0,5))if(t.type===`user`&&t.message){let e=t.message.content;if(typeof e==`string`&&(e.includes(`RESPOND WITH ONLY A VALID JSON OBJECT`)||e.includes(`record_facets`)))return!0}return!1};for(let e=0;e<o.length;e+=10){let t=o.slice(e,e+10),n=await Promise.all(t.map(async e=>{try{return await x(e.path)}catch{return[]}})),r=[];for(let e of n)for(let t of e){if(c(t)||!ge(t))continue;let e=I(t);a.push(e),r.push(e),s.set(e.session_id,t)}await Promise.all(r.map(e=>Ce(e)))}let l=new Map;for(let e of a){let t=l.get(e.session_id);(!t||e.user_message_count>t.user_message_count||e.user_message_count===t.user_message_count&&e.duration_minutes>t.duration_minutes)&&l.set(e.session_id,e)}let u=new Set(l.keys());a=[...l.values()];for(let e of s.keys())u.has(e)||s.delete(e);a.sort((e,t)=>t.start_time.localeCompare(e.start_time));let d=a.filter(e=>!(e.user_message_count<2||e.duration_minutes<1)),f=new Map,p=[],m=await Promise.all(d.map(async e=>({sessionId:e.session_id,cached:await be(e.session_id)})));for(let{sessionId:e,cached:t}of m)if(t)f.set(e,t);else{let t=s.get(e);t&&p.length<50&&p.push({log:t,sessionId:e})}for(let e=0;e<p.length;e+=50){let t=p.slice(e,e+50),n=await Promise.all(t.map(async({log:e,sessionId:t})=>({sessionId:t,newFacets:await we(e,t)}))),r=[];for(let{sessionId:e,newFacets:t}of n)t&&(f.set(e,t),r.push(t));await Promise.all(r.map(e=>xe(e)))}let h=e=>{let t=f.get(e);if(!t)return!1;let n=t.goal_categories,r=Pe(n).filter(e=>(n[e]??0)>0);return r.length===1&&r[0]===`warmup_minimal`},g=d.filter(e=>!h(e.session_id)),_=new Map;for(let[e,t]of f)h(e)||_.set(e,t);let v=Ee(g,_);v.total_sessions_scanned=i;let y=await De(v,f),b=je(v,y);try{await O(N(),{recursive:!0})}catch{}let S=D(N(),`report.html`);return await j(S,b,{encoding:`utf-8`,mode:384}),{insights:y,htmlPath:S,data:v,remoteStats:n,facets:_}}function B(e){return e?Object.entries(e):[]}function Pe(e){return e?Object.keys(e):[]}function V(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.underlying_goal==`string`&&typeof t.outcome==`string`&&typeof t.brief_summary==`string`&&t.goal_categories!==null&&typeof t.goal_categories==`object`&&t.user_satisfaction_counts!==null&&typeof t.user_satisfaction_counts==`object`&&t.friction_counts!==null&&typeof t.friction_counts==`object`}var H,U,W,G,K,q,J,Y,X,Z,Q,$;e((()=>{ne(),re(),r(),n(),u(),p(),d(),b(),i(),v(),s(),h(),S(),ie(),H=process.env.USER_TYPE===`ant`?async()=>{let{stdout:e,code:t}=await m(`coder`,[`list`,`-o`,`json`],{timeout:3e4});if(t!==0)return[];try{return o(e).filter(e=>e.latest_build?.status===`running`).map(e=>e.name)}catch{return[]}}:async()=>[],U=process.env.USER_TYPE===`ant`?async e=>{let{stdout:t,code:n}=await m(`ssh`,[`${e}.coder`,`find /root/.claude/projects -name "*.jsonl" 2>/dev/null | wc -l`],{timeout:3e4});return n===0&&parseInt(t.trim(),10)||0}:async()=>0,W=process.env.USER_TYPE===`ant`?async(e,t)=>{let n={copied:0,skipped:0},r=await le(D(ae(),`claude-hs-`));try{if((await m(`scp`,[`-rq`,`${e}.coder:/root/.claude/projects/`,r],{timeout:3e5})).code!==0)return n;let i=D(r,`projects`),a;try{a=await A(i,{withFileTypes:!0})}catch{return n}await Promise.all(a.map(async r=>{let a=r.name,o=D(i,a);if(!r.isDirectory())return;let s=D(t,`${a}__${e}`);try{await O(s,{recursive:!0})}catch{}let c;try{c=await A(o,{withFileTypes:!0})}catch{return}await Promise.all(c.map(async e=>{let t=e.name;if(!t.endsWith(`.jsonl`))return;let r=D(o,t),i=D(s,t);try{await ce(r,i,se.COPYFILE_EXCL),n.copied++}catch{n.skipped++}}))}))}finally{try{await ue(r,{recursive:!0,force:!0})}catch{}}return n}:async()=>({copied:0,skipped:0}),G=process.env.USER_TYPE===`ant`?async e=>{let t=await H(),n=[],r=0,i=0,a=await Promise.all(t.map(async t=>{let n=await U(t);if(n>0){let{copied:r,skipped:i}=await W(t,e);return{name:t,sessionCount:n,copied:r,skipped:i}}return{name:t,sessionCount:n,copied:0,skipped:0}}));for(let e of a)n.push({name:e.name,sessionCount:e.sessionCount}),r+=e.copied,i+=e.skipped;return{hosts:n,totalCopied:r,totalSkipped:i}}:async()=>({hosts:[],totalCopied:0,totalSkipped:0}),K={".ts":`TypeScript`,".tsx":`TypeScript`,".js":`JavaScript`,".jsx":`JavaScript`,".py":`Python`,".rb":`Ruby`,".go":`Go`,".rs":`Rust`,".java":`Java`,".md":`Markdown`,".json":`JSON`,".yaml":`YAML`,".yml":`YAML`,".sh":`Shell`,".css":`CSS`,".html":`HTML`},q={debug_investigate:`Debug/Investigate`,implement_feature:`Implement Feature`,fix_bug:`Fix Bug`,write_script_tool:`Write Script/Tool`,refactor_code:`Refactor Code`,configure_system:`Configure System`,create_pr_commit:`Create PR/Commit`,analyze_data:`Analyze Data`,understand_codebase:`Understand Codebase`,write_tests:`Write Tests`,write_docs:`Write Docs`,deploy_infra:`Deploy/Infra`,warmup_minimal:`Cache Warmup`,fast_accurate_search:`Fast/Accurate Search`,correct_code_edits:`Correct Code Edits`,good_explanations:`Good Explanations`,proactive_help:`Proactive Help`,multi_file_changes:`Multi-file Changes`,handled_complexity:`Multi-file Changes`,good_debugging:`Good Debugging`,misunderstood_request:`Misunderstood Request`,wrong_approach:`Wrong Approach`,buggy_code:`Buggy Code`,user_rejected_action:`User Rejected Action`,claude_got_blocked:`Claude Got Blocked`,user_stopped_early:`User Stopped Early`,wrong_file_or_location:`Wrong File/Location`,excessive_changes:`Excessive Changes`,slow_or_verbose:`Slow/Verbose`,tool_failed:`Tool Failed`,user_unclear:`User Unclear`,external_issue:`External Issue`,frustrated:`Frustrated`,dissatisfied:`Dissatisfied`,likely_satisfied:`Likely Satisfied`,satisfied:`Satisfied`,happy:`Happy`,unsure:`Unsure`,neutral:`Neutral`,delighted:`Delighted`,single_task:`Single Task`,multi_task:`Multi Task`,iterative_refinement:`Iterative Refinement`,exploration:`Exploration`,quick_question:`Quick Question`,fully_achieved:`Fully Achieved`,mostly_achieved:`Mostly Achieved`,partially_achieved:`Partially Achieved`,not_achieved:`Not Achieved`,unclear_from_transcript:`Unclear`,unhelpful:`Unhelpful`,slightly_helpful:`Slightly Helpful`,moderately_helpful:`Moderately Helpful`,very_helpful:`Very Helpful`,essential:`Essential`},J=`Analyze this Claude Code session and extract structured facets.
642
+ </html>`}async function je(){let e=_(),t;try{t=await j(e,{withFileTypes:!0})}catch{return[]}let n=t.filter(e=>e.isDirectory()).map(t=>O(e,t.name)),r=[];for(let e=0;e<n.length;e++){let t=await x(n[e]);for(let[e,n]of t)r.push({sessionId:e,path:n.path,mtime:n.mtime,size:n.size});e%10==9&&await new Promise(e=>setImmediate(e))}return r.sort((e,t)=>t.mtime-e.mtime),r}async function Me(e){let n;if(process.env.USER_TYPE===`ant`&&e?.collectRemote){let{hosts:e,totalCopied:r}=await K(O(t(),`projects`));n={hosts:e,totalCopied:r}}let r=await je(),i=r.length,a=[],o=[];for(let e=0;e<r.length;e+=50){let t=r.slice(e,e+50),n=await Promise.all(t.map(async e=>({sessionInfo:e,cached:await xe(e.sessionId)})));for(let{sessionInfo:e,cached:t}of n)t?a.push(t):o.length<200&&o.push(e)}let s=new Map,c=e=>{for(let t of e.messages.slice(0,5))if(t.type===`user`&&t.message){let e=t.message.content;if(typeof e==`string`&&(e.includes(`RESPOND WITH ONLY A VALID JSON OBJECT`)||e.includes(`record_facets`)))return!0}return!1};for(let e=0;e<o.length;e+=10){let t=o.slice(e,e+10),n=await Promise.all(t.map(async e=>{try{return await y(e.path)}catch{return[]}})),r=[];for(let e of n)for(let t of e){if(c(t)||!he(t))continue;let e=L(t);a.push(e),r.push(e),s.set(e.session_id,t)}await Promise.all(r.map(e=>Se(e)))}let l=new Map;for(let e of a){let t=l.get(e.session_id);(!t||e.user_message_count>t.user_message_count||e.user_message_count===t.user_message_count&&e.duration_minutes>t.duration_minutes)&&l.set(e.session_id,e)}let u=new Set(l.keys());a=[...l.values()];for(let e of s.keys())u.has(e)||s.delete(e);a.sort((e,t)=>t.start_time.localeCompare(e.start_time));let d=a.filter(e=>!(e.user_message_count<2||e.duration_minutes<1)),f=new Map,p=[],m=await Promise.all(d.map(async e=>({sessionId:e.session_id,cached:await ye(e.session_id)})));for(let{sessionId:e,cached:t}of m)if(t)f.set(e,t);else{let t=s.get(e);t&&p.length<50&&p.push({log:t,sessionId:e})}for(let e=0;e<p.length;e+=50){let t=p.slice(e,e+50),n=await Promise.all(t.map(async({log:e,sessionId:t})=>({sessionId:t,newFacets:await Ce(e,t)}))),r=[];for(let{sessionId:e,newFacets:t}of n)t&&(f.set(e,t),r.push(t));await Promise.all(r.map(e=>be(e)))}let h=e=>{let t=f.get(e);if(!t)return!1;let n=t.goal_categories,r=Ne(n).filter(e=>(n[e]??0)>0);return r.length===1&&r[0]===`warmup_minimal`},g=d.filter(e=>!h(e.session_id)),_=new Map;for(let[e,t]of f)h(e)||_.set(e,t);let v=Te(g,_);v.total_sessions_scanned=i;let b=await Ee(v,f),x=Ae(v,b);try{await k(P(),{recursive:!0})}catch{}let S=O(P(),`report.html`);return await M(S,x,{encoding:`utf-8`,mode:384}),{insights:b,htmlPath:S,data:v,remoteStats:n,facets:_}}function V(e){return e?Object.entries(e):[]}function Ne(e){return e?Object.keys(e):[]}function H(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.underlying_goal==`string`&&typeof t.outcome==`string`&&typeof t.brief_summary==`string`&&t.goal_categories!==null&&typeof t.goal_categories==`object`&&t.user_satisfaction_counts!==null&&typeof t.user_satisfaction_counts==`object`&&t.friction_counts!==null&&typeof t.friction_counts==`object`}var U,W,G,K,q,J,Y,X,Z,Q,Pe,$;e((()=>{C(),te(),r(),n(),u(),p(),d(),v(),i(),b(),s(),h(),ne(),re(),U=process.env.USER_TYPE===`ant`?async()=>{let{stdout:e,code:t}=await m(`coder`,[`list`,`-o`,`json`],{timeout:3e4});if(t!==0)return[];try{return o(e).filter(e=>e.latest_build?.status===`running`).map(e=>e.name)}catch{return[]}}:async()=>[],W=process.env.USER_TYPE===`ant`?async e=>{let{stdout:t,code:n}=await m(`ssh`,[`${e}.coder`,`find /root/.claude/projects -name "*.jsonl" 2>/dev/null | wc -l`],{timeout:3e4});return n===0&&parseInt(t.trim(),10)||0}:async()=>0,G=process.env.USER_TYPE===`ant`?async(e,t)=>{let n={copied:0,skipped:0},r=await ce(O(ie(),`claude-hs-`));try{if((await m(`scp`,[`-rq`,`${e}.coder:/root/.claude/projects/`,r],{timeout:3e5})).code!==0)return n;let i=O(r,`projects`),a;try{a=await j(i,{withFileTypes:!0})}catch{return n}await Promise.all(a.map(async r=>{let a=r.name,o=O(i,a);if(!r.isDirectory())return;let s=O(t,`${a}__${e}`);try{await k(s,{recursive:!0})}catch{}let c;try{c=await j(o,{withFileTypes:!0})}catch{return}await Promise.all(c.map(async e=>{let t=e.name;if(!t.endsWith(`.jsonl`))return;let r=O(o,t),i=O(s,t);try{await se(r,i,oe.COPYFILE_EXCL),n.copied++}catch{n.skipped++}}))}))}finally{try{await le(r,{recursive:!0,force:!0})}catch{}}return n}:async()=>({copied:0,skipped:0}),K=process.env.USER_TYPE===`ant`?async e=>{let t=await U(),n=[],r=0,i=0,a=await Promise.all(t.map(async t=>{let n=await W(t);if(n>0){let{copied:r,skipped:i}=await G(t,e);return{name:t,sessionCount:n,copied:r,skipped:i}}return{name:t,sessionCount:n,copied:0,skipped:0}}));for(let e of a)n.push({name:e.name,sessionCount:e.sessionCount}),r+=e.copied,i+=e.skipped;return{hosts:n,totalCopied:r,totalSkipped:i}}:async()=>({hosts:[],totalCopied:0,totalSkipped:0}),q={".ts":`TypeScript`,".tsx":`TypeScript`,".js":`JavaScript`,".jsx":`JavaScript`,".py":`Python`,".rb":`Ruby`,".go":`Go`,".rs":`Rust`,".java":`Java`,".md":`Markdown`,".json":`JSON`,".yaml":`YAML`,".yml":`YAML`,".sh":`Shell`,".css":`CSS`,".html":`HTML`},J={debug_investigate:`Debug/Investigate`,implement_feature:`Implement Feature`,fix_bug:`Fix Bug`,write_script_tool:`Write Script/Tool`,refactor_code:`Refactor Code`,configure_system:`Configure System`,create_pr_commit:`Create PR/Commit`,analyze_data:`Analyze Data`,understand_codebase:`Understand Codebase`,write_tests:`Write Tests`,write_docs:`Write Docs`,deploy_infra:`Deploy/Infra`,warmup_minimal:`Cache Warmup`,fast_accurate_search:`Fast/Accurate Search`,correct_code_edits:`Correct Code Edits`,good_explanations:`Good Explanations`,proactive_help:`Proactive Help`,multi_file_changes:`Multi-file Changes`,handled_complexity:`Multi-file Changes`,good_debugging:`Good Debugging`,misunderstood_request:`Misunderstood Request`,wrong_approach:`Wrong Approach`,buggy_code:`Buggy Code`,user_rejected_action:`User Rejected Action`,claude_got_blocked:`Claude Got Blocked`,user_stopped_early:`User Stopped Early`,wrong_file_or_location:`Wrong File/Location`,excessive_changes:`Excessive Changes`,slow_or_verbose:`Slow/Verbose`,tool_failed:`Tool Failed`,user_unclear:`User Unclear`,external_issue:`External Issue`,frustrated:`Frustrated`,dissatisfied:`Dissatisfied`,likely_satisfied:`Likely Satisfied`,satisfied:`Satisfied`,happy:`Happy`,unsure:`Unsure`,neutral:`Neutral`,delighted:`Delighted`,single_task:`Single Task`,multi_task:`Multi Task`,iterative_refinement:`Iterative Refinement`,exploration:`Exploration`,quick_question:`Quick Question`,fully_achieved:`Fully Achieved`,mostly_achieved:`Mostly Achieved`,partially_achieved:`Partially Achieved`,not_achieved:`Not Achieved`,unclear_from_transcript:`Unclear`,unhelpful:`Unhelpful`,slightly_helpful:`Slightly Helpful`,moderately_helpful:`Moderately Helpful`,very_helpful:`Very Helpful`,essential:`Essential`},Y=`Analyze this Claude Code session and extract structured facets.
643
643
 
644
644
  CRITICAL GUIDELINES:
645
645
 
@@ -665,7 +665,7 @@ CRITICAL GUIDELINES:
665
665
  4. If very short or just warmup, use warmup_minimal for goal_category
666
666
 
667
667
  SESSION:
668
- `,Y=`Summarize this portion of a Claude Code session transcript. Focus on:
668
+ `,X=`Summarize this portion of a Claude Code session transcript. Focus on:
669
669
  1. What the user asked for
670
670
  2. What Claude did (tools used, files modified)
671
671
  3. Any friction or issues
@@ -674,7 +674,7 @@ SESSION:
674
674
  Keep it concise - 3-5 sentences. Preserve specific details like file names, error messages, and user feedback.
675
675
 
676
676
  TRANSCRIPT CHUNK:
677
- `,X=[{name:`project_areas`,prompt:`Analyze this Claude Code usage data and identify project areas.
677
+ `,Z=[{name:`project_areas`,prompt:`Analyze this Claude Code usage data and identify project areas.
678
678
 
679
679
  RESPOND WITH ONLY A VALID JSON OBJECT:
680
680
  {
@@ -783,7 +783,7 @@ RESPOND WITH ONLY A VALID JSON OBJECT:
783
783
  "detail": "Brief context about when/where this happened"
784
784
  }
785
785
 
786
- Find something genuinely interesting or amusing from the session summaries.`,maxTokens:8192}],Z=[`frustrated`,`dissatisfied`,`likely_satisfied`,`satisfied`,`happy`,`unsure`],Q=[`not_achieved`,`partially_achieved`,`mostly_achieved`,`fully_achieved`,`unclear_from_transcript`],$={type:`prompt`,name:`insights`,description:`Generate a report analyzing your Claude Code sessions`,contentLength:0,progressMessage:`analyzing your sessions`,source:`builtin`,async getPromptForCommand(e){let t=!1,n=[],r=!1;process.env.USER_TYPE===`ant`&&(t=e?.includes(`--homespaces`)??!1,n=await H(),r=n.length>0,t&&r&&console.error(`Collecting sessions from ${n.length} homespace(s): ${n.join(`, `)}...`));let{insights:i,htmlPath:a,data:o,remoteStats:s}=await Ne({collectRemote:t}),c=`file://${a}`,u=``;if(process.env.USER_TYPE===`ant`){let e=new Date().toISOString().replace(/[-:]/g,``).replace(`T`,`_`).slice(0,15),t=`${process.env.SAFEUSER||process.env.USER||`unknown`}_insights_${e}.html`,n=`s3://anthropic-serve/atamkin/cc-user-reports/${t}`,r=`https://s3-frontend.infra.ant.dev/anthropic-serve/atamkin/cc-user-reports/${t}`;c=r;try{fe(`ff`,[`cp`,a,n],{timeout:6e4,stdio:`pipe`})}catch{c=`file://${a}`,u=`\nAutomatic upload failed. Are you on the boron namespace? Try \`use-bo\` and ensure you've run \`sso\`.
786
+ Find something genuinely interesting or amusing from the session summaries.`,maxTokens:8192}],Q=[`frustrated`,`dissatisfied`,`likely_satisfied`,`satisfied`,`happy`,`unsure`],Pe=[`not_achieved`,`partially_achieved`,`mostly_achieved`,`fully_achieved`,`unclear_from_transcript`],$={type:`prompt`,name:`insights`,description:`Generate a report analyzing your Claude Code sessions`,contentLength:0,progressMessage:`analyzing your sessions`,source:`builtin`,async getPromptForCommand(e){let t=!1,n=[],r=!1;process.env.USER_TYPE===`ant`&&(t=e?.includes(`--homespaces`)??!1,n=await U(),r=n.length>0,t&&r&&console.error(`Collecting sessions from ${n.length} homespace(s): ${n.join(`, `)}...`));let{insights:i,htmlPath:a,data:o,remoteStats:s}=await Me({collectRemote:t}),c=`file://${a}`,u=``;if(process.env.USER_TYPE===`ant`){let e=new Date().toISOString().replace(/[-:]/g,``).replace(`T`,`_`).slice(0,15),t=`${process.env.SAFEUSER||process.env.USER||`unknown`}_insights_${e}.html`,n=`s3://anthropic-serve/atamkin/cc-user-reports/${t}`,r=`https://s3-frontend.infra.ant.dev/anthropic-serve/atamkin/cc-user-reports/${t}`;c=r;try{de(`ff`,[`cp`,a,n],{timeout:6e4,stdio:`pipe`})}catch{c=`file://${a}`,u=`\nAutomatic upload failed. Are you on the boron namespace? Try \`use-bo\` and ensure you've run \`sso\`.
787
787
  To share, run: ff cp ${a} ${n}
788
788
  Then access at: ${r}`}}let d=[o.total_sessions_scanned&&o.total_sessions_scanned>o.total_sessions?`${o.total_sessions_scanned.toLocaleString()} sessions total · ${o.total_sessions} analyzed`:`${o.total_sessions} sessions`,`${o.total_messages.toLocaleString()} messages`,`${Math.round(o.total_duration_hours)}h`,`${o.git_commits} commits`].join(` · `),f=``;if(process.env.USER_TYPE===`ant`)if(s&&s.totalCopied>0){let e=s.hosts.filter(e=>e.sessionCount>0).map(e=>e.name).join(`, `);f=`\n_Collected ${s.totalCopied} new sessions from: ${e}_\n`}else !t&&r&&(f=`\n_Tip: Run \`/insights --homespaces\` to include sessions from your ${n.length} running homespace(s)_\n`);let p=i.at_a_glance,m=p?`## At a Glance
789
789
 
@@ -807,7 +807,7 @@ ${l(i,null,2)}
807
807
 
808
808
  Report URL: ${c}
809
809
  HTML file: ${a}
810
- Facets directory: ${P()}
810
+ Facets directory: ${F()}
811
811
 
812
812
  Here is what the user sees:
813
813
  ${h}
@@ -1 +1 @@
1
- import{o as e}from"./chunk-DR8-3Aex.js";import{Mt as t,Rn as n,b as r,o as i,t as a,x as o}from"./src-Di342QoJ.js";import{t as s}from"./jsx-runtime-D-D469L8.js";import{Ka as c,lo as l,oo as u}from"./paths-CEAy4QCs.js";import{U as d,l as f,p,z as m}from"./debug-otxXY3j-.js";import{n as h,r as g}from"./analytics-DqMQntaB.js";import{a as _,n as v}from"./env-C2A9gV_G.js";import{dx as y,fx as b,hx as x,mx as S,ux as C}from"./loadAgentsDir-DC4jN6-f.js";import{join as w}from"node:path";import{homedir as T}from"node:os";var E=e(n(),1);h(),a(),f(),_(),d(),C(),u();var D=s();function O(){let e=v.platform===`win32`,t=T();return e?w(t,`.local`,`bin`,`claude.exe`).replace(/\//g,`\\`):`~/.local/bin/claude`}function k({messages:e}){return e.length===0?null:(0,D.jsxs)(o,{flexDirection:`column`,gap:0,marginBottom:1,children:[(0,D.jsx)(o,{children:(0,D.jsxs)(r,{color:`warning`,children:[(0,D.jsx)(i,{status:`warning`,withSpace:!0}),`Setup notes:`]})}),e.map((e,t)=>(0,D.jsx)(o,{marginLeft:2,children:(0,D.jsxs)(r,{dimColor:!0,children:[`• `,e]})},t))]})}function A({onDone:e,force:t,target:n}){let[a,s]=(0,E.useState)({type:`checking`});return(0,E.useEffect)(()=>{async function e(){try{p(`Install: Starting installation process (force=${t}, target=${n})`);let e=n||c()?.autoUpdatesChannel||`latest`;s({type:`installing`,version:e}),p(`Install: Calling installLatest(channelOrVersion=${e}, forceReinstall=${t})`);let r=await x(e,t);if(p(`Install: installLatest returned version=${r.latestVersion}, wasUpdated=${r.wasUpdated}, lockFailed=${r.lockFailed}`),r.lockFailed)throw Error(`Could not install - another process is currently installing Claude. Please try again in a moment.`);r.latestVersion||p(`Install: Failed to retrieve version information during install`,{level:`error`}),r.wasUpdated||p(`Install: Already up to date`),s({type:`setting-up`});let i=await y(!0);p(`Install: Setup launcher completed with ${i.length} messages`),i.length>0&&i.forEach(e=>p(`Install: Setup message: ${e.message}`)),p(`Install: Cleaning up npm installations after successful install`);let{removed:a,errors:o,warnings:u}=await b();a>0&&p(`Cleaned up ${a} npm installation(s)`),o.length>0&&p(`Cleanup errors: ${o.join(`, `)}`);let d=await S();d.length>0&&p(`Shell alias cleanup: ${d.map(e=>e.message).join(`; `)}`),g(`tengu_claude_install_command`,{has_version:+!!r.latestVersion,forced:+!!t}),(n===`latest`||n===`stable`)&&(l(`userSettings`,{autoUpdatesChannel:n}),p(`Install: Saved autoUpdatesChannel=${n} to user settings`));let f=[...u,...d.map(e=>e.message)];i.length>0?(s({type:`set-up`,messages:i.map(e=>e.message)}),setTimeout(s,2e3,{type:`success`,version:r.latestVersion||`current`,setupMessages:[...i.map(e=>e.message),...f]})):(p(`Install: Shell PATH already configured`),s({type:`success`,version:r.latestVersion||`current`,setupMessages:f.length>0?f:void 0}))}catch(e){p(`Install command failed: ${e}`,{level:`error`}),s({type:`error`,message:m(e)})}}e()},[t,n]),(0,E.useEffect)(()=>{a.type===`success`?setTimeout(e,2e3,`Claude Code installation completed successfully`,{display:`system`}):a.type===`error`&&setTimeout(e,3e3,`Claude Code installation failed`,{display:`system`})},[a,e]),(0,D.jsxs)(o,{flexDirection:`column`,marginTop:1,children:[a.type===`checking`&&(0,D.jsx)(r,{color:`claude`,children:`Checking installation status...`}),a.type===`cleaning-npm`&&(0,D.jsx)(r,{color:`warning`,children:`Cleaning up old npm installations...`}),a.type===`installing`&&(0,D.jsxs)(r,{color:`claude`,children:[`Installing Claude Code native build `,a.version,`...`]}),a.type===`setting-up`&&(0,D.jsx)(r,{color:`claude`,children:`Setting up launcher and shell integration...`}),a.type===`set-up`&&(0,D.jsx)(k,{messages:a.messages}),a.type===`success`&&(0,D.jsxs)(o,{flexDirection:`column`,gap:1,children:[(0,D.jsxs)(o,{children:[(0,D.jsx)(i,{status:`success`,withSpace:!0}),(0,D.jsx)(r,{color:`success`,bold:!0,children:`Claude Code successfully installed!`})]}),(0,D.jsxs)(o,{marginLeft:2,flexDirection:`column`,gap:1,children:[a.version!==`current`&&(0,D.jsxs)(o,{children:[(0,D.jsx)(r,{dimColor:!0,children:`Version: `}),(0,D.jsx)(r,{color:`claude`,children:a.version})]}),(0,D.jsxs)(o,{children:[(0,D.jsx)(r,{dimColor:!0,children:`Location: `}),(0,D.jsx)(r,{color:`text`,children:O()})]})]}),(0,D.jsx)(o,{marginLeft:2,flexDirection:`column`,gap:1,children:(0,D.jsxs)(o,{marginTop:1,children:[(0,D.jsx)(r,{dimColor:!0,children:`Next: Run `}),(0,D.jsx)(r,{color:`claude`,bold:!0,children:`claude --help`}),(0,D.jsx)(r,{dimColor:!0,children:` to get started`})]})}),a.setupMessages&&(0,D.jsx)(k,{messages:a.setupMessages})]}),a.type===`error`&&(0,D.jsxs)(o,{flexDirection:`column`,gap:1,children:[(0,D.jsxs)(o,{children:[(0,D.jsx)(i,{status:`error`,withSpace:!0}),(0,D.jsx)(r,{color:`error`,children:`Installation failed`})]}),(0,D.jsx)(r,{color:`error`,children:a.message}),(0,D.jsx)(o,{marginTop:1,children:(0,D.jsx)(r,{dimColor:!0,children:`Try running with --force to override checks`})})]})]})}var j={type:`local-jsx`,name:`install`,description:`Install Claude Code native build`,argumentHint:`[options]`,async call(e,n,r){let i=r.includes(`--force`),a=r.filter(e=>!e.startsWith(`--`))[0],{unmount:o}=await t((0,D.jsx)(A,{onDone:(t,n)=>{o(),e(t,n)},force:i,target:a}))}};export{j as install};
1
+ import{o as e}from"./chunk-DR8-3Aex.js";import{Mt as t,Rn as n,b as r,o as i,t as a,x as o}from"./src-Di342QoJ.js";import{t as s}from"./jsx-runtime-D-D469L8.js";import{Ka as c,lo as l,oo as u}from"./paths-nIHVpTn2.js";import{U as d,l as f,p,z as m}from"./debug-otxXY3j-.js";import{n as h,r as g}from"./analytics-DqMQntaB.js";import{a as _,n as v}from"./env-C2A9gV_G.js";import{_x as y,fx as b,gx as x,mx as S,px as C}from"./loadAgentsDir-BfEZacjM.js";import{join as w}from"node:path";import{homedir as T}from"node:os";var E=e(n(),1);h(),a(),f(),_(),d(),b(),u();var D=s();function O(){let e=v.platform===`win32`,t=T();return e?w(t,`.local`,`bin`,`claude.exe`).replace(/\//g,`\\`):`~/.local/bin/claude`}function k({messages:e}){return e.length===0?null:(0,D.jsxs)(o,{flexDirection:`column`,gap:0,marginBottom:1,children:[(0,D.jsx)(o,{children:(0,D.jsxs)(r,{color:`warning`,children:[(0,D.jsx)(i,{status:`warning`,withSpace:!0}),`Setup notes:`]})}),e.map((e,t)=>(0,D.jsx)(o,{marginLeft:2,children:(0,D.jsxs)(r,{dimColor:!0,children:[`• `,e]})},t))]})}function A({onDone:e,force:t,target:n}){let[a,s]=(0,E.useState)({type:`checking`});return(0,E.useEffect)(()=>{async function e(){try{p(`Install: Starting installation process (force=${t}, target=${n})`);let e=n||c()?.autoUpdatesChannel||`latest`;s({type:`installing`,version:e}),p(`Install: Calling installLatest(channelOrVersion=${e}, forceReinstall=${t})`);let r=await y(e,t);if(p(`Install: installLatest returned version=${r.latestVersion}, wasUpdated=${r.wasUpdated}, lockFailed=${r.lockFailed}`),r.lockFailed)throw Error(`Could not install - another process is currently installing Claude. Please try again in a moment.`);r.latestVersion||p(`Install: Failed to retrieve version information during install`,{level:`error`}),r.wasUpdated||p(`Install: Already up to date`),s({type:`setting-up`});let i=await C(!0);p(`Install: Setup launcher completed with ${i.length} messages`),i.length>0&&i.forEach(e=>p(`Install: Setup message: ${e.message}`)),p(`Install: Cleaning up npm installations after successful install`);let{removed:a,errors:o,warnings:u}=await S();a>0&&p(`Cleaned up ${a} npm installation(s)`),o.length>0&&p(`Cleanup errors: ${o.join(`, `)}`);let d=await x();d.length>0&&p(`Shell alias cleanup: ${d.map(e=>e.message).join(`; `)}`),g(`tengu_claude_install_command`,{has_version:+!!r.latestVersion,forced:+!!t}),(n===`latest`||n===`stable`)&&(l(`userSettings`,{autoUpdatesChannel:n}),p(`Install: Saved autoUpdatesChannel=${n} to user settings`));let f=[...u,...d.map(e=>e.message)];i.length>0?(s({type:`set-up`,messages:i.map(e=>e.message)}),setTimeout(s,2e3,{type:`success`,version:r.latestVersion||`current`,setupMessages:[...i.map(e=>e.message),...f]})):(p(`Install: Shell PATH already configured`),s({type:`success`,version:r.latestVersion||`current`,setupMessages:f.length>0?f:void 0}))}catch(e){p(`Install command failed: ${e}`,{level:`error`}),s({type:`error`,message:m(e)})}}e()},[t,n]),(0,E.useEffect)(()=>{a.type===`success`?setTimeout(e,2e3,`Claude Code installation completed successfully`,{display:`system`}):a.type===`error`&&setTimeout(e,3e3,`Claude Code installation failed`,{display:`system`})},[a,e]),(0,D.jsxs)(o,{flexDirection:`column`,marginTop:1,children:[a.type===`checking`&&(0,D.jsx)(r,{color:`claude`,children:`Checking installation status...`}),a.type===`cleaning-npm`&&(0,D.jsx)(r,{color:`warning`,children:`Cleaning up old npm installations...`}),a.type===`installing`&&(0,D.jsxs)(r,{color:`claude`,children:[`Installing Claude Code native build `,a.version,`...`]}),a.type===`setting-up`&&(0,D.jsx)(r,{color:`claude`,children:`Setting up launcher and shell integration...`}),a.type===`set-up`&&(0,D.jsx)(k,{messages:a.messages}),a.type===`success`&&(0,D.jsxs)(o,{flexDirection:`column`,gap:1,children:[(0,D.jsxs)(o,{children:[(0,D.jsx)(i,{status:`success`,withSpace:!0}),(0,D.jsx)(r,{color:`success`,bold:!0,children:`Claude Code successfully installed!`})]}),(0,D.jsxs)(o,{marginLeft:2,flexDirection:`column`,gap:1,children:[a.version!==`current`&&(0,D.jsxs)(o,{children:[(0,D.jsx)(r,{dimColor:!0,children:`Version: `}),(0,D.jsx)(r,{color:`claude`,children:a.version})]}),(0,D.jsxs)(o,{children:[(0,D.jsx)(r,{dimColor:!0,children:`Location: `}),(0,D.jsx)(r,{color:`text`,children:O()})]})]}),(0,D.jsx)(o,{marginLeft:2,flexDirection:`column`,gap:1,children:(0,D.jsxs)(o,{marginTop:1,children:[(0,D.jsx)(r,{dimColor:!0,children:`Next: Run `}),(0,D.jsx)(r,{color:`claude`,bold:!0,children:`claude --help`}),(0,D.jsx)(r,{dimColor:!0,children:` to get started`})]})}),a.setupMessages&&(0,D.jsx)(k,{messages:a.setupMessages})]}),a.type===`error`&&(0,D.jsxs)(o,{flexDirection:`column`,gap:1,children:[(0,D.jsxs)(o,{children:[(0,D.jsx)(i,{status:`error`,withSpace:!0}),(0,D.jsx)(r,{color:`error`,children:`Installation failed`})]}),(0,D.jsx)(r,{color:`error`,children:a.message}),(0,D.jsx)(o,{marginTop:1,children:(0,D.jsx)(r,{dimColor:!0,children:`Try running with --force to override checks`})})]})]})}var j={type:`local-jsx`,name:`install`,description:`Install Claude Code native build`,argumentHint:`[options]`,async call(e,n,r){let i=r.includes(`--force`),a=r.filter(e=>!e.startsWith(`--`))[0],{unmount:o}=await t((0,D.jsx)(A,{onDone:(t,n)=>{o(),e(t,n)},force:i,target:a}))}};export{j as install};