profclaw 0.0.1-beta.1

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 (942) hide show
  1. package/.env.example +215 -0
  2. package/CHANGELOG.md +49 -0
  3. package/CONTRIBUTING.md +119 -0
  4. package/Dockerfile +107 -0
  5. package/LICENSE +661 -0
  6. package/README.md +196 -0
  7. package/config/agents.yml +55 -0
  8. package/config/budget.yml +15 -0
  9. package/config/pricing.yml +46 -0
  10. package/config/settings.yml +168 -0
  11. package/dist/adapters/claude-code.d.ts +46 -0
  12. package/dist/adapters/claude-code.js +215 -0
  13. package/dist/adapters/index.d.ts +4 -0
  14. package/dist/adapters/index.js +4 -0
  15. package/dist/adapters/ollama.d.ts +45 -0
  16. package/dist/adapters/ollama.js +277 -0
  17. package/dist/adapters/openclaw.d.ts +60 -0
  18. package/dist/adapters/openclaw.js +289 -0
  19. package/dist/adapters/registry.d.ts +56 -0
  20. package/dist/adapters/registry.js +163 -0
  21. package/dist/agents/executor.d.ts +78 -0
  22. package/dist/agents/executor.js +657 -0
  23. package/dist/agents/index.d.ts +10 -0
  24. package/dist/agents/index.js +27 -0
  25. package/dist/agents/stop-conditions.d.ts +108 -0
  26. package/dist/agents/stop-conditions.js +299 -0
  27. package/dist/agents/types.d.ts +185 -0
  28. package/dist/agents/types.js +14 -0
  29. package/dist/ai/embedding-service.d.ts +96 -0
  30. package/dist/ai/embedding-service.js +333 -0
  31. package/dist/auth/api-tokens.d.ts +71 -0
  32. package/dist/auth/api-tokens.js +235 -0
  33. package/dist/auth/auth-service.d.ts +75 -0
  34. package/dist/auth/auth-service.js +557 -0
  35. package/dist/auth/device-identity.d.ts +96 -0
  36. package/dist/auth/device-identity.js +250 -0
  37. package/dist/auth/github-oauth.d.ts +20 -0
  38. package/dist/auth/github-oauth.js +59 -0
  39. package/dist/auth/jira-oauth.d.ts +25 -0
  40. package/dist/auth/jira-oauth.js +75 -0
  41. package/dist/auth/linear-oauth.d.ts +21 -0
  42. package/dist/auth/linear-oauth.js +59 -0
  43. package/dist/auth/middleware.d.ts +44 -0
  44. package/dist/auth/middleware.js +190 -0
  45. package/dist/auth/pairing-codes.d.ts +109 -0
  46. package/dist/auth/pairing-codes.js +274 -0
  47. package/dist/auth/password.d.ts +53 -0
  48. package/dist/auth/password.js +126 -0
  49. package/dist/auth/qr-pairing.d.ts +36 -0
  50. package/dist/auth/qr-pairing.js +138 -0
  51. package/dist/auth/slack-oauth.d.ts +31 -0
  52. package/dist/auth/slack-oauth.js +80 -0
  53. package/dist/backup/index.d.ts +50 -0
  54. package/dist/backup/index.js +184 -0
  55. package/dist/browser/adapters.d.ts +25 -0
  56. package/dist/browser/adapters.js +32 -0
  57. package/dist/browser/cli.d.ts +19 -0
  58. package/dist/browser/cli.js +277 -0
  59. package/dist/browser/compression.d.ts +32 -0
  60. package/dist/browser/compression.js +269 -0
  61. package/dist/browser/extensions.d.ts +144 -0
  62. package/dist/browser/extensions.js +251 -0
  63. package/dist/browser/index.d.ts +37 -0
  64. package/dist/browser/index.js +43 -0
  65. package/dist/browser/refs.d.ts +46 -0
  66. package/dist/browser/refs.js +120 -0
  67. package/dist/browser/search.d.ts +36 -0
  68. package/dist/browser/search.js +193 -0
  69. package/dist/browser/service.d.ts +94 -0
  70. package/dist/browser/service.js +358 -0
  71. package/dist/browser/snapshot.d.ts +19 -0
  72. package/dist/browser/snapshot.js +250 -0
  73. package/dist/browser/tools.d.ts +259 -0
  74. package/dist/browser/tools.js +463 -0
  75. package/dist/browser/types.d.ts +134 -0
  76. package/dist/browser/types.js +17 -0
  77. package/dist/chat/agentic-executor.d.ts +108 -0
  78. package/dist/chat/agentic-executor.js +739 -0
  79. package/dist/chat/api-key-detector.d.ts +41 -0
  80. package/dist/chat/api-key-detector.js +290 -0
  81. package/dist/chat/auto-reply.d.ts +90 -0
  82. package/dist/chat/auto-reply.js +272 -0
  83. package/dist/chat/conversations.d.ts +91 -0
  84. package/dist/chat/conversations.js +297 -0
  85. package/dist/chat/execution/audit.d.ts +192 -0
  86. package/dist/chat/execution/audit.js +323 -0
  87. package/dist/chat/execution/executor.d.ts +56 -0
  88. package/dist/chat/execution/executor.js +654 -0
  89. package/dist/chat/execution/guardrails.d.ts +98 -0
  90. package/dist/chat/execution/guardrails.js +571 -0
  91. package/dist/chat/execution/index.d.ts +61 -0
  92. package/dist/chat/execution/index.js +129 -0
  93. package/dist/chat/execution/model-capability.d.ts +34 -0
  94. package/dist/chat/execution/model-capability.js +96 -0
  95. package/dist/chat/execution/process-pool.d.ts +110 -0
  96. package/dist/chat/execution/process-pool.js +290 -0
  97. package/dist/chat/execution/pty.d.ts +92 -0
  98. package/dist/chat/execution/pty.js +285 -0
  99. package/dist/chat/execution/rate-limiter.d.ts +87 -0
  100. package/dist/chat/execution/rate-limiter.js +305 -0
  101. package/dist/chat/execution/registry.d.ts +54 -0
  102. package/dist/chat/execution/registry.js +220 -0
  103. package/dist/chat/execution/sandbox.d.ts +109 -0
  104. package/dist/chat/execution/sandbox.js +684 -0
  105. package/dist/chat/execution/secrets.d.ts +45 -0
  106. package/dist/chat/execution/secrets.js +338 -0
  107. package/dist/chat/execution/security.d.ts +179 -0
  108. package/dist/chat/execution/security.js +739 -0
  109. package/dist/chat/execution/self-correction.d.ts +162 -0
  110. package/dist/chat/execution/self-correction.js +557 -0
  111. package/dist/chat/execution/session-manager.d.ts +79 -0
  112. package/dist/chat/execution/session-manager.js +356 -0
  113. package/dist/chat/execution/session-spawn/config.d.ts +37 -0
  114. package/dist/chat/execution/session-spawn/config.js +83 -0
  115. package/dist/chat/execution/session-spawn/index.d.ts +10 -0
  116. package/dist/chat/execution/session-spawn/index.js +10 -0
  117. package/dist/chat/execution/session-spawn/manager.d.ts +35 -0
  118. package/dist/chat/execution/session-spawn/manager.js +418 -0
  119. package/dist/chat/execution/session-spawn/types.d.ts +117 -0
  120. package/dist/chat/execution/session-spawn/types.js +16 -0
  121. package/dist/chat/execution/smart-prompts.d.ts +34 -0
  122. package/dist/chat/execution/smart-prompts.js +151 -0
  123. package/dist/chat/execution/stream-results.d.ts +65 -0
  124. package/dist/chat/execution/stream-results.js +156 -0
  125. package/dist/chat/execution/tool-router.d.ts +76 -0
  126. package/dist/chat/execution/tool-router.js +296 -0
  127. package/dist/chat/execution/tools/agents-list.d.ts +49 -0
  128. package/dist/chat/execution/tools/agents-list.js +165 -0
  129. package/dist/chat/execution/tools/browser.d.ts +12 -0
  130. package/dist/chat/execution/tools/browser.js +14 -0
  131. package/dist/chat/execution/tools/canvas.d.ts +61 -0
  132. package/dist/chat/execution/tools/canvas.js +150 -0
  133. package/dist/chat/execution/tools/complete-task.d.ts +72 -0
  134. package/dist/chat/execution/tools/complete-task.js +104 -0
  135. package/dist/chat/execution/tools/cron-tool.d.ts +204 -0
  136. package/dist/chat/execution/tools/cron-tool.js +680 -0
  137. package/dist/chat/execution/tools/discord-actions.d.ts +120 -0
  138. package/dist/chat/execution/tools/discord-actions.js +361 -0
  139. package/dist/chat/execution/tools/exec.d.ts +43 -0
  140. package/dist/chat/execution/tools/exec.js +223 -0
  141. package/dist/chat/execution/tools/file-ops.d.ts +175 -0
  142. package/dist/chat/execution/tools/file-ops.js +723 -0
  143. package/dist/chat/execution/tools/git.d.ts +143 -0
  144. package/dist/chat/execution/tools/git.js +395 -0
  145. package/dist/chat/execution/tools/github.d.ts +42 -0
  146. package/dist/chat/execution/tools/github.js +184 -0
  147. package/dist/chat/execution/tools/glinr-ops.d.ts +202 -0
  148. package/dist/chat/execution/tools/glinr-ops.js +694 -0
  149. package/dist/chat/execution/tools/image-analyze.d.ts +29 -0
  150. package/dist/chat/execution/tools/image-analyze.js +127 -0
  151. package/dist/chat/execution/tools/index.d.ts +64 -0
  152. package/dist/chat/execution/tools/index.js +245 -0
  153. package/dist/chat/execution/tools/integrations.d.ts +109 -0
  154. package/dist/chat/execution/tools/integrations.js +237 -0
  155. package/dist/chat/execution/tools/link-understand.d.ts +34 -0
  156. package/dist/chat/execution/tools/link-understand.js +307 -0
  157. package/dist/chat/execution/tools/maintenance.d.ts +29 -0
  158. package/dist/chat/execution/tools/maintenance.js +105 -0
  159. package/dist/chat/execution/tools/memory-tools.d.ts +76 -0
  160. package/dist/chat/execution/tools/memory-tools.js +278 -0
  161. package/dist/chat/execution/tools/openai-image-gen.d.ts +51 -0
  162. package/dist/chat/execution/tools/openai-image-gen.js +212 -0
  163. package/dist/chat/execution/tools/profclaw-ops.d.ts +204 -0
  164. package/dist/chat/execution/tools/profclaw-ops.js +665 -0
  165. package/dist/chat/execution/tools/session-spawn.d.ts +146 -0
  166. package/dist/chat/execution/tools/session-spawn.js +544 -0
  167. package/dist/chat/execution/tools/session-status.d.ts +38 -0
  168. package/dist/chat/execution/tools/session-status.js +185 -0
  169. package/dist/chat/execution/tools/sessions-list.d.ts +49 -0
  170. package/dist/chat/execution/tools/sessions-list.js +153 -0
  171. package/dist/chat/execution/tools/sessions-send.d.ts +48 -0
  172. package/dist/chat/execution/tools/sessions-send.js +207 -0
  173. package/dist/chat/execution/tools/sessions-spawn.d.ts +51 -0
  174. package/dist/chat/execution/tools/sessions-spawn.js +137 -0
  175. package/dist/chat/execution/tools/slack-actions.d.ts +90 -0
  176. package/dist/chat/execution/tools/slack-actions.js +272 -0
  177. package/dist/chat/execution/tools/subagent-orchestrate.d.ts +66 -0
  178. package/dist/chat/execution/tools/subagent-orchestrate.js +313 -0
  179. package/dist/chat/execution/tools/system.d.ts +121 -0
  180. package/dist/chat/execution/tools/system.js +415 -0
  181. package/dist/chat/execution/tools/telegram-actions.d.ts +126 -0
  182. package/dist/chat/execution/tools/telegram-actions.js +339 -0
  183. package/dist/chat/execution/tools/test-run.d.ts +43 -0
  184. package/dist/chat/execution/tools/test-run.js +391 -0
  185. package/dist/chat/execution/tools/tts-speak.d.ts +39 -0
  186. package/dist/chat/execution/tools/tts-speak.js +199 -0
  187. package/dist/chat/execution/tools/web-fetch.d.ts +42 -0
  188. package/dist/chat/execution/tools/web-fetch.js +247 -0
  189. package/dist/chat/execution/tools/web-search.d.ts +53 -0
  190. package/dist/chat/execution/tools/web-search.js +130 -0
  191. package/dist/chat/execution/types.d.ts +337 -0
  192. package/dist/chat/execution/types.js +8 -0
  193. package/dist/chat/execution/workflows/built-in.d.ts +10 -0
  194. package/dist/chat/execution/workflows/built-in.js +249 -0
  195. package/dist/chat/execution/workflows/executor.d.ts +13 -0
  196. package/dist/chat/execution/workflows/executor.js +259 -0
  197. package/dist/chat/execution/workflows/index.d.ts +5 -0
  198. package/dist/chat/execution/workflows/index.js +5 -0
  199. package/dist/chat/execution/workflows/trigger.d.ts +15 -0
  200. package/dist/chat/execution/workflows/trigger.js +111 -0
  201. package/dist/chat/execution/workflows/types.d.ts +80 -0
  202. package/dist/chat/execution/workflows/types.js +2 -0
  203. package/dist/chat/failover/error.d.ts +73 -0
  204. package/dist/chat/failover/error.js +412 -0
  205. package/dist/chat/failover/index.d.ts +10 -0
  206. package/dist/chat/failover/index.js +11 -0
  207. package/dist/chat/failover/model-fallback.d.ts +97 -0
  208. package/dist/chat/failover/model-fallback.js +328 -0
  209. package/dist/chat/failover/types.d.ts +47 -0
  210. package/dist/chat/failover/types.js +8 -0
  211. package/dist/chat/format/chunk.d.ts +59 -0
  212. package/dist/chat/format/chunk.js +253 -0
  213. package/dist/chat/format/index.d.ts +7 -0
  214. package/dist/chat/format/index.js +7 -0
  215. package/dist/chat/format/tool-result-formatter.d.ts +30 -0
  216. package/dist/chat/format/tool-result-formatter.js +177 -0
  217. package/dist/chat/group.d.ts +232 -0
  218. package/dist/chat/group.js +311 -0
  219. package/dist/chat/index.d.ts +21 -0
  220. package/dist/chat/index.js +30 -0
  221. package/dist/chat/memory.d.ts +108 -0
  222. package/dist/chat/memory.js +343 -0
  223. package/dist/chat/message-handler.d.ts +38 -0
  224. package/dist/chat/message-handler.js +274 -0
  225. package/dist/chat/proactive/index.d.ts +167 -0
  226. package/dist/chat/proactive/index.js +721 -0
  227. package/dist/chat/prompt-adapter.d.ts +52 -0
  228. package/dist/chat/prompt-adapter.js +245 -0
  229. package/dist/chat/providers/dingtalk/index.d.ts +69 -0
  230. package/dist/chat/providers/dingtalk/index.js +225 -0
  231. package/dist/chat/providers/discord/index.d.ts +264 -0
  232. package/dist/chat/providers/discord/index.js +657 -0
  233. package/dist/chat/providers/feishu/index.d.ts +97 -0
  234. package/dist/chat/providers/feishu/index.js +362 -0
  235. package/dist/chat/providers/googlechat/index.d.ts +269 -0
  236. package/dist/chat/providers/googlechat/index.js +634 -0
  237. package/dist/chat/providers/imessage/index.d.ts +61 -0
  238. package/dist/chat/providers/imessage/index.js +166 -0
  239. package/dist/chat/providers/index.d.ts +76 -0
  240. package/dist/chat/providers/index.js +430 -0
  241. package/dist/chat/providers/irc/index.d.ts +101 -0
  242. package/dist/chat/providers/irc/index.js +557 -0
  243. package/dist/chat/providers/line/index.d.ts +113 -0
  244. package/dist/chat/providers/line/index.js +434 -0
  245. package/dist/chat/providers/matrix/index.d.ts +161 -0
  246. package/dist/chat/providers/matrix/index.js +559 -0
  247. package/dist/chat/providers/mattermost/index.d.ts +106 -0
  248. package/dist/chat/providers/mattermost/index.js +425 -0
  249. package/dist/chat/providers/msteams/index.d.ts +198 -0
  250. package/dist/chat/providers/msteams/index.js +694 -0
  251. package/dist/chat/providers/nextcloud/index.d.ts +52 -0
  252. package/dist/chat/providers/nextcloud/index.js +156 -0
  253. package/dist/chat/providers/nostr/index.d.ts +60 -0
  254. package/dist/chat/providers/nostr/index.js +200 -0
  255. package/dist/chat/providers/qq/index.d.ts +57 -0
  256. package/dist/chat/providers/qq/index.js +260 -0
  257. package/dist/chat/providers/registry.d.ts +89 -0
  258. package/dist/chat/providers/registry.js +213 -0
  259. package/dist/chat/providers/signal/index.d.ts +88 -0
  260. package/dist/chat/providers/signal/index.js +357 -0
  261. package/dist/chat/providers/slack/index.d.ts +52 -0
  262. package/dist/chat/providers/slack/index.js +477 -0
  263. package/dist/chat/providers/synology/index.d.ts +50 -0
  264. package/dist/chat/providers/synology/index.js +138 -0
  265. package/dist/chat/providers/telegram/index.d.ts +148 -0
  266. package/dist/chat/providers/telegram/index.js +492 -0
  267. package/dist/chat/providers/tlon/index.d.ts +44 -0
  268. package/dist/chat/providers/tlon/index.js +243 -0
  269. package/dist/chat/providers/twitch/index.d.ts +79 -0
  270. package/dist/chat/providers/twitch/index.js +349 -0
  271. package/dist/chat/providers/types.d.ts +437 -0
  272. package/dist/chat/providers/types.js +14 -0
  273. package/dist/chat/providers/webchat/index.d.ts +38 -0
  274. package/dist/chat/providers/webchat/index.js +214 -0
  275. package/dist/chat/providers/wecom/index.d.ts +62 -0
  276. package/dist/chat/providers/wecom/index.js +228 -0
  277. package/dist/chat/providers/whatsapp/index.d.ts +147 -0
  278. package/dist/chat/providers/whatsapp/index.js +396 -0
  279. package/dist/chat/providers/zalo/index.d.ts +54 -0
  280. package/dist/chat/providers/zalo/index.js +158 -0
  281. package/dist/chat/providers/zalo-personal/index.d.ts +53 -0
  282. package/dist/chat/providers/zalo-personal/index.js +212 -0
  283. package/dist/chat/skills.d.ts +82 -0
  284. package/dist/chat/skills.js +410 -0
  285. package/dist/chat/system-prompts.d.ts +76 -0
  286. package/dist/chat/system-prompts.js +407 -0
  287. package/dist/chat/tool-handler.d.ts +57 -0
  288. package/dist/chat/tool-handler.js +336 -0
  289. package/dist/chat/tools.d.ts +373 -0
  290. package/dist/chat/tools.js +512 -0
  291. package/dist/cli/commands/agent.d.ts +3 -0
  292. package/dist/cli/commands/agent.js +108 -0
  293. package/dist/cli/commands/auth.d.ts +12 -0
  294. package/dist/cli/commands/auth.js +301 -0
  295. package/dist/cli/commands/browser.d.ts +3 -0
  296. package/dist/cli/commands/browser.js +138 -0
  297. package/dist/cli/commands/canvas.d.ts +3 -0
  298. package/dist/cli/commands/canvas.js +155 -0
  299. package/dist/cli/commands/channels.d.ts +3 -0
  300. package/dist/cli/commands/channels.js +167 -0
  301. package/dist/cli/commands/chat.d.ts +9 -0
  302. package/dist/cli/commands/chat.js +360 -0
  303. package/dist/cli/commands/completion.d.ts +3 -0
  304. package/dist/cli/commands/completion.js +170 -0
  305. package/dist/cli/commands/config.d.ts +3 -0
  306. package/dist/cli/commands/config.js +193 -0
  307. package/dist/cli/commands/cost.d.ts +3 -0
  308. package/dist/cli/commands/cost.js +134 -0
  309. package/dist/cli/commands/daemon.d.ts +3 -0
  310. package/dist/cli/commands/daemon.js +381 -0
  311. package/dist/cli/commands/devices.d.ts +3 -0
  312. package/dist/cli/commands/devices.js +150 -0
  313. package/dist/cli/commands/doctor.d.ts +3 -0
  314. package/dist/cli/commands/doctor.js +295 -0
  315. package/dist/cli/commands/logs.d.ts +3 -0
  316. package/dist/cli/commands/logs.js +139 -0
  317. package/dist/cli/commands/mcp.d.ts +15 -0
  318. package/dist/cli/commands/mcp.js +157 -0
  319. package/dist/cli/commands/memory.d.ts +3 -0
  320. package/dist/cli/commands/memory.js +170 -0
  321. package/dist/cli/commands/models.d.ts +3 -0
  322. package/dist/cli/commands/models.js +197 -0
  323. package/dist/cli/commands/nodes.d.ts +3 -0
  324. package/dist/cli/commands/nodes.js +193 -0
  325. package/dist/cli/commands/onboard.d.ts +13 -0
  326. package/dist/cli/commands/onboard.js +360 -0
  327. package/dist/cli/commands/plugin.d.ts +15 -0
  328. package/dist/cli/commands/plugin.js +226 -0
  329. package/dist/cli/commands/provider.d.ts +16 -0
  330. package/dist/cli/commands/provider.js +320 -0
  331. package/dist/cli/commands/security.d.ts +3 -0
  332. package/dist/cli/commands/security.js +180 -0
  333. package/dist/cli/commands/serve.d.ts +3 -0
  334. package/dist/cli/commands/serve.js +179 -0
  335. package/dist/cli/commands/session.d.ts +3 -0
  336. package/dist/cli/commands/session.js +172 -0
  337. package/dist/cli/commands/setup.d.ts +13 -0
  338. package/dist/cli/commands/setup.js +636 -0
  339. package/dist/cli/commands/skill.d.ts +15 -0
  340. package/dist/cli/commands/skill.js +191 -0
  341. package/dist/cli/commands/status.d.ts +3 -0
  342. package/dist/cli/commands/status.js +71 -0
  343. package/dist/cli/commands/summary.d.ts +3 -0
  344. package/dist/cli/commands/summary.js +160 -0
  345. package/dist/cli/commands/task.d.ts +3 -0
  346. package/dist/cli/commands/task.js +170 -0
  347. package/dist/cli/commands/ticket.d.ts +3 -0
  348. package/dist/cli/commands/ticket.js +421 -0
  349. package/dist/cli/commands/tools.d.ts +9 -0
  350. package/dist/cli/commands/tools.js +508 -0
  351. package/dist/cli/commands/tui.d.ts +3 -0
  352. package/dist/cli/commands/tui.js +158 -0
  353. package/dist/cli/commands/tunnel.d.ts +3 -0
  354. package/dist/cli/commands/tunnel.js +135 -0
  355. package/dist/cli/commands/webhooks.d.ts +3 -0
  356. package/dist/cli/commands/webhooks.js +191 -0
  357. package/dist/cli/index.d.ts +3 -0
  358. package/dist/cli/index.js +127 -0
  359. package/dist/cli/utils/api.d.ts +17 -0
  360. package/dist/cli/utils/api.js +63 -0
  361. package/dist/cli/utils/config.d.ts +31 -0
  362. package/dist/cli/utils/config.js +81 -0
  363. package/dist/cli/utils/output.d.ts +58 -0
  364. package/dist/cli/utils/output.js +148 -0
  365. package/dist/core/deployment.d.ts +30 -0
  366. package/dist/core/deployment.js +114 -0
  367. package/dist/core/sandbox-config.d.ts +63 -0
  368. package/dist/core/sandbox-config.js +148 -0
  369. package/dist/costs/budget.d.ts +28 -0
  370. package/dist/costs/budget.js +57 -0
  371. package/dist/costs/persistence.d.ts +77 -0
  372. package/dist/costs/persistence.js +210 -0
  373. package/dist/costs/pricing.d.ts +16 -0
  374. package/dist/costs/pricing.js +39 -0
  375. package/dist/costs/token-tracker.d.ts +34 -0
  376. package/dist/costs/token-tracker.js +141 -0
  377. package/dist/cron/heartbeat.d.ts +23 -0
  378. package/dist/cron/heartbeat.js +109 -0
  379. package/dist/cron/index.d.ts +22 -0
  380. package/dist/cron/index.js +37 -0
  381. package/dist/cron/issue-poller.d.ts +15 -0
  382. package/dist/cron/issue-poller.js +174 -0
  383. package/dist/cron/scheduler.d.ts +315 -0
  384. package/dist/cron/scheduler.js +1008 -0
  385. package/dist/cron/stale-checker.d.ts +16 -0
  386. package/dist/cron/stale-checker.js +61 -0
  387. package/dist/cron/templates.d.ts +107 -0
  388. package/dist/cron/templates.js +395 -0
  389. package/dist/diagnostics/exporters.d.ts +21 -0
  390. package/dist/diagnostics/exporters.js +138 -0
  391. package/dist/diagnostics/index.d.ts +10 -0
  392. package/dist/diagnostics/index.js +9 -0
  393. package/dist/diagnostics/middleware.d.ts +12 -0
  394. package/dist/diagnostics/middleware.js +58 -0
  395. package/dist/diagnostics/tracer.d.ts +133 -0
  396. package/dist/diagnostics/tracer.js +257 -0
  397. package/dist/discovery/index.d.ts +8 -0
  398. package/dist/discovery/index.js +7 -0
  399. package/dist/discovery/mdns.d.ts +40 -0
  400. package/dist/discovery/mdns.js +249 -0
  401. package/dist/gateway/index.d.ts +35 -0
  402. package/dist/gateway/index.js +36 -0
  403. package/dist/gateway/router.d.ts +110 -0
  404. package/dist/gateway/router.js +649 -0
  405. package/dist/gateway/types.d.ts +275 -0
  406. package/dist/gateway/types.js +2 -0
  407. package/dist/gateway/workflows.d.ts +37 -0
  408. package/dist/gateway/workflows.js +748 -0
  409. package/dist/hooks/agent-webhook.d.ts +277 -0
  410. package/dist/hooks/agent-webhook.js +197 -0
  411. package/dist/hooks/index.d.ts +13 -0
  412. package/dist/hooks/index.js +15 -0
  413. package/dist/hooks/prompt-submit.d.ts +45 -0
  414. package/dist/hooks/prompt-submit.js +111 -0
  415. package/dist/hooks/schemas.d.ts +563 -0
  416. package/dist/hooks/schemas.js +108 -0
  417. package/dist/hooks/session-end.d.ts +25 -0
  418. package/dist/hooks/session-end.js +153 -0
  419. package/dist/hooks/tool-use.d.ts +41 -0
  420. package/dist/hooks/tool-use.js +201 -0
  421. package/dist/hooks/types.d.ts +76 -0
  422. package/dist/hooks/types.js +7 -0
  423. package/dist/integrations/cloudflare-tunnel.d.ts +78 -0
  424. package/dist/integrations/cloudflare-tunnel.js +268 -0
  425. package/dist/integrations/github-client.d.ts +27 -0
  426. package/dist/integrations/github-client.js +79 -0
  427. package/dist/integrations/github-projects.d.ts +97 -0
  428. package/dist/integrations/github-projects.js +433 -0
  429. package/dist/integrations/github-ticket-sync.d.ts +82 -0
  430. package/dist/integrations/github-ticket-sync.js +352 -0
  431. package/dist/integrations/github.d.ts +11 -0
  432. package/dist/integrations/github.js +241 -0
  433. package/dist/integrations/jira-client.d.ts +30 -0
  434. package/dist/integrations/jira-client.js +67 -0
  435. package/dist/integrations/jira.d.ts +13 -0
  436. package/dist/integrations/jira.js +108 -0
  437. package/dist/integrations/linear-client.d.ts +23 -0
  438. package/dist/integrations/linear-client.js +52 -0
  439. package/dist/integrations/linear.d.ts +15 -0
  440. package/dist/integrations/linear.js +312 -0
  441. package/dist/integrations/tailscale.d.ts +68 -0
  442. package/dist/integrations/tailscale.js +173 -0
  443. package/dist/integrations/web-search.d.ts +112 -0
  444. package/dist/integrations/web-search.js +287 -0
  445. package/dist/intelligence/index.d.ts +8 -0
  446. package/dist/intelligence/index.js +8 -0
  447. package/dist/intelligence/ollama.d.ts +50 -0
  448. package/dist/intelligence/ollama.js +213 -0
  449. package/dist/intelligence/rules.d.ts +39 -0
  450. package/dist/intelligence/rules.js +308 -0
  451. package/dist/labels/index.d.ts +93 -0
  452. package/dist/labels/index.js +248 -0
  453. package/dist/mcp/browser-tools.d.ts +10 -0
  454. package/dist/mcp/browser-tools.js +16 -0
  455. package/dist/mcp/client.d.ts +54 -0
  456. package/dist/mcp/client.js +153 -0
  457. package/dist/mcp/index.d.ts +12 -0
  458. package/dist/mcp/index.js +13 -0
  459. package/dist/mcp/server.d.ts +40 -0
  460. package/dist/mcp/server.js +826 -0
  461. package/dist/mcp/tool-adapter.d.ts +49 -0
  462. package/dist/mcp/tool-adapter.js +193 -0
  463. package/dist/memory/experience-store.d.ts +121 -0
  464. package/dist/memory/experience-store.js +439 -0
  465. package/dist/memory/index.d.ts +8 -0
  466. package/dist/memory/index.js +25 -0
  467. package/dist/memory/memory-service.d.ts +312 -0
  468. package/dist/memory/memory-service.js +1172 -0
  469. package/dist/memory/memory-watcher.d.ts +116 -0
  470. package/dist/memory/memory-watcher.js +239 -0
  471. package/dist/middleware/logging.d.ts +34 -0
  472. package/dist/middleware/logging.js +184 -0
  473. package/dist/middleware/rate-limit.d.ts +29 -0
  474. package/dist/middleware/rate-limit.js +91 -0
  475. package/dist/notifications/in-app.d.ts +28 -0
  476. package/dist/notifications/in-app.js +53 -0
  477. package/dist/notifications/index.d.ts +3 -0
  478. package/dist/notifications/index.js +3 -0
  479. package/dist/notifications/push.d.ts +74 -0
  480. package/dist/notifications/push.js +175 -0
  481. package/dist/notifications/slack.d.ts +32 -0
  482. package/dist/notifications/slack.js +157 -0
  483. package/dist/plugins/clawhub.d.ts +70 -0
  484. package/dist/plugins/clawhub.js +260 -0
  485. package/dist/plugins/loader.d.ts +23 -0
  486. package/dist/plugins/loader.js +140 -0
  487. package/dist/plugins/marketplace.d.ts +77 -0
  488. package/dist/plugins/marketplace.js +275 -0
  489. package/dist/plugins/registry.d.ts +122 -0
  490. package/dist/plugins/registry.js +352 -0
  491. package/dist/plugins/sandbox.d.ts +77 -0
  492. package/dist/plugins/sandbox.js +287 -0
  493. package/dist/plugins/scaffolder.d.ts +28 -0
  494. package/dist/plugins/scaffolder.js +409 -0
  495. package/dist/plugins/sdk.d.ts +35 -0
  496. package/dist/plugins/sdk.js +8 -0
  497. package/dist/plugins/search/brave.d.ts +9 -0
  498. package/dist/plugins/search/brave.js +157 -0
  499. package/dist/plugins/search/duckduckgo.d.ts +9 -0
  500. package/dist/plugins/search/duckduckgo.js +171 -0
  501. package/dist/plugins/search/index.d.ts +13 -0
  502. package/dist/plugins/search/index.js +23 -0
  503. package/dist/plugins/search/searxng.d.ts +9 -0
  504. package/dist/plugins/search/searxng.js +170 -0
  505. package/dist/plugins/search/serper.d.ts +9 -0
  506. package/dist/plugins/search/serper.js +135 -0
  507. package/dist/plugins/search/tavily.d.ts +9 -0
  508. package/dist/plugins/search/tavily.js +146 -0
  509. package/dist/plugins/types.d.ts +174 -0
  510. package/dist/plugins/types.js +8 -0
  511. package/dist/projects/index.d.ts +133 -0
  512. package/dist/projects/index.js +897 -0
  513. package/dist/projects/types.d.ts +444 -0
  514. package/dist/projects/types.js +207 -0
  515. package/dist/providers/adapters/anthropic.d.ts +26 -0
  516. package/dist/providers/adapters/anthropic.js +306 -0
  517. package/dist/providers/adapters/base.d.ts +53 -0
  518. package/dist/providers/adapters/base.js +99 -0
  519. package/dist/providers/adapters/ollama.d.ts +30 -0
  520. package/dist/providers/adapters/ollama.js +292 -0
  521. package/dist/providers/ai-sdk.d.ts +178 -0
  522. package/dist/providers/ai-sdk.js +1552 -0
  523. package/dist/providers/core/index.d.ts +8 -0
  524. package/dist/providers/core/index.js +10 -0
  525. package/dist/providers/core/models.d.ts +31 -0
  526. package/dist/providers/core/models.js +949 -0
  527. package/dist/providers/core/types.d.ts +117 -0
  528. package/dist/providers/core/types.js +83 -0
  529. package/dist/providers/index.d.ts +7 -0
  530. package/dist/providers/index.js +7 -0
  531. package/dist/providers/registry.d.ts +93 -0
  532. package/dist/providers/registry.js +228 -0
  533. package/dist/providers/schema-utils.d.ts +23 -0
  534. package/dist/providers/schema-utils.js +545 -0
  535. package/dist/providers/types.d.ts +609 -0
  536. package/dist/providers/types.js +279 -0
  537. package/dist/queue/failure-handler.d.ts +93 -0
  538. package/dist/queue/failure-handler.js +379 -0
  539. package/dist/queue/index.d.ts +23 -0
  540. package/dist/queue/index.js +86 -0
  541. package/dist/queue/memory-queue.d.ts +30 -0
  542. package/dist/queue/memory-queue.js +429 -0
  543. package/dist/queue/notifications.d.ts +6 -0
  544. package/dist/queue/notifications.js +128 -0
  545. package/dist/queue/task-queue.d.ts +55 -0
  546. package/dist/queue/task-queue.js +518 -0
  547. package/dist/queue/webhook-queue.d.ts +47 -0
  548. package/dist/queue/webhook-queue.js +158 -0
  549. package/dist/routes/agents.d.ts +4 -0
  550. package/dist/routes/agents.js +45 -0
  551. package/dist/routes/auth.d.ts +19 -0
  552. package/dist/routes/auth.js +492 -0
  553. package/dist/routes/backup.d.ts +6 -0
  554. package/dist/routes/backup.js +71 -0
  555. package/dist/routes/chat.d.ts +10 -0
  556. package/dist/routes/chat.js +1678 -0
  557. package/dist/routes/clawhub.d.ts +8 -0
  558. package/dist/routes/clawhub.js +89 -0
  559. package/dist/routes/costs.d.ts +4 -0
  560. package/dist/routes/costs.js +78 -0
  561. package/dist/routes/cron.d.ts +11 -0
  562. package/dist/routes/cron.js +708 -0
  563. package/dist/routes/devices.d.ts +9 -0
  564. package/dist/routes/devices.js +490 -0
  565. package/dist/routes/discord.d.ts +15 -0
  566. package/dist/routes/discord.js +524 -0
  567. package/dist/routes/dlq.d.ts +4 -0
  568. package/dist/routes/dlq.js +64 -0
  569. package/dist/routes/gateway.d.ts +4 -0
  570. package/dist/routes/gateway.js +253 -0
  571. package/dist/routes/health.d.ts +29 -0
  572. package/dist/routes/health.js +296 -0
  573. package/dist/routes/hooks.d.ts +4 -0
  574. package/dist/routes/hooks.js +170 -0
  575. package/dist/routes/import.d.ts +9 -0
  576. package/dist/routes/import.js +540 -0
  577. package/dist/routes/index.d.ts +38 -0
  578. package/dist/routes/index.js +39 -0
  579. package/dist/routes/integrations.d.ts +10 -0
  580. package/dist/routes/integrations.js +200 -0
  581. package/dist/routes/labels.d.ts +8 -0
  582. package/dist/routes/labels.js +240 -0
  583. package/dist/routes/mcp.d.ts +14 -0
  584. package/dist/routes/mcp.js +125 -0
  585. package/dist/routes/memory.d.ts +10 -0
  586. package/dist/routes/memory.js +622 -0
  587. package/dist/routes/notifications.d.ts +9 -0
  588. package/dist/routes/notifications.js +154 -0
  589. package/dist/routes/oobe.d.ts +10 -0
  590. package/dist/routes/oobe.js +405 -0
  591. package/dist/routes/openapi.d.ts +9 -0
  592. package/dist/routes/openapi.js +537 -0
  593. package/dist/routes/plugins.d.ts +8 -0
  594. package/dist/routes/plugins.js +108 -0
  595. package/dist/routes/projects.d.ts +8 -0
  596. package/dist/routes/projects.js +592 -0
  597. package/dist/routes/push.d.ts +8 -0
  598. package/dist/routes/push.js +75 -0
  599. package/dist/routes/search.d.ts +4 -0
  600. package/dist/routes/search.js +189 -0
  601. package/dist/routes/security.d.ts +10 -0
  602. package/dist/routes/security.js +189 -0
  603. package/dist/routes/settings.d.ts +4 -0
  604. package/dist/routes/settings.js +119 -0
  605. package/dist/routes/setup.d.ts +11 -0
  606. package/dist/routes/setup.js +525 -0
  607. package/dist/routes/skills.d.ts +13 -0
  608. package/dist/routes/skills.js +152 -0
  609. package/dist/routes/slack.d.ts +12 -0
  610. package/dist/routes/slack.js +999 -0
  611. package/dist/routes/states.d.ts +8 -0
  612. package/dist/routes/states.js +123 -0
  613. package/dist/routes/stats.d.ts +6 -0
  614. package/dist/routes/stats.js +369 -0
  615. package/dist/routes/summaries.d.ts +4 -0
  616. package/dist/routes/summaries.js +344 -0
  617. package/dist/routes/sync.d.ts +13 -0
  618. package/dist/routes/sync.js +268 -0
  619. package/dist/routes/tasks.d.ts +4 -0
  620. package/dist/routes/tasks.js +473 -0
  621. package/dist/routes/telegram.d.ts +14 -0
  622. package/dist/routes/telegram.js +420 -0
  623. package/dist/routes/tickets.d.ts +4 -0
  624. package/dist/routes/tickets.js +1090 -0
  625. package/dist/routes/tokens.d.ts +4 -0
  626. package/dist/routes/tokens.js +83 -0
  627. package/dist/routes/tools.d.ts +14 -0
  628. package/dist/routes/tools.js +790 -0
  629. package/dist/routes/tunnels.d.ts +8 -0
  630. package/dist/routes/tunnels.js +145 -0
  631. package/dist/routes/users.d.ts +15 -0
  632. package/dist/routes/users.js +998 -0
  633. package/dist/routes/voice.d.ts +8 -0
  634. package/dist/routes/voice.js +127 -0
  635. package/dist/routes/webchat.d.ts +11 -0
  636. package/dist/routes/webchat.js +173 -0
  637. package/dist/routes/webhook-dedup.d.ts +11 -0
  638. package/dist/routes/webhook-dedup.js +49 -0
  639. package/dist/routes/webhooks.d.ts +4 -0
  640. package/dist/routes/webhooks.js +71 -0
  641. package/dist/routes/whatsapp.d.ts +14 -0
  642. package/dist/routes/whatsapp.js +391 -0
  643. package/dist/security/audit-scanner.d.ts +32 -0
  644. package/dist/security/audit-scanner.js +217 -0
  645. package/dist/security/fs-guard.d.ts +41 -0
  646. package/dist/security/fs-guard.js +206 -0
  647. package/dist/security/prompt-guard.d.ts +47 -0
  648. package/dist/security/prompt-guard.js +198 -0
  649. package/dist/security/ssrf-guard.d.ts +38 -0
  650. package/dist/security/ssrf-guard.js +266 -0
  651. package/dist/security/types.d.ts +92 -0
  652. package/dist/security/types.js +8 -0
  653. package/dist/server/route-loader.d.ts +15 -0
  654. package/dist/server/route-loader.js +135 -0
  655. package/dist/server.d.ts +5 -0
  656. package/dist/server.js +835 -0
  657. package/dist/settings/index.d.ts +841 -0
  658. package/dist/settings/index.js +451 -0
  659. package/dist/skills/compiler.d.ts +83 -0
  660. package/dist/skills/compiler.js +358 -0
  661. package/dist/skills/frontmatter.d.ts +33 -0
  662. package/dist/skills/frontmatter.js +175 -0
  663. package/dist/skills/index.d.ts +19 -0
  664. package/dist/skills/index.js +24 -0
  665. package/dist/skills/installer.d.ts +22 -0
  666. package/dist/skills/installer.js +220 -0
  667. package/dist/skills/loader.d.ts +72 -0
  668. package/dist/skills/loader.js +484 -0
  669. package/dist/skills/prompt-builder.d.ts +48 -0
  670. package/dist/skills/prompt-builder.js +135 -0
  671. package/dist/skills/registry.d.ts +115 -0
  672. package/dist/skills/registry.js +225 -0
  673. package/dist/skills/types.d.ts +202 -0
  674. package/dist/skills/types.js +24 -0
  675. package/dist/states/index.d.ts +64 -0
  676. package/dist/states/index.js +142 -0
  677. package/dist/storage/adapter.d.ts +146 -0
  678. package/dist/storage/adapter.js +2 -0
  679. package/dist/storage/index.d.ts +48 -0
  680. package/dist/storage/index.js +135 -0
  681. package/dist/storage/libsql.d.ts +99 -0
  682. package/dist/storage/libsql.js +1873 -0
  683. package/dist/storage/migrations.d.ts +65 -0
  684. package/dist/storage/migrations.js +289 -0
  685. package/dist/storage/schema.d.ts +10185 -0
  686. package/dist/storage/schema.js +1113 -0
  687. package/dist/summaries/extractor.d.ts +56 -0
  688. package/dist/summaries/extractor.js +377 -0
  689. package/dist/summaries/index.d.ts +13 -0
  690. package/dist/summaries/index.js +14 -0
  691. package/dist/summaries/storage.d.ts +51 -0
  692. package/dist/summaries/storage.js +101 -0
  693. package/dist/summaries/templates.d.ts +68 -0
  694. package/dist/summaries/templates.js +245 -0
  695. package/dist/sync/adapters/base.d.ts +42 -0
  696. package/dist/sync/adapters/base.js +142 -0
  697. package/dist/sync/adapters/github.d.ts +45 -0
  698. package/dist/sync/adapters/github.js +445 -0
  699. package/dist/sync/adapters/linear.d.ts +40 -0
  700. package/dist/sync/adapters/linear.js +434 -0
  701. package/dist/sync/config.d.ts +388 -0
  702. package/dist/sync/config.js +281 -0
  703. package/dist/sync/engine.d.ts +112 -0
  704. package/dist/sync/engine.js +623 -0
  705. package/dist/sync/index.d.ts +31 -0
  706. package/dist/sync/index.js +34 -0
  707. package/dist/sync/integration.d.ts +53 -0
  708. package/dist/sync/integration.js +231 -0
  709. package/dist/sync/types.d.ts +249 -0
  710. package/dist/sync/types.js +30 -0
  711. package/dist/tickets/index.d.ts +139 -0
  712. package/dist/tickets/index.js +1406 -0
  713. package/dist/tickets/types.d.ts +817 -0
  714. package/dist/tickets/types.js +310 -0
  715. package/dist/tools/adapters.d.ts +56 -0
  716. package/dist/tools/adapters.js +183 -0
  717. package/dist/tools/index.d.ts +66 -0
  718. package/dist/tools/index.js +105 -0
  719. package/dist/tools/types.d.ts +117 -0
  720. package/dist/tools/types.js +20 -0
  721. package/dist/types/agent.d.ts +101 -0
  722. package/dist/types/agent.js +2 -0
  723. package/dist/types/errors.d.ts +150 -0
  724. package/dist/types/errors.js +338 -0
  725. package/dist/types/index.d.ts +3 -0
  726. package/dist/types/index.js +3 -0
  727. package/dist/types/summary.d.ts +638 -0
  728. package/dist/types/summary.js +137 -0
  729. package/dist/types/task.d.ts +123 -0
  730. package/dist/types/task.js +46 -0
  731. package/dist/utils/ai-cache.d.ts +72 -0
  732. package/dist/utils/ai-cache.js +204 -0
  733. package/dist/utils/ai-inference.d.ts +57 -0
  734. package/dist/utils/ai-inference.js +190 -0
  735. package/dist/utils/ai-responder.d.ts +44 -0
  736. package/dist/utils/ai-responder.js +272 -0
  737. package/dist/utils/circuit-breaker.d.ts +139 -0
  738. package/dist/utils/circuit-breaker.js +281 -0
  739. package/dist/utils/config-loader.d.ts +12 -0
  740. package/dist/utils/config-loader.js +44 -0
  741. package/dist/utils/crypto.d.ts +10 -0
  742. package/dist/utils/crypto.js +59 -0
  743. package/dist/utils/env-validator.d.ts +44 -0
  744. package/dist/utils/env-validator.js +236 -0
  745. package/dist/utils/file-lock.d.ts +85 -0
  746. package/dist/utils/file-lock.js +204 -0
  747. package/dist/utils/logger.d.ts +153 -0
  748. package/dist/utils/logger.js +282 -0
  749. package/dist/utils/metrics.d.ts +183 -0
  750. package/dist/utils/metrics.js +345 -0
  751. package/dist/utils/security.d.ts +90 -0
  752. package/dist/utils/security.js +347 -0
  753. package/dist/voice/index.d.ts +79 -0
  754. package/dist/voice/index.js +144 -0
  755. package/dist/voice/stt/whisper.d.ts +13 -0
  756. package/dist/voice/stt/whisper.js +116 -0
  757. package/dist/voice/tts/elevenlabs.d.ts +18 -0
  758. package/dist/voice/tts/elevenlabs.js +178 -0
  759. package/dist/voice/tts/openai-tts.d.ts +19 -0
  760. package/dist/voice/tts/openai-tts.js +127 -0
  761. package/dist/voice/tts/system.d.ts +26 -0
  762. package/dist/voice/tts/system.js +146 -0
  763. package/dist/voice/wake-word.d.ts +44 -0
  764. package/dist/voice/wake-word.js +145 -0
  765. package/docker-compose.yml +222 -0
  766. package/package.json +154 -0
  767. package/profclaw.mjs +24 -0
  768. package/skills/1password/SKILL.md +155 -0
  769. package/skills/api-tester/SKILL.md +177 -0
  770. package/skills/apple-notes/SKILL.md +167 -0
  771. package/skills/apple-reminders/SKILL.md +178 -0
  772. package/skills/bear-notes/SKILL.md +166 -0
  773. package/skills/blogwatcher/SKILL.md +177 -0
  774. package/skills/camsnap/SKILL.md +130 -0
  775. package/skills/code-generation/SKILL.md +139 -0
  776. package/skills/code-review/SKILL.md +116 -0
  777. package/skills/coding-agent/SKILL.md +184 -0
  778. package/skills/cron-manager/SKILL.md +141 -0
  779. package/skills/debug-helper/SKILL.md +134 -0
  780. package/skills/docker-ops/SKILL.md +246 -0
  781. package/skills/file-manager/SKILL.md +160 -0
  782. package/skills/git-workflow/SKILL.md +171 -0
  783. package/skills/github-issues/SKILL.md +244 -0
  784. package/skills/gog/SKILL.md +191 -0
  785. package/skills/goplaces/SKILL.md +156 -0
  786. package/skills/healthcheck/SKILL.md +270 -0
  787. package/skills/himalaya/SKILL.md +165 -0
  788. package/skills/mcp-discovery/SKILL.md +109 -0
  789. package/skills/memory-manager/SKILL.md +151 -0
  790. package/skills/model-usage/SKILL.md +177 -0
  791. package/skills/nano-banana-pro/SKILL.md +214 -0
  792. package/skills/nano-pdf/SKILL.md +165 -0
  793. package/skills/notion/SKILL.md +147 -0
  794. package/skills/obsidian/SKILL.md +163 -0
  795. package/skills/openai-image-gen/SKILL.md +194 -0
  796. package/skills/openai-whisper/SKILL.md +98 -0
  797. package/skills/openai-whisper-api/SKILL.md +130 -0
  798. package/skills/openhue/SKILL.md +203 -0
  799. package/skills/oracle/SKILL.md +236 -0
  800. package/skills/phone-control/SKILL.md +201 -0
  801. package/skills/profclaw-assistant/SKILL.md +81 -0
  802. package/skills/profclaw-projects/SKILL.md +68 -0
  803. package/skills/profclaw-tickets/SKILL.md +91 -0
  804. package/skills/session-logs/SKILL.md +216 -0
  805. package/skills/sherpa-onnx-tts/SKILL.md +134 -0
  806. package/skills/skill-creator/SKILL.md +183 -0
  807. package/skills/songsee/SKILL.md +170 -0
  808. package/skills/spotify-player/SKILL.md +254 -0
  809. package/skills/summarize/SKILL.md +155 -0
  810. package/skills/system-admin/SKILL.md +179 -0
  811. package/skills/things-mac/SKILL.md +179 -0
  812. package/skills/tmux/SKILL.md +170 -0
  813. package/skills/trello/SKILL.md +154 -0
  814. package/skills/video-frames/SKILL.md +127 -0
  815. package/skills/weather/SKILL.md +186 -0
  816. package/skills/web-research/SKILL.md +128 -0
  817. package/skills/xurl/SKILL.md +198 -0
  818. package/ui/README.md +73 -0
  819. package/ui/dist/assets/ActivityView-CkPgKhwm.js +1 -0
  820. package/ui/dist/assets/AgentList-C3SVdeEz.js +1 -0
  821. package/ui/dist/assets/AnalyticsDashboard-DVU--vlP.js +1 -0
  822. package/ui/dist/assets/AreaChart-B5qMEGWj.js +1 -0
  823. package/ui/dist/assets/CartesianChart-B50bcUJi.js +36 -0
  824. package/ui/dist/assets/ChatView-BZFJs7w_.js +10 -0
  825. package/ui/dist/assets/CostsDashboard-ChfH8BlG.js +1 -0
  826. package/ui/dist/assets/EstimateSelect-CLpB4NQO.js +1 -0
  827. package/ui/dist/assets/FloatingChatbot-CBzBY9a0.js +2 -0
  828. package/ui/dist/assets/InviteCodeManagement-DsbdPa6W.js +2 -0
  829. package/ui/dist/assets/ProjectDetail-BEM3tFXg.js +2 -0
  830. package/ui/dist/assets/ProjectDetail-D1-0B2xV.css +1 -0
  831. package/ui/dist/assets/ProjectIcon-CN1FmFAk.js +1 -0
  832. package/ui/dist/assets/ProjectList-DSDaNhxQ.js +4 -0
  833. package/ui/dist/assets/Settings-dPVcqC_d.js +6 -0
  834. package/ui/dist/assets/StatusIndicator-DA3NAo_b.js +1 -0
  835. package/ui/dist/assets/SummaryDetail-Bjnf9lT8.js +27 -0
  836. package/ui/dist/assets/SummaryList-ENwKDBKW.js +1 -0
  837. package/ui/dist/assets/TaskDetail-DnwG6MzB.js +1 -0
  838. package/ui/dist/assets/TaskList-D9Ug_HiV.js +1 -0
  839. package/ui/dist/assets/TicketBoard-CviH1571.js +1 -0
  840. package/ui/dist/assets/TicketDetail-8Jk8O-33.js +1 -0
  841. package/ui/dist/assets/TicketList-B-iV4rRA.js +1 -0
  842. package/ui/dist/assets/UserManagement-CPZ8s7s2.js +2 -0
  843. package/ui/dist/assets/ViewSwitcher-BUyOOWDI.js +1 -0
  844. package/ui/dist/assets/alert-dialog-BOmnTkN-.js +7 -0
  845. package/ui/dist/assets/archive-D5my9zOG.js +1 -0
  846. package/ui/dist/assets/badge-B4ov81_m.js +1 -0
  847. package/ui/dist/assets/brain-C53ElFLD.js +1 -0
  848. package/ui/dist/assets/bug-D0TJoCYn.js +1 -0
  849. package/ui/dist/assets/calendar-BkWIhKa1.js +1 -0
  850. package/ui/dist/assets/chevron-up-BRTtndUZ.js +1 -0
  851. package/ui/dist/assets/circle-x-BN89YhbS.js +1 -0
  852. package/ui/dist/assets/constants-fc7TFI7u.js +1 -0
  853. package/ui/dist/assets/cpu-B41x1-vV.js +1 -0
  854. package/ui/dist/assets/database-D9Cnfmzj.js +1 -0
  855. package/ui/dist/assets/defineProperty-CoXUr7_6.js +2 -0
  856. package/ui/dist/assets/dialog-DrWB4EYD.js +1 -0
  857. package/ui/dist/assets/element-adapter-DL0DQilL.js +4 -0
  858. package/ui/dist/assets/ellipsis-NuUWekvu.js +1 -0
  859. package/ui/dist/assets/ellipsis-vertical-BueMfuCw.js +1 -0
  860. package/ui/dist/assets/file-code-HR9829Jc.js +1 -0
  861. package/ui/dist/assets/folder-open-C_7oYEqe.js +1 -0
  862. package/ui/dist/assets/funnel-B5gmNXGf.js +1 -0
  863. package/ui/dist/assets/git-branch-BRMiJmV3.js +1 -0
  864. package/ui/dist/assets/git-commit-horizontal-CXOUQeJI.js +1 -0
  865. package/ui/dist/assets/globe-CCspjvus.js +1 -0
  866. package/ui/dist/assets/hash-g3102kPC.js +1 -0
  867. package/ui/dist/assets/history-CNqcBBrV.js +1 -0
  868. package/ui/dist/assets/index-27mTPKuh.js +1 -0
  869. package/ui/dist/assets/index-BMx3fH-e.js +1 -0
  870. package/ui/dist/assets/index-C9jNQXzL.js +1 -0
  871. package/ui/dist/assets/index-CEZ6R2Uw.js +7 -0
  872. package/ui/dist/assets/index-DURTouJI.js +1 -0
  873. package/ui/dist/assets/index-WclMPci1.css +1 -0
  874. package/ui/dist/assets/index-kb4AJXUB.js +67 -0
  875. package/ui/dist/assets/layers-CLXiHN6o.js +1 -0
  876. package/ui/dist/assets/layout-dashboard-B07MFhBs.js +1 -0
  877. package/ui/dist/assets/lightbulb-B2dgG5ks.js +1 -0
  878. package/ui/dist/assets/link-2-BxNmr9hL.js +1 -0
  879. package/ui/dist/assets/markdown-renderer-CjU6hBcW.js +36 -0
  880. package/ui/dist/assets/message-square-Bf2-CVbt.js +1 -0
  881. package/ui/dist/assets/pencil-D096Ey62.js +1 -0
  882. package/ui/dist/assets/play-DfdcSI3x.js +1 -0
  883. package/ui/dist/assets/popover-BV0QJDQq.js +1 -0
  884. package/ui/dist/assets/progress-DjPEDJfI.js +1 -0
  885. package/ui/dist/assets/rocket-CPsTc-5G.js +1 -0
  886. package/ui/dist/assets/select-LsO16slr.js +1 -0
  887. package/ui/dist/assets/send-BDYBZDUZ.js +1 -0
  888. package/ui/dist/assets/server-B3k6noce.js +1 -0
  889. package/ui/dist/assets/settings-2-Cu4xTjhG.js +1 -0
  890. package/ui/dist/assets/sheet-BScLnPKX.js +1 -0
  891. package/ui/dist/assets/shield-check-CQqkwufI.js +1 -0
  892. package/ui/dist/assets/shield-off-ZFruH9KO.js +1 -0
  893. package/ui/dist/assets/skeleton-CtkIA_MU.js +1 -0
  894. package/ui/dist/assets/smartphone-DnoksVkc.js +1 -0
  895. package/ui/dist/assets/square-uD9ZHMfW.js +1 -0
  896. package/ui/dist/assets/switch-MQPnwGJK.js +1 -0
  897. package/ui/dist/assets/table-B8cqlywA.js +1 -0
  898. package/ui/dist/assets/tag-wEJQRWlV.js +1 -0
  899. package/ui/dist/assets/textarea-D5LJCOGl.js +1 -0
  900. package/ui/dist/assets/timer-mbGHegmr.js +1 -0
  901. package/ui/dist/assets/tooltip-Df1CunSp.js +1 -0
  902. package/ui/dist/assets/trash-2-B4oAXsX-.js +1 -0
  903. package/ui/dist/assets/trending-up-BGWxvlmZ.js +1 -0
  904. package/ui/dist/assets/wand-sparkles-CZy4xvL3.js +1 -0
  905. package/ui/dist/assets/wrench-ByZkjO6m.js +1 -0
  906. package/ui/dist/audio-worklets/vad-processor.js +132 -0
  907. package/ui/dist/brand/profclaw-appicon-192.png +0 -0
  908. package/ui/dist/brand/profclaw-appicon-512.png +0 -0
  909. package/ui/dist/brand/profclaw-appicon-shadow.svg +51 -0
  910. package/ui/dist/brand/profclaw-appicon.svg +50 -0
  911. package/ui/dist/brand/profclaw-favicon-coral-bg-128.png +0 -0
  912. package/ui/dist/brand/profclaw-favicon-coral-bg-64.png +0 -0
  913. package/ui/dist/brand/profclaw-favicon-coral-bg.svg +52 -0
  914. package/ui/dist/brand/profclaw-favicon-coral-body-128.png +0 -0
  915. package/ui/dist/brand/profclaw-favicon-coral-body.svg +41 -0
  916. package/ui/dist/brand/profclaw-favicon-shadow-128.png +0 -0
  917. package/ui/dist/brand/profclaw-favicon-shadow-64.png +0 -0
  918. package/ui/dist/brand/profclaw-favicon-shadow.svg +51 -0
  919. package/ui/dist/brand/profclaw-mark-coral-256.png +0 -0
  920. package/ui/dist/brand/profclaw-mark-coral-64.png +0 -0
  921. package/ui/dist/brand/profclaw-mark-coral.svg +31 -0
  922. package/ui/dist/brand/profclaw-mono-white.svg +18 -0
  923. package/ui/dist/brand/profclaw-text-dark.svg +18 -0
  924. package/ui/dist/brand/profclaw-text-light.svg +18 -0
  925. package/ui/dist/brand/profclaw-wordmark-dark.svg +48 -0
  926. package/ui/dist/brand/profclaw-wordmark-light.svg +48 -0
  927. package/ui/dist/brand/safari-pinned-tab.svg +15 -0
  928. package/ui/dist/favicon/android-chrome-192x192.png +0 -0
  929. package/ui/dist/favicon/android-chrome-384x384.png +0 -0
  930. package/ui/dist/favicon/android-chrome-512x512.png +0 -0
  931. package/ui/dist/favicon/apple-touch-icon.png +0 -0
  932. package/ui/dist/favicon/browserconfig.xml +9 -0
  933. package/ui/dist/favicon/favicon-16x16.png +0 -0
  934. package/ui/dist/favicon/favicon-32x32.png +0 -0
  935. package/ui/dist/favicon/favicon.ico +0 -0
  936. package/ui/dist/favicon/mstile-150x150.png +0 -0
  937. package/ui/dist/favicon/safari-pinned-tab.svg +46 -0
  938. package/ui/dist/favicon/site.webmanifest +22 -0
  939. package/ui/dist/index.html +32 -0
  940. package/ui/dist/manifest.json +49 -0
  941. package/ui/dist/sw.js +124 -0
  942. package/ui/dist/vite.svg +1 -0
@@ -0,0 +1,186 @@
1
+ ---
2
+ name: weather
3
+ description: Get current weather, forecasts, and conditions for any location using wttr.in - no API key required
4
+ version: 1.0.0
5
+ metadata: {"profclaw": {"emoji": "🌤️", "category": "utility", "priority": 65, "triggerPatterns": ["weather", "temperature", "forecast", "will it rain", "weather in", "what's the weather", "is it cold", "is it hot", "should I bring umbrella", "weather today", "weather tomorrow", "weather this week"]}}
6
+ ---
7
+
8
+ # Weather
9
+
10
+ You are a weather assistant. When asked about weather conditions, forecasts, or temperature anywhere in the world, you fetch current data from wttr.in and present it clearly. No API key is required.
11
+
12
+ ## What This Skill Does
13
+
14
+ - Fetches current conditions for any city, region, or landmark
15
+ - Shows today's forecast and the next 2-3 days
16
+ - Reports temperature (Celsius and Fahrenheit), precipitation, humidity, wind
17
+ - Supports moon phase, sunrise/sunset queries
18
+ - Works for any location worldwide using natural language names
19
+
20
+ ## The wttr.in Service
21
+
22
+ wttr.in is a free, no-auth weather service. Query it via curl:
23
+
24
+ ```bash
25
+ # Plain text - best for display in chat
26
+ curl -s "wttr.in/London?format=4"
27
+
28
+ # One-line summary
29
+ curl -s "wttr.in/Tokyo?format=3"
30
+
31
+ # Full forecast (3-day, ASCII art)
32
+ curl -s "wttr.in/New+York?format=v2"
33
+
34
+ # JSON for structured data
35
+ curl -s "wttr.in/Paris?format=j1"
36
+ ```
37
+
38
+ ## Format Codes
39
+
40
+ | Format | Output | Use when |
41
+ |--------|--------|----------|
42
+ | `format=1` | `⛅️ +18°C` | Minimal - current condition + temp |
43
+ | `format=2` | `⛅️ 🌡️+18°C 🌬️↗26km/h` | Current + wind |
44
+ | `format=3` | `London: ⛅️ +18°C` | One-line with city name |
45
+ | `format=4` | `London: ⛅️ +18°C, 🌬️↗26km/h, 60%` | One-line full summary |
46
+ | `format=j1` | JSON object | Structured data, multi-day parsing |
47
+ | `format=v2` | ASCII art 3-day | Full forecast, terminal-friendly |
48
+
49
+ ## Format Specifiers for Custom Output
50
+
51
+ Build custom formats with `%` tokens:
52
+
53
+ | Token | Meaning | Example output |
54
+ |-------|---------|---------------|
55
+ | `%C` | Condition description | `Partly cloudy` |
56
+ | `%t` | Temperature (current) | `+18°C` |
57
+ | `%f` | Feels-like temperature | `+16°C` |
58
+ | `%h` | Humidity | `72%` |
59
+ | `%w` | Wind | `↗26km/h` |
60
+ | `%p` | Precipitation (mm/3h) | `1.2 mm` |
61
+ | `%P` | Pressure (hPa) | `1013 hPa` |
62
+ | `%m` | Moon phase | `🌒` |
63
+ | `%S` | Sunrise | `06:32:14` |
64
+ | `%s` | Sunset | `20:15:42` |
65
+ | `%d` | Description (extended) | `Light rain shower` |
66
+
67
+ Example custom format:
68
+ ```bash
69
+ curl -s "wttr.in/Berlin?format=%C+%t+%h+%w"
70
+ # Output: Partly cloudy +15°C 68% ↗18km/h
71
+ ```
72
+
73
+ ## Common Queries
74
+
75
+ ### Current weather
76
+ ```bash
77
+ curl -s "wttr.in/Sydney?format=4"
78
+ ```
79
+
80
+ ### 3-day forecast (JSON, parse with Python)
81
+ ```bash
82
+ curl -s "wttr.in/Mumbai?format=j1" | python3 -c "
83
+ import sys, json
84
+ d = json.load(sys.stdin)
85
+ cur = d['current_condition'][0]
86
+ print(f\"Current: {cur['weatherDesc'][0]['value']}, {cur['temp_C']}°C / {cur['temp_F']}°F\")
87
+ print(f\"Feels like: {cur['FeelsLikeC']}°C\")
88
+ print(f\"Humidity: {cur['humidity']}%\")
89
+ print(f\"Wind: {cur['windspeedKmph']} km/h {cur['winddir16Point']}\")
90
+ for day in d['weather']:
91
+ print(f\"{day['date']}: High {day['maxtempC']}°C, Low {day['mintempC']}°C\")
92
+ "
93
+ ```
94
+
95
+ ### Weather with units
96
+ ```bash
97
+ # Metric (Celsius, km/h) - default
98
+ curl -s "wttr.in/Chicago?format=4&m"
99
+
100
+ # US customary (Fahrenheit, mph)
101
+ curl -s "wttr.in/Chicago?format=4&u"
102
+ ```
103
+
104
+ ### Sunrise and sunset
105
+ ```bash
106
+ curl -s "wttr.in/Oslo?format=%S+/+%s"
107
+ ```
108
+
109
+ ### Moon phase
110
+ ```bash
111
+ curl -s "wttr.in/Moon?format=%m"
112
+ ```
113
+
114
+ ## Location Formats
115
+
116
+ wttr.in accepts many location formats:
117
+
118
+ | Input | Example |
119
+ |-------|---------|
120
+ | City name | `London`, `New+York`, `San+Francisco` |
121
+ | Airport code | `JFK`, `LHR`, `SYD` |
122
+ | Coordinates | `-33.8688,151.2093` |
123
+ | Domain/IP lookup | omit location for requester's IP |
124
+ | Landmark | `Eiffel+Tower`, `Statue+of+Liberty` |
125
+
126
+ Replace spaces with `+` in URLs.
127
+
128
+ ## How to Fetch Weather
129
+
130
+ ### Step 1: Extract the Location
131
+
132
+ Parse the location from the user's message:
133
+ - "weather in Tokyo" - location: `Tokyo`
134
+ - "is it raining in New York?" - location: `New+York`
135
+ - "what's the temperature" - no location; ask "Which city?" or use system location if available
136
+
137
+ ### Step 2: Choose the Right Format
138
+
139
+ - Simple question ("what's the weather in X?") - use `format=4` for one clean line
140
+ - "Full forecast" or "this week" - use `format=j1` with the Python parser
141
+ - "Will it rain?" - use `format=j1`, check `precipMM` in hourly data
142
+ - "Feels like / humidity / wind" - use custom format string
143
+
144
+ ### Step 3: Execute and Present
145
+
146
+ Run via the `exec` tool. Format the output conversationally:
147
+
148
+ Good response:
149
+ ```
150
+ London right now: Partly Cloudy, 14°C (57°F), humidity 71%, wind 22 km/h NW.
151
+ This week: Rain expected Thursday, clearing by the weekend. High of 17°C on Saturday.
152
+ ```
153
+
154
+ Not just raw output:
155
+ ```
156
+ London: ⛅️ +14°C, 🌬️↗22km/h, 71%
157
+ ```
158
+
159
+ ### Step 4: Answer the Underlying Question
160
+
161
+ If the user asked "should I bring an umbrella?", don't just show the forecast - answer the question:
162
+ - "Yes - there is 80% chance of rain this afternoon and tomorrow morning."
163
+ - "No umbrella needed - dry and sunny through the weekend."
164
+
165
+ ## Example Interactions
166
+
167
+ **User**: What's the weather in Paris?
168
+ **You**: *(runs `curl -s "wttr.in/Paris?format=4"`, formats output: "Paris: Overcast, 11°C (52°F), wind 15 km/h SW.")*
169
+
170
+ **User**: Will it rain in Tokyo this week?
171
+ **You**: *(runs JSON query, parses precipitation forecast, answers: "Light rain expected Tuesday and Wednesday (2-4 mm/day). Thursday onward looks clear.")*
172
+
173
+ **User**: What's the temperature difference between London and New York right now?
174
+ **You**: *(runs two parallel format=4 queries, compares temperatures, presents side-by-side)*
175
+
176
+ **User**: When does the sun set in Oslo today?
177
+ **You**: *(runs `curl -s "wttr.in/Oslo?format=%S+/+%s"`, returns "Sunrise: 05:47, Sunset: 21:12 (local time)")*
178
+
179
+ ## Best Practices
180
+
181
+ 1. **Always name the location** in your response - never just say "the weather is..."
182
+ 2. **Convert units** when context suggests the user's locale (°C for most, °F for US)
183
+ 3. **Answer the question, not just the data** - interpret forecast for the user's actual need
184
+ 4. **Note the data freshness** - wttr.in updates every ~30 minutes; add "as of now" if precision matters
185
+ 5. **Handle ambiguous locations** - if "Springfield" or similar, ask which state/country
186
+ 6. **Graceful failure** - if wttr.in is unreachable, say so and suggest checking weather.com
@@ -0,0 +1,128 @@
1
+ ---
2
+ name: web-research
3
+ description: Search the web, summarize findings, and cite sources to answer questions with current information
4
+ version: 1.0.0
5
+ metadata: {"profclaw": {"emoji": "🌐", "category": "productivity", "priority": 70, "triggerPatterns": ["search for", "look up", "find out", "research", "what is the latest", "current version", "documentation for", "how does", "what are the best"]}}
6
+ ---
7
+
8
+ # Web Research
9
+
10
+ You are a research assistant. When asked to find, look up, or research something, you search the web efficiently, synthesize findings from multiple sources, and present a clear, cited summary.
11
+
12
+ ## What This Skill Does
13
+
14
+ - Searches the web for technical documentation, news, and reference material
15
+ - Fetches and reads specific URLs for detailed content
16
+ - Synthesizes findings from multiple sources into a clear summary
17
+ - Always cites sources so users can verify and read further
18
+ - Identifies outdated information and flags when results may be stale
19
+
20
+ ## How to Execute Research
21
+
22
+ ### Step 1: Form Effective Search Queries
23
+
24
+ Good queries are specific and include context:
25
+ - Include the technology name and version: "BullMQ v5 delayed jobs documentation"
26
+ - Include the year for current info: "Node.js 22 built-in features 2025"
27
+ - Use official terms: "Hono middleware chaining" not "hono how to use middleware"
28
+
29
+ Avoid:
30
+ - Vague queries: "how does redis work"
31
+ - Too broad: "javascript best practices"
32
+
33
+ ### Step 2: Search and Evaluate Results
34
+
35
+ Use `web_search` to find sources, then `web_fetch` to read specific pages in depth.
36
+
37
+ Evaluate sources by:
38
+ | Source type | Trust level |
39
+ |-------------|-------------|
40
+ | Official docs (docs.example.com) | High |
41
+ | GitHub repo README or issues | High |
42
+ | MDN, npm, pkg.go.dev | High |
43
+ | Stack Overflow accepted answers | Medium (check date) |
44
+ | Blog posts | Medium (check author and date) |
45
+ | Reddit/Discord | Low (corroborate) |
46
+
47
+ ### Step 3: Cross-Reference Key Facts
48
+
49
+ For important claims, verify with at least 2 sources before stating as fact. If sources conflict, present both versions and note the discrepancy.
50
+
51
+ ### Step 4: Synthesize and Cite
52
+
53
+ Present findings in this structure:
54
+
55
+ ```
56
+ ## [Topic]
57
+
58
+ [2-3 sentence summary of the key finding]
59
+
60
+ ### Key Points
61
+ - Point one (Source: [Title](URL))
62
+ - Point two (Source: [Title](URL))
63
+ - Point three
64
+
65
+ ### Code Example (if applicable)
66
+ [relevant snippet]
67
+
68
+ ### Sources
69
+ - [Source Title 1](URL)
70
+ - [Source Title 2](URL)
71
+ ```
72
+
73
+ Always include a "Sources" section at the end.
74
+
75
+ ## Research Strategies by Request Type
76
+
77
+ ### "What's the latest version of X?"
78
+ 1. Search "[package] npm latest version" or check npmjs.com
79
+ 2. Cross-check with GitHub releases
80
+ 3. Note breaking changes if upgrading
81
+
82
+ ### "How do I use X feature?"
83
+ 1. Check official documentation first
84
+ 2. Look for a quick start or examples section
85
+ 3. Find a working code example
86
+ 4. Note version requirements
87
+
88
+ ### "What's the difference between X and Y?"
89
+ 1. Read official docs for both
90
+ 2. Look for comparison articles
91
+ 3. Check benchmarks if performance is relevant
92
+ 4. Summarize trade-offs in a table
93
+
94
+ ### "Is X a good choice for Y use case?"
95
+ 1. Read the project's stated use cases
96
+ 2. Find case studies or production users
97
+ 3. Check GitHub stars, issues, and last commit date (activity signal)
98
+ 4. Present pros/cons objectively
99
+
100
+ ## Handling Uncertainty
101
+
102
+ When you're not sure about something:
103
+ - Say "I found conflicting information — here are both perspectives:"
104
+ - Say "This source is from 2022 — the API may have changed"
105
+ - Say "I couldn't find authoritative documentation on this — here's what I found:"
106
+
107
+ Never fabricate citations or present guesses as facts.
108
+
109
+ ## Example Interactions
110
+
111
+ **User**: What's the latest stable version of BullMQ and what's new?
112
+ **You**: *(web_search for BullMQ releases, web_fetch npm page and GitHub releases, summarizes with changelog highlights and source links)*
113
+
114
+ **User**: Research the best Redis connection pooling strategies for Node.js
115
+ **You**: *(searches for ioredis and node-redis pool docs, finds community comparisons, synthesizes into structured summary with citations)*
116
+
117
+ **User**: Find the Hono documentation for middleware
118
+ **You**: *(web_fetch hono.dev/docs/concepts/middleware, extracts key usage patterns, returns summary with link to full docs)*
119
+
120
+ ## Best Practices
121
+
122
+ 1. **Cite everything** — never present web-sourced information without a link
123
+ 2. **Check dates** — note when articles or docs were last updated
124
+ 3. **Prefer primary sources** — official docs over blog posts
125
+ 4. **Be honest about gaps** — say when you can't find reliable information
126
+ 5. **Summarize, don't dump** — extract what's relevant, not everything you found
127
+ 6. **Flag version specifics** — always note which version documentation applies to
128
+ 7. **Search iteratively** — if first query yields poor results, try alternative terms
@@ -0,0 +1,198 @@
1
+ ---
2
+ name: xurl
3
+ description: URL and clipboard utilities - copy/paste, shorten URLs, expand short links, extract URLs from text
4
+ version: 1.0.0
5
+ metadata: {"profclaw": {"emoji": "🔗", "category": "utility", "priority": 30, "triggerPatterns": ["clipboard", "copy url", "shorten url", "expand url", "url", "copy to clipboard", "paste clipboard", "what's my clipboard", "extract links", "qr code", "bitly", "tinyurl"]}}
6
+ ---
7
+
8
+ # xurl - URL and Clipboard Utilities
9
+
10
+ You are a URL and clipboard utility assistant. When users want to copy text to the clipboard, read the clipboard, shorten or expand URLs, extract links from text, or generate QR codes, you use the appropriate system tools and APIs.
11
+
12
+ ## What This Skill Does
13
+
14
+ - Read and write the system clipboard
15
+ - Shorten URLs via TinyURL (no key) or bit.ly (with key)
16
+ - Expand shortened/redirected URLs to their final destination
17
+ - Extract all URLs from a block of text
18
+ - Encode/decode URLs
19
+ - Generate QR codes from URLs or text
20
+ - Check if a URL is alive (returns 2xx)
21
+
22
+ ## Clipboard Tools
23
+
24
+ ```bash
25
+ # Detect platform
26
+ uname -s # Darwin = macOS, Linux = Linux
27
+
28
+ # macOS
29
+ pbcopy # write to clipboard (stdin)
30
+ pbpaste # read from clipboard (stdout)
31
+
32
+ # Linux (install: sudo apt install xclip)
33
+ xclip -selection clipboard # write to clipboard (stdin)
34
+ xclip -selection clipboard -out # read from clipboard (stdout)
35
+
36
+ # Linux alternative (xdotool ecosystem)
37
+ xsel --clipboard --input # write
38
+ xsel --clipboard --output # read
39
+ ```
40
+
41
+ ### Copy text to clipboard
42
+
43
+ ```bash
44
+ # macOS
45
+ echo "https://example.com" | pbcopy
46
+
47
+ # Linux
48
+ echo "https://example.com" | xclip -selection clipboard
49
+ ```
50
+
51
+ ### Read clipboard contents
52
+
53
+ ```bash
54
+ # macOS
55
+ pbpaste
56
+
57
+ # Linux
58
+ xclip -selection clipboard -out
59
+ ```
60
+
61
+ ## Shortening URLs
62
+
63
+ ### TinyURL (no API key required)
64
+
65
+ ```bash
66
+ LONG_URL="https://example.com/very/long/path?with=params&and=more"
67
+
68
+ curl -s "https://tinyurl.com/api-create.php?url=$(python3 -c "import urllib.parse; print(urllib.parse.quote('${LONG_URL}'))")"
69
+ # Returns: https://tinyurl.com/abc123
70
+ ```
71
+
72
+ ### bit.ly (requires BITLY_API_KEY)
73
+
74
+ ```bash
75
+ curl -s -X POST "https://api-ssl.bitly.com/v4/shorten" \
76
+ -H "Authorization: Bearer ${BITLY_API_KEY}" \
77
+ -H "Content-Type: application/json" \
78
+ -d "{\"long_url\": \"${LONG_URL}\"}" \
79
+ | python3 -c "import sys,json; print(json.load(sys.stdin)['link'])"
80
+ ```
81
+
82
+ If `BITLY_API_KEY` is not set, fall back to TinyURL automatically.
83
+
84
+ ## Expanding URLs
85
+
86
+ Follow all redirects and show the final destination:
87
+
88
+ ```bash
89
+ SHORT_URL="https://bit.ly/abc123"
90
+
91
+ # Get final URL after all redirects
92
+ curl -sLI "${SHORT_URL}" -o /dev/null -w "%{url_effective}\n"
93
+
94
+ # Show each redirect step
95
+ curl -sI --max-redirs 20 "${SHORT_URL}" | grep -i "^location:"
96
+ ```
97
+
98
+ ## Extracting URLs from Text
99
+
100
+ ```bash
101
+ TEXT="Check out https://example.com and also http://foo.bar/path?q=1 for more info."
102
+
103
+ # Extract all http/https URLs
104
+ echo "${TEXT}" | grep -oE 'https?://[^[:space:]"<>]+'
105
+ ```
106
+
107
+ ## URL Encoding and Decoding
108
+
109
+ ```bash
110
+ # Encode a URL component
111
+ python3 -c "import urllib.parse; print(urllib.parse.quote('hello world & more'))"
112
+ # Output: hello%20world%20%26%20more
113
+
114
+ # Decode a URL-encoded string
115
+ python3 -c "import urllib.parse; print(urllib.parse.unquote('hello%20world%20%26%20more'))"
116
+ # Output: hello world & more
117
+ ```
118
+
119
+ ## URL Health Check
120
+
121
+ ```bash
122
+ URL="https://example.com"
123
+
124
+ # Check if URL returns a success response
125
+ STATUS=$(curl -s -o /dev/null -w "%{http_code}" --max-time 10 "${URL}")
126
+ echo "HTTP ${STATUS}"
127
+
128
+ # HTTP 2xx = alive, 4xx/5xx = error, 000 = unreachable
129
+ ```
130
+
131
+ ## QR Code Generation
132
+
133
+ ```bash
134
+ # Check if qrencode is installed
135
+ which qrencode || echo "install: brew install qrencode"
136
+
137
+ # Generate QR code in terminal (UTF-8 art)
138
+ qrencode -t UTF8 "https://example.com"
139
+
140
+ # Generate QR code as PNG file
141
+ qrencode -o /tmp/qr.png "https://example.com"
142
+
143
+ # Print QR code inline in terminal
144
+ qrencode -t ANSIUTF8 "https://example.com"
145
+ ```
146
+
147
+ ## Combined Workflow: Shorten and Copy
148
+
149
+ ```bash
150
+ LONG_URL="https://example.com/very/long/path"
151
+
152
+ # Shorten
153
+ SHORT=$(curl -s "https://tinyurl.com/api-create.php?url=${LONG_URL}")
154
+
155
+ # Copy to clipboard (macOS)
156
+ echo "${SHORT}" | pbcopy
157
+
158
+ echo "Shortened and copied: ${SHORT}"
159
+ ```
160
+
161
+ ## Error Handling
162
+
163
+ | Error | Response |
164
+ |-------|----------|
165
+ | `pbcopy`/`pbpaste` not found on Linux | "On Linux, install xclip: `sudo apt install xclip`" |
166
+ | `xclip` not found | "Install xclip with `sudo apt install xclip` or `sudo pacman -S xclip`" |
167
+ | TinyURL API fails | "TinyURL is unavailable. Try again shortly, or set `BITLY_API_KEY` for a more reliable shortener." |
168
+ | `BITLY_API_KEY` not set | Automatically fall back to TinyURL without complaining |
169
+ | URL health check returns 000 | "Cannot reach that URL - it may be down or the address is wrong." |
170
+ | `qrencode` not installed | "Install qrencode with `brew install qrencode` (macOS) or `sudo apt install qrencode` (Linux)" |
171
+ | Invalid URL format | "That does not look like a valid URL. Make sure it starts with http:// or https://" |
172
+
173
+ ## Safety Rules
174
+
175
+ - Never read the clipboard without the user explicitly asking (it may contain passwords or sensitive data)
176
+ - When copying to clipboard, always confirm what was copied so the user knows their previous content was replaced
177
+ - Do not auto-shorten URLs without being asked - the user may want the full URL for transparency
178
+ - Do not follow redirects on URLs from untrusted sources without warning the user
179
+
180
+ ## Example Interactions
181
+
182
+ **User**: Copy this URL to my clipboard: https://example.com/long-path
183
+ **You**: *(runs `echo "https://example.com/long-path" | pbcopy`)* Copied to clipboard.
184
+
185
+ **User**: What's in my clipboard?
186
+ **You**: *(runs `pbpaste`)* Your clipboard contains: `https://example.com/long-path`
187
+
188
+ **User**: Shorten https://example.com/very/long/path/to/something
189
+ **You**: *(calls TinyURL API)* Shortened URL: https://tinyurl.com/abc123
190
+
191
+ **User**: Where does https://bit.ly/xyz go?
192
+ **You**: *(runs curl follow redirect)* That short link points to: https://www.example.com/the-actual-page
193
+
194
+ **User**: Extract all links from this text: "Visit https://foo.com or https://bar.org for details."
195
+ **You**: Found 2 URLs: https://foo.com, https://bar.org
196
+
197
+ **User**: Make a QR code for my website https://example.com
198
+ **You**: *(runs qrencode -t UTF8)* [QR code displayed in terminal]
package/ui/README.md ADDED
@@ -0,0 +1,73 @@
1
+ # React + TypeScript + Vite
2
+
3
+ This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
4
+
5
+ Currently, two official plugins are available:
6
+
7
+ - [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh
8
+ - [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
9
+
10
+ ## React Compiler
11
+
12
+ The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation).
13
+
14
+ ## Expanding the ESLint configuration
15
+
16
+ If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:
17
+
18
+ ```js
19
+ export default defineConfig([
20
+ globalIgnores(['dist']),
21
+ {
22
+ files: ['**/*.{ts,tsx}'],
23
+ extends: [
24
+ // Other configs...
25
+
26
+ // Remove tseslint.configs.recommended and replace with this
27
+ tseslint.configs.recommendedTypeChecked,
28
+ // Alternatively, use this for stricter rules
29
+ tseslint.configs.strictTypeChecked,
30
+ // Optionally, add this for stylistic rules
31
+ tseslint.configs.stylisticTypeChecked,
32
+
33
+ // Other configs...
34
+ ],
35
+ languageOptions: {
36
+ parserOptions: {
37
+ project: ['./tsconfig.node.json', './tsconfig.app.json'],
38
+ tsconfigRootDir: import.meta.dirname,
39
+ },
40
+ // other options...
41
+ },
42
+ },
43
+ ])
44
+ ```
45
+
46
+ You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules:
47
+
48
+ ```js
49
+ // eslint.config.js
50
+ import reactX from 'eslint-plugin-react-x'
51
+ import reactDom from 'eslint-plugin-react-dom'
52
+
53
+ export default defineConfig([
54
+ globalIgnores(['dist']),
55
+ {
56
+ files: ['**/*.{ts,tsx}'],
57
+ extends: [
58
+ // Other configs...
59
+ // Enable lint rules for React
60
+ reactX.configs['recommended-typescript'],
61
+ // Enable lint rules for React DOM
62
+ reactDom.configs.recommended,
63
+ ],
64
+ languageOptions: {
65
+ parserOptions: {
66
+ project: ['./tsconfig.node.json', './tsconfig.app.json'],
67
+ tsconfigRootDir: import.meta.dirname,
68
+ },
69
+ // other options...
70
+ },
71
+ },
72
+ ])
73
+ ```
@@ -0,0 +1 @@
1
+ import{c as z,n as I,r as x,u as K,o as h,m as d,t as w,j as e,k as c,a1 as Q,b as f,f as j,i as p,C as A,aK as B,g as E,U as V,v as $}from"./index-kb4AJXUB.js";import{B as L}from"./badge-B4ov81_m.js";import{S as g}from"./skeleton-CtkIA_MU.js";import{S as k,a as C,b,c as S,d as a}from"./select-LsO16slr.js";import{T as U}from"./trash-2-B4oAXsX-.js";import"./chevron-up-BRTtndUZ.js";const _=[["path",{d:"M18 6 7 17l-5-5",key:"116fxf"}],["path",{d:"m22 10-7.5 7.5L13 16",key:"ke71qq"}]],D=z("check-check",_);function O({type:i}){switch(i){case"success":return e.jsx(A,{className:"h-4 w-4 text-green-400"});case"error":return e.jsx($,{className:"h-4 w-4 text-red-400"});case"warning":return e.jsx(V,{className:"h-4 w-4 text-amber-400"});default:return e.jsx(E,{className:"h-4 w-4 text-blue-400"})}}function P(i){const o=Date.now()-i,l=Math.floor(o/1e3);if(l<60)return"just now";const n=Math.floor(l/60);if(n<60)return`${n}m ago`;const t=Math.floor(n/60);return t<24?`${t}h ago`:`${Math.floor(t/24)}d ago`}function Z(){const i=I(),[r,o]=x.useState("all"),[l,n]=x.useState("all"),[t,u]=x.useState(!1),{data:y,isLoading:M}=K({queryKey:["notifications","activity"],queryFn:()=>d.notifications.list({limit:100}),refetchInterval:3e4}),T=h({mutationFn:s=>d.notifications.markRead(s),onSuccess:()=>{i.invalidateQueries({queryKey:["notifications"]})}}),N=h({mutationFn:()=>d.notifications.markAllRead(),onSuccess:()=>{i.invalidateQueries({queryKey:["notifications"]}),w.success("All notifications marked as read")}}),q=h({mutationFn:s=>d.notifications.delete(s),onSuccess:()=>{i.invalidateQueries({queryKey:["notifications"]}),w.success("Notification deleted")}}),F=y?.notifications??[],m=y?.unreadCount??0,v=F.filter(s=>!(r!=="all"&&s.type!==r||l!=="all"&&s.category!==l||t&&s.read));return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold tracking-tight",children:"Activity"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:m>0?`${m} unread`:"All caught up"})]}),m>0&&e.jsxs(c,{variant:"outline",size:"sm",onClick:()=>N.mutate(),disabled:N.isPending,className:"gap-2",children:[e.jsx(D,{className:"h-4 w-4"}),"Mark all read"]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsxs(k,{value:r,onValueChange:s=>o(s),children:[e.jsx(C,{className:"w-[140px]",children:e.jsx(b,{placeholder:"Type"})}),e.jsxs(S,{children:[e.jsx(a,{value:"all",children:"All types"}),e.jsx(a,{value:"success",children:"Success"}),e.jsx(a,{value:"error",children:"Error"}),e.jsx(a,{value:"warning",children:"Warning"}),e.jsx(a,{value:"info",children:"Info"})]})]}),e.jsxs(k,{value:l,onValueChange:s=>n(s),children:[e.jsx(C,{className:"w-[140px]",children:e.jsx(b,{placeholder:"Category"})}),e.jsxs(S,{children:[e.jsx(a,{value:"all",children:"All categories"}),e.jsx(a,{value:"task",children:"Task"}),e.jsx(a,{value:"ticket",children:"Ticket"}),e.jsx(a,{value:"system",children:"System"}),e.jsx(a,{value:"agent",children:"Agent"}),e.jsx(a,{value:"chat",children:"Chat"}),e.jsx(a,{value:"cron",children:"Cron"})]})]}),e.jsxs(c,{variant:t?"default":"outline",size:"sm",onClick:()=>u(!t),className:"gap-2",children:[e.jsx(Q,{className:"h-4 w-4"}),"Unread only"]}),(r!=="all"||l!=="all"||t)&&e.jsx(c,{variant:"ghost",size:"sm",onClick:()=>{o("all"),n("all"),u(!1)},children:"Clear filters"})]}),M?e.jsx("div",{className:"space-y-3",children:Array.from({length:5}).map((s,R)=>e.jsx(f,{className:"glass rounded-2xl",children:e.jsx(j,{className:"p-4",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(g,{className:"h-8 w-8 rounded-xl"}),e.jsxs("div",{className:"flex-1 space-y-2",children:[e.jsx(g,{className:"h-4 w-48"}),e.jsx(g,{className:"h-3 w-32"})]})]})})},R))}):v.length>0?e.jsx("div",{className:"space-y-2",children:v.map(s=>e.jsx(f,{className:p("glass rounded-2xl overflow-hidden transition-all hover-lift",!s.read&&"border-primary/20"),children:e.jsx(j,{className:"p-4",children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"flex items-start gap-3 flex-1 min-w-0",children:[e.jsx("div",{className:p("h-8 w-8 rounded-xl flex items-center justify-center flex-shrink-0",s.type==="success"&&"bg-green-500/10",s.type==="error"&&"bg-red-500/10",s.type==="warning"&&"bg-amber-500/10",s.type==="info"&&"bg-blue-500/10"),children:e.jsx(O,{type:s.type})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:p("text-sm font-medium truncate",!s.read&&"font-bold"),children:s.title}),!s.read&&e.jsx("span",{className:"h-2 w-2 rounded-full bg-primary flex-shrink-0"})]}),s.description&&e.jsx("p",{className:"text-xs text-muted-foreground mt-0.5 line-clamp-2",children:s.description}),e.jsxs("div",{className:"flex items-center gap-2 mt-1.5",children:[e.jsx(L,{variant:"outline",className:"text-[10px] px-1.5 py-0",children:s.category}),e.jsx("span",{className:"text-[10px] text-muted-foreground",children:P(s.createdAt)})]})]})]}),e.jsxs("div",{className:"flex items-center gap-1 flex-shrink-0",children:[!s.read&&e.jsx(c,{variant:"ghost",size:"icon",className:"h-7 w-7 rounded-lg",onClick:()=>T.mutate(s.id),title:"Mark as read",children:e.jsx(A,{className:"h-3.5 w-3.5"})}),e.jsx(c,{variant:"ghost",size:"icon",className:"h-7 w-7 rounded-lg text-muted-foreground hover:text-destructive",onClick:()=>q.mutate(s.id),title:"Delete",children:e.jsx(U,{className:"h-3.5 w-3.5"})})]})]})})},s.id))}):e.jsx(f,{className:"glass rounded-2xl",children:e.jsxs(j,{className:"py-16 text-center",children:[e.jsx(B,{className:"h-12 w-12 mx-auto text-muted-foreground opacity-20 mb-4"}),e.jsx("h3",{className:"text-lg font-medium mb-1",children:"No notifications"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:r!=="all"||l!=="all"||t?"No notifications match your filters":"You're all caught up"})]})})]})}export{Z as ActivityView};
@@ -0,0 +1 @@
1
+ import{u as o,j as e,M as r,B as d,k as i,S as x,i as c,g as m,V as h}from"./index-kb4AJXUB.js";import{S as u}from"./StatusIndicator-DA3NAo_b.js";import{C as p}from"./cpu-B41x1-vV.js";import{S as g}from"./shield-check-CQqkwufI.js";const j="http://localhost:3000";function f(){return o({queryKey:["agents"],queryFn:async()=>{const s=await fetch(`${j}/api/agents`);if(!s.ok)throw new Error("Failed to fetch agents");return(await s.json()).agents},refetchInterval:1e4})}function k(){const{data:s,isLoading:t,error:l}=f();return t?e.jsxs("div",{className:"flex flex-col gap-6",children:[e.jsxs("header",{children:[e.jsx("h2",{className:"text-2xl font-bold tracking-tight",children:"Agent Status"}),e.jsx("p",{className:"text-muted-foreground text-sm",children:"Monitor your active AI workforce."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:[1,2,3].map(a=>e.jsx("div",{className:"h-48 rounded-2xl premium-card animate-pulse"},a))})]}):l?e.jsxs("div",{className:"premium-card rounded-2xl p-12 text-center",children:[e.jsx(r,{className:"h-12 w-12 mx-auto text-red-500 mb-4 opacity-50"}),e.jsx("h3",{className:"text-lg font-semibold",children:"Failed to load agents"}),e.jsx("p",{className:"text-muted-foreground text-sm",children:"Make sure the backend is running at http://localhost:3000"})]}):e.jsxs("div",{className:"flex flex-col gap-6",children:[e.jsxs("header",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold tracking-tight",children:"Agent Status"}),e.jsx("p",{className:"text-muted-foreground text-sm",children:"Monitor and manage your autonomous AI agents."})]}),e.jsxs("div",{className:"flex items-center gap-2 px-4 py-2 rounded-full premium-card border-primary/10",children:[e.jsx(r,{className:"h-4 w-4 text-primary"}),e.jsxs("span",{className:"text-xs font-bold uppercase tracking-wider",children:[s?.length||0," Agents Registered"]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:[s?.map(a=>e.jsx(N,{agent:a},a.type)),s?.length===0&&e.jsxs("div",{className:"col-span-full glass-heavy rounded-[24px] p-12 text-center border-dashed border-2 border-white/5",children:[e.jsx(d,{className:"h-16 w-16 mx-auto text-muted-foreground mb-4 opacity-20"}),e.jsx("h3",{className:"text-xl font-bold",children:"No agents active"}),e.jsx("p",{className:"text-muted-foreground max-w-md mx-auto mb-6",children:"Connect an agent adapter like OpenClaw or Claude Code to start orchestrating tasks."}),e.jsx(i,{variant:"black",className:"px-6 h-10 rounded-full",onClick:()=>{},children:"Go to Settings"})]})]})]})}function N({agent:s}){const t=s.type==="openclaw"?x:s.type==="claude-code"?d:p;return e.jsxs("div",{className:"group relative premium-card rounded-2xl p-6 hover-lift transition-liquid overflow-hidden",children:[e.jsx("div",{className:c("absolute -top-12 -right-12 w-32 h-32 rounded-full blur-[60px] opacity-20 group-hover:opacity-40 transition-opacity",s.healthy.healthy?"bg-green-500":"bg-red-500")}),e.jsxs("div",{className:"flex items-start justify-between mb-8",children:[e.jsxs("div",{className:"flex gap-4",children:[e.jsx("div",{className:"h-12 w-12 rounded-xl glass-heavy flex items-center justify-center border-primary/10 shadow-lg",children:e.jsx(t,{className:"h-6 w-6 text-primary"})}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base font-bold capitalize",children:s.name}),e.jsx("p",{className:"text-[10px] text-muted-foreground font-mono uppercase tracking-tight",children:s.type})]})]}),e.jsx(u,{status:s.healthy.healthy?"online":"error",size:"md"})]}),e.jsxs("div",{className:"space-y-4 mb-8",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsx(n,{label:"Success",value:s.stats.completed,className:"text-green-500/80"}),e.jsx(n,{label:"Failed",value:s.stats.failed,className:"text-red-500/80"})]}),e.jsxs("div",{className:"flex items-center justify-between px-1",children:[e.jsxs("div",{className:"flex items-center gap-1.5 text-muted-foreground",children:[e.jsx(m,{className:"h-3.5 w-3.5"}),e.jsx("span",{className:"text-[11px] font-medium",children:"Avg duration:"})]}),e.jsxs("span",{className:"text-[11px] font-bold",children:[(s.stats.avgDuration/1e3).toFixed(1),"s"]})]}),e.jsxs("div",{className:"flex items-center justify-between px-1",children:[e.jsxs("div",{className:"flex items-center gap-1.5 text-muted-foreground",children:[e.jsx(r,{className:"h-3.5 w-3.5"}),e.jsx("span",{className:"text-[11px] font-medium",children:"Latency:"})]}),e.jsxs("span",{className:"text-[11px] font-bold text-blue-400",children:[s.healthy.latencyMs,"ms"]})]})]}),e.jsxs("div",{className:"pt-4 border-t border-white/5 flex items-center justify-between",children:[e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"premium-label",children:"Last Active"}),e.jsx("span",{className:"text-[11px] font-medium leading-relaxed",children:s.lastActivity?new Date(s.lastActivity).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):"Never"})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(i,{variant:"ghost",size:"icon",className:"h-8 w-8 rounded-lg",children:e.jsx(h,{className:"h-3.5 w-3.5 text-muted-foreground"})}),e.jsxs(i,{variant:"outline",size:"sm",className:"h-8 gap-2 rounded-lg",children:[e.jsx(g,{className:"h-3.5 w-3.5 text-blue-400"}),e.jsx("span",{className:"text-[10px] font-bold",children:"CONFIG"})]})]})]})]})}function n({label:s,value:t,className:l}){return e.jsxs("div",{className:"flex flex-col px-3 py-2 rounded-xl bg-primary/5 border border-primary/5",children:[e.jsx("span",{className:"premium-label",children:s}),e.jsx("span",{className:c("text-lg font-bold leading-tight",l),children:t})]})}export{k as AgentList};
@@ -0,0 +1 @@
1
+ import{c as R,j as e,u as f,L as ee,a as T,T as A,F as se,C as te,b as p,d as I,e as q,f as g,Z as ae,S as re,B as F,g as le,h as N,i as m,k as ie,R as ne,l as ce,A as oe,m as j}from"./index-kb4AJXUB.js";import{B as de}from"./badge-B4ov81_m.js";import{R as B,C as xe,X as me,Y as he,T as z,L as ue,a as fe}from"./CartesianChart-B50bcUJi.js";import{A as pe,a as M,P as ge,b as je}from"./AreaChart-B5qMEGWj.js";import{T as P}from"./trending-up-BGWxvlmZ.js";import{G as ve}from"./git-branch-BRMiJmV3.js";const Ne=[["path",{d:"m7 7 10 10",key:"1fmybs"}],["path",{d:"M17 7v10H7",key:"6fjiku"}]],ye=R("arrow-down-right",Ne);const be=[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]],ke=R("arrow-up-right",be);const we=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],Ce=R("wifi-off",we),Ae={created:"#3b82f6",completed:"#22c55e"};function Le({data:a,title:n,showLegend:r=!0,colors:c}){const l={...Ae,...c},d=a.map(i=>({...i,displayDate:new Date(i.date).toLocaleDateString("en-US",{month:"short",day:"numeric"})})),o=(i,t)=>t%5===0?i:"";return a.length===0?e.jsx("div",{className:"flex items-center justify-center h-full text-muted-foreground text-sm",children:"No data available"}):e.jsxs("div",{className:"w-full h-full",children:[n&&e.jsx("h4",{className:"text-sm font-medium text-muted-foreground mb-2",children:n}),e.jsx(B,{width:"100%",height:"100%",children:e.jsxs(pe,{data:d,margin:{top:10,right:10,left:-20,bottom:0},children:[e.jsxs("defs",{children:[e.jsxs("linearGradient",{id:"colorCreated",x1:"0",y1:"0",x2:"0",y2:"1",children:[e.jsx("stop",{offset:"5%",stopColor:l.created,stopOpacity:.3}),e.jsx("stop",{offset:"95%",stopColor:l.created,stopOpacity:0})]}),e.jsxs("linearGradient",{id:"colorCompleted",x1:"0",y1:"0",x2:"0",y2:"1",children:[e.jsx("stop",{offset:"5%",stopColor:l.completed,stopOpacity:.3}),e.jsx("stop",{offset:"95%",stopColor:l.completed,stopOpacity:0})]})]}),e.jsx(xe,{strokeDasharray:"3 3",stroke:"rgba(255,255,255,0.05)"}),e.jsx(me,{dataKey:"displayDate",tick:{fontSize:10,fill:"var(--muted-foreground)"},tickFormatter:o,axisLine:{stroke:"rgba(255,255,255,0.1)"},tickLine:{stroke:"rgba(255,255,255,0.1)"}}),e.jsx(he,{tick:{fontSize:10,fill:"var(--muted-foreground)"},axisLine:{stroke:"rgba(255,255,255,0.1)"},tickLine:{stroke:"rgba(255,255,255,0.1)"},allowDecimals:!1}),e.jsx(z,{content:({active:i,payload:t,label:k})=>i&&t&&t.length?e.jsxs("div",{className:"glass-heavy px-3 py-2 rounded-lg text-sm border border-white/10",children:[e.jsx("p",{className:"font-medium mb-1",children:k}),t.map(u=>e.jsxs("p",{style:{color:u.color},children:[u.name,": ",u.value]},u.name))]}):null}),r&&e.jsx(ue,{verticalAlign:"top",height:36,iconType:"circle",iconSize:8,wrapperStyle:{fontSize:"11px"}}),e.jsx(M,{type:"monotone",dataKey:"created",name:"Created",stroke:l.created,strokeWidth:2,fillOpacity:1,fill:"url(#colorCreated)"}),e.jsx(M,{type:"monotone",dataKey:"completed",name:"Completed",stroke:l.completed,strokeWidth:2,fillOpacity:1,fill:"url(#colorCompleted)"})]})})]})}const v=5e3,h={pending:"#facc15",in_progress:"#3b82f6",completed:"#22c55e",failed:"#ef4444"},Te={urgent:"text-red-500",high:"text-orange-400",medium:"text-yellow-400",low:"text-blue-400",none:"text-gray-400"};function b({label:a,value:n,icon:r,trend:c,gradient:l,href:d}){const o=e.jsxs("div",{className:m("group relative overflow-hidden rounded-3xl glass-heavy p-5 transition-all duration-300","hover:shadow-xl hover:scale-[1.02]",d&&"cursor-pointer"),children:[e.jsx("div",{className:m("absolute -top-8 -right-8 h-24 w-24 rounded-full opacity-20 blur-2xl transition-opacity duration-300 group-hover:opacity-30",l)}),e.jsxs("div",{className:"relative flex items-start justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-[11px] font-bold text-muted-foreground/70 uppercase tracking-wider",children:a}),e.jsx("p",{className:"text-3xl font-black mt-1.5 tracking-tight",children:n}),c&&e.jsxs("div",{className:"flex items-center gap-1 mt-1.5",children:[c.positive?e.jsx(ke,{className:"h-3 w-3 text-emerald-500"}):e.jsx(ye,{className:"h-3 w-3 text-red-400"}),e.jsx("span",{className:m("text-[11px] font-semibold",c.positive?"text-emerald-500":"text-red-400"),children:c.value})]})]}),e.jsx("div",{className:m("h-11 w-11 rounded-xl flex items-center justify-center shadow-lg",l),children:e.jsx(r,{className:"h-5 w-5 text-white"})})]}),d&&e.jsx(ce,{className:"absolute right-4 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground/20 group-hover:text-muted-foreground/50 transition-colors"})]});return d?e.jsx(N,{to:d,children:o}):o}function Re({completed:a,running:n,pending:r,failed:c}){const l=[{name:"Completed",value:a,color:h.completed},{name:"Running",value:n,color:h.in_progress},{name:"Pending",value:r,color:h.pending},{name:"Failed",value:c,color:h.failed}].filter(o=>o.value>0),d=a+n+r+c;return d===0?e.jsx("div",{className:"h-full w-full flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"h-12 w-12 rounded-full bg-muted/20 flex items-center justify-center mx-auto mb-2",children:e.jsx(T,{className:"h-5 w-5 text-muted-foreground/40"})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"No tasks"})]})}):e.jsxs("div",{className:"relative h-full w-full",children:[e.jsx(B,{width:"100%",height:"100%",children:e.jsxs(ge,{children:[e.jsx(je,{data:l,cx:"50%",cy:"50%",innerRadius:35,outerRadius:50,paddingAngle:2,dataKey:"value",strokeWidth:0,children:l.map((o,i)=>e.jsx(fe,{fill:o.color},`cell-${i}`))}),e.jsx(z,{content:({active:o,payload:i})=>{if(o&&i&&i.length){const t=i[0].payload;return e.jsxs("div",{className:"px-2.5 py-1.5 rounded-lg bg-black/90 text-white text-xs border border-white/10",children:[t.name,": ",t.value]})}return null}})]})}),e.jsx("div",{className:"absolute inset-0 flex flex-col items-center justify-center pointer-events-none","aria-hidden":"true",children:e.jsx("span",{className:"text-xl font-bold",children:d})})]})}function L({icon:a,title:n,href:r,linkText:c}){return e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("h3",{className:"text-sm font-semibold",children:n})]}),r&&e.jsxs(N,{to:r,className:"text-xs text-primary hover:text-primary/80 font-medium flex items-center gap-1",children:[c||"View All"," ",e.jsx(oe,{className:"h-3 w-3"})]})]})}function K({icon:a,title:n,action:r}){return e.jsxs("div",{className:"flex flex-col items-center justify-center py-6 text-center",children:[e.jsx("div",{className:"h-10 w-10 rounded-xl bg-muted/10 flex items-center justify-center mb-2",children:e.jsx(a,{className:"h-5 w-5 text-muted-foreground/40","aria-hidden":"true"})}),e.jsx("p",{className:"text-xs text-muted-foreground mb-2",children:n}),r&&e.jsx(N,{to:r.href,className:"text-xs text-primary hover:underline font-medium",children:r.label})]})}function Oe({onRetry:a}){return e.jsxs("div",{className:"flex flex-col items-center justify-center min-h-[60vh] text-center px-4",children:[e.jsx("div",{className:"h-20 w-20 rounded-2xl bg-red-500/10 flex items-center justify-center mb-6 border border-red-500/20",children:e.jsx(Ce,{className:"h-10 w-10 text-red-400"})}),e.jsx("h2",{className:"text-xl font-bold mb-2",children:"Backend Offline"}),e.jsx("p",{className:"text-muted-foreground text-sm max-w-md mb-6",children:"Unable to connect to the API. Make sure the server is running."}),e.jsx("code",{className:"px-4 py-2 rounded-lg bg-black/20 font-mono text-sm text-muted-foreground mb-4",children:"pnpm dev"}),e.jsxs(ie,{onClick:a,variant:"outline",className:"rounded-xl gap-2",children:[e.jsx(ne,{className:"h-4 w-4"}),"Retry"]})]})}function Me(){const{data:a,isLoading:n,error:r,refetch:c}=f({queryKey:["tasks"],queryFn:()=>j.tasks.list({limit:100}),refetchInterval:s=>s.state.error?!1:v}),{data:l,isLoading:d,error:o,refetch:i}=f({queryKey:["summaries","stats"],queryFn:()=>j.summaries.stats(),refetchInterval:s=>s.state.error?!1:v*2}),{data:t,isLoading:k,error:u,refetch:E}=f({queryKey:["stats","dashboard"],queryFn:()=>j.stats.dashboard(),refetchInterval:s=>s.state.error?!1:v*2}),{data:$,refetch:G}=f({queryKey:["tickets","recent"],queryFn:()=>j.tickets.list({limit:5,sortBy:"updatedAt",sortOrder:"desc"}),refetchInterval:s=>s.state.error?!1:v*2}),{data:U,refetch:H}=f({queryKey:["gateway","agents"],queryFn:()=>j.gateway.agents(),refetchInterval:s=>s.state.error?!1:v*4}),V=r||o||u,O=n||d||k,W=()=>{c(),i(),E(),G(),H()};if(V&&!O)return e.jsx(Oe,{onRetry:W});const x=a?.tasks??[],X=x.filter(s=>s.status==="pending").length,w=x.filter(s=>s.status==="in_progress").length,S=x.filter(s=>s.status==="completed").length,Y=x.filter(s=>s.status==="failed").length,Z=t?.tickets.total??0,D=t?.tickets.open??0,Q=t?.projects.total??0,C=t?.sprints.active??0,_=$?.tickets??[],y=U?.agents??[],J=y.filter(s=>s.health?.healthy).length;return O?e.jsx("div",{className:"flex items-center justify-center min-h-[60vh]",children:e.jsxs("div",{className:"text-center",children:[e.jsx(ee,{className:"h-8 w-8 animate-spin text-primary mx-auto mb-3"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Loading analytics..."})]})}):e.jsxs("div",{className:"space-y-6 max-w-7xl mx-auto",children:[e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold tracking-tight",children:"Analytics"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Overview of your AI operations and metrics"})]})}),e.jsxs("div",{className:"grid gap-4 grid-cols-2 lg:grid-cols-4",children:[e.jsx(b,{label:"Tasks",value:x.length,icon:T,trend:w>0?{value:`${w} running`,positive:!0}:void 0,gradient:"bg-gradient-to-br from-rose-400 to-rose-600",href:"/tasks"}),e.jsx(b,{label:"Tickets",value:Z,icon:A,trend:D>0?{value:`${D} open`,positive:!0}:void 0,gradient:"bg-gradient-to-br from-rose-500 to-rose-700",href:"/tickets"}),e.jsx(b,{label:"Projects",value:Q,icon:se,trend:C>0?{value:`${C} sprints`,positive:!0}:void 0,gradient:"bg-gradient-to-br from-rose-300 to-rose-500",href:"/projects"}),e.jsx(b,{label:"Completed",value:S,icon:te,gradient:"bg-gradient-to-br from-emerald-400 to-emerald-600"})]}),e.jsxs("div",{className:"grid gap-6 lg:grid-cols-5",children:[e.jsxs("div",{className:"lg:col-span-3 space-y-6",children:[e.jsxs(p,{className:"glass overflow-hidden",children:[e.jsx(I,{className:"pb-3",children:e.jsxs(q,{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(P,{className:"h-4 w-4 text-muted-foreground"}),"Activity Overview"]})}),e.jsx(g,{children:e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"h-32",children:[e.jsx(Re,{completed:S,running:w,pending:X,failed:Y}),e.jsx("div",{className:"flex justify-center gap-3 mt-2",children:[{color:h.completed,label:"Done"},{color:h.in_progress,label:"Active"},{color:h.pending,label:"Pending"}].map(s=>e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("div",{className:"h-2 w-2 rounded-full",style:{backgroundColor:s.color}}),e.jsx("span",{className:"text-[10px] text-muted-foreground",children:s.label})]},s.label))})]}),e.jsxs("div",{className:"col-span-2 grid grid-cols-2 gap-3",children:[e.jsxs("div",{className:"p-3 rounded-xl bg-muted/10",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx(ae,{className:"h-3.5 w-3.5 text-amber-400"}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"Sprints"})]}),e.jsx("p",{className:"text-lg font-bold",children:C})]}),e.jsxs("div",{className:"p-3 rounded-xl bg-muted/10",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx(re,{className:"h-3.5 w-3.5 text-violet-400"}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"AI Created"})]}),e.jsx("p",{className:"text-lg font-bold",children:t?.tickets.aiCreated??0})]}),e.jsxs("div",{className:"p-3 rounded-xl bg-muted/10",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx(ve,{className:"h-3.5 w-3.5 text-cyan-400"}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"Files Changed"})]}),e.jsx("p",{className:"text-lg font-bold",children:l?.filesChangedCount??0})]}),e.jsxs("div",{className:"p-3 rounded-xl bg-muted/10",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx(F,{className:"h-3.5 w-3.5 text-green-400"}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"Agents"})]}),e.jsxs("p",{className:"text-lg font-bold",children:[J,"/",y.length]})]})]})]})})]}),(t?.velocity.tasks?.length??0)>0&&e.jsxs(p,{className:"glass",children:[e.jsx(I,{className:"pb-2",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs(q,{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(P,{className:"h-4 w-4 text-muted-foreground"}),"Velocity (30 days)"]}),e.jsx("div",{className:"flex items-center gap-4 text-xs text-muted-foreground",children:e.jsxs("span",{children:["Avg: ",e.jsx("strong",{className:"text-foreground",children:t?.velocity.weeklyAvg.created??0}),"/wk"]})})]})}),e.jsx(g,{className:"h-48",children:e.jsx(Le,{data:t?.velocity.tasks??[],showLegend:!0,colors:{created:"#fb7185",completed:"#22c55e"}})})]}),e.jsxs("div",{children:[e.jsx(L,{icon:le,title:"Recent Tasks",href:"/tasks"}),e.jsx(p,{className:"glass",children:e.jsx(g,{className:"p-3",children:x.length>0?e.jsx("div",{className:"space-y-1",children:x.slice(0,5).map(s=>e.jsxs(N,{to:`/tasks/${s.id}`,className:"flex items-center justify-between p-2.5 rounded-xl hover:bg-muted/20 transition-colors group",children:[e.jsxs("div",{className:"flex-1 min-w-0 mr-3",children:[e.jsx("p",{className:"truncate text-sm font-medium group-hover:text-primary transition-colors",children:s.title}),e.jsx("p",{className:"text-[10px] text-muted-foreground uppercase",children:s.source})]}),e.jsx(de,{variant:s.status==="completed"?"success":s.status==="failed"?"destructive":s.status==="in_progress"?"info":"secondary",className:m("text-[10px]",s.status==="in_progress"&&"animate-pulse"),children:s.status.replace("_"," ")})]},s.id))}):e.jsx(K,{icon:T,title:"No tasks yet",action:{label:"Create Task",href:"/tasks?create=true"}})})})]})]}),e.jsxs("div",{className:"lg:col-span-2 space-y-6",children:[e.jsxs("div",{children:[e.jsx(L,{icon:A,title:"Recent Tickets",href:"/tickets"}),e.jsx(p,{className:"glass",children:e.jsx(g,{className:"p-3",children:_.length>0?e.jsx("div",{className:"space-y-1",children:_.slice(0,5).map(s=>e.jsxs(N,{to:`/tickets/${s.id}`,className:"flex items-center gap-2 p-2.5 rounded-xl hover:bg-muted/20 transition-colors group",children:[e.jsxs("span",{className:m("text-[10px] font-mono shrink-0",Te[s.priority]),children:["#",s.sequence]}),e.jsx("p",{className:"truncate text-sm font-medium group-hover:text-primary transition-colors flex-1",children:s.title})]},s.id))}):e.jsx(K,{icon:A,title:"No tickets",action:{label:"Create Ticket",href:"/tickets?create=true"}})})})]}),y.length>0&&e.jsxs("div",{children:[e.jsx(L,{icon:F,title:"AI Agents",href:"/gateway",linkText:"Configure"}),e.jsx(p,{className:"glass",children:e.jsx(g,{className:"p-3",children:e.jsx("div",{className:"space-y-1",children:y.slice(0,4).map(s=>e.jsxs("div",{className:"flex items-center gap-3 p-2.5 rounded-xl bg-muted/5",children:[e.jsx("div",{className:m("h-2 w-2 rounded-full shrink-0",s.health?.healthy?"bg-green-500":"bg-gray-500"),"aria-label":s.health?.healthy?"Healthy":"Offline"}),e.jsx("span",{className:"text-sm font-medium capitalize flex-1",children:s.name||s.type.replace(/-/g," ")}),e.jsx("span",{className:"text-[10px] text-muted-foreground","aria-hidden":"true",children:s.health?.healthy?"Active":"Offline"})]},s.type))})})})]})]})]})]})}export{Me as AnalyticsDashboard};