@hienlh/ppm 0.9.81 → 0.9.82

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 (1736) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/CLAUDE.md +12 -0
  3. package/assets/skills/ppm-guide/SKILL.md +61 -0
  4. package/bun.lock +9 -1
  5. package/dist/web/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  6. package/dist/web/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  7. package/dist/web/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  8. package/dist/web/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  9. package/dist/web/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  10. package/dist/web/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  11. package/dist/web/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  12. package/dist/web/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  13. package/dist/web/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  14. package/dist/web/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  15. package/dist/web/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  16. package/dist/web/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  17. package/dist/web/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  18. package/dist/web/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  19. package/dist/web/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  20. package/dist/web/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  21. package/dist/web/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  22. package/dist/web/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  23. package/dist/web/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  24. package/dist/web/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  25. package/dist/web/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  26. package/dist/web/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  27. package/dist/web/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  28. package/dist/web/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  29. package/dist/web/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  30. package/dist/web/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  31. package/dist/web/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  32. package/dist/web/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  33. package/dist/web/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  34. package/dist/web/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  35. package/dist/web/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  36. package/dist/web/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  37. package/dist/web/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  38. package/dist/web/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  39. package/dist/web/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  40. package/dist/web/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  41. package/dist/web/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  42. package/dist/web/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  43. package/dist/web/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  44. package/dist/web/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  45. package/dist/web/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  46. package/dist/web/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  47. package/dist/web/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  48. package/dist/web/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  49. package/dist/web/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  50. package/dist/web/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  51. package/dist/web/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  52. package/dist/web/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  53. package/dist/web/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  54. package/dist/web/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  55. package/dist/web/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  56. package/dist/web/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  57. package/dist/web/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  58. package/dist/web/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  59. package/dist/web/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  60. package/dist/web/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  61. package/dist/web/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  62. package/dist/web/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  63. package/dist/web/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  64. package/dist/web/assets/chat-tab-bS86TsT5.js +10 -0
  65. package/dist/web/assets/{code-editor-CKhVVTIi.js → code-editor-BaNaQ33b.js} +1 -1
  66. package/dist/web/assets/{database-viewer-VT17cuX4.js → database-viewer-C5MVw8cJ.js} +1 -1
  67. package/dist/web/assets/{diff-viewer-D6gXDpSU.js → diff-viewer-CUbFMWVo.js} +1 -1
  68. package/dist/web/assets/{extension-webview-CAQUbBuw.js → extension-webview-CwGufYEP.js} +1 -1
  69. package/dist/web/assets/{git-graph-CdRJbH07.js → git-graph-BD7A7MLo.js} +1 -1
  70. package/dist/web/assets/index-BYXjCNlK.css +2 -0
  71. package/dist/web/assets/index-CpzkPHOC.js +30 -0
  72. package/dist/web/assets/keybindings-store-DsaANvBz.js +1 -0
  73. package/dist/web/assets/markdown-renderer-C19IsITh.js +326 -0
  74. package/dist/web/assets/{port-forwarding-tab-1vSZG1Ga.js → port-forwarding-tab-BF79F1iL.js} +1 -1
  75. package/dist/web/assets/{postgres-viewer-Bn8hKEnP.js → postgres-viewer-_nYiO_wp.js} +1 -1
  76. package/dist/web/assets/{settings-tab-CpG9UbHr.js → settings-tab-C1SQMbSu.js} +1 -1
  77. package/dist/web/assets/{sql-query-editor-yvUfZVDr.js → sql-query-editor-6OFvxxuN.js} +1 -1
  78. package/dist/web/assets/{sqlite-viewer-BSFIa0hd.js → sqlite-viewer-SNVYFXvB.js} +1 -1
  79. package/dist/web/assets/{terminal-tab-CbIBTfPE.js → terminal-tab-BJEkmrDt.js} +1 -1
  80. package/dist/web/assets/{use-monaco-theme-x9tJcwlL.js → use-monaco-theme-r8FzlCWr.js} +1 -1
  81. package/dist/web/index.html +2 -2
  82. package/dist/web/sw.js +1 -1
  83. package/docs/codebase-summary.md +78 -0
  84. package/docs/project-changelog.md +29 -0
  85. package/docs/system-architecture.md +2 -0
  86. package/package.json +5 -2
  87. package/scripts/check-ppm-dir-usage.sh +21 -0
  88. package/scripts/generate-ppm-guide.ts +92 -0
  89. package/src/cli/commands/init.ts +2 -1
  90. package/src/cli/commands/logs.ts +11 -11
  91. package/src/cli/commands/report.ts +3 -2
  92. package/src/cli/commands/restart.ts +22 -23
  93. package/src/cli/commands/skills-cmd.ts +123 -0
  94. package/src/cli/commands/status.ts +7 -8
  95. package/src/cli/commands/stop.ts +18 -19
  96. package/src/index.ts +3 -0
  97. package/src/lib/account-crypto.ts +12 -7
  98. package/src/providers/claude-agent-sdk.ts +32 -1
  99. package/src/server/index.ts +8 -8
  100. package/src/server/routes/chat.ts +4 -2
  101. package/src/server/routes/upgrade.ts +3 -5
  102. package/src/server/ws/chat.ts +16 -0
  103. package/src/services/cloud-ws.service.ts +2 -2
  104. package/src/services/cloud.service.ts +20 -19
  105. package/src/services/cloudflared.service.ts +13 -13
  106. package/src/services/config.service.ts +5 -7
  107. package/src/services/db.service.ts +5 -6
  108. package/src/services/extension-rpc-handlers.ts +2 -2
  109. package/src/services/extension.service.ts +9 -12
  110. package/src/services/ppm-dir.ts +14 -0
  111. package/src/services/slash-discovery/builtin-commands.ts +53 -0
  112. package/src/services/slash-discovery/builtin-handlers.ts +65 -0
  113. package/src/services/slash-discovery/definition-source.ts +27 -0
  114. package/src/services/slash-discovery/discover-skill-roots.ts +128 -0
  115. package/src/services/slash-discovery/fuzzy-search.ts +76 -0
  116. package/src/services/slash-discovery/index.ts +42 -0
  117. package/src/services/slash-discovery/resolve-overrides.ts +41 -0
  118. package/src/services/slash-discovery/skill-loader.ts +156 -0
  119. package/src/services/slash-discovery/types.ts +51 -0
  120. package/src/services/slash-items.service.ts +4 -182
  121. package/src/services/supervisor-state.ts +14 -15
  122. package/src/services/supervisor-stopped-page.ts +2 -4
  123. package/src/services/supervisor.ts +15 -15
  124. package/src/services/tunnel.service.ts +4 -5
  125. package/src/services/upgrade.service.ts +2 -3
  126. package/src/types/chat.ts +3 -1
  127. package/src/web/components/chat/chat-tab.tsx +4 -1
  128. package/src/web/components/chat/message-input.tsx +48 -6
  129. package/src/web/components/chat/message-list.tsx +2 -2
  130. package/src/web/components/chat/slash-command-picker.tsx +21 -12
  131. package/src/web/components/layout/upgrade-banner.tsx +48 -2
  132. package/src/web/components/shared/markdown-renderer.tsx +2 -0
  133. package/src/web/hooks/use-chat.ts +3 -1
  134. package/src/web/main.tsx +1 -0
  135. package/.opencode/.ckignore +0 -27
  136. package/.opencode/agents/analytics-analyst.md +0 -168
  137. package/.opencode/agents/attraction-specialist.md +0 -152
  138. package/.opencode/agents/brainstormer.md +0 -114
  139. package/.opencode/agents/campaign-debugger.md +0 -149
  140. package/.opencode/agents/campaign-manager.md +0 -185
  141. package/.opencode/agents/code-reviewer.md +0 -163
  142. package/.opencode/agents/code-simplifier.md +0 -59
  143. package/.opencode/agents/community-manager.md +0 -181
  144. package/.opencode/agents/content-creator.md +0 -166
  145. package/.opencode/agents/content-reviewer.md +0 -170
  146. package/.opencode/agents/continuity-specialist.md +0 -149
  147. package/.opencode/agents/copywriter.md +0 -118
  148. package/.opencode/agents/database-admin.md +0 -98
  149. package/.opencode/agents/debugger.md +0 -143
  150. package/.opencode/agents/docs-manager.md +0 -127
  151. package/.opencode/agents/email-wizard.md +0 -166
  152. package/.opencode/agents/fullstack-developer.md +0 -101
  153. package/.opencode/agents/funnel-architect.md +0 -176
  154. package/.opencode/agents/git-manager.md +0 -399
  155. package/.opencode/agents/journal-writer.md +0 -119
  156. package/.opencode/agents/lead-qualifier.md +0 -146
  157. package/.opencode/agents/mcp-manager.md +0 -99
  158. package/.opencode/agents/planner.md +0 -114
  159. package/.opencode/agents/project-manager.md +0 -130
  160. package/.opencode/agents/researcher.md +0 -44
  161. package/.opencode/agents/sale-enabler.md +0 -161
  162. package/.opencode/agents/scout-external.md +0 -146
  163. package/.opencode/agents/scout.md +0 -112
  164. package/.opencode/agents/seo-specialist.md +0 -185
  165. package/.opencode/agents/social-media-manager.md +0 -163
  166. package/.opencode/agents/tester.md +0 -111
  167. package/.opencode/agents/ui-ux-designer.md +0 -241
  168. package/.opencode/agents/upsell-maximizer.md +0 -147
  169. package/.opencode/commands/ckm-analyze-report.md +0 -66
  170. package/.opencode/commands/ckm-analyze.md +0 -63
  171. package/.opencode/commands/ckm-ask.md +0 -55
  172. package/.opencode/commands/ckm-brand-update.md +0 -122
  173. package/.opencode/commands/ckm-campaign-analyze.md +0 -54
  174. package/.opencode/commands/ckm-campaign-create.md +0 -215
  175. package/.opencode/commands/ckm-campaign-email.md +0 -63
  176. package/.opencode/commands/ckm-campaign-status.md +0 -38
  177. package/.opencode/commands/ckm-campaign.md +0 -64
  178. package/.opencode/commands/ckm-competitor.md +0 -69
  179. package/.opencode/commands/ckm-dashboard-check.md +0 -97
  180. package/.opencode/commands/ckm-dashboard.md +0 -90
  181. package/.opencode/commands/ckm-docs-init.md +0 -27
  182. package/.opencode/commands/ckm-docs-llms.md +0 -12
  183. package/.opencode/commands/ckm-docs-summarize.md +0 -22
  184. package/.opencode/commands/ckm-docs-update.md +0 -36
  185. package/.opencode/commands/ckm-email-flow.md +0 -169
  186. package/.opencode/commands/ckm-email-sequence.md +0 -170
  187. package/.opencode/commands/ckm-email.md +0 -64
  188. package/.opencode/commands/ckm-funnel.md +0 -77
  189. package/.opencode/commands/ckm-hub.md +0 -50
  190. package/.opencode/commands/ckm-init.md +0 -214
  191. package/.opencode/commands/ckm-journal.md +0 -18
  192. package/.opencode/commands/ckm-kanban.md +0 -65
  193. package/.opencode/commands/ckm-persona.md +0 -61
  194. package/.opencode/commands/ckm-plan-archive.md +0 -56
  195. package/.opencode/commands/ckm-plan-ci.md +0 -32
  196. package/.opencode/commands/ckm-plan-cro.md +0 -68
  197. package/.opencode/commands/ckm-plan-fast.md +0 -65
  198. package/.opencode/commands/ckm-plan-hard.md +0 -91
  199. package/.opencode/commands/ckm-plan-parallel.md +0 -128
  200. package/.opencode/commands/ckm-plan-two.md +0 -44
  201. package/.opencode/commands/ckm-plan-validate.md +0 -116
  202. package/.opencode/commands/ckm-plan.md +0 -29
  203. package/.opencode/commands/ckm-play-create.md +0 -15
  204. package/.opencode/commands/ckm-play-goals.md +0 -15
  205. package/.opencode/commands/ckm-play-next.md +0 -15
  206. package/.opencode/commands/ckm-play-status.md +0 -15
  207. package/.opencode/commands/ckm-play.md +0 -27
  208. package/.opencode/commands/ckm-preview.md +0 -83
  209. package/.opencode/commands/ckm-seo-audit.md +0 -125
  210. package/.opencode/commands/ckm-seo-keywords.md +0 -135
  211. package/.opencode/commands/ckm-seo-pseo.md +0 -66
  212. package/.opencode/commands/ckm-seo.md +0 -67
  213. package/.opencode/commands/ckm-skill-add.md +0 -41
  214. package/.opencode/commands/ckm-skill-create.md +0 -34
  215. package/.opencode/commands/ckm-skill-fix-logs.md +0 -28
  216. package/.opencode/commands/ckm-skill-optimize-auto.md +0 -30
  217. package/.opencode/commands/ckm-skill-optimize.md +0 -39
  218. package/.opencode/commands/ckm-skill-plan.md +0 -50
  219. package/.opencode/commands/ckm-skill-update.md +0 -35
  220. package/.opencode/commands/ckm-slides-create.md +0 -8
  221. package/.opencode/commands/ckm-social-schedule.md +0 -54
  222. package/.opencode/commands/ckm-social.md +0 -69
  223. package/.opencode/commands/ckm-storage-list.md +0 -90
  224. package/.opencode/commands/ckm-storage-sync.md +0 -92
  225. package/.opencode/commands/ckm-storage-upload.md +0 -80
  226. package/.opencode/commands/ckm-storage-url.md +0 -66
  227. package/.opencode/commands/ckm-test-ui.md +0 -91
  228. package/.opencode/commands/ckm-test-workflow.md +0 -106
  229. package/.opencode/commands/ckm-use-mcp.md +0 -34
  230. package/.opencode/commands/ckm-video-create.md +0 -326
  231. package/.opencode/commands/ckm-video-script-create.md +0 -395
  232. package/.opencode/commands/ckm-video-storyboard-create.md +0 -214
  233. package/.opencode/commands/ckm-watzup.md +0 -9
  234. package/.opencode/commands/ckm-worktree.md +0 -125
  235. package/.opencode/commands/ckm-write-audit.md +0 -97
  236. package/.opencode/commands/ckm-write-blog-youtube.md +0 -158
  237. package/.opencode/commands/ckm-write-blog.md +0 -85
  238. package/.opencode/commands/ckm-write-cro.md +0 -42
  239. package/.opencode/commands/ckm-write-enhance.md +0 -13
  240. package/.opencode/commands/ckm-write-fast.md +0 -12
  241. package/.opencode/commands/ckm-write-formula.md +0 -116
  242. package/.opencode/commands/ckm-write-good.md +0 -16
  243. package/.opencode/commands/ckm-write-publish.md +0 -74
  244. package/.opencode/commands/ckm-youtube-blog.md +0 -136
  245. package/.opencode/commands/ckm-youtube-infographic.md +0 -156
  246. package/.opencode/commands/ckm-youtube-social.md +0 -169
  247. package/.opencode/package.json +0 -8
  248. package/.opencode/plugin/context-injector.ts +0 -84
  249. package/.opencode/plugin/lib/ck-config-utils.cjs +0 -816
  250. package/.opencode/plugin/lib/colors.cjs +0 -95
  251. package/.opencode/plugin/lib/context-builder.cjs +0 -600
  252. package/.opencode/plugin/lib/privacy-checker.cjs +0 -297
  253. package/.opencode/plugin/lib/project-detector.cjs +0 -430
  254. package/.opencode/plugin/lib/scout-checker.cjs +0 -172
  255. package/.opencode/plugin/privacy-block.ts +0 -32
  256. package/.opencode/plugin/scout-block/broad-pattern-detector.cjs +0 -266
  257. package/.opencode/plugin/scout-block/error-formatter.cjs +0 -156
  258. package/.opencode/plugin/scout-block/path-extractor.cjs +0 -238
  259. package/.opencode/plugin/scout-block/pattern-matcher.cjs +0 -184
  260. package/.opencode/plugin/scout-block/vendor/ignore.cjs +0 -627
  261. package/.opencode/plugin/scout-block.ts +0 -40
  262. package/.opencode/scripts/README.md +0 -153
  263. package/.opencode/scripts/ck-help.py +0 -1164
  264. package/.opencode/scripts/commands_data.yaml +0 -363
  265. package/.opencode/scripts/fix-shebang-permissions.sh +0 -50
  266. package/.opencode/scripts/requirements.txt +0 -1
  267. package/.opencode/scripts/resolve_env.py +0 -329
  268. package/.opencode/scripts/scan_commands.py +0 -98
  269. package/.opencode/scripts/scan_skills.py +0 -186
  270. package/.opencode/scripts/set-active-plan.cjs +0 -50
  271. package/.opencode/scripts/skills_data.yaml +0 -370
  272. package/.opencode/scripts/test-ck-help.py +0 -218
  273. package/.opencode/scripts/validate-docs.cjs +0 -342
  274. package/.opencode/scripts/win_compat.py +0 -57
  275. package/.opencode/scripts/worktree.cjs +0 -822
  276. package/.opencode/scripts/worktree.test.cjs +0 -759
  277. package/.opencode/skills/ab-test-setup/SKILL.md +0 -512
  278. package/.opencode/skills/ads-management/SKILL.md +0 -134
  279. package/.opencode/skills/ads-management/references/ad-copy-templates.md +0 -82
  280. package/.opencode/skills/ads-management/references/audience-targeting.md +0 -97
  281. package/.opencode/skills/ads-management/references/campaign-setup-and-bidding.md +0 -88
  282. package/.opencode/skills/ads-management/references/competitor-analysis-and-tools.md +0 -67
  283. package/.opencode/skills/ads-management/references/creative-asset-generation.md +0 -110
  284. package/.opencode/skills/ads-management/references/measurement-and-attribution.md +0 -63
  285. package/.opencode/skills/ads-management/references/optimization-playbook.md +0 -83
  286. package/.opencode/skills/ads-management/references/platform-specs.md +0 -64
  287. package/.opencode/skills/ads-management/scripts/google-ads-manager.py +0 -294
  288. package/.opencode/skills/ads-management/scripts/meta-ads-manager.py +0 -360
  289. package/.opencode/skills/affiliate-marketing/SKILL.md +0 -96
  290. package/.opencode/skills/affiliate-marketing/references/case-studies.md +0 -66
  291. package/.opencode/skills/affiliate-marketing/references/compliance-legal.md +0 -78
  292. package/.opencode/skills/affiliate-marketing/references/fraud-prevention.md +0 -81
  293. package/.opencode/skills/affiliate-marketing/references/kol-koc-partnerships.md +0 -86
  294. package/.opencode/skills/affiliate-marketing/references/outreach-templates.md +0 -72
  295. package/.opencode/skills/affiliate-marketing/references/platform-selection.md +0 -82
  296. package/.opencode/skills/affiliate-marketing/references/program-structure.md +0 -74
  297. package/.opencode/skills/agent-browser/SKILL.md +0 -297
  298. package/.opencode/skills/agent-browser/references/.gitkeep +0 -0
  299. package/.opencode/skills/agent-browser/references/agent-browser-vs-chrome-devtools.md +0 -112
  300. package/.opencode/skills/agent-browser/references/browserbase-cloud-setup.md +0 -161
  301. package/.opencode/skills/ai-artist/SKILL.md +0 -122
  302. package/.opencode/skills/ai-artist/data/awesome-prompts.csv +0 -3592
  303. package/.opencode/skills/ai-artist/data/domains.csv +0 -16
  304. package/.opencode/skills/ai-artist/data/image-styles.csv +0 -21
  305. package/.opencode/skills/ai-artist/data/lighting.csv +0 -19
  306. package/.opencode/skills/ai-artist/data/llm-patterns.csv +0 -17
  307. package/.opencode/skills/ai-artist/data/nano-banana-templates.csv +0 -17
  308. package/.opencode/skills/ai-artist/data/platforms.csv +0 -11
  309. package/.opencode/skills/ai-artist/data/quality-modifiers.csv +0 -26
  310. package/.opencode/skills/ai-artist/data/styles.csv +0 -26
  311. package/.opencode/skills/ai-artist/data/subjects.csv +0 -17
  312. package/.opencode/skills/ai-artist/data/techniques.csv +0 -19
  313. package/.opencode/skills/ai-artist/data/use-cases.csv +0 -16
  314. package/.opencode/skills/ai-artist/references/advanced-techniques.md +0 -184
  315. package/.opencode/skills/ai-artist/references/awesome-nano-banana-pro-prompts.md +0 -8575
  316. package/.opencode/skills/ai-artist/references/character-consistency.md +0 -160
  317. package/.opencode/skills/ai-artist/references/domain-code.md +0 -66
  318. package/.opencode/skills/ai-artist/references/domain-data.md +0 -72
  319. package/.opencode/skills/ai-artist/references/domain-marketing.md +0 -66
  320. package/.opencode/skills/ai-artist/references/domain-patterns.md +0 -33
  321. package/.opencode/skills/ai-artist/references/domain-writing.md +0 -68
  322. package/.opencode/skills/ai-artist/references/image-generation-workflow.md +0 -124
  323. package/.opencode/skills/ai-artist/references/image-prompting.md +0 -141
  324. package/.opencode/skills/ai-artist/references/llm-prompting.md +0 -165
  325. package/.opencode/skills/ai-artist/references/nano-banana-pro-examples.md +0 -132
  326. package/.opencode/skills/ai-artist/references/nano-banana.md +0 -59
  327. package/.opencode/skills/ai-artist/references/reasoning-techniques.md +0 -201
  328. package/.opencode/skills/ai-artist/references/validation-workflow.md +0 -117
  329. package/.opencode/skills/ai-artist/scripts/core.py +0 -201
  330. package/.opencode/skills/ai-artist/scripts/extract_prompts.py +0 -102
  331. package/.opencode/skills/ai-artist/scripts/generate.py +0 -371
  332. package/.opencode/skills/ai-artist/scripts/prompt_builder.py +0 -234
  333. package/.opencode/skills/ai-artist/scripts/search.py +0 -111
  334. package/.opencode/skills/ai-multimodal/SKILL.md +0 -108
  335. package/.opencode/skills/ai-multimodal/assets/demo-minimax/minimax-music-midnight-glow.mp3 +0 -0
  336. package/.opencode/skills/ai-multimodal/assets/demo-minimax/minimax-speech-demo.mp3 +0 -0
  337. package/.opencode/skills/ai-multimodal/assets/demo-minimax/minimax-speech-vietnamese.mp3 +0 -0
  338. package/.opencode/skills/ai-multimodal/assets/demo-minimax/minimax-video-kitsune.mp4 +0 -0
  339. package/.opencode/skills/ai-multimodal/references/audio-processing.md +0 -387
  340. package/.opencode/skills/ai-multimodal/references/image-generation.md +0 -1002
  341. package/.opencode/skills/ai-multimodal/references/minimax-generation.md +0 -141
  342. package/.opencode/skills/ai-multimodal/references/music-generation.md +0 -311
  343. package/.opencode/skills/ai-multimodal/references/video-analysis.md +0 -515
  344. package/.opencode/skills/ai-multimodal/references/video-generation.md +0 -457
  345. package/.opencode/skills/ai-multimodal/references/vision-understanding.md +0 -492
  346. package/.opencode/skills/ai-multimodal/scripts/.coverage +0 -0
  347. package/.opencode/skills/ai-multimodal/scripts/check_setup.py +0 -316
  348. package/.opencode/skills/ai-multimodal/scripts/document_converter.py +0 -395
  349. package/.opencode/skills/ai-multimodal/scripts/gemini_batch_process.py +0 -1187
  350. package/.opencode/skills/ai-multimodal/scripts/media_optimizer.py +0 -506
  351. package/.opencode/skills/ai-multimodal/scripts/minimax_api_client.py +0 -189
  352. package/.opencode/skills/ai-multimodal/scripts/minimax_cli.py +0 -178
  353. package/.opencode/skills/ai-multimodal/scripts/minimax_generate.py +0 -278
  354. package/.opencode/skills/ai-multimodal/scripts/requirements.txt +0 -26
  355. package/.opencode/skills/analytics/SKILL.md +0 -132
  356. package/.opencode/skills/analytics/package.json +0 -19
  357. package/.opencode/skills/analytics/references/analysis-workflows.md +0 -104
  358. package/.opencode/skills/analytics/references/attribution-models.md +0 -75
  359. package/.opencode/skills/analytics/references/ga-admin-api.md +0 -219
  360. package/.opencode/skills/analytics/references/ga-data-api.md +0 -344
  361. package/.opencode/skills/analytics/references/marketing-kpis.md +0 -63
  362. package/.opencode/skills/analytics/references/report-templates.md +0 -411
  363. package/.opencode/skills/analytics/scripts/ga-auth-setup.cjs +0 -283
  364. package/.opencode/skills/analytics/scripts/ga-config-loader.cjs +0 -320
  365. package/.opencode/skills/analytics/scripts/ga-list-accounts.cjs +0 -277
  366. package/.opencode/skills/analytics/scripts/ga-run-report.cjs +0 -334
  367. package/.opencode/skills/analyze/SKILL.md +0 -80
  368. package/.opencode/skills/analyze/references/report.md +0 -62
  369. package/.opencode/skills/ask/SKILL.md +0 -60
  370. package/.opencode/skills/assets-organizing/SKILL.md +0 -164
  371. package/.opencode/skills/assets-organizing/references/asset-types.md +0 -1478
  372. package/.opencode/skills/assets-organizing/references/directory-structure.md +0 -178
  373. package/.opencode/skills/assets-organizing/references/naming-conventions.md +0 -85
  374. package/.opencode/skills/backend-development/SKILL.md +0 -98
  375. package/.opencode/skills/backend-development/references/backend-api-design.md +0 -495
  376. package/.opencode/skills/backend-development/references/backend-architecture.md +0 -454
  377. package/.opencode/skills/backend-development/references/backend-authentication.md +0 -338
  378. package/.opencode/skills/backend-development/references/backend-code-quality.md +0 -659
  379. package/.opencode/skills/backend-development/references/backend-debugging.md +0 -904
  380. package/.opencode/skills/backend-development/references/backend-devops.md +0 -494
  381. package/.opencode/skills/backend-development/references/backend-mindset.md +0 -387
  382. package/.opencode/skills/backend-development/references/backend-performance.md +0 -397
  383. package/.opencode/skills/backend-development/references/backend-security.md +0 -290
  384. package/.opencode/skills/backend-development/references/backend-technologies.md +0 -256
  385. package/.opencode/skills/backend-development/references/backend-testing.md +0 -429
  386. package/.opencode/skills/banner-design/SKILL.md +0 -192
  387. package/.opencode/skills/banner-design/references/banner-sizes-and-styles.md +0 -118
  388. package/.opencode/skills/better-auth/SKILL.md +0 -207
  389. package/.opencode/skills/better-auth/references/advanced-features.md +0 -553
  390. package/.opencode/skills/better-auth/references/database-integration.md +0 -577
  391. package/.opencode/skills/better-auth/references/email-password-auth.md +0 -416
  392. package/.opencode/skills/better-auth/references/oauth-providers.md +0 -430
  393. package/.opencode/skills/better-auth/scripts/.coverage +0 -0
  394. package/.opencode/skills/better-auth/scripts/better_auth_init.py +0 -521
  395. package/.opencode/skills/better-auth/scripts/requirements.txt +0 -15
  396. package/.opencode/skills/bootstrap/SKILL.md +0 -105
  397. package/.opencode/skills/bootstrap/references/shared-phases.md +0 -59
  398. package/.opencode/skills/bootstrap/references/workflow-auto.md +0 -52
  399. package/.opencode/skills/bootstrap/references/workflow-fast.md +0 -50
  400. package/.opencode/skills/bootstrap/references/workflow-full.md +0 -60
  401. package/.opencode/skills/bootstrap/references/workflow-parallel.md +0 -59
  402. package/.opencode/skills/brainstorm/SKILL.md +0 -79
  403. package/.opencode/skills/brand/SKILL.md +0 -97
  404. package/.opencode/skills/brand/references/approval-checklist.md +0 -169
  405. package/.opencode/skills/brand/references/asset-organization.md +0 -157
  406. package/.opencode/skills/brand/references/brand-guideline-template.md +0 -140
  407. package/.opencode/skills/brand/references/color-palette-management.md +0 -186
  408. package/.opencode/skills/brand/references/consistency-checklist.md +0 -94
  409. package/.opencode/skills/brand/references/logo-usage-rules.md +0 -185
  410. package/.opencode/skills/brand/references/messaging-framework.md +0 -85
  411. package/.opencode/skills/brand/references/typography-specifications.md +0 -214
  412. package/.opencode/skills/brand/references/update.md +0 -118
  413. package/.opencode/skills/brand/references/visual-identity.md +0 -96
  414. package/.opencode/skills/brand/references/voice-framework.md +0 -88
  415. package/.opencode/skills/brand/scripts/extract-colors.cjs +0 -341
  416. package/.opencode/skills/brand/scripts/inject-brand-context.cjs +0 -349
  417. package/.opencode/skills/brand/scripts/sync-brand-to-tokens.cjs +0 -266
  418. package/.opencode/skills/brand/scripts/validate-asset.cjs +0 -387
  419. package/.opencode/skills/brand/templates/brand-guidelines-starter.md +0 -275
  420. package/.opencode/skills/campaign/SKILL.md +0 -73
  421. package/.opencode/skills/campaign/references/analyze.md +0 -50
  422. package/.opencode/skills/campaign/references/budget-allocation.md +0 -85
  423. package/.opencode/skills/campaign/references/campaign-brief.md +0 -79
  424. package/.opencode/skills/campaign/references/create.md +0 -211
  425. package/.opencode/skills/campaign/references/email.md +0 -59
  426. package/.opencode/skills/campaign/references/launch-checklist.md +0 -70
  427. package/.opencode/skills/campaign/references/optimization-framework.md +0 -103
  428. package/.opencode/skills/campaign/references/status.md +0 -34
  429. package/.opencode/skills/chrome-devtools/SKILL.md +0 -475
  430. package/.opencode/skills/chrome-devtools/references/cdp-domains.md +0 -694
  431. package/.opencode/skills/chrome-devtools/references/performance-guide.md +0 -940
  432. package/.opencode/skills/chrome-devtools/references/puppeteer-reference.md +0 -953
  433. package/.opencode/skills/chrome-devtools/scripts/README.md +0 -272
  434. package/.opencode/skills/chrome-devtools/scripts/__tests__/error-handling.test.js +0 -102
  435. package/.opencode/skills/chrome-devtools/scripts/__tests__/selector.test.js +0 -210
  436. package/.opencode/skills/chrome-devtools/scripts/aria-snapshot.js +0 -362
  437. package/.opencode/skills/chrome-devtools/scripts/click.js +0 -83
  438. package/.opencode/skills/chrome-devtools/scripts/connect-chrome.js +0 -146
  439. package/.opencode/skills/chrome-devtools/scripts/console.js +0 -79
  440. package/.opencode/skills/chrome-devtools/scripts/evaluate.js +0 -53
  441. package/.opencode/skills/chrome-devtools/scripts/fill.js +0 -76
  442. package/.opencode/skills/chrome-devtools/scripts/import-cookies.js +0 -205
  443. package/.opencode/skills/chrome-devtools/scripts/inject-auth.js +0 -229
  444. package/.opencode/skills/chrome-devtools/scripts/install-deps.sh +0 -181
  445. package/.opencode/skills/chrome-devtools/scripts/install.sh +0 -83
  446. package/.opencode/skills/chrome-devtools/scripts/lib/browser.js +0 -318
  447. package/.opencode/skills/chrome-devtools/scripts/lib/selector.js +0 -178
  448. package/.opencode/skills/chrome-devtools/scripts/navigate.js +0 -54
  449. package/.opencode/skills/chrome-devtools/scripts/network.js +0 -106
  450. package/.opencode/skills/chrome-devtools/scripts/package.json +0 -16
  451. package/.opencode/skills/chrome-devtools/scripts/performance.js +0 -149
  452. package/.opencode/skills/chrome-devtools/scripts/screenshot.js +0 -198
  453. package/.opencode/skills/chrome-devtools/scripts/select-ref.js +0 -131
  454. package/.opencode/skills/chrome-devtools/scripts/snapshot.js +0 -135
  455. package/.opencode/skills/chrome-devtools/scripts/ws-debug.js +0 -44
  456. package/.opencode/skills/chrome-devtools/scripts/ws-full-debug.js +0 -107
  457. package/.opencode/skills/cip-design/SKILL.md +0 -161
  458. package/.opencode/skills/cip-design/data/deliverables.csv +0 -51
  459. package/.opencode/skills/cip-design/data/industries.csv +0 -21
  460. package/.opencode/skills/cip-design/data/mockup-contexts.csv +0 -21
  461. package/.opencode/skills/cip-design/data/styles.csv +0 -21
  462. package/.opencode/skills/cip-design/references/deliverable-guide.md +0 -95
  463. package/.opencode/skills/cip-design/references/prompt-engineering.md +0 -84
  464. package/.opencode/skills/cip-design/references/style-guide.md +0 -68
  465. package/.opencode/skills/cip-design/scripts/core.py +0 -215
  466. package/.opencode/skills/cip-design/scripts/generate.py +0 -488
  467. package/.opencode/skills/cip-design/scripts/render-html.py +0 -424
  468. package/.opencode/skills/cip-design/scripts/search.py +0 -127
  469. package/.opencode/skills/ck-autoresearch/SKILL.md +0 -153
  470. package/.opencode/skills/ck-autoresearch/references/autonomous-loop-protocol.md +0 -193
  471. package/.opencode/skills/ck-autoresearch/references/git-memory-pattern.md +0 -109
  472. package/.opencode/skills/ck-autoresearch/references/guard-and-noise.md +0 -140
  473. package/.opencode/skills/ck-autoresearch/references/metric-library.md +0 -200
  474. package/.opencode/skills/ck-autoresearch/references/results-logging.md +0 -74
  475. package/.opencode/skills/ck-debug/SKILL.md +0 -123
  476. package/.opencode/skills/ck-debug/references/defense-in-depth.md +0 -124
  477. package/.opencode/skills/ck-debug/references/frontend-verification.md +0 -103
  478. package/.opencode/skills/ck-debug/references/investigation-methodology.md +0 -101
  479. package/.opencode/skills/ck-debug/references/log-and-ci-analysis.md +0 -97
  480. package/.opencode/skills/ck-debug/references/performance-diagnostics.md +0 -113
  481. package/.opencode/skills/ck-debug/references/reporting-standards.md +0 -122
  482. package/.opencode/skills/ck-debug/references/root-cause-tracing.md +0 -122
  483. package/.opencode/skills/ck-debug/references/systematic-debugging.md +0 -102
  484. package/.opencode/skills/ck-debug/references/task-management-debugging.md +0 -155
  485. package/.opencode/skills/ck-debug/references/verification.md +0 -123
  486. package/.opencode/skills/ck-debug/scripts/find-polluter.sh +0 -63
  487. package/.opencode/skills/ck-debug/scripts/find-polluter.test.md +0 -102
  488. package/.opencode/skills/ck-loop/SKILL.md +0 -149
  489. package/.opencode/skills/ck-loop/references/autonomous-loop-protocol.md +0 -193
  490. package/.opencode/skills/ck-loop/references/git-memory-pattern.md +0 -109
  491. package/.opencode/skills/ck-loop/references/guard-and-noise.md +0 -140
  492. package/.opencode/skills/ck-loop/references/metric-library.md +0 -200
  493. package/.opencode/skills/ck-loop/references/results-logging.md +0 -74
  494. package/.opencode/skills/ck-plan/SKILL.md +0 -198
  495. package/.opencode/skills/ck-plan/references/archive-workflow.md +0 -53
  496. package/.opencode/skills/ck-plan/references/codebase-understanding.md +0 -62
  497. package/.opencode/skills/ck-plan/references/output-standards.md +0 -145
  498. package/.opencode/skills/ck-plan/references/plan-organization.md +0 -183
  499. package/.opencode/skills/ck-plan/references/red-team-personas.md +0 -69
  500. package/.opencode/skills/ck-plan/references/red-team-workflow.md +0 -77
  501. package/.opencode/skills/ck-plan/references/research-phase.md +0 -49
  502. package/.opencode/skills/ck-plan/references/scope-challenge.md +0 -90
  503. package/.opencode/skills/ck-plan/references/solution-design.md +0 -63
  504. package/.opencode/skills/ck-plan/references/task-management.md +0 -134
  505. package/.opencode/skills/ck-plan/references/validate-question-framework.md +0 -80
  506. package/.opencode/skills/ck-plan/references/validate-workflow.md +0 -65
  507. package/.opencode/skills/ck-plan/references/workflow-modes.md +0 -155
  508. package/.opencode/skills/ck-predict/SKILL.md +0 -119
  509. package/.opencode/skills/ck-scenario/SKILL.md +0 -113
  510. package/.opencode/skills/ck-security/SKILL.md +0 -144
  511. package/.opencode/skills/ck-security/references/stride-owasp-checklist.md +0 -128
  512. package/.opencode/skills/ckm-storage/SKILL.md +0 -23
  513. package/.opencode/skills/ckm-storage/references/list.md +0 -87
  514. package/.opencode/skills/ckm-storage/references/sync.md +0 -89
  515. package/.opencode/skills/ckm-storage/references/upload.md +0 -77
  516. package/.opencode/skills/ckm-storage/references/url.md +0 -63
  517. package/.opencode/skills/claude-code/SKILL.md +0 -64
  518. package/.opencode/skills/claude-code/references/advanced-features.md +0 -399
  519. package/.opencode/skills/claude-code/references/agent-skills.md +0 -399
  520. package/.opencode/skills/claude-code/references/api-reference.md +0 -498
  521. package/.opencode/skills/claude-code/references/best-practices.md +0 -447
  522. package/.opencode/skills/claude-code/references/cicd-integration.md +0 -428
  523. package/.opencode/skills/claude-code/references/common-workflows.md +0 -119
  524. package/.opencode/skills/claude-code/references/configuration.md +0 -480
  525. package/.opencode/skills/claude-code/references/enterprise-features.md +0 -472
  526. package/.opencode/skills/claude-code/references/getting-started.md +0 -252
  527. package/.opencode/skills/claude-code/references/hooks-and-plugins.md +0 -444
  528. package/.opencode/skills/claude-code/references/hooks-comprehensive.md +0 -622
  529. package/.opencode/skills/claude-code/references/ide-integration.md +0 -316
  530. package/.opencode/skills/claude-code/references/mcp-integration.md +0 -386
  531. package/.opencode/skills/claude-code/references/slash-commands.md +0 -489
  532. package/.opencode/skills/claude-code/references/troubleshooting.md +0 -456
  533. package/.opencode/skills/code-review/SKILL.md +0 -147
  534. package/.opencode/skills/code-review/references/adversarial-review.md +0 -223
  535. package/.opencode/skills/code-review/references/checklist-workflow.md +0 -100
  536. package/.opencode/skills/code-review/references/checklists/api.md +0 -52
  537. package/.opencode/skills/code-review/references/checklists/base.md +0 -100
  538. package/.opencode/skills/code-review/references/checklists/web-app.md +0 -54
  539. package/.opencode/skills/code-review/references/code-review-reception.md +0 -209
  540. package/.opencode/skills/code-review/references/codebase-scan-workflow.md +0 -30
  541. package/.opencode/skills/code-review/references/edge-case-scouting.md +0 -119
  542. package/.opencode/skills/code-review/references/input-mode-resolution.md +0 -135
  543. package/.opencode/skills/code-review/references/parallel-review-workflow.md +0 -76
  544. package/.opencode/skills/code-review/references/requesting-code-review.md +0 -105
  545. package/.opencode/skills/code-review/references/spec-compliance-review.md +0 -43
  546. package/.opencode/skills/code-review/references/task-management-reviews.md +0 -155
  547. package/.opencode/skills/code-review/references/verification-before-completion.md +0 -139
  548. package/.opencode/skills/coding-level/SKILL.md +0 -59
  549. package/.opencode/skills/competitor/SKILL.md +0 -95
  550. package/.opencode/skills/competitor/references/alternatives.md +0 -245
  551. package/.opencode/skills/content-hub/SKILL.md +0 -83
  552. package/.opencode/skills/content-hub/assets/hub.css +0 -693
  553. package/.opencode/skills/content-hub/assets/hub.js +0 -514
  554. package/.opencode/skills/content-hub/assets/template.html +0 -185
  555. package/.opencode/skills/content-hub/scripts/lib/ai-bridge.cjs +0 -165
  556. package/.opencode/skills/content-hub/scripts/lib/brand-context.cjs +0 -118
  557. package/.opencode/skills/content-hub/scripts/lib/port-finder.cjs +0 -43
  558. package/.opencode/skills/content-hub/scripts/lib/process-mgr.cjs +0 -102
  559. package/.opencode/skills/content-hub/scripts/lib/router.cjs +0 -276
  560. package/.opencode/skills/content-hub/scripts/lib/scanner.cjs +0 -278
  561. package/.opencode/skills/content-hub/scripts/server.cjs +0 -140
  562. package/.opencode/skills/content-hub/scripts/start-all.sh +0 -58
  563. package/.opencode/skills/content-marketing/SKILL.md +0 -87
  564. package/.opencode/skills/content-marketing/references/blog-post-templates.md +0 -108
  565. package/.opencode/skills/content-marketing/references/content-audit-checklist.md +0 -76
  566. package/.opencode/skills/content-marketing/references/content-strategy-framework.md +0 -72
  567. package/.opencode/skills/content-marketing/references/editorial-calendar-template.md +0 -59
  568. package/.opencode/skills/context-engineering/SKILL.md +0 -110
  569. package/.opencode/skills/context-engineering/references/context-compression.md +0 -84
  570. package/.opencode/skills/context-engineering/references/context-degradation.md +0 -93
  571. package/.opencode/skills/context-engineering/references/context-fundamentals.md +0 -75
  572. package/.opencode/skills/context-engineering/references/context-optimization.md +0 -82
  573. package/.opencode/skills/context-engineering/references/evaluation.md +0 -89
  574. package/.opencode/skills/context-engineering/references/memory-systems.md +0 -88
  575. package/.opencode/skills/context-engineering/references/multi-agent-patterns.md +0 -90
  576. package/.opencode/skills/context-engineering/references/project-development.md +0 -97
  577. package/.opencode/skills/context-engineering/references/runtime-awareness.md +0 -202
  578. package/.opencode/skills/context-engineering/references/tool-design.md +0 -86
  579. package/.opencode/skills/context-engineering/scripts/compression_evaluator.py +0 -349
  580. package/.opencode/skills/context-engineering/scripts/context_analyzer.py +0 -317
  581. package/.opencode/skills/cook/README.md +0 -86
  582. package/.opencode/skills/cook/SKILL.md +0 -115
  583. package/.opencode/skills/cook/references/intent-detection.md +0 -101
  584. package/.opencode/skills/cook/references/review-cycle.md +0 -75
  585. package/.opencode/skills/cook/references/subagent-patterns.md +0 -75
  586. package/.opencode/skills/cook/references/workflow-steps.md +0 -166
  587. package/.opencode/skills/copywriting/SKILL.md +0 -88
  588. package/.opencode/skills/copywriting/references/copy-formulas.md +0 -150
  589. package/.opencode/skills/copywriting/references/cta-patterns.md +0 -168
  590. package/.opencode/skills/copywriting/references/email-copy.md +0 -193
  591. package/.opencode/skills/copywriting/references/headline-templates.md +0 -140
  592. package/.opencode/skills/copywriting/references/landing-page-copy.md +0 -175
  593. package/.opencode/skills/copywriting/references/power-words.md +0 -189
  594. package/.opencode/skills/copywriting/references/social-media-copy.md +0 -222
  595. package/.opencode/skills/copywriting/references/workflow-cro.md +0 -83
  596. package/.opencode/skills/copywriting/references/workflow-enhance.md +0 -32
  597. package/.opencode/skills/copywriting/references/workflow-fast.md +0 -29
  598. package/.opencode/skills/copywriting/references/workflow-good.md +0 -39
  599. package/.opencode/skills/copywriting/references/writing-styles.md +0 -247
  600. package/.opencode/skills/copywriting/scripts/extract-writing-styles.py +0 -308
  601. package/.opencode/skills/copywriting/templates/copy-brief.md +0 -49
  602. package/.opencode/skills/creativity/SKILL.md +0 -189
  603. package/.opencode/skills/creativity/data/creative-reasoning.csv +0 -31
  604. package/.opencode/skills/creativity/data/music.csv +0 -18
  605. package/.opencode/skills/creativity/data/platforms.csv +0 -19
  606. package/.opencode/skills/creativity/data/styles.csv +0 -56
  607. package/.opencode/skills/creativity/data/voiceover.csv +0 -13
  608. package/.opencode/skills/creativity/references/audio-music.md +0 -74
  609. package/.opencode/skills/creativity/references/color-psychology.md +0 -68
  610. package/.opencode/skills/creativity/references/creative-styles-part1.md +0 -31
  611. package/.opencode/skills/creativity/references/creative-styles-part2.md +0 -36
  612. package/.opencode/skills/creativity/references/visual-trends.md +0 -84
  613. package/.opencode/skills/creativity/references/voiceover-styles.md +0 -107
  614. package/.opencode/skills/creativity/scripts/core.py +0 -179
  615. package/.opencode/skills/creativity/scripts/creative_brief.py +0 -470
  616. package/.opencode/skills/creativity/scripts/search.py +0 -62
  617. package/.opencode/skills/dashboard/SKILL.md +0 -108
  618. package/.opencode/skills/dashboard/references/check.md +0 -93
  619. package/.opencode/skills/databases/SKILL.md +0 -236
  620. package/.opencode/skills/databases/analytics.md +0 -198
  621. package/.opencode/skills/databases/db-design.md +0 -188
  622. package/.opencode/skills/databases/incremental-etl.md +0 -213
  623. package/.opencode/skills/databases/references/mongodb-aggregation.md +0 -447
  624. package/.opencode/skills/databases/references/mongodb-atlas.md +0 -465
  625. package/.opencode/skills/databases/references/mongodb-crud.md +0 -408
  626. package/.opencode/skills/databases/references/mongodb-indexing.md +0 -442
  627. package/.opencode/skills/databases/references/postgresql-administration.md +0 -594
  628. package/.opencode/skills/databases/references/postgresql-performance.md +0 -527
  629. package/.opencode/skills/databases/references/postgresql-psql-cli.md +0 -467
  630. package/.opencode/skills/databases/references/postgresql-queries.md +0 -475
  631. package/.opencode/skills/databases/scripts/.coverage +0 -0
  632. package/.opencode/skills/databases/scripts/db_backup.py +0 -502
  633. package/.opencode/skills/databases/scripts/db_migrate.py +0 -425
  634. package/.opencode/skills/databases/scripts/db_performance_check.py +0 -456
  635. package/.opencode/skills/databases/scripts/requirements.txt +0 -20
  636. package/.opencode/skills/databases/stacks/bigquery.md +0 -231
  637. package/.opencode/skills/databases/stacks/d1_cloudflare.md +0 -137
  638. package/.opencode/skills/databases/stacks/mysql.md +0 -216
  639. package/.opencode/skills/databases/stacks/postgres.md +0 -235
  640. package/.opencode/skills/databases/stacks/sqlite.md +0 -244
  641. package/.opencode/skills/databases/transactional.md +0 -176
  642. package/.opencode/skills/debugging/SKILL.md +0 -87
  643. package/.opencode/skills/debugging/references/defense-in-depth.md +0 -124
  644. package/.opencode/skills/debugging/references/root-cause-tracing.md +0 -122
  645. package/.opencode/skills/debugging/references/systematic-debugging.md +0 -102
  646. package/.opencode/skills/debugging/references/verification.md +0 -123
  647. package/.opencode/skills/debugging/scripts/find-polluter.sh +0 -63
  648. package/.opencode/skills/debugging/scripts/find-polluter.test.md +0 -102
  649. package/.opencode/skills/deploy/SKILL.md +0 -157
  650. package/.opencode/skills/deploy/references/platform-config-templates.md +0 -35
  651. package/.opencode/skills/deploy/references/platforms/aws.md +0 -58
  652. package/.opencode/skills/deploy/references/platforms/cloudflare.md +0 -41
  653. package/.opencode/skills/deploy/references/platforms/coolify.md +0 -32
  654. package/.opencode/skills/deploy/references/platforms/digitalocean.md +0 -45
  655. package/.opencode/skills/deploy/references/platforms/dokploy.md +0 -29
  656. package/.opencode/skills/deploy/references/platforms/flyio.md +0 -54
  657. package/.opencode/skills/deploy/references/platforms/gcp.md +0 -45
  658. package/.opencode/skills/deploy/references/platforms/github-pages.md +0 -56
  659. package/.opencode/skills/deploy/references/platforms/heroku.md +0 -31
  660. package/.opencode/skills/deploy/references/platforms/netlify.md +0 -39
  661. package/.opencode/skills/deploy/references/platforms/railway.md +0 -38
  662. package/.opencode/skills/deploy/references/platforms/render.md +0 -39
  663. package/.opencode/skills/deploy/references/platforms/tose.md +0 -35
  664. package/.opencode/skills/deploy/references/platforms/vercel.md +0 -37
  665. package/.opencode/skills/deploy/references/platforms/vultr.md +0 -27
  666. package/.opencode/skills/design/SKILL.md +0 -302
  667. package/.opencode/skills/design/data/cip/deliverables.csv +0 -51
  668. package/.opencode/skills/design/data/cip/industries.csv +0 -21
  669. package/.opencode/skills/design/data/cip/mockup-contexts.csv +0 -21
  670. package/.opencode/skills/design/data/cip/styles.csv +0 -21
  671. package/.opencode/skills/design/data/icon/styles.csv +0 -16
  672. package/.opencode/skills/design/data/logo/colors.csv +0 -56
  673. package/.opencode/skills/design/data/logo/industries.csv +0 -56
  674. package/.opencode/skills/design/data/logo/styles.csv +0 -56
  675. package/.opencode/skills/design/references/banner-sizes-and-styles.md +0 -118
  676. package/.opencode/skills/design/references/cip-deliverable-guide.md +0 -95
  677. package/.opencode/skills/design/references/cip-design.md +0 -121
  678. package/.opencode/skills/design/references/cip-prompt-engineering.md +0 -84
  679. package/.opencode/skills/design/references/cip-style-guide.md +0 -68
  680. package/.opencode/skills/design/references/design-routing.md +0 -207
  681. package/.opencode/skills/design/references/icon-design.md +0 -122
  682. package/.opencode/skills/design/references/logo-color-psychology.md +0 -101
  683. package/.opencode/skills/design/references/logo-design.md +0 -92
  684. package/.opencode/skills/design/references/logo-prompt-engineering.md +0 -158
  685. package/.opencode/skills/design/references/logo-style-guide.md +0 -109
  686. package/.opencode/skills/design/references/slides-copywriting-formulas.md +0 -84
  687. package/.opencode/skills/design/references/slides-create.md +0 -4
  688. package/.opencode/skills/design/references/slides-html-template.md +0 -295
  689. package/.opencode/skills/design/references/slides-layout-patterns.md +0 -137
  690. package/.opencode/skills/design/references/slides-strategies.md +0 -94
  691. package/.opencode/skills/design/references/slides.md +0 -42
  692. package/.opencode/skills/design/references/social-photos-design.md +0 -329
  693. package/.opencode/skills/design/scripts/cip/core.py +0 -215
  694. package/.opencode/skills/design/scripts/cip/generate.py +0 -488
  695. package/.opencode/skills/design/scripts/cip/render-html.py +0 -424
  696. package/.opencode/skills/design/scripts/cip/search.py +0 -127
  697. package/.opencode/skills/design/scripts/icon/generate.py +0 -487
  698. package/.opencode/skills/design/scripts/logo/core.py +0 -175
  699. package/.opencode/skills/design/scripts/logo/generate.py +0 -363
  700. package/.opencode/skills/design/scripts/logo/search.py +0 -114
  701. package/.opencode/skills/design-system/SKILL.md +0 -244
  702. package/.opencode/skills/design-system/data/slide-backgrounds.csv +0 -11
  703. package/.opencode/skills/design-system/data/slide-charts.csv +0 -26
  704. package/.opencode/skills/design-system/data/slide-color-logic.csv +0 -14
  705. package/.opencode/skills/design-system/data/slide-copy.csv +0 -26
  706. package/.opencode/skills/design-system/data/slide-layout-logic.csv +0 -16
  707. package/.opencode/skills/design-system/data/slide-layouts.csv +0 -26
  708. package/.opencode/skills/design-system/data/slide-strategies.csv +0 -16
  709. package/.opencode/skills/design-system/data/slide-typography.csv +0 -15
  710. package/.opencode/skills/design-system/references/component-specs.md +0 -236
  711. package/.opencode/skills/design-system/references/component-tokens.md +0 -214
  712. package/.opencode/skills/design-system/references/primitive-tokens.md +0 -203
  713. package/.opencode/skills/design-system/references/semantic-tokens.md +0 -215
  714. package/.opencode/skills/design-system/references/states-and-variants.md +0 -241
  715. package/.opencode/skills/design-system/references/tailwind-integration.md +0 -251
  716. package/.opencode/skills/design-system/references/token-architecture.md +0 -224
  717. package/.opencode/skills/design-system/scripts/embed-tokens.cjs +0 -99
  718. package/.opencode/skills/design-system/scripts/fetch-background.py +0 -317
  719. package/.opencode/skills/design-system/scripts/generate-slide.py +0 -753
  720. package/.opencode/skills/design-system/scripts/generate-tokens.cjs +0 -205
  721. package/.opencode/skills/design-system/scripts/html-token-validator.py +0 -327
  722. package/.opencode/skills/design-system/scripts/search-slides.py +0 -218
  723. package/.opencode/skills/design-system/scripts/slide-token-validator.py +0 -35
  724. package/.opencode/skills/design-system/scripts/slide_search_core.py +0 -453
  725. package/.opencode/skills/design-system/scripts/validate-tokens.cjs +0 -251
  726. package/.opencode/skills/design-system/templates/design-tokens-starter.json +0 -143
  727. package/.opencode/skills/devops/SKILL.md +0 -288
  728. package/.opencode/skills/devops/references/browser-rendering.md +0 -305
  729. package/.opencode/skills/devops/references/cloudflare-d1-kv.md +0 -123
  730. package/.opencode/skills/devops/references/cloudflare-platform.md +0 -271
  731. package/.opencode/skills/devops/references/cloudflare-r2-storage.md +0 -280
  732. package/.opencode/skills/devops/references/cloudflare-workers-advanced.md +0 -312
  733. package/.opencode/skills/devops/references/cloudflare-workers-apis.md +0 -309
  734. package/.opencode/skills/devops/references/cloudflare-workers-basics.md +0 -418
  735. package/.opencode/skills/devops/references/docker-basics.md +0 -297
  736. package/.opencode/skills/devops/references/docker-compose.md +0 -292
  737. package/.opencode/skills/devops/references/gcloud-platform.md +0 -297
  738. package/.opencode/skills/devops/references/gcloud-services.md +0 -304
  739. package/.opencode/skills/devops/references/kubernetes-basics.md +0 -99
  740. package/.opencode/skills/devops/references/kubernetes-helm-advanced.md +0 -75
  741. package/.opencode/skills/devops/references/kubernetes-helm.md +0 -81
  742. package/.opencode/skills/devops/references/kubernetes-kubectl.md +0 -74
  743. package/.opencode/skills/devops/references/kubernetes-security-advanced.md +0 -98
  744. package/.opencode/skills/devops/references/kubernetes-security.md +0 -95
  745. package/.opencode/skills/devops/references/kubernetes-troubleshooting-advanced.md +0 -74
  746. package/.opencode/skills/devops/references/kubernetes-troubleshooting.md +0 -49
  747. package/.opencode/skills/devops/references/kubernetes-workflows-advanced.md +0 -75
  748. package/.opencode/skills/devops/references/kubernetes-workflows.md +0 -78
  749. package/.opencode/skills/devops/scripts/cloudflare_deploy.py +0 -269
  750. package/.opencode/skills/devops/scripts/docker_optimize.py +0 -331
  751. package/.opencode/skills/devops/scripts/requirements.txt +0 -20
  752. package/.opencode/skills/docs/SKILL.md +0 -23
  753. package/.opencode/skills/docs/references/init-workflow.md +0 -32
  754. package/.opencode/skills/docs/references/init.md +0 -23
  755. package/.opencode/skills/docs/references/llms.md +0 -8
  756. package/.opencode/skills/docs/references/summarize-workflow.md +0 -18
  757. package/.opencode/skills/docs/references/summarize.md +0 -18
  758. package/.opencode/skills/docs/references/update-workflow.md +0 -59
  759. package/.opencode/skills/docs/references/update.md +0 -32
  760. package/.opencode/skills/docs-seeker/SKILL.md +0 -100
  761. package/.opencode/skills/docs-seeker/package.json +0 -25
  762. package/.opencode/skills/docs-seeker/references/advanced.md +0 -79
  763. package/.opencode/skills/docs-seeker/references/context7-patterns.md +0 -68
  764. package/.opencode/skills/docs-seeker/references/errors.md +0 -68
  765. package/.opencode/skills/docs-seeker/scripts/analyze-llms-txt.js +0 -211
  766. package/.opencode/skills/docs-seeker/scripts/detect-topic.js +0 -172
  767. package/.opencode/skills/docs-seeker/scripts/fetch-docs.js +0 -213
  768. package/.opencode/skills/docs-seeker/scripts/utils/env-loader.js +0 -94
  769. package/.opencode/skills/docs-seeker/workflows/library-search.md +0 -87
  770. package/.opencode/skills/docs-seeker/workflows/repo-analysis.md +0 -91
  771. package/.opencode/skills/docs-seeker/workflows/topic-search.md +0 -77
  772. package/.opencode/skills/elevenlabs/README.md +0 -57
  773. package/.opencode/skills/elevenlabs/SKILL.md +0 -97
  774. package/.opencode/skills/elevenlabs/references/available-models.md +0 -720
  775. package/.opencode/skills/elevenlabs/references/conversational-ai-agents-guide.md +0 -168
  776. package/.opencode/skills/elevenlabs/references/sound-effects-and-music-generation-guide.md +0 -131
  777. package/.opencode/skills/elevenlabs/references/text-to-speech-guide.md +0 -132
  778. package/.opencode/skills/elevenlabs/references/voice-cloning-guide.md +0 -94
  779. package/.opencode/skills/elevenlabs/references/voice-design-prompting-guide.md +0 -96
  780. package/.opencode/skills/elevenlabs/requirements.txt +0 -1
  781. package/.opencode/skills/elevenlabs/scripts/elevenlabs-sound-effects-generator.py +0 -108
  782. package/.opencode/skills/elevenlabs/scripts/elevenlabs-text-to-speech-generator.py +0 -184
  783. package/.opencode/skills/elevenlabs/scripts/elevenlabs-voice-cloner.py +0 -127
  784. package/.opencode/skills/elevenlabs/scripts/elevenlabs-voice-manager.py +0 -194
  785. package/.opencode/skills/email/SKILL.md +0 -56
  786. package/.opencode/skills/email/references/automation-flows.md +0 -429
  787. package/.opencode/skills/email/references/deliverability-checklist.md +0 -73
  788. package/.opencode/skills/email/references/email-templates.md +0 -127
  789. package/.opencode/skills/email/references/flow.md +0 -165
  790. package/.opencode/skills/email/references/sequence.md +0 -166
  791. package/.opencode/skills/email/references/subject-line-formulas.md +0 -67
  792. package/.opencode/skills/find-skills/SKILL.md +0 -137
  793. package/.opencode/skills/fix/SKILL.md +0 -75
  794. package/.opencode/skills/fix/references/complexity-assessment.md +0 -61
  795. package/.opencode/skills/fix/references/diagnosis-protocol.md +0 -133
  796. package/.opencode/skills/fix/references/mode-selection.md +0 -46
  797. package/.opencode/skills/fix/references/parallel-exploration.md +0 -77
  798. package/.opencode/skills/fix/references/prevention-gate.md +0 -87
  799. package/.opencode/skills/fix/references/review-cycle.md +0 -77
  800. package/.opencode/skills/fix/references/skill-activation-matrix.md +0 -65
  801. package/.opencode/skills/fix/references/task-orchestration.md +0 -110
  802. package/.opencode/skills/fix/references/workflow-ci.md +0 -28
  803. package/.opencode/skills/fix/references/workflow-deep.md +0 -91
  804. package/.opencode/skills/fix/references/workflow-logs.md +0 -36
  805. package/.opencode/skills/fix/references/workflow-quick.md +0 -59
  806. package/.opencode/skills/fix/references/workflow-standard.md +0 -86
  807. package/.opencode/skills/fix/references/workflow-test.md +0 -36
  808. package/.opencode/skills/fix/references/workflow-types.md +0 -33
  809. package/.opencode/skills/fix/references/workflow-ui.md +0 -37
  810. package/.opencode/skills/form-cro/SKILL.md +0 -429
  811. package/.opencode/skills/free-tool-strategy/SKILL.md +0 -580
  812. package/.opencode/skills/frontend-design/SKILL.md +0 -81
  813. package/.opencode/skills/frontend-design/references/ai-multimodal-overview.md +0 -165
  814. package/.opencode/skills/frontend-design/references/analysis-best-practices.md +0 -80
  815. package/.opencode/skills/frontend-design/references/analysis-prompts.md +0 -141
  816. package/.opencode/skills/frontend-design/references/analysis-techniques.md +0 -118
  817. package/.opencode/skills/frontend-design/references/animejs.md +0 -396
  818. package/.opencode/skills/frontend-design/references/anti-slop-rules.md +0 -103
  819. package/.opencode/skills/frontend-design/references/asset-generation.md +0 -337
  820. package/.opencode/skills/frontend-design/references/bento-motion-engine.md +0 -142
  821. package/.opencode/skills/frontend-design/references/design-extraction-overview.md +0 -71
  822. package/.opencode/skills/frontend-design/references/extraction-best-practices.md +0 -141
  823. package/.opencode/skills/frontend-design/references/extraction-output-templates.md +0 -162
  824. package/.opencode/skills/frontend-design/references/extraction-prompts.md +0 -127
  825. package/.opencode/skills/frontend-design/references/magicui-components.md +0 -129
  826. package/.opencode/skills/frontend-design/references/performance-guardrails.md +0 -169
  827. package/.opencode/skills/frontend-design/references/premium-design-patterns.md +0 -93
  828. package/.opencode/skills/frontend-design/references/redesign-audit-checklist.md +0 -114
  829. package/.opencode/skills/frontend-design/references/technical-accessibility.md +0 -119
  830. package/.opencode/skills/frontend-design/references/technical-best-practices.md +0 -97
  831. package/.opencode/skills/frontend-design/references/technical-optimization.md +0 -44
  832. package/.opencode/skills/frontend-design/references/technical-overview.md +0 -90
  833. package/.opencode/skills/frontend-design/references/technical-workflows.md +0 -150
  834. package/.opencode/skills/frontend-design/references/visual-analysis-overview.md +0 -95
  835. package/.opencode/skills/frontend-design/references/workflow-3d.md +0 -102
  836. package/.opencode/skills/frontend-design/references/workflow-describe.md +0 -87
  837. package/.opencode/skills/frontend-design/references/workflow-immersive.md +0 -87
  838. package/.opencode/skills/frontend-design/references/workflow-quick.md +0 -57
  839. package/.opencode/skills/frontend-design/references/workflow-screenshot.md +0 -63
  840. package/.opencode/skills/frontend-design/references/workflow-video.md +0 -74
  841. package/.opencode/skills/frontend-development/SKILL.md +0 -403
  842. package/.opencode/skills/frontend-development/resources/common-patterns.md +0 -331
  843. package/.opencode/skills/frontend-development/resources/complete-examples.md +0 -872
  844. package/.opencode/skills/frontend-development/resources/component-patterns.md +0 -502
  845. package/.opencode/skills/frontend-development/resources/data-fetching.md +0 -767
  846. package/.opencode/skills/frontend-development/resources/file-organization.md +0 -502
  847. package/.opencode/skills/frontend-development/resources/loading-and-error-states.md +0 -501
  848. package/.opencode/skills/frontend-development/resources/performance.md +0 -406
  849. package/.opencode/skills/frontend-development/resources/routing-guide.md +0 -364
  850. package/.opencode/skills/frontend-development/resources/styling-guide.md +0 -428
  851. package/.opencode/skills/frontend-development/resources/typescript-standards.md +0 -418
  852. package/.opencode/skills/funnel/SKILL.md +0 -82
  853. package/.opencode/skills/gamification-marketing/SKILL.md +0 -95
  854. package/.opencode/skills/gamification-marketing/references/analytics-events.md +0 -84
  855. package/.opencode/skills/gamification-marketing/references/campaign-templates.md +0 -80
  856. package/.opencode/skills/gamification-marketing/references/case-studies.md +0 -60
  857. package/.opencode/skills/gamification-marketing/references/challenge-configs.md +0 -86
  858. package/.opencode/skills/gamification-marketing/references/database-schema.md +0 -98
  859. package/.opencode/skills/gamification-marketing/references/implementation-guide.md +0 -57
  860. package/.opencode/skills/gamification-marketing/references/kpi-tracking.md +0 -53
  861. package/.opencode/skills/gamification-marketing/references/mechanics-selection.md +0 -81
  862. package/.opencode/skills/gamification-marketing/references/psychology-frameworks.md +0 -96
  863. package/.opencode/skills/git/SKILL.md +0 -101
  864. package/.opencode/skills/git/references/branch-management.md +0 -88
  865. package/.opencode/skills/git/references/commit-standards.md +0 -45
  866. package/.opencode/skills/git/references/gh-cli-guide.md +0 -109
  867. package/.opencode/skills/git/references/safety-protocols.md +0 -69
  868. package/.opencode/skills/git/references/workflow-commit.md +0 -56
  869. package/.opencode/skills/git/references/workflow-merge.md +0 -48
  870. package/.opencode/skills/git/references/workflow-pr.md +0 -58
  871. package/.opencode/skills/git/references/workflow-push.md +0 -52
  872. package/.opencode/skills/gkg/SKILL.md +0 -94
  873. package/.opencode/skills/gkg/references/cli-commands.md +0 -106
  874. package/.opencode/skills/gkg/references/http-api.md +0 -102
  875. package/.opencode/skills/gkg/references/language-support.md +0 -57
  876. package/.opencode/skills/gkg/references/mcp-tools.md +0 -99
  877. package/.opencode/skills/google-adk-python/SKILL.md +0 -246
  878. package/.opencode/skills/google-adk-python/references/agent-types-and-architecture.md +0 -128
  879. package/.opencode/skills/google-adk-python/references/callbacks-plugins-observability.md +0 -117
  880. package/.opencode/skills/google-adk-python/references/deployment-cloud-run-vertex-gke.md +0 -138
  881. package/.opencode/skills/google-adk-python/references/evaluation-testing-cli.md +0 -112
  882. package/.opencode/skills/google-adk-python/references/multi-agent-and-a2a-protocol.md +0 -145
  883. package/.opencode/skills/google-adk-python/references/sessions-state-memory-artifacts.md +0 -131
  884. package/.opencode/skills/google-adk-python/references/tools-and-mcp-integration.md +0 -146
  885. package/.opencode/skills/hub/SKILL.md +0 -55
  886. package/.opencode/skills/init/SKILL.md +0 -219
  887. package/.opencode/skills/journal/SKILL.md +0 -22
  888. package/.opencode/skills/kanban/SKILL.md +0 -69
  889. package/.opencode/skills/kit-builder/SKILL.md +0 -85
  890. package/.opencode/skills/kit-builder/references/agent-guide.md +0 -79
  891. package/.opencode/skills/kit-builder/references/best-practices.md +0 -117
  892. package/.opencode/skills/kit-builder/references/command-guide.md +0 -91
  893. package/.opencode/skills/kit-builder/references/marketing-checklist.md +0 -121
  894. package/.opencode/skills/kit-builder/references/skill-guide.md +0 -74
  895. package/.opencode/skills/kit-builder/references/workflow-guide.md +0 -113
  896. package/.opencode/skills/kit-builder/scripts/init_component.py +0 -260
  897. package/.opencode/skills/kit-builder/templates/agent-template.md +0 -48
  898. package/.opencode/skills/kit-builder/templates/command-template.md +0 -37
  899. package/.opencode/skills/kit-builder/templates/skill-template.md +0 -53
  900. package/.opencode/skills/kit-builder/templates/workflow-template.md +0 -80
  901. package/.opencode/skills/launch-strategy/SKILL.md +0 -348
  902. package/.opencode/skills/llms/SKILL.md +0 -120
  903. package/.opencode/skills/llms/references/llms-txt-specification.md +0 -87
  904. package/.opencode/skills/llms/scripts/generate-llms-txt.py +0 -350
  905. package/.opencode/skills/logo-design/SKILL.md +0 -156
  906. package/.opencode/skills/logo-design/data/colors.csv +0 -56
  907. package/.opencode/skills/logo-design/data/industries.csv +0 -56
  908. package/.opencode/skills/logo-design/data/styles.csv +0 -56
  909. package/.opencode/skills/logo-design/references/color-psychology.md +0 -101
  910. package/.opencode/skills/logo-design/references/prompt-engineering.md +0 -158
  911. package/.opencode/skills/logo-design/references/style-guide.md +0 -109
  912. package/.opencode/skills/logo-design/scripts/core.py +0 -175
  913. package/.opencode/skills/logo-design/scripts/generate.py +0 -363
  914. package/.opencode/skills/logo-design/scripts/search.py +0 -114
  915. package/.opencode/skills/markdown-novel-viewer/SKILL.md +0 -285
  916. package/.opencode/skills/markdown-novel-viewer/assets/directory-browser.css +0 -215
  917. package/.opencode/skills/markdown-novel-viewer/assets/novel-theme.css +0 -872
  918. package/.opencode/skills/markdown-novel-viewer/assets/reader.js +0 -357
  919. package/.opencode/skills/markdown-novel-viewer/assets/styles/novel-theme-base.css +0 -54
  920. package/.opencode/skills/markdown-novel-viewer/assets/styles/novel-theme-components.css +0 -188
  921. package/.opencode/skills/markdown-novel-viewer/assets/styles/novel-theme-content.css +0 -178
  922. package/.opencode/skills/markdown-novel-viewer/assets/styles/novel-theme-header.css +0 -217
  923. package/.opencode/skills/markdown-novel-viewer/assets/styles/novel-theme-mermaid.css +0 -153
  924. package/.opencode/skills/markdown-novel-viewer/assets/styles/novel-theme-overlays.css +0 -202
  925. package/.opencode/skills/markdown-novel-viewer/assets/styles/novel-theme-responsive.css +0 -285
  926. package/.opencode/skills/markdown-novel-viewer/assets/styles/novel-theme-sidebar.css +0 -358
  927. package/.opencode/skills/markdown-novel-viewer/assets/styles/novel-theme-variables.css +0 -56
  928. package/.opencode/skills/markdown-novel-viewer/assets/template.html +0 -85
  929. package/.opencode/skills/markdown-novel-viewer/bun.lock +0 -38
  930. package/.opencode/skills/markdown-novel-viewer/package.json +0 -15
  931. package/.opencode/skills/markdown-novel-viewer/scripts/lib/http-server.cjs +0 -434
  932. package/.opencode/skills/markdown-novel-viewer/scripts/lib/markdown-renderer.cjs +0 -335
  933. package/.opencode/skills/markdown-novel-viewer/scripts/lib/plan-navigator.cjs +0 -509
  934. package/.opencode/skills/markdown-novel-viewer/scripts/lib/port-finder.cjs +0 -48
  935. package/.opencode/skills/markdown-novel-viewer/scripts/lib/process-mgr.cjs +0 -150
  936. package/.opencode/skills/markdown-novel-viewer/scripts/server.cjs +0 -411
  937. package/.opencode/skills/marketing-dashboard/README.md +0 -363
  938. package/.opencode/skills/marketing-dashboard/SKILL.md +0 -84
  939. package/.opencode/skills/marketing-dashboard/app/README.md +0 -5
  940. package/.opencode/skills/marketing-dashboard/app/index.html +0 -13
  941. package/.opencode/skills/marketing-dashboard/app/package.json +0 -31
  942. package/.opencode/skills/marketing-dashboard/app/postcss.config.js +0 -5
  943. package/.opencode/skills/marketing-dashboard/app/public/vite.svg +0 -1
  944. package/.opencode/skills/marketing-dashboard/app/src/App.vue +0 -9
  945. package/.opencode/skills/marketing-dashboard/app/src/assets/vue.svg +0 -1
  946. package/.opencode/skills/marketing-dashboard/app/src/components/assets/AssetCard.vue +0 -338
  947. package/.opencode/skills/marketing-dashboard/app/src/components/assets/AssetGrid.vue +0 -673
  948. package/.opencode/skills/marketing-dashboard/app/src/components/assets/AssetPreview.vue +0 -530
  949. package/.opencode/skills/marketing-dashboard/app/src/components/assets/previews/CodePreview.vue +0 -402
  950. package/.opencode/skills/marketing-dashboard/app/src/components/assets/previews/ImagePreview.vue +0 -282
  951. package/.opencode/skills/marketing-dashboard/app/src/components/assets/previews/InfographicPreview.vue +0 -167
  952. package/.opencode/skills/marketing-dashboard/app/src/components/assets/previews/JsonVisualizer.vue +0 -548
  953. package/.opencode/skills/marketing-dashboard/app/src/components/assets/previews/MarkdownPreview.vue +0 -774
  954. package/.opencode/skills/marketing-dashboard/app/src/components/assets/previews/SlidePreview.vue +0 -341
  955. package/.opencode/skills/marketing-dashboard/app/src/components/assets/previews/SocialPostPreview.vue +0 -505
  956. package/.opencode/skills/marketing-dashboard/app/src/components/assets/previews/StoryboardPreview.vue +0 -311
  957. package/.opencode/skills/marketing-dashboard/app/src/components/assets/previews/TranscriptPreview.vue +0 -350
  958. package/.opencode/skills/marketing-dashboard/app/src/components/assets/previews/VideoPreview.vue +0 -351
  959. package/.opencode/skills/marketing-dashboard/app/src/components/brand/ColorPalette.vue +0 -131
  960. package/.opencode/skills/marketing-dashboard/app/src/components/brand/ComponentShowcase.vue +0 -188
  961. package/.opencode/skills/marketing-dashboard/app/src/components/brand/LogoGallery.vue +0 -167
  962. package/.opencode/skills/marketing-dashboard/app/src/components/brand/SpacingScale.vue +0 -33
  963. package/.opencode/skills/marketing-dashboard/app/src/components/brand/TypographyPreview.vue +0 -97
  964. package/.opencode/skills/marketing-dashboard/app/src/components/brand/VoiceSummary.vue +0 -92
  965. package/.opencode/skills/marketing-dashboard/app/src/components/common/LoadingSpinner.vue +0 -75
  966. package/.opencode/skills/marketing-dashboard/app/src/components/common/Modal.vue +0 -60
  967. package/.opencode/skills/marketing-dashboard/app/src/components/common/Toast.vue +0 -119
  968. package/.opencode/skills/marketing-dashboard/app/src/components/layout/AppHeader.vue +0 -17
  969. package/.opencode/skills/marketing-dashboard/app/src/components/layout/AppLayout.vue +0 -16
  970. package/.opencode/skills/marketing-dashboard/app/src/components/layout/AppSidebar.vue +0 -103
  971. package/.opencode/skills/marketing-dashboard/app/src/config.js +0 -1
  972. package/.opencode/skills/marketing-dashboard/app/src/main.js +0 -12
  973. package/.opencode/skills/marketing-dashboard/app/src/router/index.js +0 -33
  974. package/.opencode/skills/marketing-dashboard/app/src/stores/assets.js +0 -108
  975. package/.opencode/skills/marketing-dashboard/app/src/stores/brand.js +0 -94
  976. package/.opencode/skills/marketing-dashboard/app/src/style.css +0 -72
  977. package/.opencode/skills/marketing-dashboard/app/src/views/AssetsView.vue +0 -109
  978. package/.opencode/skills/marketing-dashboard/app/src/views/BrandView.vue +0 -82
  979. package/.opencode/skills/marketing-dashboard/app/src/views/SettingsView.vue +0 -108
  980. package/.opencode/skills/marketing-dashboard/app/tailwind.config.js +0 -34
  981. package/.opencode/skills/marketing-dashboard/app/vite.config.js +0 -19
  982. package/.opencode/skills/marketing-dashboard/build.sh +0 -43
  983. package/.opencode/skills/marketing-dashboard/server/__tests__/ai.test.js +0 -456
  984. package/.opencode/skills/marketing-dashboard/server/__tests__/assets.test.js +0 -286
  985. package/.opencode/skills/marketing-dashboard/server/__tests__/brand-security.test.js +0 -183
  986. package/.opencode/skills/marketing-dashboard/server/__tests__/security-file-serving.test.js +0 -159
  987. package/.opencode/skills/marketing-dashboard/server/__tests__/test-db.js +0 -31
  988. package/.opencode/skills/marketing-dashboard/server/coverage_output.txt +0 -7
  989. package/.opencode/skills/marketing-dashboard/server/db/database.js +0 -61
  990. package/.opencode/skills/marketing-dashboard/server/db/schema.sql +0 -26
  991. package/.opencode/skills/marketing-dashboard/server/index.js +0 -105
  992. package/.opencode/skills/marketing-dashboard/server/lib/ai-bridge.cjs +0 -201
  993. package/.opencode/skills/marketing-dashboard/server/lib/brand-context.cjs +0 -118
  994. package/.opencode/skills/marketing-dashboard/server/lib/scanner.cjs +0 -440
  995. package/.opencode/skills/marketing-dashboard/server/middleware/auth.js +0 -48
  996. package/.opencode/skills/marketing-dashboard/server/package.json +0 -31
  997. package/.opencode/skills/marketing-dashboard/server/routes/assets.js +0 -269
  998. package/.opencode/skills/marketing-dashboard/server/routes/brand.js +0 -143
  999. package/.opencode/skills/marketing-dashboard/server/vitest.config.js +0 -23
  1000. package/.opencode/skills/marketing-dashboard/start-production.sh +0 -55
  1001. package/.opencode/skills/marketing-dashboard/start.sh +0 -63
  1002. package/.opencode/skills/marketing-dashboard/stop.sh +0 -54
  1003. package/.opencode/skills/marketing-dashboard/temp/enhance/enhance-1766508537903.md +0 -7
  1004. package/.opencode/skills/marketing-ideas/SKILL.md +0 -569
  1005. package/.opencode/skills/marketing-planning/SKILL.md +0 -122
  1006. package/.opencode/skills/marketing-planning/references/brand-context.md +0 -54
  1007. package/.opencode/skills/marketing-planning/references/output-standards.md +0 -117
  1008. package/.opencode/skills/marketing-planning/references/plan-organization.md +0 -109
  1009. package/.opencode/skills/marketing-planning/references/research-phase.md +0 -39
  1010. package/.opencode/skills/marketing-planning/references/strategy-design.md +0 -61
  1011. package/.opencode/skills/marketing-psychology/SKILL.md +0 -455
  1012. package/.opencode/skills/marketing-research/SKILL.md +0 -172
  1013. package/.opencode/skills/mcp-builder/LICENSE.txt +0 -202
  1014. package/.opencode/skills/mcp-builder/SKILL.md +0 -332
  1015. package/.opencode/skills/mcp-builder/reference/evaluation.md +0 -602
  1016. package/.opencode/skills/mcp-builder/reference/mcp_best_practices.md +0 -915
  1017. package/.opencode/skills/mcp-builder/reference/node_mcp_server.md +0 -916
  1018. package/.opencode/skills/mcp-builder/reference/python_mcp_server.md +0 -752
  1019. package/.opencode/skills/mcp-builder/scripts/connections.py +0 -151
  1020. package/.opencode/skills/mcp-builder/scripts/evaluation.py +0 -373
  1021. package/.opencode/skills/mcp-builder/scripts/example_evaluation.xml +0 -22
  1022. package/.opencode/skills/mcp-builder/scripts/requirements.txt +0 -2
  1023. package/.opencode/skills/mcp-management/README.md +0 -219
  1024. package/.opencode/skills/mcp-management/SKILL.md +0 -213
  1025. package/.opencode/skills/mcp-management/assets/tools.json +0 -3146
  1026. package/.opencode/skills/mcp-management/references/configuration.md +0 -114
  1027. package/.opencode/skills/mcp-management/references/gemini-cli-integration.md +0 -215
  1028. package/.opencode/skills/mcp-management/references/mcp-protocol.md +0 -116
  1029. package/.opencode/skills/mcp-management/scripts/.env.example +0 -10
  1030. package/.opencode/skills/mcp-management/scripts/cli.ts +0 -195
  1031. package/.opencode/skills/mcp-management/scripts/mcp-client.ts +0 -230
  1032. package/.opencode/skills/mcp-management/scripts/package.json +0 -20
  1033. package/.opencode/skills/mcp-management/scripts/tsconfig.json +0 -15
  1034. package/.opencode/skills/media-processing/SKILL.md +0 -95
  1035. package/.opencode/skills/media-processing/references/common-workflows.md +0 -132
  1036. package/.opencode/skills/media-processing/references/ffmpeg-encoding.md +0 -358
  1037. package/.opencode/skills/media-processing/references/ffmpeg-filters.md +0 -503
  1038. package/.opencode/skills/media-processing/references/ffmpeg-streaming.md +0 -403
  1039. package/.opencode/skills/media-processing/references/format-compatibility.md +0 -375
  1040. package/.opencode/skills/media-processing/references/imagemagick-batch.md +0 -612
  1041. package/.opencode/skills/media-processing/references/imagemagick-editing.md +0 -623
  1042. package/.opencode/skills/media-processing/references/rmbg-background-removal.md +0 -66
  1043. package/.opencode/skills/media-processing/references/troubleshooting.md +0 -109
  1044. package/.opencode/skills/media-processing/scripts/README.md +0 -111
  1045. package/.opencode/skills/media-processing/scripts/batch-remove-background.sh +0 -124
  1046. package/.opencode/skills/media-processing/scripts/batch_resize.py +0 -342
  1047. package/.opencode/skills/media-processing/scripts/media_convert.py +0 -311
  1048. package/.opencode/skills/media-processing/scripts/remove-background.sh +0 -96
  1049. package/.opencode/skills/media-processing/scripts/remove-bg-node.js +0 -158
  1050. package/.opencode/skills/media-processing/scripts/requirements.txt +0 -24
  1051. package/.opencode/skills/media-processing/scripts/video_optimize.py +0 -414
  1052. package/.opencode/skills/mermaidjs-v11/SKILL.md +0 -119
  1053. package/.opencode/skills/mermaidjs-v11/references/cli-usage.md +0 -228
  1054. package/.opencode/skills/mermaidjs-v11/references/configuration.md +0 -232
  1055. package/.opencode/skills/mermaidjs-v11/references/diagram-types.md +0 -315
  1056. package/.opencode/skills/mermaidjs-v11/references/examples.md +0 -344
  1057. package/.opencode/skills/mermaidjs-v11/references/integration.md +0 -310
  1058. package/.opencode/skills/mintlify/SKILL.md +0 -123
  1059. package/.opencode/skills/mintlify/references/ai-features-and-integrations-reference.md +0 -756
  1060. package/.opencode/skills/mintlify/references/api-documentation-components-reference.md +0 -873
  1061. package/.opencode/skills/mintlify/references/deployment-and-continuous-integration-reference.md +0 -674
  1062. package/.opencode/skills/mintlify/references/docs-json-configuration-reference.md +0 -724
  1063. package/.opencode/skills/mintlify/references/mdx-components-reference.md +0 -551
  1064. package/.opencode/skills/mintlify/references/navigation-structure-and-organization-reference.md +0 -775
  1065. package/.opencode/skills/mobile-development/SKILL.md +0 -215
  1066. package/.opencode/skills/mobile-development/references/mobile-android.md +0 -604
  1067. package/.opencode/skills/mobile-development/references/mobile-best-practices.md +0 -545
  1068. package/.opencode/skills/mobile-development/references/mobile-debugging.md +0 -1089
  1069. package/.opencode/skills/mobile-development/references/mobile-frameworks.md +0 -465
  1070. package/.opencode/skills/mobile-development/references/mobile-ios.md +0 -496
  1071. package/.opencode/skills/mobile-development/references/mobile-mindset.md +0 -544
  1072. package/.opencode/skills/onboarding-cro/SKILL.md +0 -437
  1073. package/.opencode/skills/paid-ads/SKILL.md +0 -555
  1074. package/.opencode/skills/payment-integration/README.md +0 -217
  1075. package/.opencode/skills/payment-integration/SKILL.md +0 -156
  1076. package/.opencode/skills/payment-integration/references/creem/api.md +0 -139
  1077. package/.opencode/skills/payment-integration/references/creem/checkouts.md +0 -99
  1078. package/.opencode/skills/payment-integration/references/creem/licensing.md +0 -136
  1079. package/.opencode/skills/payment-integration/references/creem/overview.md +0 -65
  1080. package/.opencode/skills/payment-integration/references/creem/sdk.md +0 -161
  1081. package/.opencode/skills/payment-integration/references/creem/subscriptions.md +0 -129
  1082. package/.opencode/skills/payment-integration/references/creem/webhooks.md +0 -120
  1083. package/.opencode/skills/payment-integration/references/implementation-workflows.md +0 -43
  1084. package/.opencode/skills/payment-integration/references/multi-provider-order-management-patterns.md +0 -821
  1085. package/.opencode/skills/payment-integration/references/paddle/api.md +0 -116
  1086. package/.opencode/skills/payment-integration/references/paddle/best-practices.md +0 -130
  1087. package/.opencode/skills/payment-integration/references/paddle/overview.md +0 -57
  1088. package/.opencode/skills/payment-integration/references/paddle/paddle-js.md +0 -106
  1089. package/.opencode/skills/payment-integration/references/paddle/sdk.md +0 -131
  1090. package/.opencode/skills/payment-integration/references/paddle/subscriptions.md +0 -118
  1091. package/.opencode/skills/payment-integration/references/paddle/webhooks.md +0 -112
  1092. package/.opencode/skills/payment-integration/references/polar/benefits.md +0 -396
  1093. package/.opencode/skills/payment-integration/references/polar/best-practices.md +0 -902
  1094. package/.opencode/skills/payment-integration/references/polar/checkouts.md +0 -266
  1095. package/.opencode/skills/payment-integration/references/polar/overview.md +0 -184
  1096. package/.opencode/skills/payment-integration/references/polar/products.md +0 -244
  1097. package/.opencode/skills/payment-integration/references/polar/sdk.md +0 -436
  1098. package/.opencode/skills/payment-integration/references/polar/subscriptions.md +0 -340
  1099. package/.opencode/skills/payment-integration/references/polar/webhooks.md +0 -405
  1100. package/.opencode/skills/payment-integration/references/sepay/api.md +0 -140
  1101. package/.opencode/skills/payment-integration/references/sepay/best-practices.md +0 -939
  1102. package/.opencode/skills/payment-integration/references/sepay/overview.md +0 -138
  1103. package/.opencode/skills/payment-integration/references/sepay/qr-codes.md +0 -228
  1104. package/.opencode/skills/payment-integration/references/sepay/sdk.md +0 -213
  1105. package/.opencode/skills/payment-integration/references/sepay/webhooks.md +0 -208
  1106. package/.opencode/skills/payment-integration/references/stripe/stripe-best-practices.md +0 -32
  1107. package/.opencode/skills/payment-integration/references/stripe/stripe-cli.md +0 -148
  1108. package/.opencode/skills/payment-integration/references/stripe/stripe-js.md +0 -116
  1109. package/.opencode/skills/payment-integration/references/stripe/stripe-sdks.md +0 -84
  1110. package/.opencode/skills/payment-integration/references/stripe/stripe-upgrade.md +0 -175
  1111. package/.opencode/skills/payment-integration/scripts/checkout-helper.js +0 -244
  1112. package/.opencode/skills/payment-integration/scripts/package.json +0 -17
  1113. package/.opencode/skills/payment-integration/scripts/polar-webhook-verify.js +0 -202
  1114. package/.opencode/skills/payment-integration/scripts/sepay-webhook-verify.js +0 -193
  1115. package/.opencode/skills/payment-integration/scripts/test-scripts.js +0 -237
  1116. package/.opencode/skills/persona/SKILL.md +0 -66
  1117. package/.opencode/skills/plan/SKILL.md +0 -53
  1118. package/.opencode/skills/plan/references/archive.md +0 -52
  1119. package/.opencode/skills/plan/references/ci.md +0 -28
  1120. package/.opencode/skills/plan/references/cro.md +0 -64
  1121. package/.opencode/skills/plan/references/fast.md +0 -61
  1122. package/.opencode/skills/plan/references/hard.md +0 -87
  1123. package/.opencode/skills/plan/references/parallel.md +0 -124
  1124. package/.opencode/skills/plan/references/two.md +0 -40
  1125. package/.opencode/skills/plan/references/validate.md +0 -112
  1126. package/.opencode/skills/plans-kanban/SKILL.md +0 -170
  1127. package/.opencode/skills/plans-kanban/assets/dashboard-template.html +0 -119
  1128. package/.opencode/skills/plans-kanban/assets/dashboard.css +0 -1594
  1129. package/.opencode/skills/plans-kanban/assets/dashboard.js +0 -596
  1130. package/.opencode/skills/plans-kanban/package.json +0 -13
  1131. package/.opencode/skills/plans-kanban/scripts/lib/dashboard-renderer.cjs +0 -884
  1132. package/.opencode/skills/plans-kanban/scripts/lib/http-server.cjs +0 -310
  1133. package/.opencode/skills/plans-kanban/scripts/lib/plan-metadata-extractor.cjs +0 -489
  1134. package/.opencode/skills/plans-kanban/scripts/lib/plan-parser.cjs +0 -175
  1135. package/.opencode/skills/plans-kanban/scripts/lib/plan-scanner.cjs +0 -272
  1136. package/.opencode/skills/plans-kanban/scripts/lib/port-finder.cjs +0 -48
  1137. package/.opencode/skills/plans-kanban/scripts/lib/process-mgr.cjs +0 -126
  1138. package/.opencode/skills/plans-kanban/scripts/server.cjs +0 -253
  1139. package/.opencode/skills/play/SKILL.md +0 -111
  1140. package/.opencode/skills/play/references/blocked.md +0 -55
  1141. package/.opencode/skills/play/references/create.md +0 -48
  1142. package/.opencode/skills/play/references/gate.md +0 -38
  1143. package/.opencode/skills/play/references/goals.md +0 -53
  1144. package/.opencode/skills/play/references/learn.md +0 -48
  1145. package/.opencode/skills/play/references/list.md +0 -34
  1146. package/.opencode/skills/play/references/next.md +0 -51
  1147. package/.opencode/skills/play/references/reset.md +0 -34
  1148. package/.opencode/skills/play/references/status.md +0 -56
  1149. package/.opencode/skills/play/references/templates.md +0 -38
  1150. package/.opencode/skills/play/scripts/goals.cjs +0 -229
  1151. package/.opencode/skills/play/scripts/graph.cjs +0 -331
  1152. package/.opencode/skills/play/scripts/manifest.cjs +0 -474
  1153. package/.opencode/skills/play/scripts/metrics-bridge.cjs +0 -355
  1154. package/.opencode/skills/play/scripts/metrics-email.cjs +0 -182
  1155. package/.opencode/skills/play/scripts/metrics-social.cjs +0 -151
  1156. package/.opencode/skills/play/scripts/smart-suggest.cjs +0 -292
  1157. package/.opencode/skills/play/scripts/template-loader.cjs +0 -359
  1158. package/.opencode/skills/play/templates/_schema.json +0 -150
  1159. package/.opencode/skills/play/templates/campaign-sprint.json +0 -195
  1160. package/.opencode/skills/play/templates/content-engine.json +0 -348
  1161. package/.opencode/skills/play/templates/product-hunt-launch.json +0 -210
  1162. package/.opencode/skills/play/templates/saas-launch.json +0 -224
  1163. package/.opencode/skills/preview/SKILL.md +0 -87
  1164. package/.opencode/skills/preview/references/generation-modes.md +0 -192
  1165. package/.opencode/skills/preview/references/html-css-patterns.md +0 -1717
  1166. package/.opencode/skills/preview/references/html-design-guidelines.md +0 -393
  1167. package/.opencode/skills/preview/references/html-libraries.md +0 -592
  1168. package/.opencode/skills/preview/references/html-responsive-nav.md +0 -212
  1169. package/.opencode/skills/preview/references/html-slide-patterns.md +0 -1401
  1170. package/.opencode/skills/preview/references/view-mode.md +0 -42
  1171. package/.opencode/skills/preview/templates/architecture.html +0 -650
  1172. package/.opencode/skills/preview/templates/data-table.html +0 -590
  1173. package/.opencode/skills/preview/templates/mermaid-flowchart.html +0 -768
  1174. package/.opencode/skills/preview/templates/slide-deck.html +0 -968
  1175. package/.opencode/skills/pricing-strategy/SKILL.md +0 -714
  1176. package/.opencode/skills/problem-solving/SKILL.md +0 -99
  1177. package/.opencode/skills/problem-solving/references/attribution.md +0 -69
  1178. package/.opencode/skills/problem-solving/references/collision-zone-thinking.md +0 -79
  1179. package/.opencode/skills/problem-solving/references/inversion-exercise.md +0 -91
  1180. package/.opencode/skills/problem-solving/references/meta-pattern-recognition.md +0 -87
  1181. package/.opencode/skills/problem-solving/references/scale-game.md +0 -95
  1182. package/.opencode/skills/problem-solving/references/simplification-cascades.md +0 -80
  1183. package/.opencode/skills/problem-solving/references/when-stuck.md +0 -72
  1184. package/.opencode/skills/project-management/SKILL.md +0 -136
  1185. package/.opencode/skills/project-management/references/documentation-triggers.md +0 -60
  1186. package/.opencode/skills/project-management/references/hydration-workflow.md +0 -89
  1187. package/.opencode/skills/project-management/references/progress-tracking.md +0 -120
  1188. package/.opencode/skills/project-management/references/reporting-patterns.md +0 -94
  1189. package/.opencode/skills/project-management/references/task-operations.md +0 -87
  1190. package/.opencode/skills/project-organization/SKILL.md +0 -228
  1191. package/.opencode/skills/project-organization/references/directory-patterns.md +0 -176
  1192. package/.opencode/skills/project-organization/references/markdown-body-templates.md +0 -311
  1193. package/.opencode/skills/project-organization/references/naming-conventions.md +0 -140
  1194. package/.opencode/skills/react-best-practices/AGENTS.md +0 -2249
  1195. package/.opencode/skills/react-best-practices/README.md +0 -123
  1196. package/.opencode/skills/react-best-practices/SKILL.md +0 -125
  1197. package/.opencode/skills/react-best-practices/metadata.json +0 -15
  1198. package/.opencode/skills/react-best-practices/rules/_sections.md +0 -46
  1199. package/.opencode/skills/react-best-practices/rules/_template.md +0 -28
  1200. package/.opencode/skills/react-best-practices/rules/advanced-event-handler-refs.md +0 -55
  1201. package/.opencode/skills/react-best-practices/rules/advanced-use-latest.md +0 -49
  1202. package/.opencode/skills/react-best-practices/rules/async-api-routes.md +0 -38
  1203. package/.opencode/skills/react-best-practices/rules/async-defer-await.md +0 -80
  1204. package/.opencode/skills/react-best-practices/rules/async-dependencies.md +0 -36
  1205. package/.opencode/skills/react-best-practices/rules/async-parallel.md +0 -28
  1206. package/.opencode/skills/react-best-practices/rules/async-suspense-boundaries.md +0 -99
  1207. package/.opencode/skills/react-best-practices/rules/bundle-barrel-imports.md +0 -59
  1208. package/.opencode/skills/react-best-practices/rules/bundle-conditional.md +0 -31
  1209. package/.opencode/skills/react-best-practices/rules/bundle-defer-third-party.md +0 -49
  1210. package/.opencode/skills/react-best-practices/rules/bundle-dynamic-imports.md +0 -35
  1211. package/.opencode/skills/react-best-practices/rules/bundle-preload.md +0 -50
  1212. package/.opencode/skills/react-best-practices/rules/client-event-listeners.md +0 -74
  1213. package/.opencode/skills/react-best-practices/rules/client-swr-dedup.md +0 -56
  1214. package/.opencode/skills/react-best-practices/rules/js-batch-dom-css.md +0 -82
  1215. package/.opencode/skills/react-best-practices/rules/js-cache-function-results.md +0 -80
  1216. package/.opencode/skills/react-best-practices/rules/js-cache-property-access.md +0 -28
  1217. package/.opencode/skills/react-best-practices/rules/js-cache-storage.md +0 -70
  1218. package/.opencode/skills/react-best-practices/rules/js-combine-iterations.md +0 -32
  1219. package/.opencode/skills/react-best-practices/rules/js-early-exit.md +0 -50
  1220. package/.opencode/skills/react-best-practices/rules/js-hoist-regexp.md +0 -45
  1221. package/.opencode/skills/react-best-practices/rules/js-index-maps.md +0 -37
  1222. package/.opencode/skills/react-best-practices/rules/js-length-check-first.md +0 -49
  1223. package/.opencode/skills/react-best-practices/rules/js-min-max-loop.md +0 -82
  1224. package/.opencode/skills/react-best-practices/rules/js-set-map-lookups.md +0 -24
  1225. package/.opencode/skills/react-best-practices/rules/js-tosorted-immutable.md +0 -57
  1226. package/.opencode/skills/react-best-practices/rules/rendering-activity.md +0 -26
  1227. package/.opencode/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -47
  1228. package/.opencode/skills/react-best-practices/rules/rendering-conditional-render.md +0 -40
  1229. package/.opencode/skills/react-best-practices/rules/rendering-content-visibility.md +0 -38
  1230. package/.opencode/skills/react-best-practices/rules/rendering-hoist-jsx.md +0 -46
  1231. package/.opencode/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +0 -82
  1232. package/.opencode/skills/react-best-practices/rules/rendering-svg-precision.md +0 -28
  1233. package/.opencode/skills/react-best-practices/rules/rerender-defer-reads.md +0 -39
  1234. package/.opencode/skills/react-best-practices/rules/rerender-dependencies.md +0 -45
  1235. package/.opencode/skills/react-best-practices/rules/rerender-derived-state.md +0 -29
  1236. package/.opencode/skills/react-best-practices/rules/rerender-functional-setstate.md +0 -74
  1237. package/.opencode/skills/react-best-practices/rules/rerender-lazy-state-init.md +0 -58
  1238. package/.opencode/skills/react-best-practices/rules/rerender-memo.md +0 -44
  1239. package/.opencode/skills/react-best-practices/rules/rerender-transitions.md +0 -40
  1240. package/.opencode/skills/react-best-practices/rules/server-after-nonblocking.md +0 -73
  1241. package/.opencode/skills/react-best-practices/rules/server-cache-lru.md +0 -41
  1242. package/.opencode/skills/react-best-practices/rules/server-cache-react.md +0 -26
  1243. package/.opencode/skills/react-best-practices/rules/server-parallel-fetching.md +0 -79
  1244. package/.opencode/skills/react-best-practices/rules/server-serialization.md +0 -38
  1245. package/.opencode/skills/referral-program-building/SKILL.md +0 -81
  1246. package/.opencode/skills/referral-program-building/references/email-templates.md +0 -75
  1247. package/.opencode/skills/referral-program-building/references/fraud-prevention.md +0 -95
  1248. package/.opencode/skills/referral-program-building/references/metrics-tracking.md +0 -64
  1249. package/.opencode/skills/referral-program-building/references/platform-selection.md +0 -80
  1250. package/.opencode/skills/referral-program-building/references/reward-structures.md +0 -82
  1251. package/.opencode/skills/referral-program-building/references/technical-implementation.md +0 -98
  1252. package/.opencode/skills/remotion/SKILL.md +0 -45
  1253. package/.opencode/skills/remotion/rules/3d.md +0 -86
  1254. package/.opencode/skills/remotion/rules/animations.md +0 -29
  1255. package/.opencode/skills/remotion/rules/assets/charts-bar-chart.tsx +0 -173
  1256. package/.opencode/skills/remotion/rules/assets/text-animations-typewriter.tsx +0 -100
  1257. package/.opencode/skills/remotion/rules/assets/text-animations-word-highlight.tsx +0 -108
  1258. package/.opencode/skills/remotion/rules/assets.md +0 -78
  1259. package/.opencode/skills/remotion/rules/audio.md +0 -172
  1260. package/.opencode/skills/remotion/rules/calculate-metadata.md +0 -104
  1261. package/.opencode/skills/remotion/rules/can-decode.md +0 -75
  1262. package/.opencode/skills/remotion/rules/charts.md +0 -58
  1263. package/.opencode/skills/remotion/rules/compositions.md +0 -146
  1264. package/.opencode/skills/remotion/rules/display-captions.md +0 -126
  1265. package/.opencode/skills/remotion/rules/extract-frames.md +0 -229
  1266. package/.opencode/skills/remotion/rules/fonts.md +0 -152
  1267. package/.opencode/skills/remotion/rules/get-audio-duration.md +0 -58
  1268. package/.opencode/skills/remotion/rules/get-video-dimensions.md +0 -68
  1269. package/.opencode/skills/remotion/rules/get-video-duration.md +0 -58
  1270. package/.opencode/skills/remotion/rules/gifs.md +0 -138
  1271. package/.opencode/skills/remotion/rules/images.md +0 -130
  1272. package/.opencode/skills/remotion/rules/import-srt-captions.md +0 -67
  1273. package/.opencode/skills/remotion/rules/lottie.md +0 -68
  1274. package/.opencode/skills/remotion/rules/measuring-dom-nodes.md +0 -35
  1275. package/.opencode/skills/remotion/rules/measuring-text.md +0 -143
  1276. package/.opencode/skills/remotion/rules/sequencing.md +0 -106
  1277. package/.opencode/skills/remotion/rules/tailwind.md +0 -11
  1278. package/.opencode/skills/remotion/rules/text-animations.md +0 -20
  1279. package/.opencode/skills/remotion/rules/timing.md +0 -179
  1280. package/.opencode/skills/remotion/rules/transcribe-captions.md +0 -19
  1281. package/.opencode/skills/remotion/rules/transitions.md +0 -122
  1282. package/.opencode/skills/remotion/rules/trimming.md +0 -53
  1283. package/.opencode/skills/remotion/rules/videos.md +0 -171
  1284. package/.opencode/skills/repomix/SKILL.md +0 -251
  1285. package/.opencode/skills/repomix/references/configuration.md +0 -211
  1286. package/.opencode/skills/repomix/references/usage-patterns.md +0 -232
  1287. package/.opencode/skills/repomix/scripts/.coverage +0 -0
  1288. package/.opencode/skills/repomix/scripts/README.md +0 -179
  1289. package/.opencode/skills/repomix/scripts/repomix_batch.py +0 -455
  1290. package/.opencode/skills/repomix/scripts/repos.example.json +0 -15
  1291. package/.opencode/skills/repomix/scripts/requirements.txt +0 -15
  1292. package/.opencode/skills/research/SKILL.md +0 -176
  1293. package/.opencode/skills/retro/SKILL.md +0 -138
  1294. package/.opencode/skills/retro/references/metrics-guide.md +0 -133
  1295. package/.opencode/skills/retro/references/report-template.md +0 -110
  1296. package/.opencode/skills/scout/SKILL.md +0 -82
  1297. package/.opencode/skills/scout/references/external-scouting.md +0 -140
  1298. package/.opencode/skills/scout/references/internal-scouting.md +0 -119
  1299. package/.opencode/skills/scout/references/task-management-scouting.md +0 -125
  1300. package/.opencode/skills/security-scan/SKILL.md +0 -141
  1301. package/.opencode/skills/security-scan/references/secret-patterns.md +0 -77
  1302. package/.opencode/skills/security-scan/references/vulnerability-patterns.md +0 -105
  1303. package/.opencode/skills/seo/SKILL.md +0 -95
  1304. package/.opencode/skills/seo/references/audit.md +0 -121
  1305. package/.opencode/skills/seo/references/backlink-analysis-framework.md +0 -192
  1306. package/.opencode/skills/seo/references/browser-seo-audit-workflow.md +0 -180
  1307. package/.opencode/skills/seo/references/canonical-url-strategy.md +0 -286
  1308. package/.opencode/skills/seo/references/content-gap-analysis-framework.md +0 -255
  1309. package/.opencode/skills/seo/references/core-web-vitals-remediation.md +0 -279
  1310. package/.opencode/skills/seo/references/directory-submission-list.md +0 -280
  1311. package/.opencode/skills/seo/references/google-search-console-api-guide.md +0 -745
  1312. package/.opencode/skills/seo/references/internal-linking-automation.md +0 -685
  1313. package/.opencode/skills/seo/references/keyword-clustering-methodology.md +0 -175
  1314. package/.opencode/skills/seo/references/keyword-research-workflow.md +0 -63
  1315. package/.opencode/skills/seo/references/keywords.md +0 -131
  1316. package/.opencode/skills/seo/references/link-building-campaign-framework.md +0 -246
  1317. package/.opencode/skills/seo/references/meta-tag-templates.md +0 -229
  1318. package/.opencode/skills/seo/references/mobile-seo-checklist.md +0 -557
  1319. package/.opencode/skills/seo/references/on-page-seo-checklist-2025.md +0 -328
  1320. package/.opencode/skills/seo/references/outreach-email-templates.md +0 -335
  1321. package/.opencode/skills/seo/references/pseo-best-practices.md +0 -366
  1322. package/.opencode/skills/seo/references/pseo-scale-architecture.md +0 -801
  1323. package/.opencode/skills/seo/references/pseo-template-syntax.md +0 -329
  1324. package/.opencode/skills/seo/references/pseo-templates.md +0 -85
  1325. package/.opencode/skills/seo/references/pseo-url-structure-guide.md +0 -562
  1326. package/.opencode/skills/seo/references/pseo.md +0 -62
  1327. package/.opencode/skills/seo/references/readability-scoring-guide.md +0 -304
  1328. package/.opencode/skills/seo/references/reviewweb-api.md +0 -69
  1329. package/.opencode/skills/seo/references/reviewweb-content-api.md +0 -89
  1330. package/.opencode/skills/seo/references/robots-txt-best-practices-2025.md +0 -479
  1331. package/.opencode/skills/seo/references/schema-generation.md +0 -102
  1332. package/.opencode/skills/seo/references/schema-templates/article-schema.json +0 -25
  1333. package/.opencode/skills/seo/references/schema-templates/faq-schema.json +0 -47
  1334. package/.opencode/skills/seo/references/schema-templates/howto-schema.json +0 -66
  1335. package/.opencode/skills/seo/references/schema-templates/localbusiness-schema.json +0 -64
  1336. package/.opencode/skills/seo/references/schema-templates/organization-schema.json +0 -49
  1337. package/.opencode/skills/seo/references/schema-templates/product-schema.json +0 -49
  1338. package/.opencode/skills/seo/references/search-console-query-patterns.md +0 -606
  1339. package/.opencode/skills/seo/references/semantic-seo-framework.md +0 -480
  1340. package/.opencode/skills/seo/references/seo-audit-workflow.md +0 -90
  1341. package/.opencode/skills/seo/references/sitemap-best-practices.md +0 -391
  1342. package/.opencode/skills/seo/references/technical-seo-checklist.md +0 -74
  1343. package/.opencode/skills/seo/scripts/analyze-keywords.cjs +0 -575
  1344. package/.opencode/skills/seo/scripts/audit-core-web-vitals.cjs +0 -496
  1345. package/.opencode/skills/seo/scripts/env-loader.cjs +0 -213
  1346. package/.opencode/skills/seo/scripts/env-loader.test.cjs +0 -231
  1347. package/.opencode/skills/seo/scripts/generate-schema.cjs +0 -119
  1348. package/.opencode/skills/seo/scripts/generate-sitemap.cjs +0 -66
  1349. package/.opencode/skills/seo/scripts/gsc-auth.cjs +0 -352
  1350. package/.opencode/skills/seo/scripts/gsc-config-loader.cjs +0 -238
  1351. package/.opencode/skills/seo/scripts/gsc-query.cjs +0 -499
  1352. package/.opencode/skills/seo/scripts/pseo-generator.cjs +0 -464
  1353. package/.opencode/skills/seo/scripts/validate-schema.cjs +0 -421
  1354. package/.opencode/skills/sequential-thinking/README.md +0 -183
  1355. package/.opencode/skills/sequential-thinking/SKILL.md +0 -97
  1356. package/.opencode/skills/sequential-thinking/package.json +0 -31
  1357. package/.opencode/skills/sequential-thinking/references/advanced-strategies.md +0 -79
  1358. package/.opencode/skills/sequential-thinking/references/advanced-techniques.md +0 -76
  1359. package/.opencode/skills/sequential-thinking/references/core-patterns.md +0 -95
  1360. package/.opencode/skills/sequential-thinking/references/examples-api.md +0 -88
  1361. package/.opencode/skills/sequential-thinking/references/examples-architecture.md +0 -94
  1362. package/.opencode/skills/sequential-thinking/references/examples-debug.md +0 -90
  1363. package/.opencode/skills/sequential-thinking/scripts/format-thought.js +0 -159
  1364. package/.opencode/skills/sequential-thinking/scripts/process-thought.js +0 -236
  1365. package/.opencode/skills/shader/SKILL.md +0 -115
  1366. package/.opencode/skills/shader/references/glsl-cellular-voronoi-worley-noise-patterns.md +0 -142
  1367. package/.opencode/skills/shader/references/glsl-colors-rgb-hsb-gradients-mixing-color-spaces.md +0 -143
  1368. package/.opencode/skills/shader/references/glsl-fbm-fractional-brownian-motion-turbulence-octaves.md +0 -146
  1369. package/.opencode/skills/shader/references/glsl-fundamentals-data-types-vectors-precision-coordinates.md +0 -104
  1370. package/.opencode/skills/shader/references/glsl-noise-random-perlin-simplex-cellular-voronoi.md +0 -115
  1371. package/.opencode/skills/shader/references/glsl-pattern-symmetry-truchet-domain-warping.md +0 -134
  1372. package/.opencode/skills/shader/references/glsl-patterns-tiling-fract-matrices-transformations.md +0 -133
  1373. package/.opencode/skills/shader/references/glsl-procedural-textures-clouds-marble-wood-terrain.md +0 -144
  1374. package/.opencode/skills/shader/references/glsl-shader-builtin-functions-complete-api-reference.md +0 -112
  1375. package/.opencode/skills/shader/references/glsl-shapes-polygon-star-polar-sdf-combinations.md +0 -124
  1376. package/.opencode/skills/shader/references/glsl-shapes-sdf-circles-rectangles-polar-distance-fields.md +0 -106
  1377. package/.opencode/skills/shader/references/glsl-shaping-functions-step-smoothstep-curves-interpolation.md +0 -141
  1378. package/.opencode/skills/ship/SKILL.md +0 -119
  1379. package/.opencode/skills/ship/references/auto-detect.md +0 -103
  1380. package/.opencode/skills/ship/references/pr-template.md +0 -90
  1381. package/.opencode/skills/ship/references/ship-workflow.md +0 -241
  1382. package/.opencode/skills/shopify/README.md +0 -66
  1383. package/.opencode/skills/shopify/SKILL.md +0 -323
  1384. package/.opencode/skills/shopify/references/app-development.md +0 -470
  1385. package/.opencode/skills/shopify/references/extensions.md +0 -493
  1386. package/.opencode/skills/shopify/references/themes.md +0 -498
  1387. package/.opencode/skills/shopify/scripts/.coverage +0 -0
  1388. package/.opencode/skills/shopify/scripts/requirements.txt +0 -19
  1389. package/.opencode/skills/shopify/scripts/shopify_init.py +0 -423
  1390. package/.opencode/skills/skill-creator/LICENSE.txt +0 -202
  1391. package/.opencode/skills/skill-creator/SKILL.md +0 -121
  1392. package/.opencode/skills/skill-creator/agents/analyzer.md +0 -274
  1393. package/.opencode/skills/skill-creator/agents/comparator.md +0 -202
  1394. package/.opencode/skills/skill-creator/agents/grader.md +0 -223
  1395. package/.opencode/skills/skill-creator/assets/eval_review.html +0 -146
  1396. package/.opencode/skills/skill-creator/eval-viewer/generate_review.py +0 -471
  1397. package/.opencode/skills/skill-creator/eval-viewer/viewer.html +0 -1325
  1398. package/.opencode/skills/skill-creator/references/benchmark-optimization-guide.md +0 -86
  1399. package/.opencode/skills/skill-creator/references/distribution-guide.md +0 -79
  1400. package/.opencode/skills/skill-creator/references/eval-infrastructure-guide.md +0 -129
  1401. package/.opencode/skills/skill-creator/references/eval-schemas.md +0 -121
  1402. package/.opencode/skills/skill-creator/references/mcp-skills-integration.md +0 -71
  1403. package/.opencode/skills/skill-creator/references/metadata-quality-criteria.md +0 -76
  1404. package/.opencode/skills/skill-creator/references/plugin-marketplace-hosting.md +0 -104
  1405. package/.opencode/skills/skill-creator/references/plugin-marketplace-overview.md +0 -89
  1406. package/.opencode/skills/skill-creator/references/plugin-marketplace-schema.md +0 -93
  1407. package/.opencode/skills/skill-creator/references/plugin-marketplace-sources.md +0 -103
  1408. package/.opencode/skills/skill-creator/references/plugin-marketplace-troubleshooting.md +0 -76
  1409. package/.opencode/skills/skill-creator/references/script-quality-criteria.md +0 -106
  1410. package/.opencode/skills/skill-creator/references/skill-anatomy-and-requirements.md +0 -76
  1411. package/.opencode/skills/skill-creator/references/skill-creation-workflow.md +0 -95
  1412. package/.opencode/skills/skill-creator/references/skill-design-patterns.md +0 -75
  1413. package/.opencode/skills/skill-creator/references/skillmark-benchmark-criteria.md +0 -102
  1414. package/.opencode/skills/skill-creator/references/structure-organization-criteria.md +0 -114
  1415. package/.opencode/skills/skill-creator/references/testing-and-iteration.md +0 -78
  1416. package/.opencode/skills/skill-creator/references/token-efficiency-criteria.md +0 -74
  1417. package/.opencode/skills/skill-creator/references/troubleshooting-guide.md +0 -80
  1418. package/.opencode/skills/skill-creator/references/validation-checklist.md +0 -83
  1419. package/.opencode/skills/skill-creator/references/writing-effective-instructions.md +0 -88
  1420. package/.opencode/skills/skill-creator/references/yaml-frontmatter-reference.md +0 -91
  1421. package/.opencode/skills/skill-creator/scripts/aggregate_benchmark.py +0 -401
  1422. package/.opencode/skills/skill-creator/scripts/debug.zip +0 -0
  1423. package/.opencode/skills/skill-creator/scripts/encoding_utils.py +0 -36
  1424. package/.opencode/skills/skill-creator/scripts/generate_report.py +0 -326
  1425. package/.opencode/skills/skill-creator/scripts/improve_description.py +0 -248
  1426. package/.opencode/skills/skill-creator/scripts/init_skill.py +0 -308
  1427. package/.opencode/skills/skill-creator/scripts/package_skill.py +0 -115
  1428. package/.opencode/skills/skill-creator/scripts/quick_validate.py +0 -69
  1429. package/.opencode/skills/skill-creator/scripts/run_eval.py +0 -310
  1430. package/.opencode/skills/skill-creator/scripts/run_loop.py +0 -332
  1431. package/.opencode/skills/skill-creator/scripts/utils.py +0 -47
  1432. package/.opencode/skills/slides/SKILL.md +0 -42
  1433. package/.opencode/skills/slides/references/copywriting-formulas.md +0 -84
  1434. package/.opencode/skills/slides/references/create.md +0 -4
  1435. package/.opencode/skills/slides/references/html-template.md +0 -295
  1436. package/.opencode/skills/slides/references/layout-patterns.md +0 -137
  1437. package/.opencode/skills/slides/references/slide-strategies.md +0 -94
  1438. package/.opencode/skills/social/SKILL.md +0 -75
  1439. package/.opencode/skills/social/references/engagement-templates.md +0 -58
  1440. package/.opencode/skills/social/references/facebook-workflow.md +0 -175
  1441. package/.opencode/skills/social/references/hook-writing.md +0 -190
  1442. package/.opencode/skills/social/references/linkedin-workflow.md +0 -162
  1443. package/.opencode/skills/social/references/platform-specs.md +0 -58
  1444. package/.opencode/skills/social/references/posting-best-practices.md +0 -61
  1445. package/.opencode/skills/social/references/rate-limits-errors.md +0 -191
  1446. package/.opencode/skills/social/references/schedule.md +0 -50
  1447. package/.opencode/skills/social/references/thread-templates.md +0 -72
  1448. package/.opencode/skills/social/references/threads-workflow.md +0 -198
  1449. package/.opencode/skills/social/references/tiktok-workflow.md +0 -194
  1450. package/.opencode/skills/social/references/unified-api-services.md +0 -153
  1451. package/.opencode/skills/social/references/x-twitter-workflow.md +0 -111
  1452. package/.opencode/skills/social/references/youtube-workflow.md +0 -179
  1453. package/.opencode/skills/social/scripts/schedule-post.js +0 -222
  1454. package/.opencode/skills/social/scripts/validate-post-content.js +0 -195
  1455. package/.opencode/skills/stitch/SKILL.md +0 -171
  1456. package/.opencode/skills/stitch/data/mcp-config-snippet.json +0 -11
  1457. package/.opencode/skills/stitch/references/design-to-code-pipeline.md +0 -128
  1458. package/.opencode/skills/stitch/references/quota-management.md +0 -64
  1459. package/.opencode/skills/stitch/references/stitch-mcp-setup.md +0 -95
  1460. package/.opencode/skills/stitch/references/stitch-sdk-api.md +0 -136
  1461. package/.opencode/skills/stitch/scripts/package.json +0 -17
  1462. package/.opencode/skills/stitch/scripts/stitch-export.ts +0 -173
  1463. package/.opencode/skills/stitch/scripts/stitch-generate.ts +0 -182
  1464. package/.opencode/skills/stitch/scripts/stitch-quota.ts +0 -123
  1465. package/.opencode/skills/storage/SKILL.md +0 -93
  1466. package/.opencode/skills/storage/scripts/s3-client.cjs +0 -357
  1467. package/.opencode/skills/tanstack/SKILL.md +0 -144
  1468. package/.opencode/skills/tanstack/references/tanstack-ai.md +0 -97
  1469. package/.opencode/skills/tanstack/references/tanstack-form.md +0 -125
  1470. package/.opencode/skills/tanstack/references/tanstack-start.md +0 -100
  1471. package/.opencode/skills/team/SKILL.md +0 -361
  1472. package/.opencode/skills/team/references/agent-teams-controls-and-modes.md +0 -129
  1473. package/.opencode/skills/team/references/agent-teams-examples-and-best-practices.md +0 -220
  1474. package/.opencode/skills/team/references/agent-teams-official-docs.md +0 -221
  1475. package/.opencode/skills/template-skill/SKILL.md +0 -9
  1476. package/.opencode/skills/test/SKILL.md +0 -40
  1477. package/.opencode/skills/test/references/report-format.md +0 -58
  1478. package/.opencode/skills/test/references/test-execution-workflow.md +0 -103
  1479. package/.opencode/skills/test/references/ui-testing-workflow.md +0 -65
  1480. package/.opencode/skills/test/references/ui.md +0 -87
  1481. package/.opencode/skills/test/references/workflow.md +0 -102
  1482. package/.opencode/skills/test/scripts/scan-components.py +0 -281
  1483. package/.opencode/skills/threejs/SKILL.md +0 -144
  1484. package/.opencode/skills/threejs/data/api-reference.csv +0 -61
  1485. package/.opencode/skills/threejs/data/categories.csv +0 -14
  1486. package/.opencode/skills/threejs/data/examples-all.csv +0 -557
  1487. package/.opencode/skills/threejs/data/use-cases.csv +0 -21
  1488. package/.opencode/skills/threejs/references/00-fundamentals.md +0 -487
  1489. package/.opencode/skills/threejs/references/01-getting-started.md +0 -177
  1490. package/.opencode/skills/threejs/references/02-loaders.md +0 -169
  1491. package/.opencode/skills/threejs/references/03-textures.md +0 -170
  1492. package/.opencode/skills/threejs/references/04-cameras.md +0 -195
  1493. package/.opencode/skills/threejs/references/05-lights.md +0 -183
  1494. package/.opencode/skills/threejs/references/06-animations.md +0 -214
  1495. package/.opencode/skills/threejs/references/07-math.md +0 -260
  1496. package/.opencode/skills/threejs/references/08-interaction.md +0 -267
  1497. package/.opencode/skills/threejs/references/09-postprocessing.md +0 -240
  1498. package/.opencode/skills/threejs/references/10-controls.md +0 -259
  1499. package/.opencode/skills/threejs/references/11-materials-advanced.md +0 -270
  1500. package/.opencode/skills/threejs/references/11-materials.md +0 -519
  1501. package/.opencode/skills/threejs/references/12-performance.md +0 -269
  1502. package/.opencode/skills/threejs/references/13-node-materials.md +0 -298
  1503. package/.opencode/skills/threejs/references/14-physics-vr.md +0 -304
  1504. package/.opencode/skills/threejs/references/15-specialized-loaders.md +0 -333
  1505. package/.opencode/skills/threejs/references/16-webgpu.md +0 -302
  1506. package/.opencode/skills/threejs/references/17-shader.md +0 -641
  1507. package/.opencode/skills/threejs/references/18-geometry.md +0 -547
  1508. package/.opencode/skills/threejs/scripts/core.py +0 -236
  1509. package/.opencode/skills/threejs/scripts/extract_examples.py +0 -688
  1510. package/.opencode/skills/threejs/scripts/generate_csv_from_json.py +0 -135
  1511. package/.opencode/skills/threejs/scripts/search.py +0 -77
  1512. package/.opencode/skills/ui-styling/LICENSE.txt +0 -202
  1513. package/.opencode/skills/ui-styling/SKILL.md +0 -324
  1514. package/.opencode/skills/ui-styling/canvas-fonts/ArsenalSC-OFL.txt +0 -93
  1515. package/.opencode/skills/ui-styling/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  1516. package/.opencode/skills/ui-styling/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  1517. package/.opencode/skills/ui-styling/canvas-fonts/BigShoulders-OFL.txt +0 -93
  1518. package/.opencode/skills/ui-styling/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  1519. package/.opencode/skills/ui-styling/canvas-fonts/Boldonse-OFL.txt +0 -93
  1520. package/.opencode/skills/ui-styling/canvas-fonts/Boldonse-Regular.ttf +0 -0
  1521. package/.opencode/skills/ui-styling/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  1522. package/.opencode/skills/ui-styling/canvas-fonts/BricolageGrotesque-OFL.txt +0 -93
  1523. package/.opencode/skills/ui-styling/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  1524. package/.opencode/skills/ui-styling/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  1525. package/.opencode/skills/ui-styling/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  1526. package/.opencode/skills/ui-styling/canvas-fonts/CrimsonPro-OFL.txt +0 -93
  1527. package/.opencode/skills/ui-styling/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  1528. package/.opencode/skills/ui-styling/canvas-fonts/DMMono-OFL.txt +0 -93
  1529. package/.opencode/skills/ui-styling/canvas-fonts/DMMono-Regular.ttf +0 -0
  1530. package/.opencode/skills/ui-styling/canvas-fonts/EricaOne-OFL.txt +0 -94
  1531. package/.opencode/skills/ui-styling/canvas-fonts/EricaOne-Regular.ttf +0 -0
  1532. package/.opencode/skills/ui-styling/canvas-fonts/GeistMono-Bold.ttf +0 -0
  1533. package/.opencode/skills/ui-styling/canvas-fonts/GeistMono-OFL.txt +0 -93
  1534. package/.opencode/skills/ui-styling/canvas-fonts/GeistMono-Regular.ttf +0 -0
  1535. package/.opencode/skills/ui-styling/canvas-fonts/Gloock-OFL.txt +0 -93
  1536. package/.opencode/skills/ui-styling/canvas-fonts/Gloock-Regular.ttf +0 -0
  1537. package/.opencode/skills/ui-styling/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  1538. package/.opencode/skills/ui-styling/canvas-fonts/IBMPlexMono-OFL.txt +0 -93
  1539. package/.opencode/skills/ui-styling/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  1540. package/.opencode/skills/ui-styling/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  1541. package/.opencode/skills/ui-styling/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  1542. package/.opencode/skills/ui-styling/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  1543. package/.opencode/skills/ui-styling/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  1544. package/.opencode/skills/ui-styling/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  1545. package/.opencode/skills/ui-styling/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  1546. package/.opencode/skills/ui-styling/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  1547. package/.opencode/skills/ui-styling/canvas-fonts/InstrumentSans-OFL.txt +0 -93
  1548. package/.opencode/skills/ui-styling/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  1549. package/.opencode/skills/ui-styling/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  1550. package/.opencode/skills/ui-styling/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  1551. package/.opencode/skills/ui-styling/canvas-fonts/Italiana-OFL.txt +0 -93
  1552. package/.opencode/skills/ui-styling/canvas-fonts/Italiana-Regular.ttf +0 -0
  1553. package/.opencode/skills/ui-styling/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  1554. package/.opencode/skills/ui-styling/canvas-fonts/JetBrainsMono-OFL.txt +0 -93
  1555. package/.opencode/skills/ui-styling/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  1556. package/.opencode/skills/ui-styling/canvas-fonts/Jura-Light.ttf +0 -0
  1557. package/.opencode/skills/ui-styling/canvas-fonts/Jura-Medium.ttf +0 -0
  1558. package/.opencode/skills/ui-styling/canvas-fonts/Jura-OFL.txt +0 -93
  1559. package/.opencode/skills/ui-styling/canvas-fonts/LibreBaskerville-OFL.txt +0 -93
  1560. package/.opencode/skills/ui-styling/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  1561. package/.opencode/skills/ui-styling/canvas-fonts/Lora-Bold.ttf +0 -0
  1562. package/.opencode/skills/ui-styling/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  1563. package/.opencode/skills/ui-styling/canvas-fonts/Lora-Italic.ttf +0 -0
  1564. package/.opencode/skills/ui-styling/canvas-fonts/Lora-OFL.txt +0 -93
  1565. package/.opencode/skills/ui-styling/canvas-fonts/Lora-Regular.ttf +0 -0
  1566. package/.opencode/skills/ui-styling/canvas-fonts/NationalPark-Bold.ttf +0 -0
  1567. package/.opencode/skills/ui-styling/canvas-fonts/NationalPark-OFL.txt +0 -93
  1568. package/.opencode/skills/ui-styling/canvas-fonts/NationalPark-Regular.ttf +0 -0
  1569. package/.opencode/skills/ui-styling/canvas-fonts/NothingYouCouldDo-OFL.txt +0 -93
  1570. package/.opencode/skills/ui-styling/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  1571. package/.opencode/skills/ui-styling/canvas-fonts/Outfit-Bold.ttf +0 -0
  1572. package/.opencode/skills/ui-styling/canvas-fonts/Outfit-OFL.txt +0 -93
  1573. package/.opencode/skills/ui-styling/canvas-fonts/Outfit-Regular.ttf +0 -0
  1574. package/.opencode/skills/ui-styling/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  1575. package/.opencode/skills/ui-styling/canvas-fonts/PixelifySans-OFL.txt +0 -93
  1576. package/.opencode/skills/ui-styling/canvas-fonts/PoiretOne-OFL.txt +0 -93
  1577. package/.opencode/skills/ui-styling/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  1578. package/.opencode/skills/ui-styling/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  1579. package/.opencode/skills/ui-styling/canvas-fonts/RedHatMono-OFL.txt +0 -93
  1580. package/.opencode/skills/ui-styling/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  1581. package/.opencode/skills/ui-styling/canvas-fonts/Silkscreen-OFL.txt +0 -93
  1582. package/.opencode/skills/ui-styling/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  1583. package/.opencode/skills/ui-styling/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  1584. package/.opencode/skills/ui-styling/canvas-fonts/SmoochSans-OFL.txt +0 -93
  1585. package/.opencode/skills/ui-styling/canvas-fonts/Tektur-Medium.ttf +0 -0
  1586. package/.opencode/skills/ui-styling/canvas-fonts/Tektur-OFL.txt +0 -93
  1587. package/.opencode/skills/ui-styling/canvas-fonts/Tektur-Regular.ttf +0 -0
  1588. package/.opencode/skills/ui-styling/canvas-fonts/WorkSans-Bold.ttf +0 -0
  1589. package/.opencode/skills/ui-styling/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  1590. package/.opencode/skills/ui-styling/canvas-fonts/WorkSans-Italic.ttf +0 -0
  1591. package/.opencode/skills/ui-styling/canvas-fonts/WorkSans-OFL.txt +0 -93
  1592. package/.opencode/skills/ui-styling/canvas-fonts/WorkSans-Regular.ttf +0 -0
  1593. package/.opencode/skills/ui-styling/canvas-fonts/YoungSerif-OFL.txt +0 -93
  1594. package/.opencode/skills/ui-styling/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  1595. package/.opencode/skills/ui-styling/references/canvas-design-system.md +0 -320
  1596. package/.opencode/skills/ui-styling/references/shadcn-accessibility.md +0 -471
  1597. package/.opencode/skills/ui-styling/references/shadcn-components.md +0 -424
  1598. package/.opencode/skills/ui-styling/references/shadcn-theming.md +0 -373
  1599. package/.opencode/skills/ui-styling/references/tailwind-customization.md +0 -483
  1600. package/.opencode/skills/ui-styling/references/tailwind-responsive.md +0 -382
  1601. package/.opencode/skills/ui-styling/references/tailwind-utilities.md +0 -455
  1602. package/.opencode/skills/ui-styling/scripts/.coverage +0 -0
  1603. package/.opencode/skills/ui-styling/scripts/requirements.txt +0 -17
  1604. package/.opencode/skills/ui-styling/scripts/shadcn_add.py +0 -292
  1605. package/.opencode/skills/ui-styling/scripts/tailwind_config_gen.py +0 -456
  1606. package/.opencode/skills/ui-ux-pro-max/SKILL.md +0 -662
  1607. package/.opencode/skills/ui-ux-pro-max/data/_sync_all.py +0 -414
  1608. package/.opencode/skills/ui-ux-pro-max/data/app-interface.csv +0 -31
  1609. package/.opencode/skills/ui-ux-pro-max/data/charts.csv +0 -26
  1610. package/.opencode/skills/ui-ux-pro-max/data/colors.csv +0 -162
  1611. package/.opencode/skills/ui-ux-pro-max/data/design.csv +0 -1776
  1612. package/.opencode/skills/ui-ux-pro-max/data/draft.csv +0 -1779
  1613. package/.opencode/skills/ui-ux-pro-max/data/google-fonts.csv +0 -1924
  1614. package/.opencode/skills/ui-ux-pro-max/data/icons.csv +0 -106
  1615. package/.opencode/skills/ui-ux-pro-max/data/landing.csv +0 -35
  1616. package/.opencode/skills/ui-ux-pro-max/data/products.csv +0 -162
  1617. package/.opencode/skills/ui-ux-pro-max/data/react-performance.csv +0 -45
  1618. package/.opencode/skills/ui-ux-pro-max/data/stacks/react-native.csv +0 -52
  1619. package/.opencode/skills/ui-ux-pro-max/data/styles.csv +0 -85
  1620. package/.opencode/skills/ui-ux-pro-max/data/typography.csv +0 -74
  1621. package/.opencode/skills/ui-ux-pro-max/data/ui-reasoning.csv +0 -162
  1622. package/.opencode/skills/ui-ux-pro-max/data/ux-guidelines.csv +0 -100
  1623. package/.opencode/skills/ui-ux-pro-max/scripts/core.py +0 -247
  1624. package/.opencode/skills/ui-ux-pro-max/scripts/design_system.py +0 -1067
  1625. package/.opencode/skills/ui-ux-pro-max/scripts/search.py +0 -114
  1626. package/.opencode/skills/use-mcp/SKILL.md +0 -39
  1627. package/.opencode/skills/video/SKILL.md +0 -72
  1628. package/.opencode/skills/video/references/audio-directive-guide.md +0 -274
  1629. package/.opencode/skills/video/references/create.md +0 -322
  1630. package/.opencode/skills/video/references/production-workflow.md +0 -135
  1631. package/.opencode/skills/video/references/quality-review-workflow.md +0 -566
  1632. package/.opencode/skills/video/references/script-create.md +0 -391
  1633. package/.opencode/skills/video/references/script-templates.md +0 -107
  1634. package/.opencode/skills/video/references/storyboard-create.md +0 -210
  1635. package/.opencode/skills/video/references/storyboard-format.md +0 -255
  1636. package/.opencode/skills/video/references/thumbnail-design-guide.md +0 -367
  1637. package/.opencode/skills/video/references/veo-prompt-guide.md +0 -360
  1638. package/.opencode/skills/video/references/video-art-directions.md +0 -64
  1639. package/.opencode/skills/video/references/video-optimization.md +0 -95
  1640. package/.opencode/skills/video/references/video-seo-optimization.md +0 -399
  1641. package/.opencode/skills/video/references/video-types-specs.md +0 -66
  1642. package/.opencode/skills/video/scripts/analyze-video.cjs +0 -321
  1643. package/.opencode/skills/video/scripts/create-storyboard.cjs +0 -476
  1644. package/.opencode/skills/video/scripts/extract-captions.cjs +0 -355
  1645. package/.opencode/skills/video/scripts/generate-video.cjs +0 -331
  1646. package/.opencode/skills/video/scripts/optimize-for-platform.cjs +0 -428
  1647. package/.opencode/skills/video/templates/explainer.json +0 -73
  1648. package/.opencode/skills/video/templates/product-demo.json +0 -69
  1649. package/.opencode/skills/video/templates/short-form.json +0 -111
  1650. package/.opencode/skills/video/templates/testimonial.json +0 -73
  1651. package/.opencode/skills/watzup/SKILL.md +0 -13
  1652. package/.opencode/skills/web-design-guidelines/SKILL.md +0 -39
  1653. package/.opencode/skills/web-frameworks/SKILL.md +0 -327
  1654. package/.opencode/skills/web-frameworks/references/nextjs-app-router.md +0 -465
  1655. package/.opencode/skills/web-frameworks/references/nextjs-data-fetching.md +0 -459
  1656. package/.opencode/skills/web-frameworks/references/nextjs-optimization.md +0 -511
  1657. package/.opencode/skills/web-frameworks/references/nextjs-server-components.md +0 -495
  1658. package/.opencode/skills/web-frameworks/references/remix-icon-integration.md +0 -603
  1659. package/.opencode/skills/web-frameworks/references/turborepo-caching.md +0 -551
  1660. package/.opencode/skills/web-frameworks/references/turborepo-pipelines.md +0 -517
  1661. package/.opencode/skills/web-frameworks/references/turborepo-setup.md +0 -542
  1662. package/.opencode/skills/web-frameworks/scripts/.coverage +0 -0
  1663. package/.opencode/skills/web-frameworks/scripts/__init__.py +0 -0
  1664. package/.opencode/skills/web-frameworks/scripts/nextjs_init.py +0 -547
  1665. package/.opencode/skills/web-frameworks/scripts/requirements.txt +0 -16
  1666. package/.opencode/skills/web-frameworks/scripts/turborepo_migrate.py +0 -394
  1667. package/.opencode/skills/web-testing/SKILL.md +0 -99
  1668. package/.opencode/skills/web-testing/references/accessibility-testing.md +0 -84
  1669. package/.opencode/skills/web-testing/references/api-testing.md +0 -78
  1670. package/.opencode/skills/web-testing/references/ci-cd-testing-workflows.md +0 -121
  1671. package/.opencode/skills/web-testing/references/component-testing.md +0 -94
  1672. package/.opencode/skills/web-testing/references/contract-testing.md +0 -146
  1673. package/.opencode/skills/web-testing/references/cross-browser-checklist.md +0 -72
  1674. package/.opencode/skills/web-testing/references/database-testing.md +0 -139
  1675. package/.opencode/skills/web-testing/references/e2e-testing-playwright.md +0 -119
  1676. package/.opencode/skills/web-testing/references/functional-testing-checklist.md +0 -88
  1677. package/.opencode/skills/web-testing/references/interactive-testing-patterns.md +0 -89
  1678. package/.opencode/skills/web-testing/references/load-testing-k6.md +0 -93
  1679. package/.opencode/skills/web-testing/references/mobile-gesture-testing.md +0 -85
  1680. package/.opencode/skills/web-testing/references/performance-core-web-vitals.md +0 -124
  1681. package/.opencode/skills/web-testing/references/playwright-component-testing.md +0 -115
  1682. package/.opencode/skills/web-testing/references/pre-release-checklist.md +0 -75
  1683. package/.opencode/skills/web-testing/references/security-checklists.md +0 -81
  1684. package/.opencode/skills/web-testing/references/security-testing-overview.md +0 -92
  1685. package/.opencode/skills/web-testing/references/shadow-dom-testing.md +0 -70
  1686. package/.opencode/skills/web-testing/references/test-data-management.md +0 -131
  1687. package/.opencode/skills/web-testing/references/test-flakiness-mitigation.md +0 -86
  1688. package/.opencode/skills/web-testing/references/testing-pyramid-strategy.md +0 -76
  1689. package/.opencode/skills/web-testing/references/unit-integration-testing.md +0 -138
  1690. package/.opencode/skills/web-testing/references/visual-regression.md +0 -92
  1691. package/.opencode/skills/web-testing/references/vulnerability-payloads.md +0 -93
  1692. package/.opencode/skills/web-testing/scripts/analyze-test-results.js +0 -280
  1693. package/.opencode/skills/web-testing/scripts/init-playwright.js +0 -233
  1694. package/.opencode/skills/worktree/SKILL.md +0 -130
  1695. package/.opencode/skills/worktree/scripts/worktree.cjs +0 -979
  1696. package/.opencode/skills/worktree/scripts/worktree.test.cjs +0 -857
  1697. package/.opencode/skills/write/SKILL.md +0 -28
  1698. package/.opencode/skills/write/references/audit.md +0 -93
  1699. package/.opencode/skills/write/references/blog-youtube.md +0 -164
  1700. package/.opencode/skills/write/references/blog.md +0 -95
  1701. package/.opencode/skills/write/references/cro.md +0 -38
  1702. package/.opencode/skills/write/references/enhance.md +0 -9
  1703. package/.opencode/skills/write/references/fast.md +0 -8
  1704. package/.opencode/skills/write/references/formula.md +0 -112
  1705. package/.opencode/skills/write/references/good.md +0 -29
  1706. package/.opencode/skills/write/references/publish.md +0 -70
  1707. package/.opencode/skills/youtube/SKILL.md +0 -50
  1708. package/.opencode/skills/youtube/references/api-content.md +0 -96
  1709. package/.opencode/skills/youtube/references/api-media.md +0 -66
  1710. package/.opencode/skills/youtube/references/blog.md +0 -132
  1711. package/.opencode/skills/youtube/references/infographic.md +0 -152
  1712. package/.opencode/skills/youtube/references/social.md +0 -165
  1713. package/.opencode/skills/youtube/scripts/test_vidcap.py +0 -172
  1714. package/.opencode/skills/youtube/scripts/vidcap.py +0 -302
  1715. package/.opencode/skills/youtube-thumbnail-design/SKILL.md +0 -186
  1716. package/.opencode/skills/youtube-thumbnail-design/data/niches.csv +0 -13
  1717. package/.opencode/skills/youtube-thumbnail-design/data/styles.csv +0 -18
  1718. package/.opencode/skills/youtube-thumbnail-design/references/thumbnail-styles.md +0 -170
  1719. package/.opencode/skills/youtube-thumbnail-design/scripts/core.py +0 -150
  1720. package/.opencode/skills/youtube-thumbnail-design/scripts/generate.py +0 -441
  1721. package/.opencode/skills/youtube-thumbnail-design/scripts/search.py +0 -115
  1722. package/.opencode/workflows/analytics-workflow.md +0 -264
  1723. package/.opencode/workflows/campaign-workflow.md +0 -228
  1724. package/.opencode/workflows/content-workflow.md +0 -275
  1725. package/.opencode/workflows/development-rules.md +0 -42
  1726. package/.opencode/workflows/documentation-management.md +0 -121
  1727. package/.opencode/workflows/marketing-workflow.md +0 -198
  1728. package/.opencode/workflows/orchestration-protocol.md +0 -16
  1729. package/.opencode/workflows/primary-workflow.md +0 -45
  1730. package/.opencode/workflows/sales-workflow.md +0 -193
  1731. package/.opencode/workflows/seo-workflow.md +0 -248
  1732. package/dist/web/assets/chat-tab-B3ut-s33.js +0 -10
  1733. package/dist/web/assets/index-BFXOaZuI.js +0 -30
  1734. package/dist/web/assets/index-Dxq-L2b4.css +0 -2
  1735. package/dist/web/assets/keybindings-store-A-4OusX7.js +0 -1
  1736. package/dist/web/assets/markdown-renderer-Br_NykOI.js +0 -69
@@ -1,10 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/api-client-BfBM3I7n.js","assets/chunk-CFjPhJqf.js"])))=>i.map(i=>d[i]);
2
- import{o as e}from"./chunk-CFjPhJqf.js";import{t}from"./react-nm2Ru1Pt.js";import"./react-dom-Bpkvzu3U.js";import{t as n}from"./createLucideIcon-PuMiQgHl.js";import{t as r}from"./arrow-up-BYhx9ckd.js";import{n as i,t as a}from"./x-D2_KzIET.js";import{t as o}from"./chevron-right-4zq1jPv6.js";import{n as s,t as c}from"./markdown-renderer-Br_NykOI.js";import{t as l}from"./columns-2-BoZAN-iw.js";import{t as u}from"./square-oPKIkJiw.js";import{t as d}from"./tag-CXMT0QB6.js";import{t as f}from"./preload-helper-Bf_JiD2A.js";import{t as p}from"./jsx-runtime-kMwlnEGE.js";import"./dist-DIV6WgAG.js";import{n as m,r as h,t as g}from"./utils-BNytJOb1.js";import{i as _,r as v,t as y}from"./api-client-BfBM3I7n.js";import{a as b,c as x,f as ee,g as S,i as C,l as w,m as T,o as E,p as D,r as O,s as k,t as A,u as j}from"./api-settings-Bn-bIxD1.js";import{$ as M,A as N,At as P,B as te,C as F,Ct as I,D as L,Dt as R,E as z,Ft as B,It as V,J as H,K as U,Lt as W,M as G,Mt as ne,O as K,Ot as q,Pt as re,Q as ie,T as J,Tt as Y,X,Y as ae,Z as oe,_t as se,bt as ce,c as le,ct as ue,d as de,dt as fe,et as pe,f as me,ft as he,h as ge,ht as _e,i as ve,it as ye,j as be,jt as xe,k as Se,l as Ce,m as we,nt as Te,ot as Ee,p as De,pt as Z,q as Oe,r as ke,rt as Ae,s as je,st as Me,t as Ne,tt as Pe,u as Fe,ut as Ie,vt as Le,wt as Re}from"./index-BFXOaZuI.js";import"./chunk-GEFDOKGD-D-pKjlVd.js";import"./src-BqX54PbV.js";import"./chunk-7R4GIKGN-Dv-4cAYn.js";import"./chunk-HHEYEP7N-C7vxA5i9.js";import"./dist-CSJdAyA9.js";import"./chunk-PU5JKC2W-ek7k4QVB.js";import"./chunk-MX3YWQON-BpS_PtKp.js";import"./chunk-YBOYWFTD-rQG3QH5s.js";import"./chunk-PQ6SQG4A-TF58UVMU.js";import"./chunk-KYZI473N-Bb0MCaIO.js";import"./chunk-O4XLMI2P-nDhi_cVu.js";import"./chunk-GLR3WWYH-DKikpoJM.js";import"./chunk-XPW4576I-BPQQBakK.js";var ze=n(`activity`,[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]),Be=n(`circle-x`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]]),Ve=n(`clipboard-check`,[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}],[`path`,{d:`m9 14 2 2 4-4`,key:`df797q`}]]),He=n(`clipboard-list`,[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}],[`path`,{d:`M12 11h4`,key:`1jrz19`}],[`path`,{d:`M12 16h4`,key:`n85exb`}],[`path`,{d:`M8 11h.01`,key:`1dfujw`}],[`path`,{d:`M8 16h.01`,key:`18s6g9`}]]),Ue=n(`hand`,[[`path`,{d:`M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2`,key:`1fvzgz`}],[`path`,{d:`M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v2`,key:`1kc0my`}],[`path`,{d:`M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8`,key:`10h0bg`}],[`path`,{d:`M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15`,key:`1s1gnw`}]]),We=n(`history`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}],[`path`,{d:`M12 7v5l4 2`,key:`1fdv2h`}]]),Ge=n(`image`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`,key:`1m3agn`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}],[`path`,{d:`m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21`,key:`1xmnt7`}]]),Ke=n(`list-ordered`,[[`path`,{d:`M11 5h10`,key:`1cz7ny`}],[`path`,{d:`M11 12h10`,key:`1438ji`}],[`path`,{d:`M11 19h10`,key:`11t30w`}],[`path`,{d:`M4 4h1v5`,key:`10yrso`}],[`path`,{d:`M4 9h2`,key:`r1h2o0`}],[`path`,{d:`M6.5 20H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02`,key:`xtkcd5`}]]),qe=n(`list-todo`,[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`rect`,{x:`3`,y:`4`,width:`6`,height:`6`,rx:`1`,key:`cif1o7`}]]),Je=n(`maximize-2`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`m21 3-7 7`,key:`1l2asr`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M9 21H3v-6`,key:`wtvkvv`}]]),Ye=n(`mic-off`,[[`path`,{d:`M12 19v3`,key:`npa21l`}],[`path`,{d:`M15 9.34V5a3 3 0 0 0-5.68-1.33`,key:`1gzdoj`}],[`path`,{d:`M16.95 16.95A7 7 0 0 1 5 12v-2`,key:`cqa7eg`}],[`path`,{d:`M18.89 13.23A7 7 0 0 0 19 12v-2`,key:`16hl24`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M9 9v3a3 3 0 0 0 5.12 2.12`,key:`r2i35w`}]]),Xe=n(`minimize-2`,[[`path`,{d:`m14 10 7-7`,key:`oa77jy`}],[`path`,{d:`M20 10h-6V4`,key:`mjg0md`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M4 14h6v6`,key:`rmj7iw`}]]),Ze=n(`paperclip`,[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]),Qe=n(`settings-2`,[[`path`,{d:`M14 17H5`,key:`gfn3mx`}],[`path`,{d:`M19 7h-9`,key:`6i9tg`}],[`circle`,{cx:`17`,cy:`17`,r:`3`,key:`18b49y`}],[`circle`,{cx:`7`,cy:`7`,r:`3`,key:`dfmy0x`}]]),$e=n(`shield-alert`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`M12 8v4`,key:`1got3b`}],[`path`,{d:`M12 16h.01`,key:`1drbdi`}]]),et=n(`shield-off`,[[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M5 5a1 1 0 0 0-1 1v7c0 5 3.5 7.5 7.67 8.94a1 1 0 0 0 .67.01c2.35-.82 4.48-1.97 5.9-3.71`,key:`1jlk70`}],[`path`,{d:`M9.309 3.652A12.252 12.252 0 0 0 11.24 2.28a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1v7a9.784 9.784 0 0 1-.08 1.264`,key:`18rp1v`}]]),tt=n(`sparkles`,[[`path`,{d:`M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z`,key:`1s2grr`}],[`path`,{d:`M20 2v4`,key:`1rf3ol`}],[`path`,{d:`M22 4h-4`,key:`gwowj6`}],[`circle`,{cx:`4`,cy:`20`,r:`2`,key:`6kqj1y`}]]),nt=n(`users`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]),rt=n(`zap`,[[`path`,{d:`M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z`,key:`1xq2db`}]]),Q=e(t(),1);function it({url:e,onMessage:t,autoConnect:n=!0}){let r=(0,Q.useRef)(null);return(0,Q.useEffect)(()=>{let i=new Ne(e);return r.current=i,t&&i.onMessage(t),n&&i.connect(),()=>{i.disconnect(),r.current=null}},[e,n]),{send:(0,Q.useCallback)(e=>{r.current?.send(e)},[]),connect:(0,Q.useCallback)(()=>{r.current?.connect()},[]),disconnect:(0,Q.useCallback)(()=>{r.current?.disconnect()},[])}}var at=null;function ot(){return at||=new AudioContext,at}function st(e,t,n,r,i=`sine`){let a=ot(),o=a.createOscillator(),s=a.createGain();o.type=i,o.frequency.value=e,s.gain.setValueAtTime(r,n),s.gain.exponentialRampToValueAtTime(.001,n+t),o.connect(s),s.connect(a.destination),o.start(n),o.stop(n+t)}function ct(){let e=ot().currentTime;st(523,.15,e,.15),st(659,.2,e+.12,.15)}function lt(){let e=ot().currentTime;st(880,.12,e,.18,`square`),st(698,.12,e+.15,.18,`square`),st(880,.15,e+.3,.15,`square`)}function ut(){let e=ot().currentTime;st(440,.12,e,.12),st(523,.12,e+.1,.12),st(659,.18,e+.2,.12)}var dt={done:ct,approval_request:lt,question:ut};function ft(e){try{dt[e]?.()}catch{}}var pt={hasTeams:!1,teamNames:[],messageCount:0,unreadCount:0};function mt(e){if(document.hidden)return!1;let{panels:t,focusedPanelId:n}=H.getState(),r=t[n];if(!r)return!1;let i=r.tabs.find(e=>e.id===r.activeTabId);return i?.type===`chat`&&i.metadata?.sessionId===e}function ht(e,t=`claude`,n=``){let[r,i]=(0,Q.useState)([]),[a,o]=(0,Q.useState)(!1),[s,c]=(0,Q.useState)(`idle`),[l,u]=(0,Q.useState)(!1),[d,f]=(0,Q.useState)(0),[p,m]=(0,Q.useState)(null),[h,g]=(0,Q.useState)(null),[b,x]=(0,Q.useState)(null),[ee,S]=(0,Q.useState)(null),[C,w]=(0,Q.useState)(null),[T,E]=(0,Q.useState)(!1),D=(0,Q.useRef)(``),O=(0,Q.useRef)([]),k=(0,Q.useRef)(null),A=(0,Q.useRef)(`idle`),j=(0,Q.useRef)(null),M=(0,Q.useRef)(()=>{}),N=(0,Q.useRef)(null),P=(0,Q.useRef)(e);P.current=e;let F=(0,Q.useRef)(n);F.current=n;let I=(0,Q.useRef)(null),L=(0,Q.useRef)({teamNames:new Set,messages:[]}),R=(0,Q.useRef)(0),[z,B]=(0,Q.useState)(pt),[V,U]=(0,Q.useState)([]),W=(0,Q.useCallback)(()=>{let e=L.current;B({hasTeams:e.teamNames.size>0,teamNames:Array.from(e.teamNames),messageCount:e.messages.length,unreadCount:R.current}),U([...e.messages])},[]),G=(0,Q.useCallback)(()=>{R.current=0,W()},[W]),ne=s!==`idle`,K=(0,Q.useCallback)((e,t)=>{let n=O.current.findIndex(e=>e.type===`tool_use`&&(e.tool===`Agent`||e.tool===`Task`)&&e.toolUseId===t);if(n===-1)return!1;let r=O.current[n];if(r.type!==`tool_use`)return!1;let i=[...r.children??[],e];return O.current[n]={...r,children:i},!0},[]),q=(0,Q.useCallback)(()=>{let e=D.current,t=[...O.current],n=k.current;i(r=>{let i=r[r.length-1];return i?.role===`assistant`&&!i.id.startsWith(`final-`)?[...r.slice(0,-1),{...i,content:e,events:t,...n}]:[...r,{id:`streaming-${Date.now()}`,role:`assistant`,content:e,events:t,timestamp:new Date().toISOString(),...n}]})},[]),re=(0,Q.useCallback)(e=>{let t=e,n=t?.type;if(n)switch(n){case`account_info`:k.current={accountId:t.accountId,accountLabel:t.accountLabel},S(null);break;case`account_retry`:t.accountId&&t.accountLabel&&(k.current={accountId:t.accountId,accountLabel:t.accountLabel}),O.current.push(t),q();break;case`status_update`:{let e=t.accountLabel?` (${t.accountLabel})`:``;S(`${t.message}${e}`);break}case`text`:{let e=t.parentToolUseId;if(e&&K(t,e)){q();break}D.current+=t.content,O.current.push(t),q();break}case`thinking`:{let e=t.parentToolUseId;if(e&&K(t,e)){q();break}O.current.push(t),q();break}case`tool_use`:{let e=t.parentToolUseId;if(e&&K(t,e)){q();break}O.current.push(t),q();break}case`tool_result`:{let e=t.parentToolUseId;if(e&&K(t,e)){q();break}O.current.push(t),q();break}case`approval_request`:if(O.current.push(t),m({requestId:t.requestId,tool:t.tool,input:t.input}),P.current&&!mt(P.current)){let e=t.tool===`AskUserQuestion`?`question`:`approval_request`;te.getState().addNotification(P.current,e,F.current),ft(e);let n=P.current,r=t.tool===`AskUserQuestion`;I.current=X[r?`info`:`warning`](r?`AI has a question`:`${t.tool} needs permission`,{description:F.current||`Session ${n.slice(0,8)}`,duration:1/0,action:{label:`Go to session`,onClick:()=>{let{panels:e}=H.getState();for(let[t,r]of Object.entries(e)){let e=r.tabs.find(e=>e.metadata?.sessionId===n);if(e){H.getState().setActiveTab(e.id,t);break}}}}})}break;case`error`:{O.current.push(t);let e=[...O.current];i(n=>{let r=n[n.length-1];return r?.role===`assistant`?[...n.slice(0,-1),{...r,events:e}]:[...n,{id:`error-${Date.now()}`,role:`system`,content:t.message,events:[t],timestamp:new Date().toISOString()}]});break}case`team_detected`:{let e=t.teamName;e&&(L.current.teamNames.add(e),y.get(`/api/teams/${encodeURIComponent(e)}`).then(e=>{if(e?.messages){let t=L.current.messages,n=e.messages.filter(e=>!t.some(t=>t.timestamp===e.timestamp&&t.from===e.from));t.push(...n),t.sort((e,t)=>new Date(e.timestamp).getTime()-new Date(t.timestamp).getTime())}W()}).catch(()=>{}),W());break}case`team_inbox`:{let e=t.messages;Array.isArray(e)&&(L.current.messages.push(...e),R.current+=e.length,W());break}case`team_updated`:W();break;case`done`:{if(A.current===`idle`)break;t.contextWindowPct!=null&&g(t.contextWindowPct),P.current&&!mt(P.current)&&(te.getState().addNotification(P.current,`done`,F.current),ft(`done`));let e=D.current,n=[...O.current];i(t=>{let r=t[t.length-1];return r?.role===`assistant`?[...t.slice(0,-1),{...r,id:`final-${Date.now()}`,content:e||r.content,events:n.length>0?n:r.events}]:t}),D.current=``,O.current=[],k.current=null,S(null);break}}},[K,q]),ie=(0,Q.useCallback)(e=>{let t;try{t=JSON.parse(e.data)}catch{return}if(t.type!==`ping`){if(t.type===`title_updated`){w(t.title??null);return}if(t.type===`compact_status`){let e=t.status;e===`compacting`?x(`compacting`):e===`done`&&(x(null),N.current?.());return}if(t.type===`phase_changed`){let e=t.phase;c(e),A.current=e,f(e===`connecting`?t.elapsed??0:0);return}if(t.type===`session_state`){E(!0);let e=t,n=e.phase;c(n),A.current=n,e.sessionTitle&&w(e.sessionTitle),e.pendingApproval&&m({requestId:e.pendingApproval.requestId,tool:e.pendingApproval.tool,input:e.pendingApproval.input}),n===`idle`&&(N.current?.(),u(!1));return}if(t.type===`turn_events`){let e=t.events;if(!e?.length){u(!1);return}i(e=>{let t=e.findLastIndex(e=>e.role===`user`);return t>=0?e.slice(0,t+1):e}),D.current=``,O.current=[],k.current=null;let n=0,r=()=>{let t=Math.min(n+100,e.length);for(let r=n;r<t;r++)re(e[r]);n=t,n<e.length?requestAnimationFrame(r):u(!1)};requestAnimationFrame(r);return}re(t)}},[re]),{send:J,connect:Y}=it({url:e&&n?`/ws/project/${encodeURIComponent(n)}/chat/${e}`:``,onMessage:ie,autoConnect:!!e&&!!n});M.current=J,(0,Q.useEffect)(()=>{let r=!1;return c(`idle`),A.current=`idle`,m(null),I.current!=null&&(X.dismiss(I.current),I.current=null),x(null),D.current=``,O.current=[],E(!1),L.current={teamNames:new Set,messages:[]},R.current=0,B(pt),U([]),e&&n?(o(!0),fetch(`${_(n)}/chat/sessions/${e}/messages?providerId=${t}`,{headers:{Authorization:`Bearer ${v()}`}}).then(e=>e.json()).then(e=>{r||A.current!==`idle`||(e.ok&&Array.isArray(e.data)&&e.data.length>0?i(e.data):i([]))}).catch(()=>{!r&&A.current===`idle`&&i([])}).finally(()=>{r||o(!1)})):i([]),()=>{r=!0}},[e,t,n]);let ae=(0,Q.useCallback)((e,t)=>{if(!e.trim())return;let n=A.current!==`idle`;if(n){let e=D.current,t=[...O.current];i(n=>{let r=n[n.length-1];return r?.role===`assistant`?[...n.slice(0,-1),{...r,id:`final-${Date.now()}`,content:e||r.content,events:t.length>0?t:r.events}]:n})}i(t=>[...t,{id:`user-${Date.now()}`,role:`user`,content:e,timestamp:new Date().toISOString()}]),D.current=``,O.current=[],j.current=null,n?(c(`thinking`),A.current=`thinking`):(c(`initializing`),A.current=`initializing`),m(null),I.current!=null&&(X.dismiss(I.current),I.current=null),J(JSON.stringify({type:`message`,content:e,permissionMode:t?.permissionMode,priority:t?.priority,images:t?.images}))},[J]),oe=(0,Q.useCallback)((e,t,n)=>{if(J(JSON.stringify({type:`approval_response`,requestId:e,approved:t,data:n})),t&&n){let t=O.current.find(t=>t.type===`approval_request`&&t.requestId===e&&t.tool===`AskUserQuestion`);if(t){let e=t.input;e&&typeof e==`object`&&(e.answers=n)}i(e=>[...e])}m(null),I.current!=null&&(X.dismiss(I.current),I.current=null)},[J]),se=(0,Q.useCallback)(()=>{if(A.current===`idle`)return;J(JSON.stringify({type:`cancel`}));let e=D.current,t=[...O.current];i(n=>{let r=n[n.length-1];return r?.role===`assistant`?[...n.slice(0,-1),{...r,id:`final-${Date.now()}`,content:e||r.content,events:t.length>0?t:r.events}]:n}),D.current=``,O.current=[],j.current=null,c(`idle`),A.current=`idle`,m(null),I.current!=null&&(X.dismiss(I.current),I.current=null)},[J]),ce=(0,Q.useCallback)(()=>{E(!1),u(!0),Y()},[Y]),le=(0,Q.useCallback)(()=>{!e||!n||(o(!0),fetch(`${_(n)}/chat/sessions/${e}/messages?providerId=${t}`,{headers:{Authorization:`Bearer ${v()}`}}).then(e=>e.json()).then(e=>{e.ok&&Array.isArray(e.data)&&e.data.length>0&&(i(e.data),D.current=``,O.current=[])}).catch(()=>{}).finally(()=>o(!1)))},[e,t,n]);return N.current=le,{messages:r,messagesLoading:a,isStreaming:ne,phase:s,isReconnecting:l,connectingElapsed:d,pendingApproval:p,contextWindowPct:h,compactStatus:b,statusMessage:ee,sessionTitle:C,teamActivity:z,teamMessages:V,markTeamRead:G,sendMessage:ae,respondToApproval:oe,cancelStreaming:se,reconnect:ce,refetchMessages:le,isConnected:T}}var gt=12e4;function _t(e,t=`claude`){let[n,r]=(0,Q.useState)({}),[i,a]=(0,Q.useState)(!1),[o,s]=(0,Q.useState)(null),c=(0,Q.useRef)(null),l=(0,Q.useCallback)((n=!1)=>{if(!e)return;a(!0);let i=n?`&refresh=1`:``;fetch(`${_(e)}/chat/usage?providerId=${t}${i}`,{headers:{Authorization:`Bearer ${v()}`}}).then(e=>e.json()).then(e=>{e.ok&&e.data&&(r(t=>({...t,...e.data})),e.data.lastFetchedAt&&s(e.data.lastFetchedAt))}).catch(()=>{}).finally(()=>a(!1))},[e,t]);return(0,Q.useEffect)(()=>(l(),c.current=setInterval(()=>l(),gt),()=>{c.current&&clearInterval(c.current)}),[l]),{usageInfo:n,usageLoading:i,lastFetchedAt:o,refreshUsage:(0,Q.useCallback)(()=>l(!0),[l])}}var vt={damping:.7,stiffness:.05,mass:1.25},yt=70,bt=1e3/60,xt=350,St=!1;globalThis.document?.addEventListener(`mousedown`,()=>{St=!0}),globalThis.document?.addEventListener(`mouseup`,()=>{St=!1}),globalThis.document?.addEventListener(`click`,()=>{St=!1});var Ct=(e={})=>{let[t,n]=(0,Q.useState)(!1),[r,i]=(0,Q.useState)(e.initial!==!1),[a,o]=(0,Q.useState)(!1),s=(0,Q.useRef)(null);s.current=e;let c=(0,Q.useCallback)(()=>{if(!St)return!1;let e=window.getSelection();if(!e||!e.rangeCount)return!1;let t=e.getRangeAt(0);return t.commonAncestorContainer.contains(g.current)||g.current?.contains(t.commonAncestorContainer)},[]),l=(0,Q.useCallback)(e=>{d.isAtBottom=e,i(e)},[]),u=(0,Q.useCallback)(e=>{d.escapedFromLock=e,n(e)},[]),d=(0,Q.useMemo)(()=>{let n;return{escapedFromLock:t,isAtBottom:r,resizeDifference:0,accumulated:0,velocity:0,listeners:new Set,get scrollTop(){return g.current?.scrollTop??0},set scrollTop(e){g.current&&(g.current.scrollTop=e,d.ignoreScrollToTop=g.current.scrollTop)},get targetScrollTop(){return!g.current||!_.current?0:g.current.scrollHeight-1-g.current.clientHeight},get calculatedTargetScrollTop(){if(!g.current||!_.current)return 0;let{targetScrollTop:t}=this;if(!e.targetScrollTop)return t;if(n?.targetScrollTop===t)return n.calculatedScrollTop;let r=Math.max(Math.min(e.targetScrollTop(t,{scrollElement:g.current,contentElement:_.current}),t),0);return n={targetScrollTop:t,calculatedScrollTop:r},requestAnimationFrame(()=>{n=void 0}),r},get scrollDifference(){return this.calculatedTargetScrollTop-this.scrollTop},get isNearBottom(){return this.scrollDifference<=yt}}},[]),f=(0,Q.useCallback)((e={})=>{typeof e==`string`&&(e={animation:e}),e.preserveScrollPosition||l(!0);let t=Date.now()+(Number(e.wait)||0),n=Et(s.current,e.animation),{ignoreEscapes:r=!1}=e,i,a=d.calculatedTargetScrollTop;e.duration instanceof Promise?e.duration.finally(()=>{i=Date.now()}):i=t+(e.duration??0);let o=async()=>{let e=new Promise(requestAnimationFrame).then(()=>{if(!d.isAtBottom)return d.animation=void 0,!1;let{scrollTop:l}=d,u=performance.now(),p=(u-(d.lastTick??u))/bt;if(d.animation||={behavior:n,promise:e,ignoreEscapes:r},d.animation.behavior===n&&(d.lastTick=u),c()||t>Date.now())return o();if(l<Math.min(a,d.calculatedTargetScrollTop)){if(d.animation?.behavior===n){if(n===`instant`)return d.scrollTop=d.calculatedTargetScrollTop,o();d.velocity=(n.damping*d.velocity+n.stiffness*d.scrollDifference)/n.mass,d.accumulated+=d.velocity*p,d.scrollTop+=d.accumulated,d.scrollTop!==l&&(d.accumulated=0)}return o()}return i>Date.now()?(a=d.calculatedTargetScrollTop,o()):(d.animation=void 0,d.scrollTop<d.calculatedTargetScrollTop?f({animation:Et(s.current,s.current.resize),ignoreEscapes:r,duration:Math.max(0,i-Date.now())||void 0}):d.isAtBottom)});return e.then(e=>(requestAnimationFrame(()=>{d.animation||(d.lastTick=void 0,d.velocity=0)}),e))};return e.wait!==!0&&(d.animation=void 0),d.animation?.behavior===n?d.animation.promise:o()},[l,c,d]),p=(0,Q.useCallback)(()=>{u(!0),l(!1)},[u,l]),m=(0,Q.useCallback)(({target:e})=>{if(e!==g.current)return;let{scrollTop:t,ignoreScrollToTop:n}=d,{lastScrollTop:r=t}=d;d.lastScrollTop=t,d.ignoreScrollToTop=void 0,n&&n>t&&(r=n),o(d.isNearBottom),setTimeout(()=>{if(d.resizeDifference||t===n)return;if(c()){u(!0),l(!1);return}let e=t>r,i=t<r;if(d.animation?.ignoreEscapes){d.scrollTop=r;return}i&&(u(!0),l(!1)),e&&u(!1),!d.escapedFromLock&&d.isNearBottom&&l(!0)},1)},[u,l,c,d]),h=(0,Q.useCallback)(({target:e,deltaY:t})=>{let n=e;for(;![`scroll`,`auto`].includes(getComputedStyle(n).overflow);){if(!n.parentElement)return;n=n.parentElement}n===g.current&&t<0&&g.current.scrollHeight>g.current.clientHeight&&!d.animation?.ignoreEscapes&&(u(!0),l(!1))},[u,l,d]),g=wt(e=>{g.current?.removeEventListener(`scroll`,m),g.current?.removeEventListener(`wheel`,h),e?.addEventListener(`scroll`,m,{passive:!0}),e?.addEventListener(`wheel`,h,{passive:!0})},[]),_=wt(e=>{if(d.resizeObserver?.disconnect(),!e)return;let t;d.resizeObserver=new ResizeObserver(([e])=>{let{height:n}=e.contentRect,r=n-(t??n);if(d.resizeDifference=r,d.scrollTop>d.targetScrollTop&&(d.scrollTop=d.targetScrollTop),o(d.isNearBottom),r>=0){let e=Et(s.current,t?s.current.resize:s.current.initial);f({animation:e,wait:!0,preserveScrollPosition:!0,duration:e===`instant`?void 0:xt})}else d.isNearBottom&&(u(!1),l(!0));t=n,requestAnimationFrame(()=>{setTimeout(()=>{d.resizeDifference===r&&(d.resizeDifference=0)},1)})}),d.resizeObserver?.observe(e)},[]);return{contentRef:_,scrollRef:g,scrollToBottom:f,stopScroll:p,isAtBottom:r||a,isNearBottom:a,escapedFromLock:t,state:d}};function wt(e,t){let n=(0,Q.useCallback)(t=>(n.current=t,e(t)),t);return n}var Tt=new Map;function Et(...e){let t={...vt},n=!1;for(let r of e){if(r===`instant`){n=!0;continue}typeof r==`object`&&(n=!1,t.damping=r.damping??t.damping,t.stiffness=r.stiffness??t.stiffness,t.mass=r.mass??t.mass)}let r=JSON.stringify(t);return Tt.has(r)||Tt.set(r,Object.freeze(t)),n?`instant`:Tt.get(r)}var Dt=(0,Q.createContext)(null),Ot=typeof window<`u`?Q.useLayoutEffect:Q.useEffect;function kt({instance:e,children:t,resize:n,initial:r,mass:i,damping:a,stiffness:o,targetScrollTop:s,contextRef:c,...l}){let u=(0,Q.useRef)(null),d=Ct({mass:i,damping:a,stiffness:o,resize:n,initial:r,targetScrollTop:Q.useCallback((e,t)=>(y?.targetScrollTop??s)?.(e,t)??e,[s])}),{scrollRef:f,contentRef:p,scrollToBottom:m,stopScroll:h,isAtBottom:g,escapedFromLock:_,state:v}=e??d,y=(0,Q.useMemo)(()=>({scrollToBottom:m,stopScroll:h,scrollRef:f,isAtBottom:g,escapedFromLock:_,contentRef:p,state:v,get targetScrollTop(){return u.current},set targetScrollTop(e){u.current=e}}),[m,g,p,f,h,_,v]);return(0,Q.useImperativeHandle)(c,()=>y,[y]),Ot(()=>{f.current&&getComputedStyle(f.current).overflow===`visible`&&(f.current.style.overflow=`auto`)},[]),Q.createElement(Dt.Provider,{value:y},Q.createElement(`div`,{...l},typeof t==`function`?t(y):t))}(function(e){function t({children:e,scrollClassName:t,...n}){let r=At();return Q.createElement(`div`,{ref:r.scrollRef,style:{height:`100%`,width:`100%`,scrollbarGutter:`stable both-edges`},className:t},Q.createElement(`div`,{...n,ref:r.contentRef},typeof e==`function`?e(r):e))}e.Content=t})(kt||={});function At(){let e=(0,Q.useContext)(Dt);if(!e)throw Error(`use-stick-to-bottom component context must be used within a StickToBottom component`);return e}var $=p();function jt(e){let t=e.type===`approval_request`;return{toolName:e.type===`tool_use`?e.tool:t?e.tool??`Tool`:`Tool`,input:e.type===`tool_use`?e.input:t?e.input??{}:{}}}function Mt({tool:e,result:t,completed:n,projectName:r}){let[a,s]=(0,Q.useState)(!1);if(e.type===`error`)return(0,$.jsxs)(`div`,{className:`flex items-center gap-2 rounded bg-red-500/10 border border-red-500/20 px-2 py-1.5 text-xs text-red-400`,children:[(0,$.jsx)(xe,{className:`size-3`}),(0,$.jsx)(`span`,{children:e.message})]});let{toolName:c,input:l}=jt(e),u=t?.type===`tool_result`,d=u&&!!t.isError,f=c===`AskUserQuestion`&&!!l?.answers,p=(c===`Agent`||c===`Task`)&&e.type===`tool_use`,m=p?e.children:void 0,h=m&&m.length>0;return(0,$.jsxs)(`div`,{className:`rounded border text-xs ${p?`border-accent/30 bg-accent/5`:`border-border bg-background`}`,children:[(0,$.jsxs)(`button`,{onClick:()=>s(!a),className:`flex items-center gap-2 px-2 py-1.5 w-full text-left hover:bg-surface transition-colors min-w-0`,children:[a?(0,$.jsx)(i,{className:`size-3 shrink-0`}):(0,$.jsx)(o,{className:`size-3 shrink-0`}),d?(0,$.jsx)(Be,{className:`size-3 text-red-400 shrink-0`}):u||f||n?(0,$.jsx)(P,{className:`size-3 text-green-400 shrink-0`}):(0,$.jsx)(Z,{className:`size-3 text-yellow-400 shrink-0 animate-spin`}),(0,$.jsx)(`span`,{className:`truncate text-text-primary`,children:(0,$.jsx)(Nt,{name:c,input:l})}),h&&(0,$.jsxs)(`span`,{className:`ml-auto text-[10px] text-text-subtle shrink-0`,children:[m.length,` steps`]})]}),a&&(0,$.jsxs)(`div`,{className:`px-2 pb-2 space-y-1.5`,children:[(e.type===`tool_use`||e.type===`approval_request`)&&(0,$.jsx)(Pt,{name:c,input:l,projectName:r}),h&&(0,$.jsx)(Rt,{events:m,projectName:r}),u&&(0,$.jsx)(It,{toolName:c,output:t.output})]})]})}function Nt({name:e,input:t}){let n=e=>String(e??``);switch(e){case`Read`:case`Write`:case`Edit`:case`MultiEdit`:case`NotebookEdit`:return(0,$.jsxs)($.Fragment,{children:[e,` `,(0,$.jsx)(`span`,{className:`text-text-subtle`,children:g(n(t.file_path))})]});case`Bash`:return(0,$.jsxs)($.Fragment,{children:[e,` `,(0,$.jsx)(`span`,{className:`font-mono text-text-subtle`,children:Bt(n(t.command),60)})]});case`Glob`:return(0,$.jsxs)($.Fragment,{children:[e,` `,(0,$.jsx)(`span`,{className:`font-mono text-text-subtle`,children:n(t.pattern)})]});case`Grep`:return(0,$.jsxs)($.Fragment,{children:[e,` `,(0,$.jsx)(`span`,{className:`font-mono text-text-subtle`,children:Bt(n(t.pattern),40)})]});case`WebSearch`:return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Pe,{className:`size-3 inline`}),` `,e,` `,(0,$.jsx)(`span`,{className:`text-text-subtle`,children:Bt(n(t.query),50)})]});case`WebFetch`:return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(_e,{className:`size-3 inline`}),` `,e,` `,(0,$.jsx)(`span`,{className:`text-text-subtle`,children:Bt(n(t.url),50)})]});case`ToolSearch`:return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Pe,{className:`size-3 inline`}),` `,e,` `,(0,$.jsx)(`span`,{className:`text-text-subtle`,children:Bt(n(t.query),50)})]});case`Agent`:case`Task`:return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(V,{className:`size-3 inline`}),` `,e,` `,(0,$.jsx)(`span`,{className:`text-text-subtle`,children:Bt(n(t.description||t.prompt),60)})]});case`TodoWrite`:{let n=Array.isArray(t.todos)?t.todos:[],r=n.filter(e=>e.status===`completed`).length;return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(qe,{className:`size-3 inline`}),` `,e,` `,(0,$.jsxs)(`span`,{className:`text-text-subtle`,children:[r,`/`,n.length,` done`]})]})}case`AskUserQuestion`:{let n=Array.isArray(t.questions)?t.questions:[],r=!!t.answers;return(0,$.jsxs)($.Fragment,{children:[e,` `,(0,$.jsxs)(`span`,{className:`text-text-subtle`,children:[n.length,` question`,n.length===1?``:`s`,r?` ✓`:``]})]})}default:return(0,$.jsx)($.Fragment,{children:e})}}function Pt({name:e,input:t,projectName:n}){let r=e=>String(e??``),{openTab:i}=U(),a=e=>{n&&i({type:`editor`,title:g(e),metadata:{filePath:e,projectName:n},projectId:n,closable:!0})},o=(e,t,r)=>{i({type:`git-diff`,title:`Diff ${g(e)}`,metadata:{filePath:e,projectName:n,original:t,modified:r},projectId:n??null,closable:!0})};switch(e){case`Bash`:return(0,$.jsxs)(`div`,{className:`space-y-1`,children:[!!t.description&&(0,$.jsx)(`p`,{className:`text-text-subtle italic`,children:r(t.description)}),(0,$.jsx)(`pre`,{className:`font-mono text-text-secondary overflow-x-auto whitespace-pre-wrap break-all`,children:r(t.command)})]});case`Read`:case`Write`:case`Edit`:case`MultiEdit`:case`NotebookEdit`:{let n=r(t.file_path);return(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsxs)(`button`,{type:`button`,className:`font-mono text-text-secondary break-all hover:text-primary hover:underline text-left flex items-center gap-1`,onClick:()=>a(n),title:`Open file in editor`,children:[(0,$.jsx)(Re,{className:`size-3 shrink-0`}),n]}),e===`Edit`&&(!!t.old_string||!!t.new_string)&&(0,$.jsxs)(`button`,{type:`button`,className:`text-text-subtle hover:text-primary hover:underline text-left flex items-center gap-1`,onClick:()=>o(n,r(t.old_string),r(t.new_string)),title:`View diff in new tab`,children:[(0,$.jsx)(l,{className:`size-3 shrink-0`}),`View Diff`]}),e===`Write`&&!!t.content&&(0,$.jsx)(`pre`,{className:`font-mono text-text-subtle overflow-x-auto max-h-32 whitespace-pre-wrap`,children:Bt(r(t.content),300)})]})}case`Glob`:return(0,$.jsxs)(`p`,{className:`font-mono text-text-secondary`,children:[r(t.pattern),t.path?` in ${r(t.path)}`:``]});case`Grep`:return(0,$.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,$.jsxs)(`p`,{className:`font-mono text-text-secondary`,children:[`/`,r(t.pattern),`/`]}),!!t.path&&(0,$.jsxs)(`p`,{className:`text-text-subtle`,children:[`in `,r(t.path)]})]});case`TodoWrite`:return(0,$.jsx)(Ft,{todos:t.todos??[]});case`Agent`:case`Task`:return(0,$.jsxs)(`div`,{className:`space-y-1`,children:[!!t.description&&(0,$.jsx)(`p`,{className:`text-text-secondary font-medium`,children:r(t.description)}),!!t.subagent_type&&(0,$.jsxs)(`p`,{className:`text-text-subtle`,children:[`Type: `,r(t.subagent_type)]}),!!t.prompt&&(0,$.jsx)(zt,{content:r(t.prompt),maxHeight:`max-h-48`})]});case`ToolSearch`:return(0,$.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,$.jsx)(`p`,{className:`font-mono text-text-secondary`,children:r(t.query)}),!!t.max_results&&(0,$.jsxs)(`p`,{className:`text-text-subtle`,children:[`Max results: `,r(t.max_results)]})]});case`WebFetch`:return(0,$.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,$.jsxs)(`a`,{href:r(t.url),target:`_blank`,rel:`noopener noreferrer`,className:`font-mono text-primary hover:underline break-all flex items-center gap-1`,children:[(0,$.jsx)(_e,{className:`size-3 shrink-0`}),r(t.url)]}),!!t.prompt&&(0,$.jsx)(`p`,{className:`text-text-subtle`,children:Bt(r(t.prompt),100)})]});case`AskUserQuestion`:{let e=t.questions??[],n=t.answers??{};return(0,$.jsx)(`div`,{className:`space-y-2`,children:e.map((e,t)=>(0,$.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,$.jsxs)(`p`,{className:`text-text-primary font-medium`,children:[e.header?`${e.header}: `:``,e.question]}),(0,$.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:e.options.map((t,r)=>(0,$.jsx)(`span`,{className:`inline-block rounded px-1.5 py-0.5 text-xs border ${(n[e.question]??``).split(`, `).includes(t.label)?`border-accent bg-accent/20 text-text-primary`:`border-border text-text-subtle`}`,children:t.label},r))}),n[e.question]&&(0,$.jsxs)(`p`,{className:`text-foreground text-xs`,children:[`Answer: `,n[e.question]]})]},t))})}default:return(0,$.jsx)(`pre`,{className:`overflow-x-auto text-text-secondary font-mono whitespace-pre-wrap break-all`,children:JSON.stringify(t,null,2)})}}function Ft({todos:e}){return(0,$.jsx)(`div`,{className:`space-y-0.5`,children:e.map((e,t)=>(0,$.jsxs)(`div`,{className:`flex items-start gap-1.5`,children:[(0,$.jsx)(`span`,{className:`shrink-0 mt-0.5 ${e.status===`completed`?`text-green-400`:e.status===`in_progress`?`text-yellow-400`:`text-text-subtle`}`,children:e.status===`completed`?`✓`:e.status===`in_progress`?`▶`:`○`}),(0,$.jsx)(`span`,{className:e.status===`completed`?`line-through text-text-subtle`:`text-text-secondary`,children:e.content})]},t))})}function It({toolName:e,output:t}){let[n,r]=(0,Q.useState)(!1),i=(0,Q.useMemo)(()=>{if(e!==`Agent`&&e!==`Task`)return null;try{let e=JSON.parse(t);if(Array.isArray(e)){let t=e.filter(e=>e.type===`text`&&e.text).map(e=>e.text).join(`
3
-
4
- `);if(t)return t}if(typeof e==`string`)return e}catch{if(t&&!t.startsWith(`[{`))return t}return null},[e,t]);return i?(0,$.jsxs)(`div`,{className:`border-t border-border pt-1.5 space-y-1`,children:[(0,$.jsx)(zt,{content:i,maxHeight:`max-h-60`}),(0,$.jsxs)(`button`,{type:`button`,onClick:()=>r(!n),className:`flex items-center gap-1 text-[10px] text-text-subtle hover:text-text-secondary transition-colors`,children:[(0,$.jsx)(s,{className:`size-3`}),n?`Hide`:`Show`,` raw`]}),n&&(0,$.jsx)(`pre`,{className:`overflow-x-auto text-text-subtle font-mono max-h-40 whitespace-pre-wrap break-all text-[10px]`,children:t})]}):(0,$.jsx)(Lt,{output:t})}function Lt({output:e}){let t=e.split(`
5
- `).length,n=t>3||e.length>200,[r,a]=(0,Q.useState)(n);return(0,$.jsxs)(`div`,{className:`border-t border-border pt-1.5`,children:[n&&(0,$.jsxs)(`button`,{type:`button`,onClick:()=>a(!r),className:`flex items-center gap-1 text-[10px] text-text-subtle hover:text-text-secondary transition-colors mb-1`,children:[r?(0,$.jsx)(o,{className:`size-3`}):(0,$.jsx)(i,{className:`size-3`}),`Output (`,t,` lines)`]}),(0,$.jsx)(`pre`,{className:`overflow-x-auto text-text-subtle font-mono whitespace-pre-wrap break-all ${r?`max-h-16 overflow-hidden`:`max-h-60`}`,children:e})]})}function Rt({events:e,projectName:t}){let n=[],r=``;for(let t of e)if(t.type===`text`)r+=t.content;else if(t.type===`tool_use`)r&&=(n.push({kind:`text`,content:r}),``),n.push({kind:`tool`,tool:t});else if(t.type===`tool_result`){let e=t.toolUseId,r=e?n.find(t=>t.kind===`tool`&&t.tool.type===`tool_use`&&t.tool.toolUseId===e&&!t.result):n.findLast(e=>e.kind===`tool`&&!e.result);r&&(r.result=t)}return r&&n.push({kind:`text`,content:r}),(0,$.jsx)(`div`,{className:`border-l-2 border-accent/20 pl-2 space-y-1 mt-1`,children:n.map((e,n)=>e.kind===`text`?(0,$.jsx)(`div`,{className:`text-text-secondary text-[11px]`,children:(0,$.jsx)(zt,{content:e.content,maxHeight:`max-h-24`})},`st-${n}`):(0,$.jsx)(Mt,{tool:e.tool,result:e.result,completed:!!e.result,projectName:t},`sc-${n}`))})}function zt({content:e,maxHeight:t=`max-h-48`}){return(0,$.jsx)(c,{content:e,className:`text-text-secondary overflow-auto ${t}`})}function Bt(e,t=50){return e?e.length>t?e.slice(0,t)+`…`:e:``}var Vt=5,Ht=20;function Ut(e){try{let t=new Date(e),n=new Date().getTime()-t.getTime(),r=Math.floor(n/6e4);if(r<1)return`just now`;if(r<60)return`${r}m ago`;let i=Math.floor(r/60);if(i<24)return`${i}h ago`;let a=Math.floor(i/24);return a<7?`${a}d ago`:t.toLocaleDateString(void 0,{month:`short`,day:`numeric`})}catch{return``}}function Wt({projectName:e,onSelectSession:t}){let[n,r]=(0,Q.useState)([]),[a,o]=(0,Q.useState)(!1),[s,c]=(0,Q.useState)(!1),l=(0,Q.useCallback)(async()=>{if(e){o(!0);try{r((await y.get(`${_(e)}/chat/sessions?limit=${Ht}`)).sessions.slice(0,Ht))}catch{}finally{o(!1)}}},[e]);(0,Q.useEffect)(()=>{l()},[l]);let u=(0,Q.useCallback)(async(t,n)=>{if(t.stopPropagation(),!e)return;let i=`${_(e)}/chat/sessions/${n.id}/pin`;try{n.pinned?await y.del(i):await y.put(i),r(e=>e.map(e=>e.id===n.id?{...e,pinned:!e.pinned}:e).sort((e,t)=>e.pinned&&!t.pinned?-1:!e.pinned&&t.pinned?1:new Date(t.createdAt).getTime()-new Date(e.createdAt).getTime()))}catch{}},[e]),d=n.filter(e=>e.pinned),f=n.filter(e=>!e.pinned),p=s?f:f.slice(0,Vt),m=f.length>Vt;function h(e){return(0,$.jsxs)(`button`,{onClick:()=>t(e),className:`group flex items-center gap-2.5 w-full px-3 py-2.5 text-left hover:bg-surface-elevated active:bg-surface-elevated transition-colors border-b border-border/50 last:border-0`,children:[(0,$.jsx)(fe,{className:`size-3.5 shrink-0 text-text-subtle`}),(0,$.jsx)(`span`,{className:`flex-1 min-w-0 text-xs font-medium truncate text-text-primary`,children:e.title||`Untitled`}),e.updatedAt&&(0,$.jsx)(`span`,{className:`text-[10px] text-text-subtle shrink-0`,children:Ut(e.updatedAt)}),(0,$.jsx)(`span`,{role:`button`,tabIndex:0,onClick:t=>u(t,e),className:`p-1 rounded transition-colors shrink-0 ${e.pinned?`text-primary hover:text-primary/70`:`text-text-subtle can-hover:opacity-0 can-hover:group-hover:opacity-100 hover:text-text-primary`}`,"aria-label":e.pinned?`Unpin session`:`Pin session`,children:e.pinned?(0,$.jsx)(Me,{className:`size-3`}):(0,$.jsx)(Ee,{className:`size-3`})})]},e.id)}return(0,$.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-6 text-text-secondary overflow-y-auto`,children:[(0,$.jsxs)(`div`,{className:`flex flex-col items-center gap-3`,children:[(0,$.jsx)(V,{className:`size-10 text-text-subtle`}),(0,$.jsx)(`p`,{className:`text-sm`,children:`Send a message to start a new conversation`})]}),!a&&d.length>0&&(0,$.jsxs)(`div`,{className:`flex flex-col gap-2 w-full max-w-sm px-4`,children:[(0,$.jsx)(`p`,{className:`text-xs text-text-subtle text-center`,children:`Pinned`}),(0,$.jsx)(`div`,{className:`w-full rounded-md border border-border bg-surface overflow-hidden`,children:d.map(h)})]}),!a&&p.length>0&&(0,$.jsxs)(`div`,{className:`flex flex-col gap-2 w-full max-w-sm px-4`,children:[(0,$.jsx)(`p`,{className:`text-xs text-text-subtle text-center`,children:`Recent chats`}),(0,$.jsx)(`div`,{className:`w-full rounded-md border border-border bg-surface overflow-hidden`,children:p.map(h)}),m&&(0,$.jsxs)(`button`,{onClick:()=>c(!s),className:`flex items-center justify-center gap-1 text-[11px] text-text-subtle hover:text-text-primary transition-colors py-1`,children:[s?(0,$.jsx)(ne,{className:`size-3`}):(0,$.jsx)(i,{className:`size-3`}),s?`Show less`:`Show more (${f.length-Vt})`]})]})]})}function Gt(e){let[t,n]=(0,Q.useState)({}),[r,i]=(0,Q.useState)({}),[a,o]=(0,Q.useState)(0),s=(0,Q.useCallback)((e,t)=>{n(n=>({...n,[e]:[t]})),i(t=>({...t,[e]:``}))},[]),c=(0,Q.useCallback)((e,t)=>{n(n=>{let r=n[e]||[];return{...n,[e]:r.includes(t)?r.filter(e=>e!==t):[...r,t]}})},[]),l=(0,Q.useCallback)((e,t)=>{i(n=>({...n,[e]:t})),t&&n(t=>({...t,[e]:[]}))},[]),u=(0,Q.useCallback)(e=>(t[e]?.length??0)>0||(r[e]?.trim().length??0)>0,[t,r]);return{answers:t,customInputs:r,activeTab:a,setActiveTab:o,handleSingleSelect:s,handleMultiSelect:c,handleCustomInput:l,hasAnswer:u,allAnswered:(0,Q.useMemo)(()=>e.every((e,t)=>u(t)),[e,u]),getFinalAnswer:(0,Q.useCallback)(e=>r[e]?.trim()||(t[e]??[]).join(`, `),[t,r]),goToNextTab:(0,Q.useCallback)(()=>o(t=>Math.min(t+1,e.length-1)),[e.length]),goToPrevTab:(0,Q.useCallback)(()=>o(e=>Math.max(e-1,0)),[])}}function Kt(e){let[t,n]=(0,Q.useState)(0),r=(0,Q.useRef)(null);return(0,Q.useEffect)(()=>n(0),[e.activeTab]),(0,Q.useEffect)(()=>{if(!e.enabled)return;let i=r=>{let i=document.activeElement===e.customInputRef.current;if(!i&&r.key>=`1`&&r.key<=`9`){r.preventDefault();let t=parseInt(r.key)-1;t<e.totalOptions-1&&(n(t),e.onSelectOption(t));return}if(!i&&(r.key===`o`||r.key===`O`||r.key===`0`)){r.preventDefault(),e.customInputRef.current?.focus(),n(e.totalOptions-1);return}if(r.key===`Tab`&&e.questions.length>1){r.preventDefault(),r.shiftKey?e.goToPrevTab():e.goToNextTab();return}if(!i){if(r.key===`ArrowLeft`){r.preventDefault(),e.goToPrevTab();return}if(r.key===`ArrowRight`){r.preventDefault(),e.goToNextTab();return}if(r.key===`ArrowUp`){r.preventDefault(),n(e=>Math.max(0,e-1));return}if(r.key===`ArrowDown`){r.preventDefault(),n(t=>Math.min(e.totalOptions-1,t+1));return}if(r.key===` `){r.preventDefault(),e.onSelectOption(t);return}}if(r.key===`Enter`){r.preventDefault(),e.allAnswered?e.onSubmit():e.hasAnswer(e.activeTab)&&e.goToNextTab();return}r.key===`Escape`&&i&&e.customInputRef.current?.blur()},a=r.current;return a&&(a.addEventListener(`keydown`,i),a.setAttribute(`tabindex`,`0`),a.contains(document.activeElement)||a.focus()),()=>{a?.removeEventListener(`keydown`,i)}},[e,t]),{focusedOption:t,setFocusedOption:n,containerRef:r}}function qt({questions:e,onSubmit:t,onSkip:n}){let r=(0,Q.useRef)(null),i=Gt(e),a=e[i.activeTab],o=a?a.options.length+1:0,s=e.length>1,c=(0,Q.useCallback)(()=>{if(!i.allAnswered)return;let n={};e.forEach((e,t)=>{n[e.question]=i.getFinalAnswer(t)}),t(n)},[i.allAnswered,i.getFinalAnswer,e,t]),l=(0,Q.useCallback)(e=>{if(!(!a||e<0))if(e<a.options.length){let t=a.options[e]?.label;if(!t)return;a.multiSelect?i.handleMultiSelect(i.activeTab,t):i.handleSingleSelect(i.activeTab,t)}else e===a.options.length&&r.current?.focus()},[a,i]),u=Kt({questions:e,activeTab:i.activeTab,totalOptions:o,allAnswered:i.allAnswered,hasAnswer:i.hasAnswer,onSelectOption:l,goToNextTab:i.goToNextTab,goToPrevTab:i.goToPrevTab,onSubmit:c,customInputRef:r,enabled:!0}),d=(0,Q.useCallback)(e=>{l(e),u.setFocusedOption(e)},[l,u.setFocusedOption]);return(0,$.jsxs)(`div`,{ref:u.containerRef,className:`rounded-lg border-2 border-primary/30 bg-primary/5 p-3 space-y-3 outline-none animate-in slide-in-from-bottom-2`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between text-sm font-medium text-text-primary`,children:[(0,$.jsxs)(`span`,{children:[`AI has `,s?`${e.length} questions`:`a question`]}),(0,$.jsxs)(`span`,{className:`text-[10px] text-text-secondary font-normal`,children:[s?`←→ tabs · `:``,`↑↓ options · 1-`,Math.min(o-1,9),` select · Enter submit`]})]}),s&&(0,$.jsx)(`div`,{className:`flex gap-1 p-1 bg-background rounded-md overflow-x-auto border border-border`,children:e.map((e,t)=>(0,$.jsxs)(`button`,{className:`flex items-center gap-1.5 px-3 py-1.5 rounded text-xs whitespace-nowrap transition-all ${i.activeTab===t?`bg-primary text-primary-foreground`:i.hasAnswer(t)?`text-primary bg-transparent`:`text-text-secondary hover:bg-surface-elevated`}`,onClick:()=>{i.setActiveTab(t),u.setFocusedOption(0)},tabIndex:-1,children:[(0,$.jsx)(`span`,{className:`flex items-center justify-center w-4 h-4 rounded-full text-[10px] font-semibold ${i.activeTab===t?`bg-white/20`:i.hasAnswer(t)?`bg-primary/20 text-primary`:`bg-surface-elevated text-text-secondary`}`,children:i.hasAnswer(t)?`✓`:t+1}),(0,$.jsx)(`span`,{className:`max-w-[100px] overflow-hidden text-ellipsis`,children:e.header||`Q${t+1}`})]},t))}),a&&(0,$.jsxs)(`div`,{className:`space-y-2`,children:[!s&&a.header&&(0,$.jsx)(`div`,{className:`text-[11px] font-semibold uppercase tracking-wide text-text-secondary`,children:a.header}),(0,$.jsx)(`div`,{className:`text-sm text-text-primary`,children:a.question}),a.multiSelect&&(0,$.jsx)(`div`,{className:`text-[11px] text-text-secondary`,children:`Select multiple`}),(0,$.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[a.options.map((e,t)=>{let n=(i.answers[i.activeTab]||[]).includes(e.label),r=u.focusedOption===t;return(0,$.jsxs)(`button`,{onClick:()=>d(t),className:`text-left flex items-start gap-2.5 rounded px-2.5 py-2 text-xs border transition-all ${n?`border-primary bg-primary/10 text-text-primary`:`border-border bg-background text-text-secondary hover:border-primary/40 hover:bg-primary/5`} ${r?`ring-2 ring-primary/40 ring-offset-1 ring-offset-background`:``}`,children:[(0,$.jsx)(`span`,{className:`flex items-center justify-center w-4.5 h-4.5 rounded text-[10px] font-semibold shrink-0 mt-px ${n?`bg-primary/20 text-primary`:`bg-surface-elevated text-text-secondary`}`,children:t+1}),(0,$.jsxs)(`div`,{className:`flex flex-col gap-0.5 flex-1`,children:[(0,$.jsx)(`span`,{className:`font-medium text-text-primary`,children:e.label}),e.description&&(0,$.jsx)(`span`,{className:`text-[11px] text-text-secondary`,children:e.description})]})]},t)}),(0,$.jsxs)(`div`,{className:`flex items-start gap-2.5 rounded px-2.5 py-2 text-xs border border-dashed transition-all border-border bg-transparent ${u.focusedOption===o-1?`ring-2 ring-primary/40 ring-offset-1 ring-offset-background`:``}`,children:[(0,$.jsx)(`span`,{className:`flex items-center justify-center w-4.5 h-4.5 rounded bg-surface-elevated text-text-secondary text-[10px] font-semibold shrink-0 mt-px`,children:`O`}),(0,$.jsx)(`input`,{ref:r,type:`text`,className:`flex-1 px-2 py-1 text-xs bg-surface border border-border rounded text-text-primary outline-none placeholder:text-text-subtle focus:border-primary`,placeholder:`Other (press O to type)...`,value:i.customInputs[i.activeTab]||``,onChange:e=>i.handleCustomInput(i.activeTab,e.target.value),onFocus:()=>u.setFocusedOption(o-1)})]})]})]}),(0,$.jsxs)(`div`,{className:`flex gap-2 justify-end pt-1`,children:[s&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`button`,{className:`px-3 py-1.5 text-xs rounded border border-border bg-background text-text-primary hover:bg-surface-elevated disabled:opacity-40 disabled:cursor-not-allowed transition-colors`,onClick:i.goToPrevTab,disabled:i.activeTab===0,tabIndex:-1,children:`← Prev`}),(0,$.jsx)(`button`,{className:`px-3 py-1.5 text-xs rounded border border-border bg-background text-text-primary hover:bg-surface-elevated disabled:opacity-40 disabled:cursor-not-allowed transition-colors`,onClick:i.goToNextTab,disabled:i.activeTab===e.length-1,tabIndex:-1,children:`Next →`})]}),(0,$.jsx)(`button`,{onClick:n,className:`px-4 py-1.5 rounded border border-border bg-background text-text-secondary text-xs hover:bg-surface-elevated transition-colors`,tabIndex:-1,children:`Skip`}),(0,$.jsxs)(`button`,{onClick:c,disabled:!i.allAnswered,className:`px-4 py-1.5 rounded bg-primary text-primary-foreground text-xs font-medium hover:bg-primary/80 transition-colors disabled:opacity-40 disabled:cursor-not-allowed`,tabIndex:-1,children:[`Submit `,i.allAnswered?`✓`:`(${e.filter((e,t)=>i.hasAnswer(t)).length}/${e.length})`]})]})]})}function Jt({messages:e,messagesLoading:t,pendingApproval:n,onApprovalResponse:r,isStreaming:i,phase:a,onSelectSession:o,connectingElapsed:s,statusMessage:c,compactStatus:l,projectName:u,onFork:d}){if(t)return(0,$.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-3 text-text-secondary`,children:[(0,$.jsx)(V,{className:`size-10 text-text-subtle animate-pulse`}),(0,$.jsx)(`p`,{className:`text-sm`,children:`Loading messages...`})]});if(e.length===0&&!i)return(0,$.jsx)(Wt,{projectName:u||``,onSelectSession:o||(()=>{})});let f=(0,Q.useMemo)(()=>e.filter(e=>{let t=e.content&&e.content.trim().length>0,n=e.events&&e.events.length>0;return e.role===`user`?t:t||n}),[e]);return(0,$.jsx)(`div`,{className:`relative flex-1 overflow-hidden flex flex-col min-h-0`,children:(0,$.jsxs)(kt,{className:`flex-1 overflow-y-auto overflow-x-hidden`,resize:`smooth`,initial:`instant`,children:[(0,$.jsxs)(kt.Content,{className:`p-4 space-y-4`,children:[f.map((e,t)=>(0,$.jsx)(Xt,{message:e,isStreaming:i&&e.id.startsWith(`streaming-`),projectName:u,onFork:e.role===`user`&&d?()=>{let n=t>0?f[t-1]:void 0;d(e.content,n?.id)}:void 0},e.id)),n&&(n.tool===`AskUserQuestion`?(0,$.jsx)(Sn,{approval:n,onRespond:r}):(0,$.jsx)(xn,{approval:n,onRespond:r})),i&&(0,$.jsx)(_n,{lastMessage:e[e.length-1],phase:a,elapsed:s,statusMessage:c}),!i&&l===`compacting`&&(0,$.jsx)(_n,{lastMessage:void 0,phase:`thinking`,elapsed:void 0,statusMessage:`Compacting messages...`})]}),(0,$.jsx)(Yt,{})]})})}function Yt(){let{isAtBottom:e,scrollToBottom:t}=At();return e?null:(0,$.jsxs)(`button`,{onClick:()=>t(),className:`absolute bottom-4 left-1/2 -translate-x-1/2 z-10 flex items-center gap-1 px-3 py-1 rounded-full bg-surface-elevated border border-border text-xs text-text-secondary hover:text-foreground shadow-lg transition-all`,children:[(0,$.jsx)(i,{className:`size-3`}),`Scroll to bottom`]})}function Xt({message:e,isStreaming:t,projectName:n,onFork:r}){return e.role===`user`?(0,$.jsx)(an,{content:e.content,projectName:n,onFork:r}):e.role===`system`?(0,$.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg bg-red-500/10 border border-red-500/20 px-3 py-2 text-sm text-red-400`,children:[(0,$.jsx)(xe,{className:`size-4 shrink-0`}),(0,$.jsx)(`p`,{children:e.content})]}):(0,$.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[e.events&&e.events.length>0?(0,$.jsx)(mn,{events:e.events,isStreaming:t,projectName:n}):e.content&&(0,$.jsx)(`div`,{className:`text-sm text-text-primary`,children:(0,$.jsx)(bn,{content:e.content,projectName:n})}),e.accountLabel&&(0,$.jsxs)(`p`,{className:`text-[10px] select-none`,style:{color:`var(--color-text-subtle)`},children:[`via `,e.accountLabel]})]})}var Zt=new Set([`.png`,`.jpg`,`.jpeg`,`.gif`,`.webp`]),Qt={"system-reminder":`Context`,claudeMd:`CLAUDE.md`,gitStatus:`Git Status`,currentDate:`Date`,fast_mode_info:`Fast Mode`,"available-deferred-tools":`Tools`,"task-notification":`Task Result`,environment_details:`Environment`};function $t(e){let t=[],n=/<(system-reminder|available-deferred-tools|antml:[\w-]+|fast_mode_info|claudeMd|gitStatus|currentDate|task-notification|environment_details)[^>]*>([\s\S]*?)<\/\1>/g,r;for(;(r=n.exec(e))!==null;){let e=r[1];t.push({name:e,label:Qt[e]??e.replace(/^antml:/,``).replace(/-/g,` `),content:r[2].trim()})}return{cleanText:e.replace(n,``).trim(),tags:t}}function en(e){let t=e.match(/^\[Attached file: (.+?)\]\n\n?/);if(t)return{files:[t[1]],text:e.slice(t[0].length)};let n=e.match(/^\[Attached files:\n([\s\S]+?)\]\n\n?/);return n?{files:n[1].split(`
6
- `).map(e=>e.trim()).filter(Boolean),text:e.slice(n[0].length)}:{files:[],text:e}}function tn(e,t){let n=g(e);return`/api/project/${encodeURIComponent(t??`_`)}/chat/uploads/${encodeURIComponent(n)}`}function nn(e){let t=e.lastIndexOf(`.`);return t===-1?!1:Zt.has(e.slice(t).toLowerCase())}var rn=new Set([`task-notification`,`environment_details`]);function an({content:e,projectName:t,onFork:n}){let{files:r,text:a,tags:o}=(0,Q.useMemo)(()=>{let t=en(e),{cleanText:n,tags:r}=$t(t.text);return{files:t.files,text:n,tags:r}},[e]),s=o.some(e=>rn.has(e.name)),[c,l]=(0,Q.useState)(!1),[u,d]=(0,Q.useState)(!1),f=(0,Q.useRef)(null);return(0,Q.useEffect)(()=>{let e=f.current;if(!e)return;let t=()=>d(e.scrollHeight>e.clientHeight+2);t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[a]),(0,$.jsxs)(`div`,{className:m(`group/user relative rounded-lg px-3 py-2 text-sm border shadow-sm`,s?`bg-surface/40 border-border/40 text-text-secondary`:`bg-primary/10 border-primary/15 text-text-primary`),children:[o.length>0&&(0,$.jsx)(on,{tags:o}),r.length>0&&(0,$.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:r.map((e,n)=>nn(e)?(0,$.jsx)(pn,{filePath:e,projectName:t},n):(0,$.jsxs)(`div`,{className:`flex items-center gap-1 rounded-md border border-border/60 bg-background/40 px-1.5 py-0.5 text-[11px] text-text-secondary`,children:[(0,$.jsx)(ce,{className:`size-3 shrink-0`}),(0,$.jsx)(`span`,{className:`truncate max-w-32`,children:g(e)})]},n))}),a&&(0,$.jsx)(`div`,{ref:f,className:m(`whitespace-pre-wrap break-words transition-all duration-200`,!c&&`line-clamp-2`,c&&`max-h-[50vh] overflow-y-auto`),children:s?(0,$.jsx)(dn,{text:a,projectName:t}):a}),(u||c)&&(0,$.jsx)(`button`,{onClick:()=>l(!c),className:m(`flex items-center gap-1 text-xs mt-1 transition-colors`,s?`text-text-subtle hover:text-text-secondary`:`text-primary/70 hover:text-primary`),children:c?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(ne,{className:`size-3`}),`Show less`]}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(i,{className:`size-3`}),`Show more`]})}),!s&&n&&(0,$.jsx)(`button`,{onClick:n,title:`Retry from this message (fork session)`,className:`absolute top-1.5 right-1.5 can-hover:opacity-0 can-hover:group-hover/user:opacity-100 transition-opacity size-5 flex items-center justify-center rounded text-text-subtle hover:text-text-primary`,children:(0,$.jsx)(Te,{className:`size-3`})})]})}function on({tags:e}){return(0,$.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:e.map((e,t)=>(0,$.jsx)(sn,{tag:e},t))})}function sn({tag:e}){let[t,n]=(0,Q.useState)(!1);return e.name===`task-notification`?(0,$.jsx)(ln,{content:e.content}):(0,$.jsxs)(`div`,{className:`text-xs`,children:[(0,$.jsxs)(`button`,{onClick:()=>n(!t),className:`flex items-center gap-1 rounded-full border border-border/60 bg-surface/50 px-2 py-0.5 text-text-subtle hover:text-text-secondary hover:bg-surface transition-colors`,children:[(0,$.jsx)(d,{className:`size-2.5`}),(0,$.jsx)(`span`,{children:e.label}),(0,$.jsx)(o,{className:m(`size-2.5 transition-transform`,t&&`rotate-90`)})]}),t&&(0,$.jsx)(`div`,{className:`mt-1 rounded border border-border/40 bg-surface/30 px-2 py-1.5 text-[11px] text-text-subtle/80 whitespace-pre-wrap max-h-40 overflow-y-auto leading-relaxed`,children:e.content})]})}function cn(e,t){return e.match(RegExp(`<${t}>([\\s\\S]*?)</${t}>`))?.[1]?.trim()||void 0}function ln({content:e}){let[t,n]=(0,Q.useState)(!1),r=cn(e,`status`),i=cn(e,`summary`),a=cn(e,`output-file`),s=cn(e,`result`);return(0,$.jsxs)(`div`,{className:`text-xs`,children:[(0,$.jsxs)(`button`,{onClick:()=>n(!t),className:`flex items-center gap-1.5 rounded-full border border-border/60 bg-surface/50 px-2 py-0.5 text-text-subtle hover:text-text-secondary hover:bg-surface transition-colors`,children:[r===`completed`?(0,$.jsx)(P,{className:`size-2.5 text-green-500`}):(0,$.jsx)(Be,{className:`size-2.5 text-yellow-500`}),(0,$.jsx)(`span`,{className:`truncate max-w-80`,children:i??`Task notification`}),(0,$.jsx)(o,{className:m(`size-2.5 transition-transform shrink-0`,t&&`rotate-90`)})]}),t&&(0,$.jsxs)(`div`,{className:`mt-1 rounded border border-border/40 bg-surface/30 px-2 py-1.5 space-y-1.5`,children:[i&&(0,$.jsx)(`p`,{className:`text-[11px] text-text-secondary`,children:i}),a&&(0,$.jsx)(un,{path:a}),s&&(0,$.jsx)(`div`,{className:`text-[11px] text-text-subtle/80 max-h-60 overflow-y-auto leading-relaxed`,children:(0,$.jsx)(bn,{content:s})})]})]})}function un({path:e,projectName:t}){return(0,$.jsxs)(`button`,{type:`button`,onClick:(0,Q.useCallback)(()=>{let n=U.getState().openTab,r=t??Oe.getState().activeProject?.name,i=g(e),a={filePath:e};r&&(a.projectName=r),y.get(`/api/fs/read?path=${encodeURIComponent(e)}`).then(()=>{n({type:`editor`,title:i,metadata:a,projectId:null,closable:!0})}).catch(()=>{n({type:`editor`,title:i,metadata:a,projectId:null,closable:!0})})},[e,t]),className:`inline-flex items-center gap-1 rounded border border-border/50 bg-surface/50 px-1.5 py-0.5 font-mono text-[10px] text-text-secondary hover:text-text-primary hover:bg-surface transition-colors cursor-pointer`,children:[(0,$.jsx)(ce,{className:`size-2.5 shrink-0`}),(0,$.jsx)(`span`,{className:`truncate max-w-60`,children:g(e)}),(0,$.jsx)(Re,{className:`size-2 shrink-0 opacity-50`})]})}function dn({text:e,projectName:t}){return(0,$.jsx)($.Fragment,{children:(0,Q.useMemo)(()=>{let t=/(\/(?:[\w.\-]+\/)+[\w.\-]+)/g,n=[],r=0,i;for(;(i=t.exec(e))!==null;)i.index>r&&n.push({kind:`text`,value:e.slice(r,i.index)}),n.push({kind:`path`,value:i[1]}),r=i.index+i[0].length;return r<e.length&&n.push({kind:`text`,value:e.slice(r)}),n},[e]).map((e,n)=>e.kind===`path`?(0,$.jsx)(un,{path:e.value,projectName:t},n):(0,$.jsx)(`span`,{children:e.value},n))})}function fn(e){let[t,n]=(0,Q.useState)(null),[r,i]=(0,Q.useState)(!1);return(0,Q.useEffect)(()=>{let t=!1,r,a=v();return fetch(e,{headers:a?{Authorization:`Bearer ${a}`}:{}}).then(e=>{if(!e.ok)throw Error(`Failed`);return e.blob()}).then(e=>{t||(r=URL.createObjectURL(e),n(r))}).catch(()=>{t||i(!0)}),()=>{t=!0,r&&URL.revokeObjectURL(r)}},[e]),{blobUrl:t,error:r}}function pn({filePath:e,projectName:t}){let{blobUrl:n,error:r}=fn(tn(e,t)),i=ke(e=>e.open),a=g(e);return(0,$.jsxs)(`button`,{type:`button`,onClick:()=>n&&i(n,a),className:`flex items-center gap-1 rounded-md border border-border/60 bg-background/40 px-1.5 py-0.5 text-[11px] text-text-secondary hover:bg-surface transition-colors cursor-pointer`,children:[n?(0,$.jsx)(`img`,{src:n,alt:a,className:`size-4 rounded-sm object-cover shrink-0`}):r?(0,$.jsx)(Ge,{className:`size-3 shrink-0`}):(0,$.jsx)(`div`,{className:`size-4 rounded-sm bg-surface animate-pulse shrink-0`}),(0,$.jsx)(`span`,{className:`truncate max-w-32`,children:a})]})}function mn({events:e,isStreaming:t,projectName:n}){let r=[],i=``,a=``;for(let t=0;t<e.length;t++){let n=e[t];if(n.type===`thinking`){i&&=(r.push({kind:`text`,content:i}),``),a+=n.content;continue}if(a&&=(r.push({kind:`thinking`,content:a}),``),n.type===`account_retry`){i&&=(r.push({kind:`text`,content:i}),``);let e=n.accountLabel??`another account`,t=n.reason??`Auth failed`;r.push({kind:`text`,content:`\n\n> ↻ ${t} — retrying with **${e}**...\n\n`});continue}n.type===`text`?i+=n.content:n.type===`tool_use`?(i&&=(r.push({kind:`text`,content:i}),``),r.push({kind:`tool`,tool:n})):n.type===`tool_result`||(i&&=(r.push({kind:`text`,content:i}),``),r.push({kind:`tool`,tool:n}))}a&&r.push({kind:`thinking`,content:a}),i&&r.push({kind:`text`,content:i});let o=e.filter(e=>e.type===`tool_result`);for(let e of o){let t=e.toolUseId;if(t){let n=r.find(e=>e.kind===`tool`&&e.tool.type===`tool_use`&&e.tool.toolUseId===t);if(n){n.result=e;continue}}let n=r.find(e=>e.kind===`tool`&&!e.result);n&&(n.result=e)}for(let e of r)if(e.kind===`tool`&&!e.result&&e.tool.type===`tool_use`){let t=e.tool.result;t&&(e.result={type:`tool_result`,output:t.output,isError:t.isError})}for(let e=0;e<r.length;e++){let n=r[e];if(n.kind===`tool`&&!n.result){let i=!1;if(n.tool.type===`tool_use`&&n.tool.tool===`Read`){let t=n.tool.input?.file_path;t&&(i=r.slice(e+1).some(e=>e.kind===`tool`&&e.result&&e.tool.type===`tool_use`&&e.tool.tool===`Edit`&&e.tool.input?.file_path===t))}n.completed=i||!t}}return(0,$.jsx)($.Fragment,{children:r.map((e,i)=>{if(e.kind===`thinking`)return(0,$.jsx)(hn,{content:e.content,isStreaming:t&&i===r.length-1},`think-${i}`);if(e.kind===`text`){let a=t&&i===r.length-1;return(0,$.jsx)(`div`,{className:`text-sm text-text-primary`,children:(0,$.jsx)(gn,{content:e.content,animate:a,projectName:n})},`text-${i}`)}return(0,$.jsx)(Mt,{tool:e.tool,result:e.result,completed:e.completed,projectName:n},`tool-${i}`)})})}function hn({content:e,isStreaming:t}){let[n,r]=(0,Q.useState)(t),i=(0,Q.useRef)(null);return(0,Q.useEffect)(()=>{!t&&e.length>0&&r(!1)},[t,e.length]),(0,Q.useEffect)(()=>{t&&n&&i.current&&(i.current.scrollTop=i.current.scrollHeight)},[e,t,n]),(0,$.jsxs)(`div`,{className:`rounded border border-border/50 bg-surface/30 text-xs`,children:[(0,$.jsxs)(`button`,{onClick:()=>r(!n),className:`flex items-center gap-2 px-2 py-1.5 w-full text-left hover:bg-surface transition-colors text-text-subtle`,children:[t?(0,$.jsx)(Z,{className:`size-3 animate-spin`}):(0,$.jsx)(o,{className:`size-3 transition-transform ${n?`rotate-90`:``}`}),(0,$.jsxs)(`span`,{children:[`Thinking`,t?`...`:``]}),!t&&(0,$.jsx)(`span`,{className:`text-text-subtle/50 ml-auto`,children:e.length>100?`${Math.round(e.length/4)} tokens`:``})]}),n&&(0,$.jsx)(`div`,{ref:i,className:`max-h-60 overflow-y-auto`,children:(0,$.jsx)(`div`,{className:`px-2 pb-2 text-text-subtle/80 whitespace-pre-wrap text-[11px] leading-relaxed`,children:e})})]})}function gn({content:e,animate:t,projectName:n}){return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(bn,{content:e,projectName:n,isStreaming:t}),t&&(0,$.jsx)(`span`,{className:`text-text-subtle text-sm animate-pulse`,children:`Thinking...`})]})}function _n({lastMessage:e,phase:t,elapsed:n,statusMessage:r}){let i=!e||e.role!==`assistant`,a=e?.events?.length?e.events[e.events.length-1].type===`tool_result`:!1;return!r&&!i&&!a?null:(0,$.jsxs)(`div`,{className:`flex flex-col gap-1 text-sm`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-text-subtle`,children:[(0,$.jsx)(Z,{className:`size-3 animate-spin`}),(0,$.jsxs)(`span`,{children:[r||(t===`initializing`?`Initializing`:t===`connecting`?`Connecting`:t===`thinking`?`Thinking`:`Processing`),i&&(n??0)>0&&(0,$.jsxs)(`span`,{className:`text-text-subtle/60`,children:[`... (`,n,`s)`]})]})]}),t===`connecting`&&(n??0)>=30&&(0,$.jsx)(`p`,{className:`text-xs text-yellow-500/80 ml-5`,children:`Taking longer than usual — may be rate-limited or API slow. Try sending a new message to retry.`})]})}var vn=/<teammate-message[^>]*>[\s\S]*?<\/teammate-message>/g;function yn(e){return e.replace(vn,``).replace(/\n{3,}/g,`
7
-
8
- `).trim()}function bn({content:e,projectName:t,isStreaming:n}){let r=yn(e);return r?(0,$.jsx)(c,{content:r,projectName:t,codeActions:!0,isStreaming:n}):null}function xn({approval:e,onRespond:t}){return(0,$.jsxs)(`div`,{className:`rounded-lg border-2 border-yellow-500/40 bg-yellow-500/10 p-3 space-y-2`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-yellow-400 text-sm font-medium`,children:[(0,$.jsx)($e,{className:`size-4`}),(0,$.jsx)(`span`,{children:`Tool Approval Required`})]}),(0,$.jsx)(`div`,{className:`text-xs text-text-primary`,children:(0,$.jsx)(`span`,{className:`font-medium`,children:e.tool})}),(0,$.jsx)(`pre`,{className:`text-xs font-mono text-text-secondary overflow-x-auto bg-background rounded p-2 border border-border`,children:JSON.stringify(e.input,null,2)}),(0,$.jsxs)(`div`,{className:`flex gap-2`,children:[(0,$.jsx)(`button`,{onClick:()=>t(e.requestId,!0),className:`px-4 py-1.5 rounded bg-green-600 text-white text-xs font-medium hover:bg-green-500 transition-colors`,children:`Allow`}),(0,$.jsx)(`button`,{onClick:()=>t(e.requestId,!1),className:`px-4 py-1.5 rounded bg-red-600 text-white text-xs font-medium hover:bg-red-500 transition-colors`,children:`Deny`})]})]})}function Sn({approval:e,onRespond:t}){return(0,$.jsx)(qt,{questions:e.input.questions??[],onSubmit:n=>t(e.requestId,!0,n),onSkip:()=>t(e.requestId,!1)})}function Cn(){let e=window;return e.SpeechRecognition??e.webkitSpeechRecognition??null}function wn(e){let[t,n]=(0,Q.useState)(!1),[r,i]=(0,Q.useState)(``),a=(0,Q.useRef)(null),o=(0,Q.useRef)(``),s=typeof window<`u`&&Cn()!==null;return{isListening:t,interimText:r,start:(0,Q.useCallback)(t=>{let r=Cn();if(!r)return;a.current?.abort();let s=new r;s.lang=e?.lang??`vi-VN`,s.continuous=!0,s.interimResults=!0,o.current=``,s.onresult=e=>{let n=``,r=``;for(let t=0;t<e.results.length;t++){let i=e.results[t];i.isFinal?r+=i[0].transcript:n+=i[0].transcript}r&&(o.current=r);let a=(o.current+` `+n).trim();i(n),t(a,n.length===0&&o.current.length>0)},s.onend=()=>{n(!1),i(``),o.current&&t(o.current.trim(),!0)},s.onerror=e=>{e.error!==`no-speech`&&e.error!==`aborted`&&console.warn(`[voice-input] error:`,e.error),n(!1),i(``)},a.current=s,s.start(),n(!0)},[e?.lang]),stop:(0,Q.useCallback)(()=>{a.current?.stop(),a.current=null,n(!1),i(``)},[]),supported:s}}var Tn=new Set([`image/png`,`image/jpeg`,`image/gif`,`image/webp`]),En=new Set([`application/pdf`]),Dn=[`text/`,`application/json`,`application/xml`,`application/javascript`,`application/typescript`,`application/x-yaml`,`application/toml`,`application/x-sh`],On=new Set(`.ts,.tsx,.js,.jsx,.mjs,.cjs,.py,.rb,.go,.rs,.java,.kt,.swift,.c,.cpp,.h,.hpp,.cs,.json,.yaml,.yml,.toml,.xml,.md,.mdx,.txt,.csv,.tsv,.html,.css,.scss,.less,.sass,.sh,.bash,.zsh,.fish,.sql,.graphql,.gql,.env,.ini,.cfg,.conf,.dockerfile,.makefile,.vue,.svelte,.astro,.ipynb`.split(`,`));function kn(e){return Tn.has(e.type)}function An(e){if(Tn.has(e.type)||En.has(e.type)||Dn.some(t=>e.type.startsWith(t)))return!0;let t=jn(e.name);return!!(t&&On.has(t))}function jn(e){let t=e.lastIndexOf(`.`);return t===-1?``:e.slice(t).toLowerCase()}function Mn({attachments:e,onRemove:t}){return e.length===0?null:(0,$.jsx)(`div`,{className:`flex flex-wrap gap-1.5 px-2 md:px-4 pt-2`,children:e.map(e=>(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5 rounded-md border border-border bg-surface px-2 py-1 text-xs text-text-secondary max-w-48`,children:[e.previewUrl?(0,$.jsx)(`img`,{src:e.previewUrl,alt:e.name,className:`size-5 rounded object-cover shrink-0`}):e.isImage?(0,$.jsx)(Ge,{className:`size-3.5 shrink-0 text-text-subtle`}):(0,$.jsx)(ce,{className:`size-3.5 shrink-0 text-text-subtle`}),(0,$.jsx)(`span`,{className:`truncate`,children:e.name}),e.status===`uploading`?(0,$.jsx)(Z,{className:`size-3 shrink-0 animate-spin text-text-subtle`}):e.status===`error`?(0,$.jsx)(`span`,{className:`text-red-500 shrink-0`,title:`Upload failed`,children:`!`}):null,(0,$.jsx)(`button`,{type:`button`,onClick:()=>t(e.id),className:`shrink-0 rounded-sm p-0.5 hover:bg-border/50 transition-colors`,"aria-label":`Remove ${e.name}`,children:(0,$.jsx)(a,{className:`size-3`})})]},e.id))})}var Nn=[{id:`default`,label:`Ask before edits`,icon:Ue,description:`Claude will ask for approval before making each edit`},{id:`acceptEdits`,label:`Edit automatically`,icon:s,description:`Claude will edit files without asking first`},{id:`plan`,label:`Plan mode`,icon:He,description:`Claude will present a plan before editing`},{id:`bypassPermissions`,label:`Bypass permissions`,icon:et,description:`Claude will not ask before running commands`}];function Pn(e){return Nn.find(t=>t.id===e)?.label??`Unknown`}function Fn(e){return Nn.find(t=>t.id===e)?.icon??Ue}function In({value:e,onChange:t,open:n,onOpenChange:r}){let i=(0,Q.useRef)(null),a=(0,Q.useRef)(0);(0,Q.useEffect)(()=>{if(!n)return;let e=e=>{i.current&&!i.current.contains(e.target)&&r(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[n,r]),(0,Q.useEffect)(()=>{n&&(a.current=Nn.findIndex(t=>t.id===e),a.current<0&&(a.current=0))},[n,e]);let o=(0,Q.useCallback)(e=>{if(e.key===`Escape`){r(!1);return}if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault();let t=e.key===`ArrowDown`?1:-1;a.current=(a.current+t+Nn.length)%Nn.length,(i.current?.querySelector(`[data-idx="${a.current}"]`))?.focus()}if(e.key===`Enter`){e.preventDefault();let n=Nn[a.current];n&&(t(n.id),r(!1))}},[t,r]);return n?(0,$.jsxs)(`div`,{ref:i,role:`listbox`,"aria-label":`Permission modes`,onKeyDown:o,onMouseDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),className:`absolute bottom-full left-0 mb-1 z-50 w-72 md:w-80 rounded-lg border border-border bg-surface shadow-lg`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2 border-b border-border`,children:[(0,$.jsx)(`span`,{className:`text-xs font-medium text-text-secondary`,children:`Modes`}),(0,$.jsx)(`kbd`,{className:`text-[10px] px-1.5 py-0.5 rounded bg-surface-elevated text-text-subtle border border-border`,children:`Shift + Tab`})]}),(0,$.jsx)(`div`,{className:`py-1`,children:Nn.map((n,i)=>{let a=n.icon,o=n.id===e;return(0,$.jsxs)(`button`,{"data-idx":i,role:`option`,"aria-selected":o,tabIndex:0,onClick:()=>{t(n.id),r(!1)},className:`w-full flex items-start gap-3 px-3 py-2.5 text-left transition-colors hover:bg-surface-elevated focus:bg-surface-elevated focus:outline-none ${o?`bg-surface-elevated`:``}`,children:[(0,$.jsx)(a,{className:`size-4 mt-0.5 shrink-0 text-text-secondary`}),(0,$.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,$.jsx)(`div`,{className:`text-sm font-medium text-text-primary`,children:n.label}),(0,$.jsx)(`div`,{className:`text-xs text-text-subtle leading-snug`,children:n.description})]}),o&&(0,$.jsx)(re,{className:`size-4 mt-0.5 shrink-0 text-primary`})]},n.id)})})]}):null}function Ln(e){let t=[];function n(e){for(let r of e)t.push(r),r.children&&n(r.children)}return n(e),t}function Rn({items:e,filter:t,onSelect:n,onClose:r,visible:i}){let[a,o]=(0,Q.useState)(0),s=(0,Q.useRef)(null),c=(()=>{if(!t)return e.slice(0,50);let n=t.toLowerCase();return e.filter(e=>e.path.toLowerCase().includes(n)||e.name.toLowerCase().includes(n)).slice(0,50)})();(0,Q.useEffect)(()=>{o(0)},[t]),(0,Q.useEffect)(()=>{let e=s.current;e&&e.children[a]?.scrollIntoView({block:`nearest`})},[a]);let l=(0,Q.useCallback)(e=>{if(!i||c.length===0)return!1;switch(e.key){case`ArrowUp`:return e.preventDefault(),o(e=>e>0?e-1:c.length-1),!0;case`ArrowDown`:return e.preventDefault(),o(e=>e<c.length-1?e+1:0),!0;case`Enter`:case`Tab`:return e.preventDefault(),c[a]&&n(c[a]),!0;case`Escape`:return e.preventDefault(),r(),!0}return!1},[i,c,a,n,r]);return(0,Q.useEffect)(()=>{if(!i)return;let e=e=>{l(e)&&e.stopPropagation()};return document.addEventListener(`keydown`,e,!0),()=>document.removeEventListener(`keydown`,e,!0)},[i,l]),!i||c.length===0?null:(0,$.jsx)(`div`,{className:`max-h-52 overflow-y-auto border-b border-border bg-surface`,children:(0,$.jsx)(`div`,{ref:s,className:`py-1`,children:c.map((e,t)=>(0,$.jsxs)(`button`,{className:`flex items-center gap-2 w-full px-3 py-1.5 text-left transition-colors ${t===a?`bg-primary/10 text-primary`:`hover:bg-surface-hover text-text-primary`}`,onMouseEnter:()=>o(t),onClick:()=>n(e),children:[(0,$.jsx)(`span`,{className:`shrink-0`,children:e.type===`directory`?(0,$.jsx)(se,{className:`size-4 text-amber-500`}):(0,$.jsx)(Le,{className:`size-4 text-blue-400`})}),(0,$.jsx)(`span`,{className:`text-sm truncate`,children:e.path})]},e.path))})})}var zn=(0,Q.memo)(function({onSend:e,isStreaming:t,onCancel:n,disabled:i,projectName:a,onSlashStateChange:o,onSlashItemsLoaded:s,slashSelected:c,onFileStateChange:l,onFileItemsLoaded:d,fileSelected:f,externalFiles:p,initialValue:m,autoFocus:g,permissionMode:b,onModeChange:x,providerId:ee,onProviderChange:S}){let[C,w]=(0,Q.useState)(m??``),[T,E]=(0,Q.useState)([]),[D,O]=(0,Q.useState)(!1),[k,A]=(0,Q.useState)(!1),[j,M]=(0,Q.useState)(`next`),N=(0,Q.useRef)(null),P=(0,Q.useRef)(null),te=(0,Q.useRef)(null),F=(0,Q.useRef)([]),I=(0,Q.useRef)([]),L=wn(),R=(0,Q.useRef)(``),z=(0,Q.useCallback)(e=>{let t=R.current;w(t?t+` `+e:e),requestAnimationFrame(()=>{let e=window.matchMedia(`(min-width: 768px)`).matches?N.current:P.current;e&&(e.style.height=`auto`,e.style.height=Math.min(e.scrollHeight,160)+`px`)})},[]),B=(0,Q.useCallback)(()=>{L.isListening?L.stop():(R.current=C.trim(),L.start(z))},[L.isListening,L.start,L.stop,C,z]);(0,Q.useEffect)(()=>{let e=()=>{L.supported&&B()};return window.addEventListener(`toggle-voice-input`,e),()=>window.removeEventListener(`toggle-voice-input`,e)},[L.supported,B]),(0,Q.useEffect)(()=>{m&&(w(m),setTimeout(()=>{let e=N.current;e&&(e.focus(),e.selectionStart=e.selectionEnd=e.value.length)},50))},[m]),(0,Q.useEffect)(()=>{g&&setTimeout(()=>{(window.matchMedia(`(min-width: 768px)`).matches?N.current:P.current)?.focus()},100)},[]),(0,Q.useEffect)(()=>{if(!a){F.current=[],s?.([]);return}y.get(`${_(a)}/chat/slash-items`).then(e=>{F.current=e,s?.(e)}).catch(()=>{F.current=[],s?.([])})},[a]),(0,Q.useEffect)(()=>{if(!a){I.current=[],d?.([]);return}y.get(`${_(a)}/files/tree?depth=5`).then(e=>{let t=Ln(e);I.current=t,d?.(t)}).catch(()=>{I.current=[],d?.([])})},[a]),(0,Q.useEffect)(()=>{if(!c)return;let e=N.current,t=e?.selectionStart??C.length,n=C.slice(0,t),r=C.slice(t),i=n.replace(/(?:^|\s)\/\S*$/,e=>`${e.startsWith(`/`)?``:e[0]}/${c.name} `);w(i+r),o?.(!1,``),l?.(!1,``),e&&(e.focus(),setTimeout(()=>{e.selectionStart=e.selectionEnd=i.length},0))},[c]),(0,Q.useEffect)(()=>{if(!f)return;let e=N.current;if(!e)return;let t=e.selectionStart,n=C.slice(0,t),r=C.slice(t),i=n.match(/@(\S*)$/);if(i){let t=n.length-i[0].length;w(n.slice(0,t)+`@${f.path} `+r);let a=t+f.path.length+2;setTimeout(()=>{e.selectionStart=e.selectionEnd=a,e.focus()},0)}else{let t=C+`@${f.path} `;w(t),setTimeout(()=>{e.selectionStart=e.selectionEnd=t.length,e.focus()},0)}l?.(!1,``)},[f]),(0,Q.useEffect)(()=>{!p||p.length===0||H(p)},[p]);let V=(0,Q.useCallback)(async e=>{if(!a)return null;try{let t=new FormData;t.append(`files`,e);let n={},r=v();r&&(n.Authorization=`Bearer ${r}`);let i=await(await fetch(`${_(a)}/chat/upload`,{method:`POST`,headers:n,body:t})).json();return i.ok&&Array.isArray(i.data)&&i.data.length>0?i.data[0].path:null}catch{return null}},[a]),H=(0,Q.useCallback)(e=>{for(let t of e){if(!An(t)){w(e=>e+(e.length>0&&!e.endsWith(` `)?` `:``)+t.name);continue}let e=h(),n=kn(t),r=n?URL.createObjectURL(t):void 0,i={id:e,name:t.name,file:t,isImage:n,previewUrl:r,status:`uploading`};E(e=>[...e,i]),V(t).then(t=>{E(n=>n.map(n=>n.id===e?{...n,serverPath:t??void 0,status:t?`ready`:`error`}:n))})}(P.current??N.current)?.focus()},[V]),U=(0,Q.useCallback)(e=>{E(t=>{let n=t.find(t=>t.id===e);return n?.previewUrl&&URL.revokeObjectURL(n.previewUrl),t.filter(t=>t.id!==e)})},[]),W=(0,Q.useCallback)(()=>{let n=C.trim(),r=T.filter(e=>e.status===`ready`);if(!n&&r.length===0){A(!1);return}o?.(!1,``),l?.(!1,``),L.isListening&&L.stop(),e(n,r,t?j:void 0),w(``);for(let e of T)e.previewUrl&&URL.revokeObjectURL(e.previewUrl);E([]),A(!1),M(`next`),N.current&&(N.current.style.height=`auto`),P.current&&(P.current.style.height=`auto`)},[C,T,e,o,l,t,j]),G=(0,Q.useCallback)(()=>{if(!i){if(T.some(e=>e.status===`uploading`)){(C.trim()||T.some(e=>e.status!==`error`))&&A(!0);return}W()}},[C,T,i,W]);(0,Q.useEffect)(()=>{k&&(T.some(e=>e.status===`uploading`)||W())},[k,T,W]);let ne=(0,Q.useCallback)(e=>{if(e.key===`Enter`&&!e.shiftKey){e.preventDefault(),G();return}if(e.shiftKey&&e.key===`Tab`){e.preventDefault();let t=[`default`,`acceptEdits`,`plan`,`bypassPermissions`],n=t[(t.indexOf(b??`bypassPermissions`)+1)%t.length];x?.(n)}},[G,b,x]),K=(0,Q.useCallback)((e,t)=>{let n=e.slice(0,t),r=n.match(/(?:^|\s)\/(\S*)$/);if(r&&F.current.length>0){o?.(!0,r[1]??``),l?.(!1,``);return}let i=n.match(/@(\S*)$/);if(i&&I.current.length>0){l?.(!0,i[1]??``),o?.(!1,``);return}o?.(!1,``),l?.(!1,``)},[o,l]),q=(0,Q.useCallback)((e,t)=>{w(e),K(e,t)},[K]),re=(0,Q.useCallback)(e=>{let t=e?.target??N.current;t&&(t.style.height=`auto`,t.style.height=Math.min(t.scrollHeight,160)+`px`)},[]),ie=(0,Q.useCallback)(e=>{let t=e.clipboardData?.items;if(!t)return;let n=[];for(let e of t)if(e.kind===`file`){let t=e.getAsFile();t&&n.push(t)}n.length>0&&(e.preventDefault(),H(n))},[H]),J=(0,Q.useCallback)(e=>{e.preventDefault();let t=Array.from(e.dataTransfer.files);t.length>0&&H(t)},[H]),Y=(0,Q.useCallback)(e=>{e.preventDefault()},[]),X=(0,Q.useCallback)(()=>{te.current?.click()},[]),ae=(0,Q.useCallback)(e=>{let t=Array.from(e.target.files??[]);t.length>0&&H(t),e.target.value=``},[H]),oe=C.trim().length>0||T.some(e=>e.status!==`error`),se=t&&!oe;return(0,$.jsxs)(`div`,{className:`p-2 md:p-3 bg-background`,children:[(0,$.jsxs)(`div`,{className:`border border-border rounded-xl md:rounded-2xl bg-surface shadow-sm cursor-text`,onClick:e=>{i||e.target instanceof HTMLTextAreaElement||(window.matchMedia(`(min-width: 768px)`).matches?N.current:P.current)?.focus()},children:[(0,$.jsx)(Mn,{attachments:T,onRemove:U}),(0,$.jsxs)(`div`,{className:`flex items-center gap-1 px-2 pt-2 md:hidden relative`,children:[(0,$.jsx)(Bn,{mode:b??`bypassPermissions`,onClick:()=>O(e=>!e)}),(0,$.jsx)(In,{value:b??`bypassPermissions`,onChange:e=>x?.(e),open:D,onOpenChange:O}),S&&a&&(0,$.jsx)(Ce,{value:ee??`claude`,onChange:S,projectName:a}),t&&(0,$.jsx)(Hn,{value:j,onChange:M})]}),(0,$.jsxs)(`div`,{className:`flex items-end gap-1 md:hidden px-2 py-2`,children:[(0,$.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),X()},disabled:i,className:`flex items-center justify-center size-7 shrink-0 rounded-full text-text-subtle hover:text-text-primary transition-colors disabled:opacity-50`,"aria-label":`Attach file`,children:(0,$.jsx)(Ze,{className:`size-4`})}),(0,$.jsx)(`textarea`,{ref:P,value:C,onChange:e=>{q(e.target.value,e.target.selectionStart),re(e)},onKeyDown:ne,onPaste:ie,onDrop:J,onDragOver:Y,placeholder:t?`Follow-up...`:`Ask anything...`,disabled:i,rows:1,className:`flex-1 resize-none bg-transparent py-1.5 text-sm text-foreground placeholder:text-text-subtle focus:outline-none disabled:opacity-50 max-h-20`}),L.supported&&(0,$.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),B()},disabled:i,className:`flex items-center justify-center size-7 shrink-0 rounded-full transition-colors disabled:opacity-50 ${L.isListening?`bg-red-600 text-white animate-pulse`:`text-text-subtle hover:text-text-primary`}`,"aria-label":L.isListening?`Stop voice input`:`Start voice input`,children:L.isListening?(0,$.jsx)(Ye,{className:`size-4`}):(0,$.jsx)(Ie,{className:`size-4`})}),se?(0,$.jsx)(`button`,{onClick:e=>{e.stopPropagation(),n?.()},className:`flex items-center justify-center size-7 shrink-0 rounded-full bg-red-600 text-white hover:bg-red-500 transition-colors`,"aria-label":`Stop`,children:(0,$.jsx)(u,{className:`size-3`})}):(0,$.jsx)(`button`,{onClick:e=>{e.stopPropagation(),k?A(!1):G()},disabled:i||!oe,className:`flex items-center justify-center size-7 shrink-0 rounded-full bg-primary text-primary-foreground hover:bg-primary/90 disabled:opacity-30 transition-colors`,"aria-label":k?`Cancel queued send`:`Send`,children:k?(0,$.jsx)(Z,{className:`size-3.5 animate-spin`}):(0,$.jsx)(r,{className:`size-3.5`})})]}),(0,$.jsxs)(`div`,{className:`hidden md:block`,children:[(0,$.jsx)(`textarea`,{ref:N,value:C,onChange:e=>{q(e.target.value,e.target.selectionStart),re(e)},onKeyDown:ne,onPaste:ie,onDrop:J,onDragOver:Y,placeholder:t?`Follow-up or Stop...`:`Ask anything...`,disabled:i,rows:1,className:`w-full resize-none bg-transparent px-4 pt-3 pb-1 text-sm text-foreground placeholder:text-text-subtle focus:outline-none disabled:opacity-50 max-h-40`}),(0,$.jsxs)(`div`,{className:`flex items-center justify-between px-3 pb-2`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,$.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),X()},disabled:i,className:`flex items-center justify-center size-8 rounded-full text-text-subtle hover:text-text-primary hover:bg-surface-elevated transition-colors disabled:opacity-50`,"aria-label":`Attach file`,children:(0,$.jsx)(Ze,{className:`size-4`})}),(0,$.jsxs)(`div`,{className:`relative`,children:[(0,$.jsx)(Bn,{mode:b??`bypassPermissions`,onClick:()=>O(e=>!e)}),(0,$.jsx)(In,{value:b??`bypassPermissions`,onChange:e=>x?.(e),open:D,onOpenChange:O})]}),S&&a&&(0,$.jsx)(Ce,{value:ee??`claude`,onChange:S,projectName:a}),t&&(0,$.jsx)(Hn,{value:j,onChange:M})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-1`,children:[L.supported&&(0,$.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),B()},disabled:i,className:`flex items-center justify-center size-8 rounded-full transition-colors disabled:opacity-50 ${L.isListening?`bg-red-600 text-white animate-pulse`:`text-text-subtle hover:text-text-primary hover:bg-surface-elevated`}`,"aria-label":L.isListening?`Stop voice input`:`Start voice input`,children:L.isListening?(0,$.jsx)(Ye,{className:`size-4`}):(0,$.jsx)(Ie,{className:`size-4`})}),se?(0,$.jsx)(`button`,{onClick:e=>{e.stopPropagation(),n?.()},className:`flex items-center justify-center size-8 rounded-full bg-red-600 text-white hover:bg-red-500 transition-colors`,"aria-label":`Stop response`,children:(0,$.jsx)(u,{className:`size-3.5`})}):(0,$.jsx)(`button`,{onClick:e=>{e.stopPropagation(),k?A(!1):G()},disabled:i||!oe,className:`flex items-center justify-center size-8 rounded-full bg-primary text-primary-foreground hover:bg-primary/90 disabled:opacity-30 disabled:cursor-not-allowed transition-colors`,"aria-label":k?`Cancel queued send`:`Send message`,children:k?(0,$.jsx)(Z,{className:`size-4 animate-spin`}):(0,$.jsx)(r,{className:`size-4`})})]})]})]})]}),(0,$.jsx)(`input`,{ref:te,type:`file`,multiple:!0,className:`hidden`,onChange:ae})]})});function Bn({mode:e,onClick:t}){let n=Fn(e),r=Pn(e);return(0,$.jsxs)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),t()},className:`inline-flex items-center gap-1 px-2 py-1 rounded-md text-[11px] text-text-subtle hover:text-text-primary hover:bg-surface-elevated transition-colors border border-transparent hover:border-border`,"aria-label":`Permission mode: ${r}`,children:[(0,$.jsx)(n,{className:`size-3`}),(0,$.jsx)(`span`,{className:`max-w-[100px] truncate`,children:r})]})}var Vn=[{value:`now`,label:`Interrupt`,Icon:rt},{value:`next`,label:`Queue`,Icon:Ke},{value:`later`,label:`Later`,Icon:q}];function Hn({value:e,onChange:t}){let n=(0,Q.useCallback)(()=>{let n=[`next`,`later`,`now`];t(n[(n.indexOf(e)+1)%n.length])},[e,t]),r=Vn.find(t=>t.value===e)??Vn[1],i=r.Icon;return(0,$.jsxs)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),n()},className:`inline-flex items-center gap-1 px-2 py-1 rounded-md text-[11px] text-text-subtle hover:text-text-primary hover:bg-surface-elevated transition-colors border border-transparent hover:border-border`,"aria-label":`Message priority: ${r.label}`,title:`Priority: ${r.label} (click to cycle)`,children:[(0,$.jsx)(i,{className:`size-3`}),(0,$.jsx)(`span`,{children:r.label})]})}function Un({items:e,filter:t,onSelect:n,onClose:r,visible:i}){let[a,o]=(0,Q.useState)(0),s=(0,Q.useRef)(null),c=e.filter(e=>{let n=t.toLowerCase();return e.name.toLowerCase().includes(n)||e.description.toLowerCase().includes(n)});(0,Q.useEffect)(()=>{o(0)},[t]),(0,Q.useEffect)(()=>{let e=s.current;e&&e.children[a]?.scrollIntoView({block:`nearest`})},[a]);let l=(0,Q.useCallback)(e=>{if(!i||c.length===0)return!1;switch(e.key){case`ArrowUp`:return e.preventDefault(),o(e=>e>0?e-1:c.length-1),!0;case`ArrowDown`:return e.preventDefault(),o(e=>e<c.length-1?e+1:0),!0;case`Enter`:case`Tab`:return e.preventDefault(),c[a]&&n(c[a]),!0;case`Escape`:return e.preventDefault(),r(),!0}return!1},[i,c,a,n,r]);return(0,Q.useEffect)(()=>{if(!i)return;let e=e=>{l(e)&&e.stopPropagation()};return document.addEventListener(`keydown`,e,!0),()=>document.removeEventListener(`keydown`,e,!0)},[i,l]),!i||c.length===0?null:(0,$.jsx)(`div`,{className:`max-h-52 overflow-y-auto border-b border-border bg-surface`,children:(0,$.jsx)(`div`,{ref:s,className:`py-1`,children:c.map((e,t)=>(0,$.jsxs)(`button`,{className:`flex items-start gap-3 w-full px-3 py-2 text-left transition-colors ${t===a?`bg-primary/10 text-primary`:`hover:bg-surface-hover text-text-primary`}`,onMouseEnter:()=>o(t),onClick:()=>n(e),children:[(0,$.jsx)(`span`,{className:`shrink-0 mt-0.5`,children:e.type===`skill`?(0,$.jsx)(tt,{className:`size-4 text-amber-500`}):(0,$.jsx)(M,{className:`size-4 text-blue-500`})}),(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsxs)(`div`,{className:`flex items-baseline gap-2`,children:[(0,$.jsxs)(`span`,{className:`font-medium text-sm`,children:[`/`,e.name]}),e.argumentHint&&(0,$.jsx)(`span`,{className:`text-xs text-text-subtle`,children:e.argumentHint}),(0,$.jsx)(`span`,{className:`text-xs text-text-subtle capitalize ml-auto`,children:e.scope===`user`?`global`:e.type})]}),e.description&&(0,$.jsx)(`p`,{className:`text-xs text-text-subtle mt-0.5 line-clamp-2`,children:e.description})]})]},`${e.type}-${e.name}`))})})}var Wn=`ppm-hienlh`;function Gn({open:e,onOpenChange:t,onSuccess:n}){let[r,i]=(0,Q.useState)(``),[a,o]=(0,Q.useState)(``),[s,c]=(0,Q.useState)(!1),[l,u]=(0,Q.useState)(null),[d,f]=(0,Q.useState)(null),[p,m]=(0,Q.useState)(``),[h,g]=(0,Q.useState)(!1),[_,v]=(0,Q.useState)(`idle`);function y(){f(null),m(``),v(`idle`),u(null)}function b(){t(!1),y(),i(``),o(``),u(null)}async function x(){g(!0),u(null);try{let{url:e,state:t}=await j();f(t),v(`waiting`),window.open(e,`_blank`)}catch(e){u(e.message)}g(!1)}async function ee(){if(!(!p.trim()||!d)){g(!0),u(null);try{let e=p.trim();e.includes(`#`)&&(e=e.split(`#`)[0]??e),await C(e,d),b(),n(`Account connected via OAuth!`)}catch(e){u(e.message)}g(!1)}}async function S(){if(r.trim()){c(!0),u(null);try{await A({apiKey:r.trim(),label:a.trim()||void 0}),b(),n(`Account added!`)}catch(e){u(e.message)}c(!1)}}let w=r.trim()?r.trim().startsWith(`sk-ant-oat`)?`OAuth token (Claude Max/Pro)`:r.trim().startsWith(`sk-ant-api`)?`API key`:`Unknown format`:``;return(0,$.jsx)(z,{open:e,onOpenChange:e=>{e||b()},children:(0,$.jsxs)(L,{className:`sm:max-w-md`,children:[(0,$.jsxs)(N,{children:[(0,$.jsx)(be,{className:`text-sm`,children:`Add Claude Account`}),(0,$.jsx)(K,{className:`text-xs leading-relaxed`,children:`Connect via OAuth (recommended) or paste a token manually.`})]}),(0,$.jsxs)(`div`,{className:`space-y-3`,children:[(0,$.jsxs)(`div`,{className:`rounded-md border p-3 space-y-2`,children:[(0,$.jsx)(`p`,{className:`text-[11px] font-medium`,children:`Recommended: Login with Claude`}),_===`idle`?(0,$.jsx)(G,{size:`sm`,className:`w-full h-8 text-xs`,onClick:x,disabled:h,children:h?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Z,{className:`size-3 animate-spin mr-1`}),` Opening...`]}):`Login with Claude`}):(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Authorize in the opened tab, then paste the code:`}),(0,$.jsx)(J,{placeholder:`Paste code here...`,value:p,onChange:e=>m(e.target.value),className:`text-xs h-8 font-mono`,autoFocus:!0}),(0,$.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,$.jsx)(G,{size:`sm`,className:`flex-1 h-7 text-xs`,onClick:ee,disabled:!p.trim()||h,children:h?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Z,{className:`size-3 animate-spin mr-1`}),` Connecting...`]}):`Connect`}),(0,$.jsx)(G,{size:`sm`,variant:`ghost`,className:`h-7 text-xs`,onClick:y,children:`Cancel`})]})]})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`div`,{className:`flex-1 border-t`}),(0,$.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:`or paste token`}),(0,$.jsx)(`div`,{className:`flex-1 border-t`})]}),(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(F,{htmlFor:`add-token`,className:`text-xs`,children:`Token`}),(0,$.jsx)(J,{id:`add-token`,type:`password`,placeholder:`sk-ant-...`,value:r,onChange:e=>i(e.target.value),className:`text-xs h-8 font-mono`}),w&&(0,$.jsxs)(`p`,{className:`text-[10px] text-muted-foreground`,children:[`Detected: `,w]})]}),(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(F,{htmlFor:`add-label`,className:`text-xs`,children:`Label (optional)`}),(0,$.jsx)(J,{id:`add-label`,placeholder:`e.g. Personal, Work`,value:a,onChange:e=>o(e.target.value),className:`text-xs h-8`})]})]}),l&&(0,$.jsx)(`div`,{className:`text-[11px] p-2 rounded bg-red-500/10 text-red-600`,children:l}),(0,$.jsxs)(Se,{children:[(0,$.jsx)(G,{size:`sm`,variant:`outline`,className:`text-xs h-7`,onClick:b,children:`Cancel`}),(0,$.jsx)(G,{size:`sm`,className:`text-xs h-7`,onClick:S,disabled:!r.trim()||s,children:s?`Adding...`:`Add Token`})]})]})})}function Kn({open:e,onOpenChange:t,accounts:n,preselectId:r,onMessage:i}){let a=n.filter(e=>e.hasRefreshToken),[o,s]=(0,Q.useState)(new Set),[c,l]=(0,Q.useState)(``),[u,d]=(0,Q.useState)(!1),[f,p]=(0,Q.useState)(!1),[m,h]=(0,Q.useState)(!1),[g,_]=(0,Q.useState)(!1);e&&!g&&(s(r?new Set([r]):new Set(a.map(e=>e.id))),_(!0)),!e&&g&&_(!1);function y(){t(!1),l(``),d(!1),p(!1)}async function b(e){if(o.size===0)return;h(!0);let t=c.trim()||Wn;try{let n={"Content-Type":`application/json`},r=v();r&&(n.Authorization=`Bearer ${r}`);let a=await fetch(`/api/accounts/export`,{method:`POST`,headers:n,body:JSON.stringify({password:t,accountIds:[...o],includeRefreshToken:u,refreshBeforeExport:f})});if(!a.ok){let e=await a.json();throw Error(e.error??`Export failed: ${a.status}`)}let s=await a.text();if(e)try{await navigator.clipboard.writeText(s),i?.(`Backup copied to clipboard!`)}catch{Jn(s),i?.(`Backup downloaded.`)}else Jn(s),i?.(`Backup downloaded.`);y()}catch{}h(!1)}let x=o.size>0&&!m;return(0,$.jsx)(z,{open:e,onOpenChange:e=>{e||y()},children:(0,$.jsxs)(L,{className:`sm:max-w-md`,children:[(0,$.jsxs)(N,{children:[(0,$.jsxs)(be,{className:`text-sm flex items-center gap-1.5`,children:[(0,$.jsx)(he,{className:`size-3.5`}),` Export Accounts`]}),(0,$.jsx)(K,{className:`text-xs`,children:`Select accounts and set a password to protect the backup.`})]}),(0,$.jsxs)(`div`,{className:`space-y-3`,children:[(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between mb-1`,children:[(0,$.jsx)(`p`,{className:`text-[11px] font-medium text-muted-foreground`,children:`Accounts to export`}),(0,$.jsx)(`button`,{className:`text-[10px] text-primary hover:underline cursor-pointer`,onClick:()=>s(o.size===a.length?new Set:new Set(a.map(e=>e.id))),children:o.size===a.length?`Deselect all`:`Select all`})]}),a.length===0?(0,$.jsx)(`p`,{className:`text-[10px] text-muted-foreground p-2 border rounded`,children:`No exportable accounts.`}):(0,$.jsx)(`div`,{className:`max-h-36 overflow-y-auto space-y-1 border rounded p-2`,children:a.map(e=>(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`input`,{type:`checkbox`,id:`exp-${e.id}`,checked:o.has(e.id),onChange:t=>{let n=new Set(o);t.target.checked?n.add(e.id):n.delete(e.id),s(n)},className:`size-3.5 accent-primary cursor-pointer`}),(0,$.jsx)(`label`,{htmlFor:`exp-${e.id}`,className:`text-xs cursor-pointer truncate`,children:e.label??e.email??e.id.slice(0,8)})]},e.id))})]}),(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsxs)(F,{className:`text-xs`,children:[`Password `,(0,$.jsx)(`span`,{className:`text-muted-foreground font-normal`,children:`(optional)`})]}),(0,$.jsx)(J,{type:`password`,placeholder:`Leave empty for default`,value:c,onChange:e=>l(e.target.value),className:`text-xs h-8`,autoComplete:`new-password`})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`input`,{type:`checkbox`,id:`exp-full`,checked:u,onChange:e=>d(e.target.checked),className:`size-3.5 accent-primary cursor-pointer`}),(0,$.jsx)(`label`,{htmlFor:`exp-full`,className:`text-[11px] cursor-pointer`,children:`Include refresh tokens (full transfer)`})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`input`,{type:`checkbox`,id:`exp-refresh`,checked:f,onChange:e=>p(e.target.checked),className:`size-3.5 accent-primary cursor-pointer`}),(0,$.jsx)(`label`,{htmlFor:`exp-refresh`,className:`text-[11px] cursor-pointer`,children:`Refresh tokens before export`})]}),u?(0,$.jsxs)(`div`,{className:`rounded-md border border-red-500/30 bg-red-500/5 p-2.5`,children:[(0,$.jsx)(`p`,{className:`text-[10px] font-medium text-red-600`,children:`Full transfer — source accounts will expire`}),(0,$.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Refresh tokens included. Source machine expires in ~1h after target refreshes.`})]}):f?(0,$.jsx)(`div`,{className:`rounded-md border border-amber-500/30 bg-amber-500/5 p-2.5`,children:(0,$.jsx)(`p`,{className:`text-[10px] font-medium text-amber-600`,children:`Refresh before export — invalidates previous shares`})}):(0,$.jsx)(`div`,{className:`rounded-md border border-green-500/30 bg-green-500/5 p-2.5`,children:(0,$.jsx)(`p`,{className:`text-[10px] font-medium text-green-600`,children:`Share current token (safe)`})}),(0,$.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Encrypted with AES-256-GCM + scrypt.`})]}),(0,$.jsxs)(Se,{className:`gap-1.5 flex-col sm:flex-row`,children:[(0,$.jsx)(G,{size:`sm`,variant:`outline`,className:`text-xs h-7 cursor-pointer`,onClick:y,children:`Cancel`}),(0,$.jsxs)(G,{size:`sm`,variant:`outline`,className:`text-xs h-7 cursor-pointer`,disabled:!x,onClick:()=>b(!0),children:[(0,$.jsx)(R,{className:`size-3 mr-1`}),` Copy`]}),(0,$.jsx)(G,{size:`sm`,className:`text-xs h-7 cursor-pointer`,disabled:!x,onClick:()=>b(!1),children:m?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Z,{className:`size-3 animate-spin mr-1`}),` Exporting...`]}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Y,{className:`size-3 mr-1`}),` Download`]})})]})]})})}function qn({open:e,onOpenChange:t,onSuccess:n}){let[r,i]=(0,Q.useState)(``),[a,o]=(0,Q.useState)(``),[s,c]=(0,Q.useState)(!1),[l,u]=(0,Q.useState)(null);function d(){t(!1),i(``),o(``),u(null)}async function f(){if(r.trim()){c(!0),u(null);try{let e=await D({data:r.trim(),password:a.trim()||Wn});d(),n(`Imported ${e.imported} account(s)`)}catch(e){u(e.message||`Import failed`)}c(!1)}}return(0,$.jsx)(z,{open:e,onOpenChange:e=>{e||d()},children:(0,$.jsxs)(L,{className:`sm:max-w-md`,children:[(0,$.jsxs)(N,{children:[(0,$.jsxs)(be,{className:`text-sm flex items-center gap-1.5`,children:[(0,$.jsx)(he,{className:`size-3.5`}),` Import Accounts`]}),(0,$.jsx)(K,{className:`text-xs`,children:`Paste backup data and enter the export password. Imported accounts are temporary (~1h).`})]}),(0,$.jsxs)(`div`,{className:`space-y-3`,children:[(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(F,{className:`text-xs`,children:`Backup data`}),(0,$.jsx)(`textarea`,{value:r,onChange:e=>i(e.target.value),placeholder:`Paste backup JSON here...`,rows:4,className:`w-full text-xs p-2 rounded border border-border bg-background font-mono resize-none focus:outline-none focus:ring-1 focus:ring-primary`})]}),(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsxs)(F,{className:`text-xs`,children:[`Password `,(0,$.jsx)(`span`,{className:`text-muted-foreground font-normal`,children:`(optional)`})]}),(0,$.jsx)(J,{type:`password`,placeholder:`Leave empty for default`,value:a,onChange:e=>o(e.target.value),className:`text-xs h-8`,autoComplete:`current-password`})]})]}),l&&(0,$.jsx)(`div`,{className:`text-[11px] p-2 rounded bg-red-500/10 text-red-600`,children:l}),(0,$.jsxs)(Se,{children:[(0,$.jsx)(G,{size:`sm`,variant:`outline`,className:`text-xs h-7 cursor-pointer`,onClick:d,children:`Cancel`}),(0,$.jsx)(G,{size:`sm`,className:`text-xs h-7 cursor-pointer`,disabled:!r.trim()||s,onClick:f,children:s?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Z,{className:`size-3 animate-spin mr-1`}),` Importing...`]}):`Import`})]})]})})}function Jn(e){let t=new Blob([e],{type:`application/json`}),n=document.createElement(`a`);n.href=URL.createObjectURL(t),n.download=`ppm-accounts-backup.json`,n.click(),URL.revokeObjectURL(n.href)}var Yn=typeof window<`u`?window.matchMedia(`(min-width: 768px)`):null;function Xn(e){return Yn?.addEventListener(`change`,e),()=>Yn?.removeEventListener(`change`,e)}function Zn(){return Yn?.matches??!0}function Qn(){let[e,t]=(0,Q.useState)(null),[n,r]=(0,Q.useState)(!0);return(0,Q.useEffect)(()=>{r(!0),E().then(t).finally(()=>r(!1))},[]),n?(0,$.jsx)(`p`,{className:`text-xs text-text-subtle py-4 text-center`,children:`Loading...`}):e?(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`text-xs font-medium text-text-primary`,children:`Rotation Strategy`}),(0,$.jsxs)(de,{value:e.strategy,onValueChange:async e=>{t(await S({strategy:e}))},children:[(0,$.jsx)(we,{className:`w-full h-9 text-xs`,children:(0,$.jsx)(ge,{})}),(0,$.jsxs)(me,{children:[(0,$.jsx)(De,{value:`round-robin`,children:`Round-robin`}),(0,$.jsx)(De,{value:`fill-first`,children:`Fill-first`}),(0,$.jsx)(De,{value:`lowest-usage`,children:`Lowest usage`})]})]}),(0,$.jsxs)(`p`,{className:`text-[10px] text-text-subtle`,children:[e.strategy===`round-robin`&&`Cycles through accounts evenly`,e.strategy===`fill-first`&&`Uses one account until its limit, then moves on`,e.strategy===`lowest-usage`&&`Picks the account with the lowest current usage`]})]}),(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(`label`,{className:`text-xs font-medium text-text-primary`,children:`Max Retry`}),(0,$.jsx)(`input`,{type:`number`,min:0,value:e.maxRetry,className:`w-full h-9 text-xs border rounded-md px-3 bg-background`,onChange:async e=>{let n=parseInt(e.target.value,10);!isNaN(n)&&n>=0&&t(await S({maxRetry:n}))}}),(0,$.jsx)(`p`,{className:`text-[10px] text-text-subtle`,children:`How many accounts to try on failure. 0 = try all available accounts.`})]}),(0,$.jsxs)(`div`,{className:`flex items-center justify-between text-xs border-t border-border pt-3`,children:[(0,$.jsx)(`span`,{className:`text-text-subtle`,children:`Active accounts`}),(0,$.jsx)(`span`,{className:`font-medium text-text-primary`,children:e.activeCount})]})]}):(0,$.jsx)(`p`,{className:`text-xs text-text-subtle py-4 text-center`,children:`Failed to load settings`})}function $n({open:e,onOpenChange:t}){let n=(0,Q.useSyncExternalStore)(Xn,Zn);return e?n?(0,$.jsx)(z,{open:e,onOpenChange:t,children:(0,$.jsxs)(L,{className:`sm:max-w-sm`,children:[(0,$.jsx)(N,{children:(0,$.jsxs)(be,{className:`text-sm flex items-center gap-2`,children:[(0,$.jsx)(pe,{className:`size-4`}),` Rotation & Retry`]})}),(0,$.jsx)(Qn,{})]})}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{className:`fixed inset-0 z-50 transition-opacity duration-200 opacity-100`,onClick:()=>t(!1),style:{backgroundColor:`rgba(0,0,0,0.5)`}}),(0,$.jsxs)(`div`,{className:m(`fixed bottom-0 left-0 right-0 z-50 bg-background rounded-t-2xl border-t border-border shadow-2xl`,`transition-transform duration-300 ease-out max-h-[85vh] overflow-y-auto`,`translate-y-0`),children:[(0,$.jsx)(`div`,{className:`flex justify-center pt-3 pb-1`,children:(0,$.jsx)(`div`,{className:`w-10 h-1 rounded-full bg-border`})}),(0,$.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2 border-b border-border`,children:[(0,$.jsxs)(`span`,{className:`text-sm font-semibold flex items-center gap-2`,children:[(0,$.jsx)(pe,{className:`size-4`}),` Rotation & Retry`]}),(0,$.jsx)(`button`,{onClick:()=>t(!1),className:`flex items-center justify-center size-7 rounded-md hover:bg-surface-elevated transition-colors`,children:(0,$.jsx)(a,{className:`size-4`})})]}),(0,$.jsx)(`div`,{className:`px-4 py-4 pb-8`,children:(0,$.jsx)(Qn,{})})]})]}):null}var er=[`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`,`Sun`],tr=Array.from({length:24},(e,t)=>t);function nr(e,t){let n=Array.from({length:7},()=>Array.from({length:24},()=>({sum:0,count:0,avg:0})));for(let r of e){let e=t===`5h`?r.five_hour_util:r.weekly_util;if(e==null)continue;let i=new Date(r.recorded_at+(r.recorded_at.endsWith(`Z`)?``:`Z`)),a=(i.getDay()+6)%7,o=i.getHours();n[a][o].sum+=e,n[a][o].count+=1}for(let e of n)for(let t of e)t.avg=t.count>0?t.sum/t.count:0;return n}function rr(e){return e.map(e=>{let t=e.reduce((e,t)=>e+t.sum,0),n=e.reduce((e,t)=>e+t.count,0);return n>0?t/n:0})}function ir(e){return tr.map(t=>{let n=0,r=0;for(let i of e)n+=i[t].sum,r+=i[t].count;return r>0?n/r:0})}function ar(e){return e===0?`bg-surface-elevated`:e<.3?`bg-green-500/30`:e<.5?`bg-green-500/60`:e<.7?`bg-amber-500/50`:e<.9?`bg-amber-500/80`:`bg-red-500/80`}function or(e){return e<.3?`bg-green-500`:e<.7?`bg-amber-500`:`bg-red-500`}function sr({accountId:e}){let[t,n]=(0,Q.useState)(null),[r,i]=(0,Q.useState)(!0),[a,o]=(0,Q.useState)(`5h`);(0,Q.useEffect)(()=>{i(!0),ee(e).then(n).catch(()=>n([])).finally(()=>i(!1))},[e]);let s=(0,Q.useMemo)(()=>t?nr(t,a):null,[t,a]),c=(0,Q.useMemo)(()=>s?rr(s):[],[s]),l=(0,Q.useMemo)(()=>s?ir(s):[],[s]),u=Math.max(...c,.01);if(Math.max(...l,.01),r)return(0,$.jsx)(`div`,{className:`flex items-center justify-center py-3`,children:(0,$.jsx)(Z,{className:`size-3 animate-spin text-text-subtle`})});if(!t||t.length===0)return(0,$.jsx)(`div`,{className:`text-[10px] text-text-subtle py-2 text-center`,children:`No usage history yet`});let d=t.length,f=new Set(t.map(e=>new Date(e.recorded_at+(e.recorded_at.endsWith(`Z`)?``:`Z`)).toDateString())).size;return(0,$.jsxs)(`div`,{className:`mt-2 space-y-2`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,$.jsx)(`span`,{className:`text-[10px] font-medium text-text-subtle`,children:`Usage Pattern (7d)`}),(0,$.jsxs)(`div`,{className:`flex gap-0.5 text-[9px]`,children:[(0,$.jsx)(`button`,{onClick:()=>o(`5h`),className:`px-1.5 py-0.5 rounded cursor-pointer transition-colors ${a===`5h`?`bg-primary/15 text-primary`:`text-text-subtle hover:text-text-secondary`}`,title:`5-hour rolling window limit — resets every 5 hours`,children:`5h`}),(0,$.jsx)(`button`,{onClick:()=>o(`weekly`),className:`px-1.5 py-0.5 rounded cursor-pointer transition-colors ${a===`weekly`?`bg-primary/15 text-primary`:`text-text-subtle hover:text-text-secondary`}`,title:`Weekly limit — resets every 7 days`,children:`Wk`})]})]}),(0,$.jsxs)(`p`,{className:`text-[9px] text-text-subtle leading-tight`,children:[`Avg `,a===`5h`?`5-hour`:`weekly`,` limit usage over `,f,`d (`,d,` samples). Higher % = closer to rate limit. Hover cells for details.`]}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`span`,{className:`text-[9px] text-text-subtle`,children:`Avg usage by day of week`}),(0,$.jsx)(`div`,{className:`flex flex-col gap-[2px] mt-0.5`,children:er.map((e,t)=>{let n=c[t]??0;return(0,$.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,$.jsx)(`span`,{className:`text-[8px] text-text-subtle w-5 shrink-0 text-right tabular-nums`,children:e}),(0,$.jsx)(`div`,{className:`flex-1 h-2.5 bg-surface-elevated rounded-sm overflow-hidden`,children:(0,$.jsx)(`div`,{className:`h-full rounded-sm transition-all ${or(n)}`,style:{width:`${Math.round(n/u*100)}%`}})}),(0,$.jsxs)(`span`,{className:`text-[8px] text-text-subtle w-6 shrink-0 text-right tabular-nums`,children:[Math.round(n*100),`%`]})]},e)})})]}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`span`,{className:`text-[9px] text-text-subtle`,children:`Avg usage by hour (0h-23h)`}),(0,$.jsx)(`div`,{className:`flex gap-[1px] mt-0.5`,children:tr.map(e=>{let t=l[e]??0;return(0,$.jsxs)(`div`,{className:`flex-1 flex flex-col items-center gap-[1px]`,children:[(0,$.jsx)(`div`,{className:`w-full aspect-square rounded-[2px] ${ar(t)}`,title:`${e}:00 — avg ${Math.round(t*100)}% usage`}),e%6==0&&(0,$.jsx)(`span`,{className:`text-[7px] text-text-subtle tabular-nums`,children:e})]},e)})})]}),s&&(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`span`,{className:`text-[9px] text-text-subtle`,children:`Day x Hour heatmap`}),(0,$.jsxs)(`div`,{className:`flex flex-col gap-[1px] mt-0.5`,children:[er.map((e,t)=>(0,$.jsxs)(`div`,{className:`flex items-center gap-[1px]`,children:[(0,$.jsx)(`span`,{className:`text-[7px] text-text-subtle w-4 shrink-0 text-right`,children:e.charAt(0)}),tr.map(n=>{let r=s[t][n];return(0,$.jsx)(`div`,{className:`flex-1 aspect-square rounded-[1px] ${ar(r.avg)}`,title:`${e} ${n}:00 — ${r.count>0?`avg ${Math.round(r.avg*100)}% (${r.count} samples)`:`no data`}`},n)})]},e)),(0,$.jsxs)(`div`,{className:`flex items-center gap-[1px]`,children:[(0,$.jsx)(`span`,{className:`w-4 shrink-0`}),tr.map(e=>(0,$.jsx)(`div`,{className:`flex-1 text-center`,children:e%6==0&&(0,$.jsx)(`span`,{className:`text-[7px] text-text-subtle tabular-nums`,children:e})},e))]})]})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[8px] text-text-subtle`,children:[(0,$.jsx)(`span`,{children:`Low`}),(0,$.jsxs)(`div`,{className:`flex gap-[2px]`,children:[(0,$.jsx)(`div`,{className:`size-2 rounded-[1px] bg-green-500/30`}),(0,$.jsx)(`div`,{className:`size-2 rounded-[1px] bg-green-500/60`}),(0,$.jsx)(`div`,{className:`size-2 rounded-[1px] bg-amber-500/50`}),(0,$.jsx)(`div`,{className:`size-2 rounded-[1px] bg-amber-500/80`}),(0,$.jsx)(`div`,{className:`size-2 rounded-[1px] bg-red-500/80`})]}),(0,$.jsx)(`span`,{children:`High`}),(0,$.jsx)(`span`,{className:`ml-1`,children:`|`}),(0,$.jsx)(`div`,{className:`size-2 rounded-[1px] bg-surface-elevated border border-border/30`}),(0,$.jsx)(`span`,{children:`No data`})]})]})}function cr(e){return e>=90?`text-red-500`:e>=70?`text-amber-500`:`text-green-500`}function lr(e){return e>=90?`bg-red-500`:e>=70?`bg-amber-500`:`bg-green-500`}function ur(e){if(!e)return null;let t=null;if(e.resetsInMinutes!=null)t=e.resetsInMinutes;else if(e.resetsInHours!=null)t=Math.round(e.resetsInHours*60);else if(e.resetsAt){let n=new Date(e.resetsAt).getTime()-Date.now();t=n>0?Math.ceil(n/6e4):0}if(t==null)return null;if(t<=0)return`now`;let n=Math.floor(t/1440),r=Math.floor(t%1440/60),i=t%60;return n>0?i>0?`${n}d ${r}h ${i}m`:r>0?`${n}d ${r}h`:`${n}d`:r>0?i>0?`${r}h ${i}m`:`${r}h`:`${i}m`}function dr({label:e,bucket:t}){if(!t)return null;let n=Math.round(t.utilization*100),r=ur(t);return(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,$.jsx)(`span`,{className:`text-xs font-medium text-text-primary`,children:e}),r&&(0,$.jsxs)(`span`,{className:`text-[10px] text-text-subtle`,title:`Resets in`,children:[`↻ `,r]})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`div`,{className:`flex-1 h-2 rounded-full bg-border overflow-hidden`,children:(0,$.jsx)(`div`,{className:`h-full rounded-full transition-all ${lr(n)}`,style:{width:`${Math.min(n,100)}%`}})}),(0,$.jsxs)(`span`,{className:`text-xs font-medium tabular-nums w-10 text-right ${cr(n)}`,children:[n,`%`]})]})]})}function fr(e){let t=e-Date.now();if(t<=0)return`expired`;let n=Math.ceil(t/6e4),r=Math.floor(n/60),i=Math.floor(r/24);return i>0?`${i}d ${r%24}h`:r>0?`${r}h ${n%60}m`:`${n}m`}function pr(e){if(!e)return{label:`unknown`,tip:`No account info available`,color:`text-text-subtle`};if(!e.expiresAt)return{label:`key`,tip:`API key (no expiry)`,color:`text-text-subtle`};let t=e.expiresAt*1e3<Date.now();return t&&e.hasRefreshToken?{label:`expired`,tip:`Token expired but has refresh token — will auto-renew`,color:`text-amber-500`}:t?{label:`expired`,tip:`Token expired, no refresh token`,color:`text-red-500`}:e.hasRefreshToken?{label:`long-lived`,tip:`OAuth token with refresh — long-lived`,color:`text-green-500`}:{label:`temp`,tip:`Temporary token without refresh — will expire`,color:`text-amber-500`}}function mr(e){if(!e)return null;let t=Math.round((Date.now()-e)/1e3);if(t<5)return`just now`;if(t<60)return`${t}s ago`;let n=Math.floor(t/60);if(n<60)return`${n}m ago`;let r=Math.floor(n/60),i=n%60;return r<24?i>0?`${r}h ${i}m ago`:`${r}h ago`:`${Math.floor(r/24)}d ago`}function hr({entry:e,isActive:t,accountInfo:n,onToggle:r,onDelete:i,onExport:a,onViewProfile:o,flash:s,fullscreen:c}){let{usage:l}=e,u=l.session||l.weekly||l.weeklyOpus||l.weeklySonnet,d=n?.status??e.accountStatus,f=!!(n&&!n.hasRefreshToken&&n.expiresAt&&n.expiresAt<Math.floor(Date.now()/1e3));return(0,$.jsxs)(`div`,{className:`rounded-md border p-2 transition-colors duration-500 ${c?`flex flex-col gap-1.5 overflow-hidden`:`space-y-1.5 min-w-[200px] shrink-0 snap-start`} ${f?`opacity-50`:``} ${s?`bg-primary/10 border-primary/40`:``} ${t?`border-primary/30 bg-primary/5`:`border-border/50`}`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,$.jsx)(`span`,{className:`text-xs font-medium truncate flex-1 min-w-0`,children:e.accountLabel??e.accountId.slice(0,8)}),f&&(0,$.jsx)(`span`,{className:`text-[9px] text-red-500 shrink-0 font-medium`,children:`Expired`}),!e.isOAuth&&!f&&(0,$.jsx)(`span`,{className:`text-[9px] text-text-subtle shrink-0`,children:`API key`}),(0,$.jsxs)(`div`,{className:`flex items-center gap-0.5 shrink-0`,children:[!f&&o&&n?.profileData&&(0,$.jsx)(`button`,{className:`p-1 rounded cursor-pointer text-text-subtle hover:text-foreground hover:bg-surface-elevated transition-colors`,onClick:()=>o(n.profileData,e.accountId),title:`View profile`,children:(0,$.jsx)(I,{className:`size-3`})}),!f&&a&&e.isOAuth&&(0,$.jsx)(`button`,{className:`p-1 rounded cursor-pointer text-text-subtle hover:text-blue-500 hover:bg-surface-elevated transition-colors`,onClick:()=>a(e.accountId),title:`Export this account`,children:(0,$.jsx)(Y,{className:`size-3`})}),!f&&r&&(0,$.jsx)(Fe,{checked:d!==`disabled`,onCheckedChange:()=>r(e.accountId,d),disabled:d===`cooldown`,className:`scale-[0.6] cursor-pointer`}),i&&(0,$.jsx)(`button`,{className:`p-1 rounded cursor-pointer text-text-subtle hover:text-red-500 hover:bg-surface-elevated transition-colors`,onClick:()=>i(e.accountId,e.accountLabel??e.accountId.slice(0,8)),title:`Remove account`,children:(0,$.jsx)(ie,{className:`size-3`})})]})]}),u?(0,$.jsxs)(`div`,{className:c?`flex-1 flex flex-col justify-evenly min-h-0`:`space-y-1.5`,children:[(0,$.jsx)(dr,{label:`5-Hour Session`,bucket:l.session}),(0,$.jsx)(dr,{label:`Weekly`,bucket:l.weekly}),(0,$.jsx)(dr,{label:`Weekly (Opus)`,bucket:l.weeklyOpus}),(0,$.jsx)(dr,{label:`Weekly (Sonnet)`,bucket:l.weeklySonnet})]}):(0,$.jsx)(`p`,{className:`text-[10px] text-text-subtle`,children:e.isOAuth?`No usage data yet`:`Usage tracking not available for API keys`}),(()=>{let e=pr(n);return(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[9px] text-text-subtle flex-wrap`,children:[l.lastFetchedAt&&(0,$.jsxs)(`span`,{title:`Last usage data update`,children:[`↻ `,mr(new Date(l.lastFetchedAt).getTime())]}),n?.expiresAt&&n.expiresAt*1e3>Date.now()&&(0,$.jsxs)(`span`,{title:`Token expires in`,children:[`⏱ `,fr(n.expiresAt*1e3)]}),(0,$.jsxs)(`span`,{className:e.color,title:e.tip,children:[`© `,e.label]})]})})()]})}function gr({usage:e,visible:t,onClose:n,onReload:r,loading:i,lastFetchedAt:o}){let[s,c]=(0,Q.useState)([]),[l,u]=(0,Q.useState)([]),[d,f]=(0,Q.useState)(null),[p,m]=(0,Q.useState)(!0),[h,g]=(0,Q.useState)(!1),[_,v]=(0,Q.useState)(new Set),[y,b]=(0,Q.useState)(null),[ee,S]=(0,Q.useState)(!1),[C,E]=(0,Q.useState)(!1),[D,A]=(0,Q.useState)(!1),[j,M]=(0,Q.useState)(!1),[N,P]=(0,Q.useState)(null),[te,F]=(0,Q.useState)(null),[I,L]=(0,Q.useState)(!1),[R,z]=(0,Q.useState)(null),B=(0,Q.useRef)(void 0),V=(0,Q.useRef)([]);function H(e){B.current&&clearTimeout(B.current),z(e),B.current=setTimeout(()=>z(null),4e3)}function U(e){W(),e&&H(e)}async function W(){let e=s.length>0;e?g(!0):m(!0);let[t,n,r]=await Promise.allSettled([w(),k(),x()]);if(t.status===`fulfilled`){let n=t.value;if(e&&V.current.length>0){let e=new Set,t=new Map(V.current.map(e=>[e.accountId,e]));for(let r of n){let n=t.get(r.accountId);if(!n){e.add(r.accountId);continue}let i=n.usage,a=r.usage;(i.session?.utilization!==a.session?.utilization||i.weekly?.utilization!==a.weekly?.utilization||i.weeklyOpus?.utilization!==a.weeklyOpus?.utilization||i.weeklySonnet?.utilization!==a.weeklySonnet?.utilization)&&e.add(r.accountId)}e.size>0&&(v(e),setTimeout(()=>v(new Set),1500))}V.current=n,c(n)}n.status===`fulfilled`&&u(n.value),r.status===`fulfilled`&&f(r.value?.id??null),m(!1),g(!1)}if((0,Q.useEffect)(()=>{t&&W()},[t]),(0,Q.useEffect)(()=>{!t||!o||W()},[o]),!t)return null;let G=new Map(l.map(e=>[e.id,e])),ne=e.queryCostUsd!=null||e.totalCostUsd!=null,K=s.length>0,q=s.length||1,re=Math.ceil(Math.sqrt(q)),ie=Math.ceil(q/re);async function J(e,t){await T(e,{status:t===`disabled`?`active`:`disabled`}),W(),r?.()}async function X(){if(N){try{await O(N.id),H(`Account "${N.display}" removed.`),W(),r?.()}catch(e){H(`Failed to remove: ${e.message}`)}P(null)}}function ae(){F(null),E(!0)}return(0,$.jsxs)(`div`,{className:`relative border-b border-border bg-surface px-3 py-2.5 ${I?`fixed inset-0 z-50 flex flex-col gap-2.5 overflow-hidden`:`space-y-2.5 max-h-[350px] overflow-y-auto`}`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between shrink-0`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`span`,{className:`text-xs font-semibold text-text-primary`,children:`Usage & Accounts`}),o&&(0,$.jsx)(`span`,{className:`text-[10px] text-text-subtle`,children:mr(new Date(o).getTime())})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,$.jsx)(`button`,{onClick:()=>M(!0),className:`text-xs text-text-subtle hover:text-text-primary px-1 cursor-pointer`,title:`Rotation & retry settings`,children:(0,$.jsx)(pe,{className:`size-3`})}),K&&(0,$.jsx)(`button`,{onClick:()=>L(e=>!e),className:`text-xs text-text-subtle hover:text-text-primary px-1 cursor-pointer`,title:I?`Exit fullscreen`:`Fullscreen view`,children:I?(0,$.jsx)(Xe,{className:`size-3`}):(0,$.jsx)(Je,{className:`size-3`})}),r&&(0,$.jsx)(`button`,{onClick:()=>{r(),W()},disabled:i||h,className:`text-xs text-text-subtle hover:text-text-primary px-1 disabled:opacity-50 cursor-pointer`,title:`Refresh`,children:(0,$.jsx)(Ae,{className:`size-3 ${i||h?`animate-spin`:``}`})}),(0,$.jsx)(`button`,{onClick:()=>{L(!1),n()},className:`text-xs text-text-subtle hover:text-text-primary px-1 cursor-pointer`,children:(0,$.jsx)(a,{className:`size-3`})})]})]}),R&&(0,$.jsx)(`div`,{className:`text-[11px] p-1.5 rounded bg-green-500/10 text-green-600 text-center animate-in fade-in duration-200`,children:R}),K||p?(0,$.jsx)(`div`,{className:I?`flex-1 min-h-0 grid gap-2 overflow-hidden`:`flex gap-1.5 overflow-x-auto pb-1 -mx-3 px-3 snap-x snap-mandatory scrollbar-thin`,style:I?{gridTemplateColumns:`repeat(${re}, minmax(0, 1fr))`,gridTemplateRows:`repeat(${ie}, minmax(0, 1fr))`}:void 0,children:p?(0,$.jsx)(`p`,{className:`text-[10px] text-text-subtle`,children:`Loading...`}):s.map(t=>(0,$.jsx)(hr,{entry:t,isActive:t.accountId===(d??e.activeAccountId),accountInfo:G.get(t.accountId),onToggle:J,onDelete:(e,t)=>P({id:e,display:t}),onExport:e=>{F(e),E(!0)},onViewProfile:(e,t)=>b({profile:e,accountId:t}),flash:_.has(t.accountId),fullscreen:I},t.accountId))}):(0,$.jsx)($.Fragment,{children:e.session||e.weekly||e.weeklyOpus||e.weeklySonnet?(0,$.jsxs)(`div`,{className:`space-y-2.5`,children:[(0,$.jsx)(dr,{label:`5-Hour Session`,bucket:e.session}),(0,$.jsx)(dr,{label:`Weekly`,bucket:e.weekly}),(0,$.jsx)(dr,{label:`Weekly (Opus)`,bucket:e.weeklyOpus}),(0,$.jsx)(dr,{label:`Weekly (Sonnet)`,bucket:e.weeklySonnet})]}):(0,$.jsx)(`p`,{className:`text-xs text-text-subtle`,children:`No usage data available`})}),ne&&(0,$.jsxs)(`div`,{className:`border-t border-border pt-2 space-y-1`,children:[e.queryCostUsd!=null&&(0,$.jsxs)(`div`,{className:`flex items-center justify-between text-xs`,children:[(0,$.jsx)(`span`,{className:`text-text-subtle`,children:`Last query`}),(0,$.jsxs)(`span`,{className:`text-text-primary font-medium tabular-nums`,children:[`$`,e.queryCostUsd.toFixed(4)]})]}),e.totalCostUsd!=null&&(0,$.jsxs)(`div`,{className:`flex items-center justify-between text-xs`,children:[(0,$.jsx)(`span`,{className:`text-text-subtle`,children:`Session total`}),(0,$.jsxs)(`span`,{className:`text-text-primary font-medium tabular-nums`,children:[`$`,e.totalCostUsd.toFixed(4)]})]})]}),y&&(0,$.jsxs)(`div`,{className:`border-t border-border pt-2`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between mb-1`,children:[(0,$.jsx)(`span`,{className:`text-[10px] font-medium text-text-subtle`,children:`Profile`}),(0,$.jsx)(`button`,{className:`text-text-subtle hover:text-foreground cursor-pointer`,onClick:()=>b(null),children:(0,$.jsx)(a,{className:`size-3`})})]}),(0,$.jsxs)(`div`,{className:`grid grid-cols-[70px_1fr] gap-x-2 gap-y-0.5 text-[10px]`,children:[y.profile.account?.display_name&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{className:`text-text-subtle`,children:`Name`}),(0,$.jsx)(`span`,{children:y.profile.account.display_name})]}),y.profile.account?.email&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{className:`text-text-subtle`,children:`Email`}),(0,$.jsx)(`span`,{children:y.profile.account.email})]}),y.profile.organization?.name&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{className:`text-text-subtle`,children:`Org`}),(0,$.jsx)(`span`,{children:y.profile.organization.name})]}),y.profile.organization?.organization_type&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{className:`text-text-subtle`,children:`Type`}),(0,$.jsx)(`span`,{children:y.profile.organization.organization_type})]}),y.profile.organization?.rate_limit_tier&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{className:`text-text-subtle`,children:`Tier`}),(0,$.jsx)(`span`,{children:y.profile.organization.rate_limit_tier})]}),y.profile.organization?.subscription_status&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{className:`text-text-subtle`,children:`Status`}),(0,$.jsx)(`span`,{children:y.profile.organization.subscription_status})]})]}),(0,$.jsx)(sr,{accountId:y.accountId})]}),(0,$.jsxs)(`div`,{className:`border-t border-border pt-2 flex gap-1.5 shrink-0`,children:[(0,$.jsxs)(`button`,{onClick:()=>S(!0),className:`flex-1 flex items-center justify-center gap-1 rounded-md border border-border px-2 py-1 text-[11px] text-text-secondary hover:bg-surface-hover transition-colors cursor-pointer`,children:[(0,$.jsx)(ye,{className:`size-3`}),` Add`]}),(0,$.jsxs)(`button`,{onClick:ae,className:`flex-1 flex items-center justify-center gap-1 rounded-md border border-border px-2 py-1 text-[11px] text-text-secondary hover:bg-surface-hover transition-colors cursor-pointer`,children:[(0,$.jsx)(Y,{className:`size-3`}),` Export`]}),(0,$.jsxs)(`button`,{onClick:()=>A(!0),className:`flex-1 flex items-center justify-center gap-1 rounded-md border border-border px-2 py-1 text-[11px] text-text-secondary hover:bg-surface-hover transition-colors cursor-pointer`,children:[(0,$.jsx)(oe,{className:`size-3`}),` Import`]})]}),N&&(0,$.jsx)(`div`,{className:`absolute inset-0 z-10 flex items-center justify-center bg-background/80 backdrop-blur-sm rounded-md`,children:(0,$.jsxs)(`div`,{className:`bg-surface border border-border rounded-lg shadow-lg p-4 mx-4 max-w-[280px] w-full space-y-3`,children:[(0,$.jsxs)(`p`,{className:`text-xs text-text-primary text-center`,children:[`Remove `,(0,$.jsx)(`strong`,{className:`text-foreground`,children:N.display}),`?`]}),(0,$.jsxs)(`div`,{className:`flex gap-2`,children:[(0,$.jsx)(`button`,{onClick:()=>P(null),className:`flex-1 px-3 py-1.5 rounded-md text-xs border border-border text-text-secondary hover:bg-surface-hover cursor-pointer transition-colors`,children:`Cancel`}),(0,$.jsx)(`button`,{onClick:X,className:`flex-1 px-3 py-1.5 rounded-md text-xs bg-red-500 text-white hover:bg-red-600 cursor-pointer transition-colors`,children:`Remove`})]})]})}),(0,$.jsx)(Gn,{open:ee,onOpenChange:S,onSuccess:U}),(0,$.jsx)(Kn,{open:C,onOpenChange:e=>{E(e),e||F(null)},accounts:l,preselectId:te,onMessage:H}),(0,$.jsx)(qn,{open:D,onOpenChange:A,onSuccess:U}),(0,$.jsx)($n,{open:j,onOpenChange:M})]})}var _r={active:`bg-green-500`,idle:`bg-yellow-500`,shutdown:`bg-zinc-400`},vr={task_assignment:{label:`task`,className:`bg-blue-500/20 text-blue-400`},idle_notification:{label:`idle`,className:`bg-yellow-500/20 text-yellow-400`},completion:{label:`done`,className:`bg-green-500/20 text-green-400`},shutdown_request:{label:`shutdown`,className:`bg-red-500/20 text-red-400`},shutdown_approved:{label:`shutdown ✓`,className:`bg-zinc-500/20 text-zinc-400`}};function yr({teamNames:e,messages:t}){let[n,r]=(0,Q.useState)(e[0]??``),[i,a]=(0,Q.useState)([]),[o,s]=(0,Q.useState)(!1),c=(0,Q.useRef)(null);(0,Q.useEffect)(()=>{e.length>0&&!e.includes(n)&&r(e[0])},[e,n]);let l=(0,Q.useCallback)(async e=>{s(!0);try{a((await y.get(`/api/teams/${encodeURIComponent(e)}`))?.members??[])}catch{a([])}s(!1)},[]);(0,Q.useEffect)(()=>{n&&l(n)},[n,l]),(0,Q.useEffect)(()=>{c.current?.scrollIntoView({behavior:`smooth`})},[t.length]);let u=t.slice(-200);return(0,$.jsxs)(`div`,{className:`space-y-0`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-1 mb-2`,children:[(0,$.jsx)(`div`,{className:`flex items-center gap-1 overflow-x-auto min-w-0 flex-1`,children:e.map(e=>(0,$.jsx)(`button`,{onClick:()=>r(e),className:m(`px-2 py-0.5 text-[11px] rounded-md whitespace-nowrap transition-colors`,n===e?`bg-primary/10 text-primary font-medium`:`text-text-subtle hover:text-text-primary`),children:e},e))}),(0,$.jsx)(`button`,{onClick:()=>n&&l(n),className:`text-text-subtle hover:text-foreground p-1 shrink-0`,"aria-label":`Refresh`,children:(0,$.jsx)(Ae,{className:m(`size-3`,o&&`animate-spin`)})})]}),i.length>0&&(0,$.jsxs)(`div`,{className:`pb-2 mb-2 border-b border-border/30`,children:[(0,$.jsx)(`div`,{className:`text-[10px] text-text-subtle uppercase tracking-wider mb-1`,children:`Members`}),(0,$.jsx)(`div`,{className:`space-y-1`,children:i.map(e=>(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-xs`,children:[(0,$.jsx)(`span`,{className:m(`size-1.5 rounded-full shrink-0`,_r[e.status]??`bg-zinc-400`)}),(0,$.jsx)(`span`,{className:`font-medium truncate`,children:e.name}),e.model&&e.model!==`unknown`&&(0,$.jsxs)(`span`,{className:`text-text-subtle text-[10px]`,children:[`(`,e.model,`)`]}),(0,$.jsx)(`span`,{className:`ml-auto text-text-subtle text-[10px]`,children:e.status})]},e.name))})]}),(0,$.jsx)(`div`,{className:`max-h-40 overflow-y-auto`,children:u.length===0?(0,$.jsx)(`p`,{className:`text-xs text-text-subtle text-center py-2`,children:`No messages yet`}):(0,$.jsxs)(`div`,{className:`space-y-2`,children:[u.map((e,t)=>{let n=e.parsedType?vr[e.parsedType]:null,r=br(e.timestamp);return(0,$.jsxs)(`div`,{className:`text-xs`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-1 text-text-subtle`,children:[(0,$.jsx)(`span`,{className:`font-medium`,style:xr(e.color),children:e.from}),(0,$.jsx)(`span`,{children:`→`}),(0,$.jsx)(`span`,{children:e.to}),(0,$.jsx)(`span`,{className:`ml-auto text-[10px]`,children:r})]}),(0,$.jsxs)(`div`,{className:`mt-0.5 text-foreground/90 break-words`,children:[n&&(0,$.jsx)(`span`,{className:m(`inline-block px-1 py-0 rounded text-[9px] mr-1`,n.className),children:n.label}),e.summary??Sr(e.text)]})]},`${e.timestamp}-${t}`)}),(0,$.jsx)(`div`,{ref:c})]})})]})}function br(e){try{return new Date(e).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}catch{return``}}function xr(e){if(e&&(/^#[0-9a-fA-F]{3,8}$/.test(e)||/^[a-zA-Z]{3,20}$/.test(e)))return{color:e}}function Sr(e,t=120){if(!e)return``;try{let n=JSON.parse(e);return n.summary??n.text??e.slice(0,t)}catch{}return e.length>t?e.slice(0,t)+`...`:e}function Cr(e){try{return new Date(e).toLocaleDateString(void 0,{month:`short`,day:`numeric`})}catch{return``}}function wr(e){return e>=90?`text-red-500`:e>=70?`text-amber-500`:`text-green-500`}function Tr({sessionId:e,projectName:t}){let[n,r]=(0,Q.useState)(!1);return(0,$.jsx)(`button`,{onClick:()=>{try{let n=y.get(`${_(t)}/chat/sessions/${e}/debug?project=${encodeURIComponent(t)}`).then(e=>{let t=[`PPM Session: ${e.ppmSessionId}`,`SDK Session: ${e.sdkSessionId}`,e.jsonlPath?`JSONL: ${e.jsonlPath}`:`JSONL: not found`,e.projectPath?`Project: ${e.projectPath}`:null].filter(Boolean).join(`
9
- `);return new Blob([t],{type:`text/plain`})});navigator.clipboard.write([new ClipboardItem({"text/plain":n})]).then(()=>{r(!0),setTimeout(()=>r(!1),1500)})}catch{}},className:`p-1 rounded transition-colors ${n?`text-green-500 bg-green-500/10`:`text-text-subtle hover:text-text-secondary hover:bg-surface-elevated`}`,title:n?`Copied!`:`Copy session debug info`,children:n?(0,$.jsx)(Ve,{className:`size-3`}):(0,$.jsx)(B,{className:`size-3`})})}function Er({projectName:e,usageInfo:t,usageLoading:n,refreshUsage:r,lastFetchedAt:i,sessionId:o,providerId:s,onSelectSession:c,onBugReport:l,isConnected:u,onReconnect:d,teamActivity:f,teamMessages:p,onTeamOpen:m}){let[h,g]=(0,Q.useState)(null),[v,b]=(0,Q.useState)([]),[x,ee]=(0,Q.useState)(!1),S=te(e=>o?e.notifications.has(o):!1),C=te(e=>e.clearForSession),[w,T]=(0,Q.useState)(``),[E,D]=(0,Q.useState)(null),[O,k]=(0,Q.useState)(``),[A,j]=(0,Q.useState)(!1),[M,N]=(0,Q.useState)(!1),P=(0,Q.useRef)(null),F=U(e=>e.openTab),I=e=>{g(t=>t===e?null:e)},L=(0,Q.useCallback)(async()=>{if(e){ee(!0);try{let t=await y.get(`${_(e)}/chat/sessions?limit=50&offset=0`);b(t.sessions),j(t.hasMore)}catch{}finally{ee(!1)}}},[e]),R=(0,Q.useCallback)(async()=>{if(!(!e||M||!A)){N(!0);try{let t=v.filter(e=>!e.pinned).length,n=await y.get(`${_(e)}/chat/sessions?limit=50&offset=${t}`);b(e=>{let t=new Set(e.map(e=>e.id)),r=n.sessions.filter(e=>!t.has(e.id));return[...e,...r]}),j(n.hasMore)}catch{}finally{N(!1)}}},[e,M,A,v]);(0,Q.useEffect)(()=>{h===`history`&&v.length===0&&L()},[h]);function z(t){c?(c(t),g(null)):F({type:`chat`,title:t.title||`Chat`,projectId:e??null,metadata:{projectName:e,sessionId:t.id,providerId:t.providerId},closable:!0})}let B=(0,Q.useCallback)((e,t)=>{t.stopPropagation(),D(e.id),k(e.title||``),setTimeout(()=>P.current?.select(),0)},[]),H=(0,Q.useCallback)(async()=>{if(!E||!O.trim()||!e){D(null);return}try{await y.patch(`${_(e)}/chat/sessions/${E}`,{title:O.trim()}),b(e=>e.map(e=>e.id===E?{...e,title:O.trim()}:e))}catch{}D(null)},[E,O,e]),G=(0,Q.useCallback)(()=>D(null),[]),ne=(0,Q.useCallback)(async(t,n)=>{if(t.stopPropagation(),!e)return;let r=`${_(e)}/chat/sessions/${n.id}/pin`;try{n.pinned?await y.del(r):await y.put(r),b(e=>e.map(e=>e.id===n.id?{...e,pinned:!e.pinned}:e).sort((e,t)=>e.pinned&&!t.pinned?-1:!e.pinned&&t.pinned?1:new Date(t.createdAt).getTime()-new Date(e.createdAt).getTime()))}catch{}},[e]),K=(0,Q.useCallback)(async(t,n)=>{if(t.stopPropagation(),e&&window.confirm(`Delete this session? This cannot be undone.`))try{await y.del(`${_(e)}/chat/sessions/${n.id}?providerId=${n.providerId}`),b(e=>e.filter(e=>e.id!==n.id))}catch{}},[e]),q=w.trim()?v.filter(e=>(e.title||``).toLowerCase().includes(w.toLowerCase())):v,J=!s||s===`claude`,Y=t.fiveHour==null?null:Math.round(t.fiveHour*100),X=t.sevenDay==null?null:Math.round(t.sevenDay*100),ae=Y!=null||X!=null?wr(Math.max(Y??0,X??0)):`text-text-subtle`;return(0,$.jsxs)(`div`,{className:`border-b border-border/50`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-1 px-2 py-1`,children:[(0,$.jsxs)(`button`,{onClick:()=>I(`history`),className:`flex items-center gap-1 px-1.5 py-0.5 rounded text-[11px] transition-colors ${h===`history`?`text-primary bg-primary/10`:`text-text-secondary hover:text-foreground hover:bg-surface-elevated`}`,children:[(0,$.jsx)(We,{className:`size-3`}),(0,$.jsx)(`span`,{children:`History`})]}),o&&s&&s!==`mock`?(0,$.jsxs)(`button`,{onClick:()=>I(`config`),className:`flex items-center gap-1 px-1.5 py-0.5 rounded text-[11px] transition-colors ${h===`config`?`text-primary bg-primary/10`:`text-text-secondary hover:text-foreground hover:bg-surface-elevated`}`,title:`AI Settings`,children:[(0,$.jsx)(le,{providerId:s}),(0,$.jsx)(`span`,{className:`capitalize`,children:s})]}):(0,$.jsx)(`button`,{onClick:()=>I(`config`),className:`p-1 rounded transition-colors ${h===`config`?`text-primary bg-primary/10`:`text-text-subtle hover:text-text-secondary hover:bg-surface-elevated`}`,title:`AI Settings`,children:(0,$.jsx)(Qe,{className:`size-3`})}),J?(0,$.jsxs)(`button`,{onClick:()=>I(`usage`),className:`flex items-center gap-1 px-1.5 py-0.5 rounded text-[11px] font-medium tabular-nums transition-colors hover:bg-surface-elevated ${h===`usage`?`bg-primary/10`:``} ${ae}`,title:`Usage limits`,children:[(0,$.jsx)(ze,{className:`size-3`}),t.activeAccountLabel&&(0,$.jsxs)(`span`,{className:`text-text-secondary font-normal truncate max-w-[60px]`,children:[`[`,t.activeAccountLabel,`]`]}),(0,$.jsxs)(`span`,{children:[`5h:`,Y==null?`--%`:`${Y}%`]}),(0,$.jsx)(`span`,{className:`text-text-subtle`,children:`·`}),(0,$.jsxs)(`span`,{children:[`Wk:`,X==null?`--%`:`${X}%`]})]}):null,f?.hasTeams&&(0,$.jsxs)(`button`,{onClick:()=>{I(`team`),m?.()},className:`relative flex items-center gap-1 px-1.5 py-0.5 rounded text-[11px] transition-colors ${h===`team`?`text-primary bg-primary/10`:`text-text-secondary hover:text-foreground hover:bg-surface-elevated`}`,title:`Team activity`,children:[(0,$.jsx)(nt,{className:`size-3`}),(0,$.jsx)(`span`,{children:`Team`}),(f.unreadCount??0)>0&&(0,$.jsx)(`span`,{className:`absolute -top-0.5 -right-0.5 size-2 bg-primary rounded-full animate-pulse`})]}),(0,$.jsx)(`div`,{className:`flex-1`}),S&&o&&(0,$.jsx)(`button`,{onClick:()=>C(o),className:`p-1 rounded text-amber-500 hover:text-amber-400 hover:bg-surface-elevated transition-colors`,title:`Mark as read`,children:(0,$.jsx)(W,{className:`size-3`})}),o&&(0,$.jsx)(Tr,{sessionId:o,projectName:e}),d&&(0,$.jsx)(`button`,{onClick:d,className:`size-4 flex items-center justify-center`,title:u?`Connected`:`Disconnected — click to reconnect`,children:(0,$.jsx)(`span`,{className:`size-2 rounded-full ${u?`bg-green-500`:`bg-red-500 animate-pulse`}`})})]}),h===`history`&&(0,$.jsxs)(`div`,{className:`border-t border-border/30 bg-surface`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5 px-2 py-1 border-b border-border/30`,children:[(0,$.jsx)(Pe,{className:`size-3 text-text-subtle shrink-0`}),(0,$.jsx)(`input`,{type:`text`,value:w,onChange:e=>T(e.target.value),placeholder:`Search sessions...`,className:`flex-1 bg-transparent text-[11px] text-text-primary outline-none placeholder:text-text-subtle`}),(0,$.jsx)(`button`,{onClick:L,disabled:x,className:`p-0.5 rounded text-text-subtle hover:text-text-secondary transition-colors disabled:opacity-50`,title:`Refresh`,children:(0,$.jsx)(Ae,{className:`size-3 ${x?`animate-spin`:``}`})})]}),(0,$.jsx)(`div`,{className:`max-h-[200px] overflow-y-auto`,children:x&&v.length===0?(0,$.jsx)(`div`,{className:`flex items-center justify-center py-3`,children:(0,$.jsx)(Z,{className:`size-3.5 animate-spin text-text-subtle`})}):q.length===0?(0,$.jsx)(`div`,{className:`flex items-center justify-center py-3 text-[11px] text-text-subtle`,children:w?`No matching sessions`:`No sessions yet`}):(0,$.jsxs)($.Fragment,{children:[q.map(e=>(0,$.jsxs)(`div`,{className:`flex items-center gap-2 w-full px-3 py-1.5 text-left hover:bg-surface-elevated transition-colors group`,children:[(0,$.jsx)(le,{providerId:e.providerId}),E===e.id?(0,$.jsxs)(`form`,{className:`flex items-center gap-1 flex-1 min-w-0`,onSubmit:e=>{e.preventDefault(),H()},children:[(0,$.jsx)(`input`,{ref:P,value:O,onChange:e=>k(e.target.value),onBlur:H,onKeyDown:e=>{e.key===`Escape`&&G()},className:`flex-1 min-w-0 bg-surface-elevated text-[11px] text-text-primary px-1 py-0.5 rounded border border-border outline-none focus:border-primary`,autoFocus:!0}),(0,$.jsx)(`button`,{type:`submit`,className:`p-0.5 text-green-500 hover:text-green-400`,onClick:e=>e.stopPropagation(),children:(0,$.jsx)(re,{className:`size-3`})}),(0,$.jsx)(`button`,{type:`button`,className:`p-0.5 text-text-subtle hover:text-text-secondary`,onClick:e=>{e.stopPropagation(),G()},children:(0,$.jsx)(a,{className:`size-3`})})]}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`button`,{onClick:()=>z(e),className:`text-[11px] truncate flex-1 text-left flex items-center gap-1`,children:[e.title?.startsWith(`[PPM]`)&&(0,$.jsx)(V,{className:`size-3 text-muted-foreground shrink-0`}),e.title?.startsWith(`[PPM]`)?e.title.slice(7):e.title||`Untitled`]}),(0,$.jsx)(`button`,{onClick:t=>ne(t,e),className:`p-0.5 rounded transition-all ${e.pinned?`text-primary hover:text-primary/70`:`text-text-subtle hover:text-text-secondary can-hover:opacity-0 can-hover:group-hover:opacity-100`}`,title:e.pinned?`Unpin session`:`Pin session`,children:e.pinned?(0,$.jsx)(Me,{className:`size-3`}):(0,$.jsx)(Ee,{className:`size-3`})}),(0,$.jsx)(`button`,{onClick:t=>B(e,t),className:`p-0.5 rounded text-text-subtle hover:text-text-secondary can-hover:opacity-0 can-hover:group-hover:opacity-100 transition-opacity`,title:`Rename session`,children:(0,$.jsx)(ue,{className:`size-3`})}),(0,$.jsx)(`button`,{onClick:t=>K(t,e),className:`p-0.5 rounded text-text-subtle hover:text-red-400 hover:bg-red-500/20 can-hover:opacity-0 can-hover:group-hover:opacity-100 transition-opacity`,title:`Delete session`,children:(0,$.jsx)(ie,{className:`size-3`})})]}),E!==e.id&&e.updatedAt&&(0,$.jsx)(`span`,{className:`text-[10px] text-text-subtle shrink-0 w-10 text-right`,children:Cr(e.updatedAt)})]},e.id)),A&&!w&&(0,$.jsxs)(`button`,{onClick:R,disabled:M,className:`flex items-center justify-center gap-1 w-full py-1.5 text-[11px] text-text-subtle hover:text-text-secondary hover:bg-surface-elevated transition-colors`,children:[M?(0,$.jsx)(Z,{className:`size-3 animate-spin`}):null,M?`Loading...`:`Load more`]})]})})]}),h===`config`&&(0,$.jsx)(`div`,{className:`border-t border-border/30 bg-surface px-3 py-2 max-h-[280px] overflow-y-auto`,children:(0,$.jsx)(je,{compact:!0})}),h===`team`&&f?.hasTeams&&(0,$.jsx)(`div`,{className:`border-t border-border/30 bg-surface px-3 py-2 max-h-[280px] overflow-y-auto`,children:(0,$.jsx)(yr,{teamNames:f.teamNames,messages:p??[]})}),h===`usage`&&J&&(0,$.jsx)(gr,{usage:t,visible:!0,onClose:()=>g(null),onReload:r,loading:n,lastFetchedAt:i})]})}function Dr({metadata:e,tabId:t}){let[n,r]=(0,Q.useState)(e?.sessionId??null),[i,a]=(0,Q.useState)(e?.providerId??`claude`),[o,s]=(0,Q.useState)([]),[c,l]=(0,Q.useState)(!1),[u,d]=(0,Q.useState)(``),[p,m]=(0,Q.useState)(null),[h,g]=(0,Q.useState)([]),[v,x]=(0,Q.useState)(!1),[ee,S]=(0,Q.useState)(``),[C,w]=(0,Q.useState)(null),[T,E]=(0,Q.useState)(e?.permissionMode??void 0),D=(0,Q.useRef)(null),[O,k]=(0,Q.useState)(!1),[A,j]=(0,Q.useState)(null),M=(0,Q.useRef)(0),N=e?.projectName??``,P=U(e=>e.updateTab),F=ae(e=>e.version),{usageInfo:I,usageLoading:L,lastFetchedAt:R,refreshUsage:z}=_t(N,i);(0,Q.useEffect)(()=>{T||b().then(e=>{let t=e.providers[e.default_provider??`claude`];E(t?.permission_mode??`bypassPermissions`)}).catch(()=>{})},[]),(0,Q.useEffect)(()=>{!t||!n||P(t,{metadata:{...e,sessionId:n,providerId:i,permissionMode:T}})},[n,i,T]);let{messages:B,messagesLoading:V,isStreaming:W,phase:G,isReconnecting:ne,connectingElapsed:K,pendingApproval:q,contextWindowPct:re,compactStatus:ie,statusMessage:J,sessionTitle:Y,sendMessage:X,respondToApproval:se,cancelStreaming:ce,reconnect:le,refetchMessages:ue,isConnected:de,teamActivity:fe,teamMessages:pe,markTeamRead:me}=ht(n,i,N);(0,Q.useEffect)(()=>{if(de&&D.current){let{content:e,permissionMode:t}=D.current;D.current=null,X(e,{permissionMode:t})}},[de,X]),(0,Q.useEffect)(()=>{if(!n||!t)return;let e=()=>{if(document.hidden)return;let{panels:e,focusedPanelId:r}=H.getState();e[r]?.activeTabId===t&&te.getState().clearForSession(n)};e(),document.addEventListener(`visibilitychange`,e);let r=H.subscribe(e);return()=>{document.removeEventListener(`visibilitychange`,e),r()}},[n,t]),(0,Q.useEffect)(()=>{t&&Y&&P(t,{title:Y})},[Y]);let[he,ge]=(0,Q.useState)(e?.pendingMessage);(0,Q.useEffect)(()=>{he&&de&&n&&t&&P(t,{metadata:{...e,pendingMessage:void 0}})},[de,n]),(0,Q.useCallback)(()=>{U.getState().openTab({type:`chat`,title:`AI Chat`,metadata:{projectName:N,providerId:i},projectId:N||null,closable:!0})},[N,i]);let _e=(0,Q.useCallback)(e=>{r(e.id),a(e.providerId),t&&P(t,{title:e.title||`Chat`})},[t,P]),ye=(0,Q.useCallback)(async(e,t)=>{if(!(!n||!N))try{let{api:r,projectUrl:a}=await f(async()=>{let{api:e,projectUrl:t}=await import(`./api-client-BfBM3I7n.js`).then(e=>e.n);return{api:e,projectUrl:t}},__vite__mapDeps([0,1])),o=await r.post(`${a(N)}/chat/sessions/${n}/fork?providerId=${i}`,{messageId:t});U.getState().openTab({type:`chat`,title:`Fork: ${e.slice(0,30)}`,metadata:{projectName:N,sessionId:o.id,providerId:i,pendingMessage:e},projectId:N||null,closable:!0})}catch(e){console.error(`Fork failed:`,e)}},[n,N,i]),be=(0,Q.useCallback)((e,t)=>{if(t.length===0)return e;let n=t.filter(e=>e.serverPath).map(e=>e.serverPath).join(`
10
- `);return n?(t.length===1?`[Attached file: ${n}]\n\n`:`[Attached files:\n${n}\n]\n\n`)+e:e},[]),xe=(0,Q.useCallback)(async(e,t=[],o)=>{let s=be(e,t);if(s.trim()){if(!n)try{let t=N,n=await y.post(`${_(t)}/chat/sessions`,{providerId:i,title:e.slice(0,50)});r(n.id),a(n.providerId),D.current={content:s,permissionMode:T};return}catch(e){console.error(`Failed to create session:`,e);return}X(s,{permissionMode:T,priority:o})}},[n,i,N,X,be,T]),Se=(0,Q.useCallback)((e,t)=>{l(e),d(t)},[]),Ce=(0,Q.useCallback)(e=>{m(e),l(!1),d(``),setTimeout(()=>m(null),50)},[]),we=(0,Q.useCallback)(()=>{l(!1),d(``)},[]),Te=(0,Q.useCallback)((e,t)=>{x(e),S(t)},[]),Ee=(0,Q.useCallback)(e=>{w(e),x(!1),S(``),setTimeout(()=>w(null),50)},[]),De=(0,Q.useCallback)(()=>{x(!1),S(``)},[]);return(0,$.jsxs)(`div`,{className:`flex flex-col h-full relative`,onDragEnter:(0,Q.useCallback)(e=>{e.preventDefault(),M.current++,e.dataTransfer.types.includes(`Files`)&&k(!0)},[]),onDragLeave:(0,Q.useCallback)(e=>{e.preventDefault(),M.current--,M.current===0&&k(!1)},[]),onDragOver:(0,Q.useCallback)(e=>{e.preventDefault()},[]),onDrop:(0,Q.useCallback)(e=>{e.preventDefault(),M.current=0,k(!1);let t=Array.from(e.dataTransfer.files);t.length>0&&(j(t),setTimeout(()=>j(null),100))},[]),children:[O&&(0,$.jsx)(`div`,{className:`absolute inset-0 z-50 flex items-center justify-center bg-background/80 backdrop-blur-sm border-2 border-dashed border-primary rounded-lg pointer-events-none`,children:(0,$.jsxs)(`div`,{className:`flex flex-col items-center gap-2 text-primary`,children:[(0,$.jsx)(oe,{className:`size-8`}),(0,$.jsx)(`span`,{className:`text-sm font-medium`,children:`Drop files to attach`})]})}),ne&&(0,$.jsx)(`div`,{className:`absolute inset-0 z-50 flex items-center justify-center bg-background/60 backdrop-blur-sm`,children:(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,$.jsx)(Z,{className:`size-4 animate-spin`}),(0,$.jsx)(`span`,{children:`Reconnecting...`})]})}),(0,$.jsx)(Jt,{messages:B,messagesLoading:V,pendingApproval:q,onApprovalResponse:se,isStreaming:W,phase:G,connectingElapsed:K,statusMessage:J,compactStatus:ie,projectName:N,onFork:W?void 0:ye,onSelectSession:_e}),(0,$.jsxs)(`div`,{className:`border-t border-border bg-background shrink-0`,children:[(0,$.jsx)(Er,{projectName:N,usageInfo:I,usageLoading:L,refreshUsage:z,lastFetchedAt:R,sessionId:n,providerId:i,onSelectSession:_e,onBugReport:n?()=>ve(F,{sessionId:n,projectName:N}):void 0,isConnected:de,onReconnect:()=>{de||le(),ue()},teamActivity:fe,teamMessages:pe,onTeamOpen:me}),(0,$.jsx)(Un,{items:o,filter:u,onSelect:Ce,onClose:we,visible:c}),(0,$.jsx)(Rn,{items:h,filter:ee,onSelect:Ee,onClose:De,visible:v}),(0,$.jsx)(zn,{onSend:(e,t,n)=>{he&&ge(void 0),xe(e,t,n)},isStreaming:W,onCancel:ce,autoFocus:!e?.sessionId||!!he,initialValue:he,projectName:N,onSlashStateChange:Se,onSlashItemsLoaded:s,slashSelected:p,onFileStateChange:Te,onFileItemsLoaded:g,fileSelected:C,externalFiles:A,permissionMode:T,onModeChange:E,providerId:i,onProviderChange:n?void 0:a})]})]})}export{Dr as ChatTab};