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,212 @@
1
+ /**
2
+ * Zalo Personal Provider - Zalo Social API personal messaging
3
+ * Separate from Zalo OA (Official Account).
4
+ * API base: https://graph.zalo.me/v2.0/me
5
+ */
6
+ import { createHmac } from 'node:crypto';
7
+ import { z } from 'zod';
8
+ import { logger } from '../../../utils/logger.js';
9
+ // --- Schema ---
10
+ export const ZaloPersonalAccountConfigSchema = z.object({
11
+ id: z.string(),
12
+ name: z.string().optional(),
13
+ enabled: z.boolean().default(true),
14
+ isDefault: z.boolean().optional(),
15
+ provider: z.literal('zalo-personal'),
16
+ accessToken: z.string().optional(),
17
+ secretKey: z.string().optional(),
18
+ userId: z.string().optional(),
19
+ });
20
+ // --- State ---
21
+ let currentConfig = null;
22
+ const ZALO_SOCIAL_API = 'https://graph.zalo.me/v2.0/me';
23
+ // --- HTTP helper ---
24
+ async function callZaloSocialApi(endpoint, method = 'GET', body, config) {
25
+ const token = (config ?? currentConfig)?.accessToken;
26
+ if (!token)
27
+ return { ok: false, error: 'Access token not configured' };
28
+ try {
29
+ const url = `${ZALO_SOCIAL_API}${endpoint}`;
30
+ const res = await fetch(url, {
31
+ method,
32
+ headers: {
33
+ 'Authorization': `Bearer ${token}`,
34
+ 'Content-Type': 'application/json',
35
+ },
36
+ body: body !== undefined ? JSON.stringify(body) : undefined,
37
+ });
38
+ const data = await res.json();
39
+ if (!res.ok) {
40
+ const errMsg = typeof data.error === 'object' ? data.error?.message : data.message;
41
+ return { ok: false, error: errMsg ?? `HTTP ${res.status}` };
42
+ }
43
+ if (typeof data.error === 'number' && data.error !== 0) {
44
+ return { ok: false, error: data.message ?? `Zalo error ${data.error}` };
45
+ }
46
+ return { ok: true, data };
47
+ }
48
+ catch (error) {
49
+ logger.error('[ZaloPersonal] API call failed:', error instanceof Error ? error : undefined);
50
+ return { ok: false, error: error instanceof Error ? error.message : 'Unknown error' };
51
+ }
52
+ }
53
+ // --- Adapters ---
54
+ const authAdapter = {
55
+ getAuthUrl(state, _scopes) {
56
+ const appId = process.env['ZALO_PERSONAL_APP_ID'] ?? '';
57
+ const redirectUri = encodeURIComponent(process.env['ZALO_PERSONAL_REDIRECT_URI'] ?? '');
58
+ return `https://oauth.zaloapp.com/v4/permission?app_id=${appId}&redirect_uri=${redirectUri}&state=${state}`;
59
+ },
60
+ async exchangeCode(code) {
61
+ const appId = process.env['ZALO_PERSONAL_APP_ID'];
62
+ const appSecret = process.env['ZALO_PERSONAL_APP_SECRET'];
63
+ if (!appId || !appSecret) {
64
+ throw new Error('ZALO_PERSONAL_APP_ID and ZALO_PERSONAL_APP_SECRET required');
65
+ }
66
+ const res = await fetch('https://oauth.zaloapp.com/v4/access_token', {
67
+ method: 'POST',
68
+ headers: {
69
+ 'Content-Type': 'application/x-www-form-urlencoded',
70
+ 'secret_key': appSecret,
71
+ },
72
+ body: `code=${code}&app_id=${appId}&grant_type=authorization_code`,
73
+ });
74
+ const data = await res.json();
75
+ if (data.error || !data.access_token) {
76
+ throw new Error(data.error_name ?? 'Token exchange failed');
77
+ }
78
+ return {
79
+ accessToken: data.access_token,
80
+ refreshToken: data.refresh_token,
81
+ expiresIn: data.expires_in,
82
+ };
83
+ },
84
+ verifyWebhook(signature, _timestamp, body) {
85
+ const secret = currentConfig?.secretKey;
86
+ if (!secret) {
87
+ logger.warn('[ZaloPersonal] verifyWebhook: secretKey not configured');
88
+ return false;
89
+ }
90
+ try {
91
+ const expected = createHmac('sha256', secret).update(body, 'utf8').digest('hex');
92
+ return signature === expected;
93
+ }
94
+ catch (error) {
95
+ logger.error('[ZaloPersonal] verifyWebhook failed:', error instanceof Error ? error : undefined);
96
+ return false;
97
+ }
98
+ },
99
+ };
100
+ const outboundAdapter = {
101
+ async send(message) {
102
+ if (!currentConfig?.accessToken)
103
+ return { success: false, error: 'Access token not configured' };
104
+ if (!message.to)
105
+ return { success: false, error: 'Recipient user ID (to) is required' };
106
+ const result = await callZaloSocialApi('/message', 'POST', {
107
+ recipient: { user_id: message.to },
108
+ message: { text: message.text ?? '' },
109
+ });
110
+ return result.ok
111
+ ? { success: true, messageId: result.data?.data?.message_id }
112
+ : { success: false, error: result.error ?? 'Failed to send message' };
113
+ },
114
+ };
115
+ const inboundAdapter = {
116
+ parseMessage(payload) {
117
+ const event = payload;
118
+ if (!event?.from?.id || !event?.message?.text)
119
+ return null;
120
+ if (event.event_name && event.event_name !== 'user_send_text')
121
+ return null;
122
+ return {
123
+ id: event.message.msg_id ?? `zp-${Date.now()}`,
124
+ provider: 'zalo-personal',
125
+ accountId: currentConfig?.id ?? 'default',
126
+ senderId: event.from.id,
127
+ senderName: event.from.name ?? event.from.id,
128
+ senderUsername: event.from.id,
129
+ chatType: 'direct',
130
+ chatId: event.from.id,
131
+ chatName: undefined,
132
+ threadId: undefined,
133
+ replyToId: undefined,
134
+ text: event.message.text,
135
+ rawContent: event,
136
+ timestamp: event.timestamp ? new Date(event.timestamp) : new Date(),
137
+ attachments: undefined,
138
+ };
139
+ },
140
+ parseCommand(_payload) { return null; },
141
+ parseAction(_payload) { return null; },
142
+ buildCommandResponse(response) { return { text: response.text ?? '' }; },
143
+ buildActionResponse(response) { return { text: response.text ?? '' }; },
144
+ };
145
+ const statusAdapter = {
146
+ isConfigured(config) {
147
+ return !!config.accessToken;
148
+ },
149
+ async checkHealth(config) {
150
+ if (!config.accessToken)
151
+ return { connected: false, error: 'accessToken is required' };
152
+ const personalConfig = {
153
+ ...config,
154
+ provider: 'zalo-personal',
155
+ enabled: config.enabled ?? true,
156
+ };
157
+ const start = Date.now();
158
+ const result = await callZaloSocialApi('/info', 'GET', undefined, personalConfig);
159
+ const latencyMs = Date.now() - start;
160
+ if (result.ok && result.data) {
161
+ const profile = result.data;
162
+ return {
163
+ connected: true,
164
+ latencyMs,
165
+ details: { userId: profile.id, name: profile.name },
166
+ };
167
+ }
168
+ return { connected: false, latencyMs, error: result.error ?? 'Failed to connect' };
169
+ },
170
+ };
171
+ // --- Config ---
172
+ export function setZaloPersonalConfig(config) {
173
+ currentConfig = config;
174
+ }
175
+ export function clearZaloPersonalConfig() {
176
+ currentConfig = null;
177
+ }
178
+ // --- Provider export ---
179
+ export const zaloPersonalProvider = {
180
+ meta: {
181
+ id: 'zalo-personal',
182
+ name: 'Zalo Personal',
183
+ description: 'Zalo Social API for personal messaging in Vietnam',
184
+ icon: 'Zalo icon',
185
+ docsUrl: 'https://developers.zalo.me/docs/social-api/',
186
+ order: 24,
187
+ color: '#0068FF',
188
+ },
189
+ capabilities: {
190
+ chatTypes: ['direct'],
191
+ send: true,
192
+ receive: true,
193
+ slashCommands: false,
194
+ interactiveComponents: false,
195
+ reactions: false,
196
+ edit: false,
197
+ delete: false,
198
+ threads: false,
199
+ media: true,
200
+ richBlocks: false,
201
+ oauth: true,
202
+ webhooks: true,
203
+ realtime: false,
204
+ },
205
+ defaultConfig: { provider: 'zalo-personal', enabled: true },
206
+ configSchema: ZaloPersonalAccountConfigSchema,
207
+ auth: authAdapter,
208
+ outbound: outboundAdapter,
209
+ inbound: inboundAdapter,
210
+ status: statusAdapter,
211
+ };
212
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Chat Skills System
3
+ *
4
+ * Skills are packaged capabilities that handle specific types of requests.
5
+ * Each skill declares what it can do, patterns to match, and how to execute.
6
+ *
7
+ * Inspired by OpenClaw's adapter pattern and HuggingFace skills.
8
+ */
9
+ export interface ChatSkill {
10
+ id: string;
11
+ name: string;
12
+ description: string;
13
+ icon: string;
14
+ capabilities: SkillCapability[];
15
+ patterns: IntentPattern[];
16
+ preferredModel?: 'fast' | 'balanced' | 'powerful';
17
+ requiresContext?: ('task' | 'ticket' | 'project')[];
18
+ systemPromptAddition: string;
19
+ examples: string[];
20
+ }
21
+ export type SkillCapability = 'task_management' | 'code_generation' | 'code_review' | 'documentation' | 'analysis' | 'summarization' | 'search' | 'explanation' | 'planning' | 'writing' | 'debugging' | 'general_chat';
22
+ export interface IntentPattern {
23
+ pattern: RegExp;
24
+ confidence: number;
25
+ extract?: string[];
26
+ }
27
+ export interface SkillMatch {
28
+ skill: ChatSkill;
29
+ confidence: number;
30
+ matchedPattern?: string;
31
+ extractedVars?: Record<string, string>;
32
+ }
33
+ export declare const CHAT_SKILLS: ChatSkill[];
34
+ /**
35
+ * Detect user intent and match to the best skill
36
+ */
37
+ export declare function detectIntent(message: string, context?: {
38
+ hasTask?: boolean;
39
+ hasTicket?: boolean;
40
+ hasCode?: boolean;
41
+ }): SkillMatch[];
42
+ export interface ModelTier {
43
+ tier: 'fast' | 'balanced' | 'powerful';
44
+ models: string[];
45
+ description: string;
46
+ maxTokens: number;
47
+ costMultiplier: number;
48
+ }
49
+ export declare const MODEL_TIERS: ModelTier[];
50
+ /**
51
+ * Select the best model based on skill and message complexity
52
+ */
53
+ export declare function selectModel(skillMatch: SkillMatch, message: string, availableModels: string[]): {
54
+ model: string;
55
+ tier: ModelTier;
56
+ reason: string;
57
+ };
58
+ /**
59
+ * Build a system prompt enhanced with matched skill context
60
+ */
61
+ export declare function buildSkillPrompt(basePrompt: string, skillMatch: SkillMatch, context?: {
62
+ task?: {
63
+ id?: string;
64
+ title?: string;
65
+ status?: string;
66
+ agent?: string;
67
+ };
68
+ ticket?: {
69
+ id?: string;
70
+ title?: string;
71
+ status?: string;
72
+ };
73
+ }): string;
74
+ declare const _default: {
75
+ CHAT_SKILLS: ChatSkill[];
76
+ MODEL_TIERS: ModelTier[];
77
+ detectIntent: typeof detectIntent;
78
+ selectModel: typeof selectModel;
79
+ buildSkillPrompt: typeof buildSkillPrompt;
80
+ };
81
+ export default _default;
82
+ //# sourceMappingURL=skills.d.ts.map
@@ -0,0 +1,410 @@
1
+ /**
2
+ * Chat Skills System
3
+ *
4
+ * Skills are packaged capabilities that handle specific types of requests.
5
+ * Each skill declares what it can do, patterns to match, and how to execute.
6
+ *
7
+ * Inspired by OpenClaw's adapter pattern and HuggingFace skills.
8
+ */
9
+ // === Pre-compiled Patterns ===
10
+ // Defined at module scope to avoid recompilation
11
+ const TASK_PATTERNS = {
12
+ create: /(?:create|add|new|make)\s+(?:a\s+)?(?:task|ticket|issue)/i,
13
+ list: /(?:list|show|get|what are)\s+(?:my\s+)?(?:tasks|tickets|issues)/i,
14
+ status: /(?:status|progress|state)\s+(?:of\s+)?(?:task|ticket|issue)/i,
15
+ prioritize: /(?:prioritize|order|sort|rank)\s+(?:tasks|tickets|work)/i,
16
+ assign: /(?:assign|delegate|give)\s+(?:task|ticket|work)/i,
17
+ complete: /(?:complete|finish|done|close)\s+(?:task|ticket|issue)/i,
18
+ };
19
+ const CODE_PATTERNS = {
20
+ generate: /(?:write|create|generate|build|implement)\s+(?:code|function|class|component)/i,
21
+ review: /(?:review|check|analyze)\s+(?:this\s+)?(?:code|implementation|function)/i,
22
+ explain: /(?:explain|what does|how does)\s+(?:this\s+)?(?:code|function|work)/i,
23
+ debug: /(?:debug|fix|why\s+(?:is|does)|error|bug|issue\s+with)/i,
24
+ refactor: /(?:refactor|improve|optimize|clean\s+up)\s+(?:this\s+)?(?:code|function)/i,
25
+ test: /(?:write|create|generate)\s+(?:tests?|unit\s+tests?|test\s+cases?)/i,
26
+ };
27
+ const ANALYSIS_PATTERNS = {
28
+ costs: /(?:analyze|show|what are)\s+(?:my\s+)?(?:costs?|spending|usage|tokens?)/i,
29
+ performance: /(?:analyze|show|how is)\s+(?:performance|velocity|throughput)/i,
30
+ patterns: /(?:find|show|what are)\s+(?:patterns?|trends?|insights?)/i,
31
+ summary: /(?:summarize|summary|overview|recap)\s+(?:of\s+)?(?:today|week|month|progress)/i,
32
+ };
33
+ const DOC_PATTERNS = {
34
+ write: /(?:write|create|generate|draft)\s+(?:documentation|docs|readme|pr\s+description)/i,
35
+ ticket: /(?:write|create|draft)\s+(?:a\s+)?(?:ticket|issue|bug\s+report)/i,
36
+ commit: /(?:write|create|generate)\s+(?:commit\s+message|changelog)/i,
37
+ };
38
+ const GENERAL_PATTERNS = {
39
+ greeting: /^(?:hi|hello|hey|good\s+(?:morning|afternoon|evening))/i,
40
+ help: /(?:help|how\s+do\s+i|what\s+can\s+you|capabilities)/i,
41
+ thanks: /(?:thanks|thank\s+you|thx|ty)/i,
42
+ };
43
+ // === Skill Definitions ===
44
+ export const CHAT_SKILLS = [
45
+ {
46
+ id: 'task-manager',
47
+ name: 'Task Manager',
48
+ description: 'Create, manage, and organize tasks and tickets',
49
+ icon: 'clipboard-list',
50
+ capabilities: ['task_management', 'planning'],
51
+ patterns: [
52
+ { pattern: TASK_PATTERNS.create, confidence: 90, extract: ['taskType'] },
53
+ { pattern: TASK_PATTERNS.list, confidence: 85 },
54
+ { pattern: TASK_PATTERNS.status, confidence: 80 },
55
+ { pattern: TASK_PATTERNS.prioritize, confidence: 85 },
56
+ { pattern: TASK_PATTERNS.assign, confidence: 80 },
57
+ { pattern: TASK_PATTERNS.complete, confidence: 80 },
58
+ ],
59
+ preferredModel: 'fast',
60
+ systemPromptAddition: `
61
+ You are helping with task management in profClaw.
62
+
63
+ ## Available Actions
64
+ - Create tasks/tickets with: title, description, priority, labels
65
+ - List and filter tasks by status, priority, agent
66
+ - Update task status and assignments
67
+ - Prioritize and organize work
68
+
69
+ ## Important
70
+ - Always confirm before creating or modifying tasks
71
+ - Ask for missing required fields (title, description)
72
+ - Suggest appropriate priority based on context
73
+ - You can reference the profClaw API but cannot execute actions directly`,
74
+ examples: [
75
+ 'Create a task to fix the login bug',
76
+ 'What tasks are pending?',
77
+ 'Prioritize my work for today',
78
+ ],
79
+ },
80
+ {
81
+ id: 'code-assistant',
82
+ name: 'Code Assistant',
83
+ description: 'Write, review, debug, and explain code',
84
+ icon: 'code',
85
+ capabilities: ['code_generation', 'code_review', 'debugging', 'explanation'],
86
+ patterns: [
87
+ { pattern: CODE_PATTERNS.generate, confidence: 90 },
88
+ { pattern: CODE_PATTERNS.review, confidence: 90 },
89
+ { pattern: CODE_PATTERNS.explain, confidence: 85 },
90
+ { pattern: CODE_PATTERNS.debug, confidence: 90 },
91
+ { pattern: CODE_PATTERNS.refactor, confidence: 85 },
92
+ { pattern: CODE_PATTERNS.test, confidence: 85 },
93
+ ],
94
+ preferredModel: 'powerful',
95
+ systemPromptAddition: `
96
+ You are helping with code in profClaw.
97
+
98
+ ## Capabilities
99
+ - Write code in TypeScript, JavaScript, Python, and more
100
+ - Review code for bugs, security issues, and improvements
101
+ - Explain code and technical concepts
102
+ - Help debug issues
103
+ - Suggest refactoring and optimizations
104
+
105
+ ## Guidelines
106
+ - Use proper syntax highlighting with language tags
107
+ - Prefer TypeScript with strict types
108
+ - Follow existing code patterns when modifying
109
+ - Explain your reasoning for suggestions`,
110
+ examples: [
111
+ 'Write a function to validate email addresses',
112
+ 'Review this code for security issues',
113
+ 'Why is this throwing an error?',
114
+ ],
115
+ },
116
+ {
117
+ id: 'analyst',
118
+ name: 'Analyst',
119
+ description: 'Analyze costs, performance, and patterns',
120
+ icon: 'bar-chart-2',
121
+ capabilities: ['analysis', 'summarization'],
122
+ patterns: [
123
+ { pattern: ANALYSIS_PATTERNS.costs, confidence: 90 },
124
+ { pattern: ANALYSIS_PATTERNS.performance, confidence: 85 },
125
+ { pattern: ANALYSIS_PATTERNS.patterns, confidence: 80 },
126
+ { pattern: ANALYSIS_PATTERNS.summary, confidence: 85 },
127
+ ],
128
+ preferredModel: 'balanced',
129
+ systemPromptAddition: `
130
+ You are analyzing data in profClaw.
131
+
132
+ ## Available Analysis
133
+ - Token costs and spending by model/provider
134
+ - Task completion rates and velocity
135
+ - Agent performance comparisons
136
+ - Trends and patterns over time
137
+
138
+ ## Data Sources
139
+ You have access to:
140
+ - Task history (status, duration, agent)
141
+ - Token usage and costs
142
+ - Agent performance metrics
143
+
144
+ ## Guidelines
145
+ - Present data clearly with numbers
146
+ - Highlight actionable insights
147
+ - Compare against benchmarks when relevant`,
148
+ examples: [
149
+ 'Analyze my token costs this week',
150
+ 'Which agent is most efficient?',
151
+ 'Summarize progress this sprint',
152
+ ],
153
+ },
154
+ {
155
+ id: 'writer',
156
+ name: 'Writer',
157
+ description: 'Write documentation, tickets, and content',
158
+ icon: 'pen-tool',
159
+ capabilities: ['documentation', 'writing'],
160
+ patterns: [
161
+ { pattern: DOC_PATTERNS.write, confidence: 90 },
162
+ { pattern: DOC_PATTERNS.ticket, confidence: 90 },
163
+ { pattern: DOC_PATTERNS.commit, confidence: 85 },
164
+ ],
165
+ preferredModel: 'balanced',
166
+ systemPromptAddition: `
167
+ You are helping write content in profClaw.
168
+
169
+ ## Capabilities
170
+ - Write clear documentation
171
+ - Draft well-structured tickets and issues
172
+ - Create PR descriptions and commit messages
173
+ - Generate release notes and changelogs
174
+
175
+ ## Guidelines
176
+ - Be concise but complete
177
+ - Use proper formatting (markdown)
178
+ - Follow conventional commit style
179
+ - Include relevant context and acceptance criteria`,
180
+ examples: [
181
+ 'Write a ticket for adding dark mode',
182
+ 'Generate a commit message for these changes',
183
+ 'Draft documentation for the API',
184
+ ],
185
+ },
186
+ {
187
+ id: 'general',
188
+ name: 'General Assistant',
189
+ description: 'General help and conversation',
190
+ icon: 'bot',
191
+ capabilities: ['general_chat', 'explanation'],
192
+ patterns: [
193
+ { pattern: GENERAL_PATTERNS.greeting, confidence: 70 },
194
+ { pattern: GENERAL_PATTERNS.help, confidence: 80 },
195
+ { pattern: GENERAL_PATTERNS.thanks, confidence: 60 },
196
+ ],
197
+ preferredModel: 'fast',
198
+ systemPromptAddition: `
199
+ You are the profClaw assistant helping users with their questions.
200
+
201
+ ## What You Can Help With
202
+ - Task management and organization
203
+ - Code assistance and reviews
204
+ - Analysis and insights
205
+ - Documentation and writing
206
+
207
+ ## What You Cannot Do
208
+ - Execute code or run scripts
209
+ - Directly modify files or databases
210
+ - Access external services
211
+ - Remember information between sessions (use conversation history)
212
+
213
+ If asked to do something outside your capabilities, explain what you CAN do instead.`,
214
+ examples: [
215
+ 'Hello!',
216
+ 'What can you help me with?',
217
+ 'Thanks for your help',
218
+ ],
219
+ },
220
+ ];
221
+ // === Intent Detection ===
222
+ /**
223
+ * Detect user intent and match to the best skill
224
+ */
225
+ export function detectIntent(message, context) {
226
+ const matches = [];
227
+ for (const skill of CHAT_SKILLS) {
228
+ let bestMatch = {
229
+ confidence: 0,
230
+ };
231
+ // Check each pattern
232
+ for (const intentPattern of skill.patterns) {
233
+ const match = message.match(intentPattern.pattern);
234
+ if (match) {
235
+ let confidence = intentPattern.confidence;
236
+ // Boost confidence if context matches requirements
237
+ if (skill.requiresContext) {
238
+ if (skill.requiresContext.includes('task') && context?.hasTask) {
239
+ confidence += 10;
240
+ }
241
+ if (skill.requiresContext.includes('ticket') && context?.hasTicket) {
242
+ confidence += 10;
243
+ }
244
+ }
245
+ // Boost for code-related when code is present
246
+ if (skill.id === 'code-assistant' && context?.hasCode) {
247
+ confidence += 15;
248
+ }
249
+ if (confidence > bestMatch.confidence) {
250
+ bestMatch = {
251
+ confidence,
252
+ pattern: intentPattern.pattern.source,
253
+ vars: intentPattern.extract
254
+ ? extractVariables(match, intentPattern.extract)
255
+ : undefined,
256
+ };
257
+ }
258
+ }
259
+ }
260
+ if (bestMatch.confidence > 0) {
261
+ matches.push({
262
+ skill,
263
+ confidence: Math.min(bestMatch.confidence, 100),
264
+ matchedPattern: bestMatch.pattern,
265
+ extractedVars: bestMatch.vars,
266
+ });
267
+ }
268
+ }
269
+ // Sort by confidence (highest first)
270
+ matches.sort((a, b) => b.confidence - a.confidence);
271
+ // If no matches, fall back to general
272
+ if (matches.length === 0) {
273
+ const generalSkill = CHAT_SKILLS.find(s => s.id === 'general');
274
+ if (generalSkill) {
275
+ matches.push({
276
+ skill: generalSkill,
277
+ confidence: 50,
278
+ });
279
+ }
280
+ }
281
+ return matches;
282
+ }
283
+ /**
284
+ * Extract named variables from regex match
285
+ */
286
+ function extractVariables(match, names) {
287
+ const vars = {};
288
+ names.forEach((name, i) => {
289
+ if (match[i + 1]) {
290
+ vars[name] = match[i + 1];
291
+ }
292
+ });
293
+ return vars;
294
+ }
295
+ export const MODEL_TIERS = [
296
+ {
297
+ tier: 'fast',
298
+ models: ['llama3.2', 'gpt-4o-mini', 'claude-3-haiku', 'gemini-flash'],
299
+ description: 'Quick responses for simple tasks',
300
+ maxTokens: 2000,
301
+ costMultiplier: 0.1,
302
+ },
303
+ {
304
+ tier: 'balanced',
305
+ models: ['gpt-4o', 'claude-3-sonnet', 'gemini-pro'],
306
+ description: 'Good balance of speed and quality',
307
+ maxTokens: 4000,
308
+ costMultiplier: 1,
309
+ },
310
+ {
311
+ tier: 'powerful',
312
+ models: ['gpt-4-turbo', 'claude-3-opus', 'gemini-ultra'],
313
+ description: 'Best quality for complex tasks',
314
+ maxTokens: 8000,
315
+ costMultiplier: 5,
316
+ },
317
+ ];
318
+ /**
319
+ * Select the best model based on skill and message complexity
320
+ */
321
+ export function selectModel(skillMatch, message, availableModels) {
322
+ // Determine target tier based on skill preference
323
+ let targetTier = skillMatch.skill.preferredModel || 'balanced';
324
+ // Adjust based on message complexity
325
+ const complexity = estimateComplexity(message);
326
+ if (complexity > 0.7 && targetTier !== 'powerful') {
327
+ targetTier = 'powerful';
328
+ }
329
+ else if (complexity < 0.3 && targetTier === 'powerful') {
330
+ targetTier = 'balanced';
331
+ }
332
+ // Find the tier
333
+ const tier = MODEL_TIERS.find(t => t.tier === targetTier) || MODEL_TIERS[1];
334
+ // Find an available model in this tier (or fallback to any available)
335
+ let selectedModel = tier.models.find(m => availableModels.some(am => am.toLowerCase().includes(m.toLowerCase())));
336
+ if (!selectedModel) {
337
+ // Fallback to first available model
338
+ selectedModel = availableModels[0] || 'local';
339
+ }
340
+ return {
341
+ model: selectedModel,
342
+ tier,
343
+ reason: `${skillMatch.skill.name} with ${complexity > 0.5 ? 'complex' : 'simple'} request`,
344
+ };
345
+ }
346
+ /**
347
+ * Estimate message complexity (0-1 scale)
348
+ */
349
+ function estimateComplexity(message) {
350
+ let score = 0;
351
+ // Length factor
352
+ if (message.length > 500)
353
+ score += 0.2;
354
+ if (message.length > 1000)
355
+ score += 0.2;
356
+ // Code presence
357
+ if (message.includes('```'))
358
+ score += 0.3;
359
+ if (/function|class|interface|type\s+\w+/i.test(message))
360
+ score += 0.2;
361
+ // Technical terms
362
+ const technicalTerms = /(?:algorithm|architecture|optimize|refactor|debug|security|performance|async|concurrent)/gi;
363
+ const termMatches = message.match(technicalTerms);
364
+ if (termMatches)
365
+ score += Math.min(termMatches.length * 0.1, 0.3);
366
+ // Multiple questions
367
+ const questionCount = (message.match(/\?/g) || []).length;
368
+ if (questionCount > 1)
369
+ score += 0.1 * Math.min(questionCount, 3);
370
+ return Math.min(score, 1);
371
+ }
372
+ // === Skill-Enhanced System Prompt ===
373
+ /**
374
+ * Build a system prompt enhanced with matched skill context
375
+ */
376
+ export function buildSkillPrompt(basePrompt, skillMatch, context) {
377
+ let prompt = basePrompt;
378
+ // Add skill-specific instructions
379
+ prompt += `\n\n## Current Mode: ${skillMatch.skill.name}\n`;
380
+ prompt += skillMatch.skill.systemPromptAddition;
381
+ // Add grounding to prevent hallucinations
382
+ prompt += `\n\n## Important Constraints
383
+ - Only claim capabilities listed above
384
+ - If you cannot do something, say so clearly and suggest alternatives
385
+ - Do not invent features or claim to run scripts you cannot execute
386
+ - Stay focused on what the user is asking`;
387
+ // Add context if available
388
+ if (context?.task) {
389
+ prompt += `\n\n## Current Task Context
390
+ - Task ID: ${context.task.id}
391
+ - Title: ${context.task.title}
392
+ - Status: ${context.task.status}
393
+ - Agent: ${context.task.agent || 'unassigned'}`;
394
+ }
395
+ if (context?.ticket) {
396
+ prompt += `\n\n## Current Ticket Context
397
+ - Ticket ID: ${context.ticket.id}
398
+ - Title: ${context.ticket.title}
399
+ - Status: ${context.ticket.status}`;
400
+ }
401
+ return prompt;
402
+ }
403
+ export default {
404
+ CHAT_SKILLS,
405
+ MODEL_TIERS,
406
+ detectIntent,
407
+ selectModel,
408
+ buildSkillPrompt,
409
+ };
410
+ //# sourceMappingURL=skills.js.map