denchclaw 2.4.5 → 2.5.0

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 (626) hide show
  1. package/README.md +31 -0
  2. package/apps/web/.next/standalone/apps/web/.next/BUILD_ID +1 -1
  3. package/apps/web/.next/standalone/apps/web/.next/app-build-manifest.json +327 -198
  4. package/apps/web/.next/standalone/apps/web/.next/app-path-routes-manifest.json +44 -26
  5. package/apps/web/.next/standalone/apps/web/.next/build-manifest.json +5 -5
  6. package/apps/web/.next/standalone/apps/web/.next/cache/config.json +3 -3
  7. package/apps/web/.next/standalone/apps/web/.next/prerender-manifest.json +3 -3
  8. package/apps/web/.next/standalone/apps/web/.next/react-loadable-manifest.json +6 -6
  9. package/apps/web/.next/standalone/apps/web/.next/required-server-files.json +1 -1
  10. package/apps/web/.next/standalone/apps/web/.next/routes-manifest.json +25 -1
  11. package/apps/web/.next/standalone/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  12. package/apps/web/.next/standalone/apps/web/.next/server/app/api/apps/cron/route_client-reference-manifest.js +1 -1
  13. package/apps/web/.next/standalone/apps/web/.next/server/app/api/apps/proxy/route_client-reference-manifest.js +1 -1
  14. package/apps/web/.next/standalone/apps/web/.next/server/app/api/apps/route_client-reference-manifest.js +1 -1
  15. package/apps/web/.next/standalone/apps/web/.next/server/app/api/apps/serve/[...path]/route_client-reference-manifest.js +1 -1
  16. package/apps/web/.next/standalone/apps/web/.next/server/app/api/apps/store/route_client-reference-manifest.js +1 -1
  17. package/apps/web/.next/standalone/apps/web/.next/server/app/api/apps/webhooks/[...path]/route_client-reference-manifest.js +1 -1
  18. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/active/route_client-reference-manifest.js +1 -1
  19. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/route.js +2 -2
  20. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/route_client-reference-manifest.js +1 -1
  21. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/runs/route.js +1 -1
  22. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/runs/route_client-reference-manifest.js +1 -1
  23. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/stop/route.js +1 -1
  24. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/stop/route_client-reference-manifest.js +1 -1
  25. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/stream/route_client-reference-manifest.js +1 -1
  26. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/subagents/route.js +1 -1
  27. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/subagents/route_client-reference-manifest.js +1 -1
  28. package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/callback/route.js +42 -0
  29. package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/callback/route.js.nft.json +1 -0
  30. package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/callback/route_client-reference-manifest.js +1 -0
  31. package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/connect/route.js +1 -0
  32. package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/connect/route.js.nft.json +1 -0
  33. package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/connect/route_client-reference-manifest.js +1 -0
  34. package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/connections/route.js +1 -0
  35. package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/connections/route.js.nft.json +1 -0
  36. package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/connections/route_client-reference-manifest.js +1 -0
  37. package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/disconnect/route.js +1 -0
  38. package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/disconnect/route.js.nft.json +1 -0
  39. package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/disconnect/route_client-reference-manifest.js +1 -0
  40. package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/status/route.js +1 -0
  41. package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/status/route.js.nft.json +1 -0
  42. package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/status/route_client-reference-manifest.js +1 -0
  43. package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/tool-index/route.js +1 -0
  44. package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/tool-index/route.js.nft.json +1 -0
  45. package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/tool-index/route_client-reference-manifest.js +1 -0
  46. package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/toolkits/route.js +1 -0
  47. package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/toolkits/route.js.nft.json +1 -0
  48. package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/toolkits/route_client-reference-manifest.js +1 -0
  49. package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/jobs/[jobId]/runs/route_client-reference-manifest.js +1 -1
  50. package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/jobs/route_client-reference-manifest.js +1 -1
  51. package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/runs/[sessionId]/route_client-reference-manifest.js +1 -1
  52. package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/runs/search-transcript/route_client-reference-manifest.js +1 -1
  53. package/apps/web/.next/standalone/apps/web/.next/server/app/api/feedback/route.js +1 -1
  54. package/apps/web/.next/standalone/apps/web/.next/server/app/api/feedback/route_client-reference-manifest.js +1 -1
  55. package/apps/web/.next/standalone/apps/web/.next/server/app/api/gateway/channels/route_client-reference-manifest.js +1 -1
  56. package/apps/web/.next/standalone/apps/web/.next/server/app/api/gateway/chat/route_client-reference-manifest.js +1 -1
  57. package/apps/web/.next/standalone/apps/web/.next/server/app/api/gateway/chat/stream/route_client-reference-manifest.js +1 -1
  58. package/apps/web/.next/standalone/apps/web/.next/server/app/api/gateway/sessions/[id]/route_client-reference-manifest.js +1 -1
  59. package/apps/web/.next/standalone/apps/web/.next/server/app/api/gateway/sessions/route_client-reference-manifest.js +1 -1
  60. package/apps/web/.next/standalone/apps/web/.next/server/app/api/integrations/[id]/toggle/route.js +1 -0
  61. package/apps/web/.next/standalone/apps/web/.next/server/app/api/integrations/[id]/toggle/route.js.nft.json +1 -0
  62. package/apps/web/.next/standalone/apps/web/.next/server/app/api/integrations/[id]/toggle/route_client-reference-manifest.js +1 -0
  63. package/apps/web/.next/standalone/apps/web/.next/server/app/api/integrations/repair/route.js +1 -0
  64. package/apps/web/.next/standalone/apps/web/.next/server/app/api/integrations/repair/route.js.nft.json +1 -0
  65. package/apps/web/.next/standalone/apps/web/.next/server/app/api/integrations/repair/route_client-reference-manifest.js +1 -0
  66. package/apps/web/.next/standalone/apps/web/.next/server/app/api/integrations/route.js +1 -0
  67. package/apps/web/.next/standalone/apps/web/.next/server/app/api/integrations/route.js.nft.json +1 -0
  68. package/apps/web/.next/standalone/apps/web/.next/server/app/api/integrations/route_client-reference-manifest.js +1 -0
  69. package/apps/web/.next/standalone/apps/web/.next/server/app/api/memories/route_client-reference-manifest.js +1 -1
  70. package/apps/web/.next/standalone/apps/web/.next/server/app/api/profiles/route_client-reference-manifest.js +1 -1
  71. package/apps/web/.next/standalone/apps/web/.next/server/app/api/profiles/switch/route_client-reference-manifest.js +1 -1
  72. package/apps/web/.next/standalone/apps/web/.next/server/app/api/sessions/[sessionId]/route_client-reference-manifest.js +1 -1
  73. package/apps/web/.next/standalone/apps/web/.next/server/app/api/sessions/route.js +1 -1
  74. package/apps/web/.next/standalone/apps/web/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  75. package/apps/web/.next/standalone/apps/web/.next/server/app/api/settings/cloud/route.js +1 -0
  76. package/apps/web/.next/standalone/apps/web/.next/server/app/api/settings/cloud/route.js.nft.json +1 -0
  77. package/apps/web/.next/standalone/apps/web/.next/server/app/api/settings/cloud/route_client-reference-manifest.js +1 -0
  78. package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/[slug]/content/route.js +1 -0
  79. package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/[slug]/content/route.js.nft.json +1 -0
  80. package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/[slug]/content/route_client-reference-manifest.js +1 -0
  81. package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/[slug]/route.js +1 -0
  82. package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/[slug]/route.js.nft.json +1 -0
  83. package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/[slug]/route_client-reference-manifest.js +1 -0
  84. package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/browse/route.js +1 -0
  85. package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/browse/route.js.nft.json +1 -0
  86. package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/browse/route_client-reference-manifest.js +1 -0
  87. package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/install/route.js +1 -0
  88. package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/install/route.js.nft.json +1 -0
  89. package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/install/route_client-reference-manifest.js +1 -0
  90. package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/route.js +2 -1
  91. package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  92. package/apps/web/.next/standalone/apps/web/.next/server/app/api/terminal/port/route_client-reference-manifest.js +1 -1
  93. package/apps/web/.next/standalone/apps/web/.next/server/app/api/voice/speech/route.js +1 -0
  94. package/apps/web/.next/standalone/apps/web/.next/server/app/api/voice/speech/route.js.nft.json +1 -0
  95. package/apps/web/.next/standalone/apps/web/.next/server/app/api/voice/speech/route_client-reference-manifest.js +1 -0
  96. package/apps/web/.next/standalone/apps/web/.next/server/app/api/voice/transcribe/route.js +1 -0
  97. package/apps/web/.next/standalone/apps/web/.next/server/app/api/voice/transcribe/route.js.nft.json +1 -0
  98. package/apps/web/.next/standalone/apps/web/.next/server/app/api/voice/transcribe/route_client-reference-manifest.js +1 -0
  99. package/apps/web/.next/standalone/apps/web/.next/server/app/api/voice/voices/route.js +1 -0
  100. package/apps/web/.next/standalone/apps/web/.next/server/app/api/voice/voices/route.js.nft.json +1 -0
  101. package/apps/web/.next/standalone/apps/web/.next/server/app/api/voice/voices/route_client-reference-manifest.js +1 -0
  102. package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/[id]/messages/route_client-reference-manifest.js +1 -1
  103. package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/[id]/route.js +1 -1
  104. package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/[id]/route_client-reference-manifest.js +1 -1
  105. package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/route.js +1 -1
  106. package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/route_client-reference-manifest.js +1 -1
  107. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/assets/[...path]/route_client-reference-manifest.js +1 -1
  108. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/browse/route_client-reference-manifest.js +1 -1
  109. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/browse-file/route_client-reference-manifest.js +1 -1
  110. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/context/route_client-reference-manifest.js +1 -1
  111. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/copy/route_client-reference-manifest.js +1 -1
  112. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/db/introspect/route_client-reference-manifest.js +1 -1
  113. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/db/query/route_client-reference-manifest.js +1 -1
  114. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/delete/route.js +1 -1
  115. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/delete/route_client-reference-manifest.js +1 -1
  116. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/execute/route_client-reference-manifest.js +1 -1
  117. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/file/route_client-reference-manifest.js +1 -1
  118. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/init/route.js +2 -2
  119. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/init/route_client-reference-manifest.js +1 -1
  120. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/link-preview/route_client-reference-manifest.js +1 -1
  121. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/list/route_client-reference-manifest.js +1 -1
  122. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/mkdir/route_client-reference-manifest.js +1 -1
  123. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/move/route_client-reference-manifest.js +1 -1
  124. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/actions/route_client-reference-manifest.js +1 -1
  125. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/actions/runs/route_client-reference-manifest.js +1 -1
  126. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/display-field/route_client-reference-manifest.js +1 -1
  127. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/[id]/content/route_client-reference-manifest.js +1 -1
  128. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/[id]/route_client-reference-manifest.js +1 -1
  129. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/bulk-delete/route_client-reference-manifest.js +1 -1
  130. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/options/route_client-reference-manifest.js +1 -1
  131. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/route.js +1 -1
  132. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/route_client-reference-manifest.js +1 -1
  133. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/fields/[fieldId]/enum-rename/route_client-reference-manifest.js +1 -1
  134. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/fields/[fieldId]/route_client-reference-manifest.js +1 -1
  135. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/fields/reorder/route_client-reference-manifest.js +1 -1
  136. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/fields/route_client-reference-manifest.js +1 -1
  137. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/route_client-reference-manifest.js +1 -1
  138. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/views/route_client-reference-manifest.js +1 -1
  139. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/open-file/route_client-reference-manifest.js +1 -1
  140. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/path-info/route_client-reference-manifest.js +1 -1
  141. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/query/route_client-reference-manifest.js +1 -1
  142. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/raw-file/route_client-reference-manifest.js +1 -1
  143. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/rename/route_client-reference-manifest.js +1 -1
  144. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/reports/execute/route.js +1 -1
  145. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/reports/execute/route_client-reference-manifest.js +1 -1
  146. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/search-index/route_client-reference-manifest.js +1 -1
  147. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/suggest-files/route_client-reference-manifest.js +1 -1
  148. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/switch/route.js +1 -1
  149. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/switch/route_client-reference-manifest.js +1 -1
  150. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/thumbnail/route_client-reference-manifest.js +1 -1
  151. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/tree/route.js +1 -1
  152. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/tree/route_client-reference-manifest.js +1 -1
  153. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/upload/route.js +1 -1
  154. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/upload/route_client-reference-manifest.js +1 -1
  155. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/virtual-file/route_client-reference-manifest.js +1 -1
  156. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/watch/route_client-reference-manifest.js +1 -1
  157. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/write-binary/route_client-reference-manifest.js +1 -1
  158. package/apps/web/.next/standalone/apps/web/.next/server/app/page.js +21 -21
  159. package/apps/web/.next/standalone/apps/web/.next/server/app/page.js.nft.json +1 -1
  160. package/apps/web/.next/standalone/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
  161. package/apps/web/.next/standalone/apps/web/.next/server/app/workspace/page_client-reference-manifest.js +1 -1
  162. package/apps/web/.next/standalone/apps/web/.next/server/app-paths-manifest.json +44 -26
  163. package/apps/web/.next/standalone/apps/web/.next/server/chunks/6426.js +2 -2
  164. package/apps/web/.next/standalone/apps/web/.next/server/chunks/6787.js +1 -1
  165. package/apps/web/.next/standalone/apps/web/.next/server/chunks/687.js +7 -7
  166. package/apps/web/.next/standalone/apps/web/.next/server/chunks/737.js +3 -3
  167. package/apps/web/.next/standalone/apps/web/.next/server/chunks/7488.js +1 -0
  168. package/apps/web/.next/standalone/apps/web/.next/server/chunks/8306.js +1 -0
  169. package/apps/web/.next/standalone/apps/web/.next/server/chunks/8650.js +1 -0
  170. package/apps/web/.next/standalone/apps/web/.next/server/chunks/8693.js +481 -0
  171. package/apps/web/.next/standalone/apps/web/.next/server/functions-config-manifest.json +25 -11
  172. package/apps/web/.next/standalone/apps/web/.next/server/middleware-build-manifest.js +1 -1
  173. package/apps/web/.next/standalone/apps/web/.next/server/middleware-react-loadable-manifest.js +1 -1
  174. package/apps/web/.next/standalone/apps/web/.next/server/pages/500.html +1 -1
  175. package/apps/web/.next/standalone/apps/web/.next/server/server-reference-manifest.json +1 -1
  176. package/apps/web/.next/standalone/apps/web/.next/static/U0A79z_eUsEUNVdXxxyc3/_buildManifest.js +1 -0
  177. package/apps/web/.next/{static/chunks/eca025f9.538b3f5d85eeef79.js → standalone/apps/web/.next/static/chunks/0c958985.3ccb9c3aea7cd083.js} +2 -2
  178. package/apps/web/.next/standalone/apps/web/.next/static/chunks/3999.548dd8ec57152081.js +1 -0
  179. package/apps/web/.next/standalone/apps/web/.next/static/chunks/{2489.b5e1ce196331926c.js → 4870.507a55774d37d072.js} +1 -1
  180. package/apps/web/.next/standalone/apps/web/.next/static/chunks/{7812.c1435a724050dfec.js → 5431.a2353a2aa8c55a67.js} +1 -1
  181. package/apps/web/.next/standalone/apps/web/.next/static/chunks/7f67b0df-54679694c67e2b76.js +1 -0
  182. package/apps/web/.next/standalone/apps/web/.next/static/chunks/80f1cbb7-c9635d81d9fe6819.js +1 -0
  183. package/apps/web/.next/standalone/apps/web/.next/static/chunks/8532165e-abce74bbb270ef26.js +1 -0
  184. package/apps/web/.next/standalone/apps/web/.next/static/chunks/9372.e71f5b96da3f9dfd.js +1 -0
  185. package/apps/web/.next/standalone/apps/web/.next/static/chunks/9702-d646bcd7cb8fe6bf.js +135 -0
  186. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/cron/route-982235d988e17f31.js +1 -0
  187. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/proxy/route-982235d988e17f31.js +1 -0
  188. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/route-982235d988e17f31.js +1 -0
  189. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/serve/[...path]/route-982235d988e17f31.js +1 -0
  190. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/store/route-982235d988e17f31.js +1 -0
  191. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/webhooks/[...path]/route-982235d988e17f31.js +1 -0
  192. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/active/route-982235d988e17f31.js +1 -0
  193. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/route-982235d988e17f31.js +1 -0
  194. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/runs/route-982235d988e17f31.js +1 -0
  195. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/stop/route-982235d988e17f31.js +1 -0
  196. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/stream/route-982235d988e17f31.js +1 -0
  197. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/subagents/route-982235d988e17f31.js +1 -0
  198. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/composio/callback/route-982235d988e17f31.js +1 -0
  199. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/composio/connect/route-982235d988e17f31.js +1 -0
  200. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/composio/connections/route-982235d988e17f31.js +1 -0
  201. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/composio/disconnect/route-982235d988e17f31.js +1 -0
  202. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/composio/status/route-982235d988e17f31.js +1 -0
  203. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/composio/tool-index/route-982235d988e17f31.js +1 -0
  204. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/composio/toolkits/route-982235d988e17f31.js +1 -0
  205. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/jobs/[jobId]/runs/route-982235d988e17f31.js +1 -0
  206. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/jobs/route-982235d988e17f31.js +1 -0
  207. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/runs/[sessionId]/route-982235d988e17f31.js +1 -0
  208. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/runs/search-transcript/route-982235d988e17f31.js +1 -0
  209. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/feedback/route-982235d988e17f31.js +1 -0
  210. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/gateway/channels/route-982235d988e17f31.js +1 -0
  211. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/gateway/chat/route-982235d988e17f31.js +1 -0
  212. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/gateway/chat/stream/route-982235d988e17f31.js +1 -0
  213. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/gateway/sessions/[id]/route-982235d988e17f31.js +1 -0
  214. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/gateway/sessions/route-982235d988e17f31.js +1 -0
  215. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/integrations/[id]/toggle/route-982235d988e17f31.js +1 -0
  216. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/integrations/repair/route-982235d988e17f31.js +1 -0
  217. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/integrations/route-982235d988e17f31.js +1 -0
  218. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/memories/route-982235d988e17f31.js +1 -0
  219. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/profiles/route-982235d988e17f31.js +1 -0
  220. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/profiles/switch/route-982235d988e17f31.js +1 -0
  221. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/sessions/[sessionId]/route-982235d988e17f31.js +1 -0
  222. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/sessions/route-982235d988e17f31.js +1 -0
  223. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/settings/cloud/route-982235d988e17f31.js +1 -0
  224. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/skills/[slug]/content/route-982235d988e17f31.js +1 -0
  225. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/skills/[slug]/route-982235d988e17f31.js +1 -0
  226. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/skills/browse/route-982235d988e17f31.js +1 -0
  227. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/skills/install/route-982235d988e17f31.js +1 -0
  228. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/skills/route-982235d988e17f31.js +1 -0
  229. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/terminal/port/route-982235d988e17f31.js +1 -0
  230. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/voice/speech/route-982235d988e17f31.js +1 -0
  231. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/voice/transcribe/route-982235d988e17f31.js +1 -0
  232. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/voice/voices/route-982235d988e17f31.js +1 -0
  233. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/[id]/messages/route-982235d988e17f31.js +1 -0
  234. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/[id]/route-982235d988e17f31.js +1 -0
  235. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/route-982235d988e17f31.js +1 -0
  236. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/assets/[...path]/route-982235d988e17f31.js +1 -0
  237. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/browse/route-982235d988e17f31.js +1 -0
  238. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/browse-file/route-982235d988e17f31.js +1 -0
  239. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/context/route-982235d988e17f31.js +1 -0
  240. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/copy/route-982235d988e17f31.js +1 -0
  241. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/db/introspect/route-982235d988e17f31.js +1 -0
  242. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/db/query/route-982235d988e17f31.js +1 -0
  243. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/delete/route-982235d988e17f31.js +1 -0
  244. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/execute/route-982235d988e17f31.js +1 -0
  245. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/file/route-982235d988e17f31.js +1 -0
  246. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/init/route-982235d988e17f31.js +1 -0
  247. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/link-preview/route-982235d988e17f31.js +1 -0
  248. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/list/route-982235d988e17f31.js +1 -0
  249. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/mkdir/route-982235d988e17f31.js +1 -0
  250. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/move/route-982235d988e17f31.js +1 -0
  251. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/actions/route-982235d988e17f31.js +1 -0
  252. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/actions/runs/route-982235d988e17f31.js +1 -0
  253. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/display-field/route-982235d988e17f31.js +1 -0
  254. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/content/route-982235d988e17f31.js +1 -0
  255. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/route-982235d988e17f31.js +1 -0
  256. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/bulk-delete/route-982235d988e17f31.js +1 -0
  257. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/options/route-982235d988e17f31.js +1 -0
  258. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/route-982235d988e17f31.js +1 -0
  259. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/enum-rename/route-982235d988e17f31.js +1 -0
  260. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/route-982235d988e17f31.js +1 -0
  261. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/reorder/route-982235d988e17f31.js +1 -0
  262. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/route-982235d988e17f31.js +1 -0
  263. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/route-982235d988e17f31.js +1 -0
  264. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/views/route-982235d988e17f31.js +1 -0
  265. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/open-file/route-982235d988e17f31.js +1 -0
  266. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/path-info/route-982235d988e17f31.js +1 -0
  267. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/query/route-982235d988e17f31.js +1 -0
  268. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/raw-file/route-982235d988e17f31.js +1 -0
  269. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/rename/route-982235d988e17f31.js +1 -0
  270. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/reports/execute/route-982235d988e17f31.js +1 -0
  271. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/search-index/route-982235d988e17f31.js +1 -0
  272. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/suggest-files/route-982235d988e17f31.js +1 -0
  273. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/switch/route-982235d988e17f31.js +1 -0
  274. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/thumbnail/route-982235d988e17f31.js +1 -0
  275. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/tree/route-982235d988e17f31.js +1 -0
  276. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/upload/route-982235d988e17f31.js +1 -0
  277. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/virtual-file/route-982235d988e17f31.js +1 -0
  278. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/watch/route-982235d988e17f31.js +1 -0
  279. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/write-binary/route-982235d988e17f31.js +1 -0
  280. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/{layout-a597017db7df698d.js → layout-8757ef9cb1826e76.js} +1 -1
  281. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/page-05ff98c264c1c0cf.js +1 -0
  282. package/apps/web/.next/standalone/apps/web/.next/static/chunks/webpack-d4501ef5cbbcf069.js +1 -0
  283. package/apps/web/.next/standalone/apps/web/.next/static/css/4f71a2dee93c9f97.css +1 -0
  284. package/apps/web/.next/standalone/apps/web/app/api/skills/route.test.ts +672 -0
  285. package/apps/web/.next/standalone/apps/web/package.json +2 -0
  286. package/apps/web/.next/standalone/apps/web/public/integrations/exa-logomark.svg +4 -0
  287. package/apps/web/.next/standalone/apps/web/public/models/deepseek.ico +0 -0
  288. package/apps/web/.next/standalone/apps/web/public/models/kimi.png +0 -0
  289. package/apps/web/.next/standalone/apps/web/public/models/kimi.svg +89 -0
  290. package/apps/web/.next/standalone/apps/web/public/models/minimax.png +0 -0
  291. package/apps/web/.next/standalone/apps/web/server.js +1 -1
  292. package/apps/web/.next/standalone/extensions/apollo-enrichment/index.ts +268 -0
  293. package/apps/web/.next/standalone/extensions/apollo-enrichment/openclaw.plugin.json +16 -0
  294. package/apps/web/.next/standalone/extensions/apollo-enrichment/package.json +8 -0
  295. package/apps/web/.next/standalone/extensions/dench-ai-gateway/composio-bridge.ts +474 -0
  296. package/apps/web/.next/standalone/extensions/dench-ai-gateway/config-patch.ts +83 -0
  297. package/apps/web/.next/standalone/extensions/dench-ai-gateway/index.test.ts +281 -0
  298. package/apps/web/.next/standalone/extensions/dench-ai-gateway/index.ts +325 -0
  299. package/apps/web/.next/standalone/extensions/dench-ai-gateway/models.ts +325 -0
  300. package/apps/web/.next/standalone/extensions/dench-ai-gateway/openclaw.plugin.json +27 -0
  301. package/apps/web/.next/standalone/extensions/dench-ai-gateway/package.json +8 -0
  302. package/apps/web/.next/standalone/extensions/dench-identity/composio-cheat-sheet.test.ts +146 -0
  303. package/apps/web/.next/standalone/extensions/dench-identity/composio-cheat-sheet.ts +197 -0
  304. package/apps/web/.next/standalone/extensions/dench-identity/index.test.ts +361 -0
  305. package/apps/web/.next/standalone/extensions/dench-identity/index.ts +920 -0
  306. package/apps/web/.next/standalone/extensions/dench-identity/openclaw.plugin.json +17 -0
  307. package/apps/web/.next/standalone/extensions/dench-identity/package.json +8 -0
  308. package/apps/web/.next/standalone/extensions/exa-search/index.ts +363 -0
  309. package/apps/web/.next/standalone/extensions/exa-search/openclaw.plugin.json +16 -0
  310. package/apps/web/.next/standalone/extensions/exa-search/package.json +8 -0
  311. package/apps/web/.next/standalone/extensions/posthog-analytics/index.ts +190 -0
  312. package/apps/web/.next/standalone/extensions/posthog-analytics/lib/build-env.js +3 -0
  313. package/apps/web/.next/standalone/extensions/posthog-analytics/lib/build-env.ts +3 -0
  314. package/apps/web/.next/standalone/extensions/posthog-analytics/lib/event-mappers.ts +403 -0
  315. package/apps/web/.next/standalone/extensions/posthog-analytics/lib/posthog-client.ts +105 -0
  316. package/apps/web/.next/standalone/extensions/posthog-analytics/lib/privacy.ts +294 -0
  317. package/apps/web/.next/standalone/extensions/posthog-analytics/lib/trace-context.ts +103 -0
  318. package/apps/web/.next/standalone/extensions/posthog-analytics/lib/types.ts +28 -0
  319. package/apps/web/.next/standalone/extensions/posthog-analytics/openclaw.plugin.json +22 -0
  320. package/apps/web/.next/standalone/extensions/posthog-analytics/package.json +8 -0
  321. package/apps/web/.next/standalone/extensions/vitest.config.ts +13 -0
  322. package/apps/web/.next/standalone/package.json +2 -2
  323. package/apps/web/.next/static/U0A79z_eUsEUNVdXxxyc3/_buildManifest.js +1 -0
  324. package/apps/web/.next/{standalone/apps/web/.next/static/chunks/eca025f9.538b3f5d85eeef79.js → static/chunks/0c958985.3ccb9c3aea7cd083.js} +2 -2
  325. package/apps/web/.next/static/chunks/3999.548dd8ec57152081.js +1 -0
  326. package/apps/web/.next/static/chunks/{2489.b5e1ce196331926c.js → 4870.507a55774d37d072.js} +1 -1
  327. package/apps/web/.next/static/chunks/{7812.c1435a724050dfec.js → 5431.a2353a2aa8c55a67.js} +1 -1
  328. package/apps/web/.next/static/chunks/7f67b0df-54679694c67e2b76.js +1 -0
  329. package/apps/web/.next/static/chunks/80f1cbb7-c9635d81d9fe6819.js +1 -0
  330. package/apps/web/.next/static/chunks/8532165e-abce74bbb270ef26.js +1 -0
  331. package/apps/web/.next/static/chunks/9372.e71f5b96da3f9dfd.js +1 -0
  332. package/apps/web/.next/static/chunks/9702-d646bcd7cb8fe6bf.js +135 -0
  333. package/apps/web/.next/static/chunks/app/api/apps/cron/route-982235d988e17f31.js +1 -0
  334. package/apps/web/.next/static/chunks/app/api/apps/proxy/route-982235d988e17f31.js +1 -0
  335. package/apps/web/.next/static/chunks/app/api/apps/route-982235d988e17f31.js +1 -0
  336. package/apps/web/.next/static/chunks/app/api/apps/serve/[...path]/route-982235d988e17f31.js +1 -0
  337. package/apps/web/.next/static/chunks/app/api/apps/store/route-982235d988e17f31.js +1 -0
  338. package/apps/web/.next/static/chunks/app/api/apps/webhooks/[...path]/route-982235d988e17f31.js +1 -0
  339. package/apps/web/.next/static/chunks/app/api/chat/active/route-982235d988e17f31.js +1 -0
  340. package/apps/web/.next/static/chunks/app/api/chat/route-982235d988e17f31.js +1 -0
  341. package/apps/web/.next/static/chunks/app/api/chat/runs/route-982235d988e17f31.js +1 -0
  342. package/apps/web/.next/static/chunks/app/api/chat/stop/route-982235d988e17f31.js +1 -0
  343. package/apps/web/.next/static/chunks/app/api/chat/stream/route-982235d988e17f31.js +1 -0
  344. package/apps/web/.next/static/chunks/app/api/chat/subagents/route-982235d988e17f31.js +1 -0
  345. package/apps/web/.next/static/chunks/app/api/composio/callback/route-982235d988e17f31.js +1 -0
  346. package/apps/web/.next/static/chunks/app/api/composio/connect/route-982235d988e17f31.js +1 -0
  347. package/apps/web/.next/static/chunks/app/api/composio/connections/route-982235d988e17f31.js +1 -0
  348. package/apps/web/.next/static/chunks/app/api/composio/disconnect/route-982235d988e17f31.js +1 -0
  349. package/apps/web/.next/static/chunks/app/api/composio/status/route-982235d988e17f31.js +1 -0
  350. package/apps/web/.next/static/chunks/app/api/composio/tool-index/route-982235d988e17f31.js +1 -0
  351. package/apps/web/.next/static/chunks/app/api/composio/toolkits/route-982235d988e17f31.js +1 -0
  352. package/apps/web/.next/static/chunks/app/api/cron/jobs/[jobId]/runs/route-982235d988e17f31.js +1 -0
  353. package/apps/web/.next/static/chunks/app/api/cron/jobs/route-982235d988e17f31.js +1 -0
  354. package/apps/web/.next/static/chunks/app/api/cron/runs/[sessionId]/route-982235d988e17f31.js +1 -0
  355. package/apps/web/.next/static/chunks/app/api/cron/runs/search-transcript/route-982235d988e17f31.js +1 -0
  356. package/apps/web/.next/static/chunks/app/api/feedback/route-982235d988e17f31.js +1 -0
  357. package/apps/web/.next/static/chunks/app/api/gateway/channels/route-982235d988e17f31.js +1 -0
  358. package/apps/web/.next/static/chunks/app/api/gateway/chat/route-982235d988e17f31.js +1 -0
  359. package/apps/web/.next/static/chunks/app/api/gateway/chat/stream/route-982235d988e17f31.js +1 -0
  360. package/apps/web/.next/static/chunks/app/api/gateway/sessions/[id]/route-982235d988e17f31.js +1 -0
  361. package/apps/web/.next/static/chunks/app/api/gateway/sessions/route-982235d988e17f31.js +1 -0
  362. package/apps/web/.next/static/chunks/app/api/integrations/[id]/toggle/route-982235d988e17f31.js +1 -0
  363. package/apps/web/.next/static/chunks/app/api/integrations/repair/route-982235d988e17f31.js +1 -0
  364. package/apps/web/.next/static/chunks/app/api/integrations/route-982235d988e17f31.js +1 -0
  365. package/apps/web/.next/static/chunks/app/api/memories/route-982235d988e17f31.js +1 -0
  366. package/apps/web/.next/static/chunks/app/api/profiles/route-982235d988e17f31.js +1 -0
  367. package/apps/web/.next/static/chunks/app/api/profiles/switch/route-982235d988e17f31.js +1 -0
  368. package/apps/web/.next/static/chunks/app/api/sessions/[sessionId]/route-982235d988e17f31.js +1 -0
  369. package/apps/web/.next/static/chunks/app/api/sessions/route-982235d988e17f31.js +1 -0
  370. package/apps/web/.next/static/chunks/app/api/settings/cloud/route-982235d988e17f31.js +1 -0
  371. package/apps/web/.next/static/chunks/app/api/skills/[slug]/content/route-982235d988e17f31.js +1 -0
  372. package/apps/web/.next/static/chunks/app/api/skills/[slug]/route-982235d988e17f31.js +1 -0
  373. package/apps/web/.next/static/chunks/app/api/skills/browse/route-982235d988e17f31.js +1 -0
  374. package/apps/web/.next/static/chunks/app/api/skills/install/route-982235d988e17f31.js +1 -0
  375. package/apps/web/.next/static/chunks/app/api/skills/route-982235d988e17f31.js +1 -0
  376. package/apps/web/.next/static/chunks/app/api/terminal/port/route-982235d988e17f31.js +1 -0
  377. package/apps/web/.next/static/chunks/app/api/voice/speech/route-982235d988e17f31.js +1 -0
  378. package/apps/web/.next/static/chunks/app/api/voice/transcribe/route-982235d988e17f31.js +1 -0
  379. package/apps/web/.next/static/chunks/app/api/voice/voices/route-982235d988e17f31.js +1 -0
  380. package/apps/web/.next/static/chunks/app/api/web-sessions/[id]/messages/route-982235d988e17f31.js +1 -0
  381. package/apps/web/.next/static/chunks/app/api/web-sessions/[id]/route-982235d988e17f31.js +1 -0
  382. package/apps/web/.next/static/chunks/app/api/web-sessions/route-982235d988e17f31.js +1 -0
  383. package/apps/web/.next/static/chunks/app/api/workspace/assets/[...path]/route-982235d988e17f31.js +1 -0
  384. package/apps/web/.next/static/chunks/app/api/workspace/browse/route-982235d988e17f31.js +1 -0
  385. package/apps/web/.next/static/chunks/app/api/workspace/browse-file/route-982235d988e17f31.js +1 -0
  386. package/apps/web/.next/static/chunks/app/api/workspace/context/route-982235d988e17f31.js +1 -0
  387. package/apps/web/.next/static/chunks/app/api/workspace/copy/route-982235d988e17f31.js +1 -0
  388. package/apps/web/.next/static/chunks/app/api/workspace/db/introspect/route-982235d988e17f31.js +1 -0
  389. package/apps/web/.next/static/chunks/app/api/workspace/db/query/route-982235d988e17f31.js +1 -0
  390. package/apps/web/.next/static/chunks/app/api/workspace/delete/route-982235d988e17f31.js +1 -0
  391. package/apps/web/.next/static/chunks/app/api/workspace/execute/route-982235d988e17f31.js +1 -0
  392. package/apps/web/.next/static/chunks/app/api/workspace/file/route-982235d988e17f31.js +1 -0
  393. package/apps/web/.next/static/chunks/app/api/workspace/init/route-982235d988e17f31.js +1 -0
  394. package/apps/web/.next/static/chunks/app/api/workspace/link-preview/route-982235d988e17f31.js +1 -0
  395. package/apps/web/.next/static/chunks/app/api/workspace/list/route-982235d988e17f31.js +1 -0
  396. package/apps/web/.next/static/chunks/app/api/workspace/mkdir/route-982235d988e17f31.js +1 -0
  397. package/apps/web/.next/static/chunks/app/api/workspace/move/route-982235d988e17f31.js +1 -0
  398. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/actions/route-982235d988e17f31.js +1 -0
  399. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/actions/runs/route-982235d988e17f31.js +1 -0
  400. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/display-field/route-982235d988e17f31.js +1 -0
  401. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/content/route-982235d988e17f31.js +1 -0
  402. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/route-982235d988e17f31.js +1 -0
  403. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/bulk-delete/route-982235d988e17f31.js +1 -0
  404. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/options/route-982235d988e17f31.js +1 -0
  405. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/route-982235d988e17f31.js +1 -0
  406. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/enum-rename/route-982235d988e17f31.js +1 -0
  407. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/route-982235d988e17f31.js +1 -0
  408. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/reorder/route-982235d988e17f31.js +1 -0
  409. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/route-982235d988e17f31.js +1 -0
  410. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/route-982235d988e17f31.js +1 -0
  411. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/views/route-982235d988e17f31.js +1 -0
  412. package/apps/web/.next/static/chunks/app/api/workspace/open-file/route-982235d988e17f31.js +1 -0
  413. package/apps/web/.next/static/chunks/app/api/workspace/path-info/route-982235d988e17f31.js +1 -0
  414. package/apps/web/.next/static/chunks/app/api/workspace/query/route-982235d988e17f31.js +1 -0
  415. package/apps/web/.next/static/chunks/app/api/workspace/raw-file/route-982235d988e17f31.js +1 -0
  416. package/apps/web/.next/static/chunks/app/api/workspace/rename/route-982235d988e17f31.js +1 -0
  417. package/apps/web/.next/static/chunks/app/api/workspace/reports/execute/route-982235d988e17f31.js +1 -0
  418. package/apps/web/.next/static/chunks/app/api/workspace/search-index/route-982235d988e17f31.js +1 -0
  419. package/apps/web/.next/static/chunks/app/api/workspace/suggest-files/route-982235d988e17f31.js +1 -0
  420. package/apps/web/.next/static/chunks/app/api/workspace/switch/route-982235d988e17f31.js +1 -0
  421. package/apps/web/.next/static/chunks/app/api/workspace/thumbnail/route-982235d988e17f31.js +1 -0
  422. package/apps/web/.next/static/chunks/app/api/workspace/tree/route-982235d988e17f31.js +1 -0
  423. package/apps/web/.next/static/chunks/app/api/workspace/upload/route-982235d988e17f31.js +1 -0
  424. package/apps/web/.next/static/chunks/app/api/workspace/virtual-file/route-982235d988e17f31.js +1 -0
  425. package/apps/web/.next/static/chunks/app/api/workspace/watch/route-982235d988e17f31.js +1 -0
  426. package/apps/web/.next/static/chunks/app/api/workspace/write-binary/route-982235d988e17f31.js +1 -0
  427. package/apps/web/.next/static/chunks/app/{layout-a597017db7df698d.js → layout-8757ef9cb1826e76.js} +1 -1
  428. package/apps/web/.next/static/chunks/app/page-05ff98c264c1c0cf.js +1 -0
  429. package/apps/web/.next/static/chunks/webpack-d4501ef5cbbcf069.js +1 -0
  430. package/apps/web/.next/static/css/4f71a2dee93c9f97.css +1 -0
  431. package/apps/web/public/integrations/exa-logomark.svg +4 -0
  432. package/apps/web/public/models/deepseek.ico +0 -0
  433. package/apps/web/public/models/kimi.png +0 -0
  434. package/apps/web/public/models/kimi.svg +89 -0
  435. package/apps/web/public/models/minimax.png +0 -0
  436. package/dist/entry.js +1 -1
  437. package/dist/{program-D2RfLoKh.js → program-BYB4nfWK.js} +423 -13
  438. package/dist/{run-main-giTi_or5.js → run-main-Z-P_Zlf6.js} +1 -1
  439. package/extensions/apollo-enrichment/index.ts +268 -0
  440. package/extensions/apollo-enrichment/openclaw.plugin.json +16 -0
  441. package/extensions/apollo-enrichment/package.json +8 -0
  442. package/extensions/dench-ai-gateway/composio-bridge.ts +474 -0
  443. package/extensions/dench-ai-gateway/config-patch.ts +83 -0
  444. package/extensions/dench-ai-gateway/index.test.ts +281 -0
  445. package/extensions/dench-ai-gateway/index.ts +9 -36
  446. package/extensions/dench-ai-gateway/models.ts +5 -5
  447. package/extensions/dench-identity/composio-cheat-sheet.test.ts +146 -0
  448. package/extensions/dench-identity/composio-cheat-sheet.ts +197 -0
  449. package/extensions/dench-identity/index.test.ts +226 -1
  450. package/extensions/dench-identity/index.ts +795 -5
  451. package/extensions/exa-search/index.ts +363 -0
  452. package/extensions/exa-search/openclaw.plugin.json +16 -0
  453. package/extensions/exa-search/package.json +8 -0
  454. package/extensions/posthog-analytics/lib/build-env.js +1 -1
  455. package/package.json +2 -2
  456. package/skills/composio-apps/SKILL.md +88 -0
  457. package/apps/web/.next/standalone/apps/web/.next/server/chunks/4334.js +0 -481
  458. package/apps/web/.next/standalone/apps/web/.next/static/6km2S2lfAi2PQ3TlStEAM/_buildManifest.js +0 -1
  459. package/apps/web/.next/standalone/apps/web/.next/static/chunks/2457.b2932424bcf38aee.js +0 -1
  460. package/apps/web/.next/standalone/apps/web/.next/static/chunks/2716-475d96c202834586.js +0 -135
  461. package/apps/web/.next/standalone/apps/web/.next/static/chunks/4062.6ff486abe87e56aa.js +0 -1
  462. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/cron/route-d14ffafd970f186e.js +0 -1
  463. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/proxy/route-d14ffafd970f186e.js +0 -1
  464. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/route-d14ffafd970f186e.js +0 -1
  465. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/serve/[...path]/route-d14ffafd970f186e.js +0 -1
  466. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/store/route-d14ffafd970f186e.js +0 -1
  467. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/webhooks/[...path]/route-d14ffafd970f186e.js +0 -1
  468. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/active/route-d14ffafd970f186e.js +0 -1
  469. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/route-d14ffafd970f186e.js +0 -1
  470. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/runs/route-d14ffafd970f186e.js +0 -1
  471. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/stop/route-d14ffafd970f186e.js +0 -1
  472. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/stream/route-d14ffafd970f186e.js +0 -1
  473. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/subagents/route-d14ffafd970f186e.js +0 -1
  474. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/jobs/[jobId]/runs/route-d14ffafd970f186e.js +0 -1
  475. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/jobs/route-d14ffafd970f186e.js +0 -1
  476. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/runs/[sessionId]/route-d14ffafd970f186e.js +0 -1
  477. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/runs/search-transcript/route-d14ffafd970f186e.js +0 -1
  478. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/feedback/route-d14ffafd970f186e.js +0 -1
  479. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/gateway/channels/route-d14ffafd970f186e.js +0 -1
  480. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/gateway/chat/route-d14ffafd970f186e.js +0 -1
  481. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/gateway/chat/stream/route-d14ffafd970f186e.js +0 -1
  482. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/gateway/sessions/[id]/route-d14ffafd970f186e.js +0 -1
  483. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/gateway/sessions/route-d14ffafd970f186e.js +0 -1
  484. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/memories/route-d14ffafd970f186e.js +0 -1
  485. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/profiles/route-d14ffafd970f186e.js +0 -1
  486. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/profiles/switch/route-d14ffafd970f186e.js +0 -1
  487. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/sessions/[sessionId]/route-d14ffafd970f186e.js +0 -1
  488. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/sessions/route-d14ffafd970f186e.js +0 -1
  489. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/skills/route-d14ffafd970f186e.js +0 -1
  490. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/terminal/port/route-d14ffafd970f186e.js +0 -1
  491. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/[id]/messages/route-d14ffafd970f186e.js +0 -1
  492. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/[id]/route-d14ffafd970f186e.js +0 -1
  493. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/route-d14ffafd970f186e.js +0 -1
  494. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/assets/[...path]/route-d14ffafd970f186e.js +0 -1
  495. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/browse/route-d14ffafd970f186e.js +0 -1
  496. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/browse-file/route-d14ffafd970f186e.js +0 -1
  497. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/context/route-d14ffafd970f186e.js +0 -1
  498. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/copy/route-d14ffafd970f186e.js +0 -1
  499. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/db/introspect/route-d14ffafd970f186e.js +0 -1
  500. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/db/query/route-d14ffafd970f186e.js +0 -1
  501. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/delete/route-d14ffafd970f186e.js +0 -1
  502. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/execute/route-d14ffafd970f186e.js +0 -1
  503. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/file/route-d14ffafd970f186e.js +0 -1
  504. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/init/route-d14ffafd970f186e.js +0 -1
  505. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/link-preview/route-d14ffafd970f186e.js +0 -1
  506. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/list/route-d14ffafd970f186e.js +0 -1
  507. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/mkdir/route-d14ffafd970f186e.js +0 -1
  508. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/move/route-d14ffafd970f186e.js +0 -1
  509. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/actions/route-d14ffafd970f186e.js +0 -1
  510. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/actions/runs/route-d14ffafd970f186e.js +0 -1
  511. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/display-field/route-d14ffafd970f186e.js +0 -1
  512. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/content/route-d14ffafd970f186e.js +0 -1
  513. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/route-d14ffafd970f186e.js +0 -1
  514. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/bulk-delete/route-d14ffafd970f186e.js +0 -1
  515. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/options/route-d14ffafd970f186e.js +0 -1
  516. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/route-d14ffafd970f186e.js +0 -1
  517. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/enum-rename/route-d14ffafd970f186e.js +0 -1
  518. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/route-d14ffafd970f186e.js +0 -1
  519. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/reorder/route-d14ffafd970f186e.js +0 -1
  520. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/route-d14ffafd970f186e.js +0 -1
  521. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/route-d14ffafd970f186e.js +0 -1
  522. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/views/route-d14ffafd970f186e.js +0 -1
  523. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/open-file/route-d14ffafd970f186e.js +0 -1
  524. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/path-info/route-d14ffafd970f186e.js +0 -1
  525. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/query/route-d14ffafd970f186e.js +0 -1
  526. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/raw-file/route-d14ffafd970f186e.js +0 -1
  527. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/rename/route-d14ffafd970f186e.js +0 -1
  528. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/reports/execute/route-d14ffafd970f186e.js +0 -1
  529. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/search-index/route-d14ffafd970f186e.js +0 -1
  530. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/suggest-files/route-d14ffafd970f186e.js +0 -1
  531. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/switch/route-d14ffafd970f186e.js +0 -1
  532. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/thumbnail/route-d14ffafd970f186e.js +0 -1
  533. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/tree/route-d14ffafd970f186e.js +0 -1
  534. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/upload/route-d14ffafd970f186e.js +0 -1
  535. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/virtual-file/route-d14ffafd970f186e.js +0 -1
  536. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/watch/route-d14ffafd970f186e.js +0 -1
  537. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/write-binary/route-d14ffafd970f186e.js +0 -1
  538. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/page-6702f960a7cc2d6f.js +0 -1
  539. package/apps/web/.next/standalone/apps/web/.next/static/chunks/webpack-a769c08a3fea86bb.js +0 -1
  540. package/apps/web/.next/standalone/apps/web/.next/static/css/99b07ab2db5fe339.css +0 -1
  541. package/apps/web/.next/static/6km2S2lfAi2PQ3TlStEAM/_buildManifest.js +0 -1
  542. package/apps/web/.next/static/chunks/2457.b2932424bcf38aee.js +0 -1
  543. package/apps/web/.next/static/chunks/2716-475d96c202834586.js +0 -135
  544. package/apps/web/.next/static/chunks/4062.6ff486abe87e56aa.js +0 -1
  545. package/apps/web/.next/static/chunks/app/api/apps/cron/route-d14ffafd970f186e.js +0 -1
  546. package/apps/web/.next/static/chunks/app/api/apps/proxy/route-d14ffafd970f186e.js +0 -1
  547. package/apps/web/.next/static/chunks/app/api/apps/route-d14ffafd970f186e.js +0 -1
  548. package/apps/web/.next/static/chunks/app/api/apps/serve/[...path]/route-d14ffafd970f186e.js +0 -1
  549. package/apps/web/.next/static/chunks/app/api/apps/store/route-d14ffafd970f186e.js +0 -1
  550. package/apps/web/.next/static/chunks/app/api/apps/webhooks/[...path]/route-d14ffafd970f186e.js +0 -1
  551. package/apps/web/.next/static/chunks/app/api/chat/active/route-d14ffafd970f186e.js +0 -1
  552. package/apps/web/.next/static/chunks/app/api/chat/route-d14ffafd970f186e.js +0 -1
  553. package/apps/web/.next/static/chunks/app/api/chat/runs/route-d14ffafd970f186e.js +0 -1
  554. package/apps/web/.next/static/chunks/app/api/chat/stop/route-d14ffafd970f186e.js +0 -1
  555. package/apps/web/.next/static/chunks/app/api/chat/stream/route-d14ffafd970f186e.js +0 -1
  556. package/apps/web/.next/static/chunks/app/api/chat/subagents/route-d14ffafd970f186e.js +0 -1
  557. package/apps/web/.next/static/chunks/app/api/cron/jobs/[jobId]/runs/route-d14ffafd970f186e.js +0 -1
  558. package/apps/web/.next/static/chunks/app/api/cron/jobs/route-d14ffafd970f186e.js +0 -1
  559. package/apps/web/.next/static/chunks/app/api/cron/runs/[sessionId]/route-d14ffafd970f186e.js +0 -1
  560. package/apps/web/.next/static/chunks/app/api/cron/runs/search-transcript/route-d14ffafd970f186e.js +0 -1
  561. package/apps/web/.next/static/chunks/app/api/feedback/route-d14ffafd970f186e.js +0 -1
  562. package/apps/web/.next/static/chunks/app/api/gateway/channels/route-d14ffafd970f186e.js +0 -1
  563. package/apps/web/.next/static/chunks/app/api/gateway/chat/route-d14ffafd970f186e.js +0 -1
  564. package/apps/web/.next/static/chunks/app/api/gateway/chat/stream/route-d14ffafd970f186e.js +0 -1
  565. package/apps/web/.next/static/chunks/app/api/gateway/sessions/[id]/route-d14ffafd970f186e.js +0 -1
  566. package/apps/web/.next/static/chunks/app/api/gateway/sessions/route-d14ffafd970f186e.js +0 -1
  567. package/apps/web/.next/static/chunks/app/api/memories/route-d14ffafd970f186e.js +0 -1
  568. package/apps/web/.next/static/chunks/app/api/profiles/route-d14ffafd970f186e.js +0 -1
  569. package/apps/web/.next/static/chunks/app/api/profiles/switch/route-d14ffafd970f186e.js +0 -1
  570. package/apps/web/.next/static/chunks/app/api/sessions/[sessionId]/route-d14ffafd970f186e.js +0 -1
  571. package/apps/web/.next/static/chunks/app/api/sessions/route-d14ffafd970f186e.js +0 -1
  572. package/apps/web/.next/static/chunks/app/api/skills/route-d14ffafd970f186e.js +0 -1
  573. package/apps/web/.next/static/chunks/app/api/terminal/port/route-d14ffafd970f186e.js +0 -1
  574. package/apps/web/.next/static/chunks/app/api/web-sessions/[id]/messages/route-d14ffafd970f186e.js +0 -1
  575. package/apps/web/.next/static/chunks/app/api/web-sessions/[id]/route-d14ffafd970f186e.js +0 -1
  576. package/apps/web/.next/static/chunks/app/api/web-sessions/route-d14ffafd970f186e.js +0 -1
  577. package/apps/web/.next/static/chunks/app/api/workspace/assets/[...path]/route-d14ffafd970f186e.js +0 -1
  578. package/apps/web/.next/static/chunks/app/api/workspace/browse/route-d14ffafd970f186e.js +0 -1
  579. package/apps/web/.next/static/chunks/app/api/workspace/browse-file/route-d14ffafd970f186e.js +0 -1
  580. package/apps/web/.next/static/chunks/app/api/workspace/context/route-d14ffafd970f186e.js +0 -1
  581. package/apps/web/.next/static/chunks/app/api/workspace/copy/route-d14ffafd970f186e.js +0 -1
  582. package/apps/web/.next/static/chunks/app/api/workspace/db/introspect/route-d14ffafd970f186e.js +0 -1
  583. package/apps/web/.next/static/chunks/app/api/workspace/db/query/route-d14ffafd970f186e.js +0 -1
  584. package/apps/web/.next/static/chunks/app/api/workspace/delete/route-d14ffafd970f186e.js +0 -1
  585. package/apps/web/.next/static/chunks/app/api/workspace/execute/route-d14ffafd970f186e.js +0 -1
  586. package/apps/web/.next/static/chunks/app/api/workspace/file/route-d14ffafd970f186e.js +0 -1
  587. package/apps/web/.next/static/chunks/app/api/workspace/init/route-d14ffafd970f186e.js +0 -1
  588. package/apps/web/.next/static/chunks/app/api/workspace/link-preview/route-d14ffafd970f186e.js +0 -1
  589. package/apps/web/.next/static/chunks/app/api/workspace/list/route-d14ffafd970f186e.js +0 -1
  590. package/apps/web/.next/static/chunks/app/api/workspace/mkdir/route-d14ffafd970f186e.js +0 -1
  591. package/apps/web/.next/static/chunks/app/api/workspace/move/route-d14ffafd970f186e.js +0 -1
  592. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/actions/route-d14ffafd970f186e.js +0 -1
  593. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/actions/runs/route-d14ffafd970f186e.js +0 -1
  594. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/display-field/route-d14ffafd970f186e.js +0 -1
  595. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/content/route-d14ffafd970f186e.js +0 -1
  596. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/route-d14ffafd970f186e.js +0 -1
  597. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/bulk-delete/route-d14ffafd970f186e.js +0 -1
  598. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/options/route-d14ffafd970f186e.js +0 -1
  599. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/route-d14ffafd970f186e.js +0 -1
  600. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/enum-rename/route-d14ffafd970f186e.js +0 -1
  601. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/route-d14ffafd970f186e.js +0 -1
  602. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/reorder/route-d14ffafd970f186e.js +0 -1
  603. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/route-d14ffafd970f186e.js +0 -1
  604. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/route-d14ffafd970f186e.js +0 -1
  605. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/views/route-d14ffafd970f186e.js +0 -1
  606. package/apps/web/.next/static/chunks/app/api/workspace/open-file/route-d14ffafd970f186e.js +0 -1
  607. package/apps/web/.next/static/chunks/app/api/workspace/path-info/route-d14ffafd970f186e.js +0 -1
  608. package/apps/web/.next/static/chunks/app/api/workspace/query/route-d14ffafd970f186e.js +0 -1
  609. package/apps/web/.next/static/chunks/app/api/workspace/raw-file/route-d14ffafd970f186e.js +0 -1
  610. package/apps/web/.next/static/chunks/app/api/workspace/rename/route-d14ffafd970f186e.js +0 -1
  611. package/apps/web/.next/static/chunks/app/api/workspace/reports/execute/route-d14ffafd970f186e.js +0 -1
  612. package/apps/web/.next/static/chunks/app/api/workspace/search-index/route-d14ffafd970f186e.js +0 -1
  613. package/apps/web/.next/static/chunks/app/api/workspace/suggest-files/route-d14ffafd970f186e.js +0 -1
  614. package/apps/web/.next/static/chunks/app/api/workspace/switch/route-d14ffafd970f186e.js +0 -1
  615. package/apps/web/.next/static/chunks/app/api/workspace/thumbnail/route-d14ffafd970f186e.js +0 -1
  616. package/apps/web/.next/static/chunks/app/api/workspace/tree/route-d14ffafd970f186e.js +0 -1
  617. package/apps/web/.next/static/chunks/app/api/workspace/upload/route-d14ffafd970f186e.js +0 -1
  618. package/apps/web/.next/static/chunks/app/api/workspace/virtual-file/route-d14ffafd970f186e.js +0 -1
  619. package/apps/web/.next/static/chunks/app/api/workspace/watch/route-d14ffafd970f186e.js +0 -1
  620. package/apps/web/.next/static/chunks/app/api/workspace/write-binary/route-d14ffafd970f186e.js +0 -1
  621. package/apps/web/.next/static/chunks/app/page-6702f960a7cc2d6f.js +0 -1
  622. package/apps/web/.next/static/chunks/webpack-a769c08a3fea86bb.js +0 -1
  623. package/apps/web/.next/static/css/99b07ab2db5fe339.css +0 -1
  624. package/skills/browser/SKILL.md +0 -16
  625. /package/apps/web/.next/standalone/apps/web/.next/static/{6km2S2lfAi2PQ3TlStEAM → U0A79z_eUsEUNVdXxxyc3}/_ssgManifest.js +0 -0
  626. /package/apps/web/.next/static/{6km2S2lfAi2PQ3TlStEAM → U0A79z_eUsEUNVdXxxyc3}/_ssgManifest.js +0 -0
@@ -0,0 +1,281 @@
1
+ import { mkdtempSync, rmSync, writeFileSync } from "node:fs";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { afterEach, describe, expect, it, vi } from "vitest";
5
+ import register from "./index.js";
6
+
7
+ describe("dench-ai-gateway composio bridge", () => {
8
+ const originalFetch = globalThis.fetch;
9
+ let workspaceDir: string | undefined;
10
+
11
+ afterEach(() => {
12
+ globalThis.fetch = originalFetch;
13
+ vi.restoreAllMocks();
14
+ if (workspaceDir) {
15
+ rmSync(workspaceDir, { recursive: true, force: true });
16
+ workspaceDir = undefined;
17
+ }
18
+ });
19
+
20
+ it("strips the raw composio MCP server and registers curated direct tools", async () => {
21
+ workspaceDir = mkdtempSync(path.join(os.tmpdir(), "dench-ai-gateway-"));
22
+ writeFileSync(
23
+ path.join(workspaceDir, "composio-tool-index.json"),
24
+ JSON.stringify(
25
+ {
26
+ generated_at: "2026-04-02T00:00:00.000Z",
27
+ connected_apps: [
28
+ {
29
+ toolkit_slug: "gmail",
30
+ toolkit_name: "Gmail",
31
+ account_count: 1,
32
+ tools: [
33
+ {
34
+ name: "GMAIL_FETCH_EMAILS",
35
+ title: "Fetch emails",
36
+ description_short: "Fetch recent Gmail messages.",
37
+ required_args: [],
38
+ arg_hints: {
39
+ label_ids: 'Must be an array like ["INBOX"].',
40
+ },
41
+ default_args: { label_ids: ["INBOX"], max_results: 10 },
42
+ input_schema: {
43
+ type: "object",
44
+ additionalProperties: false,
45
+ properties: {
46
+ label_ids: {
47
+ type: "array",
48
+ items: { type: "string" },
49
+ },
50
+ max_results: {
51
+ type: "number",
52
+ },
53
+ },
54
+ },
55
+ },
56
+ {
57
+ name: "GMAIL_SEND_EMAIL",
58
+ title: "Send email",
59
+ description_short: "Send a Gmail message.",
60
+ required_args: ["to", "subject", "body"],
61
+ arg_hints: {},
62
+ input_schema: {
63
+ type: "object",
64
+ additionalProperties: false,
65
+ properties: {
66
+ to: { type: "string" },
67
+ subject: { type: "string" },
68
+ body: { type: "string" },
69
+ },
70
+ required: ["to", "subject", "body"],
71
+ },
72
+ },
73
+ ],
74
+ recipes: {
75
+ "Read recent emails": "GMAIL_FETCH_EMAILS",
76
+ "Send email": "GMAIL_SEND_EMAIL",
77
+ },
78
+ },
79
+ ],
80
+ },
81
+ null,
82
+ 2,
83
+ ),
84
+ "utf-8",
85
+ );
86
+
87
+ const providers: any[] = [];
88
+ const tools: any[] = [];
89
+ const services: any[] = [];
90
+ const info = vi.fn();
91
+
92
+ globalThis.fetch = vi.fn(async (input, init) => {
93
+ const url = typeof input === "string" ? input : input.url;
94
+ const payload = JSON.parse(String(init?.body ?? "{}"));
95
+ expect(url).toBe("https://gateway.example.com/v1/composio/mcp");
96
+ expect(payload.method).toBe("tools/call");
97
+ expect(payload.params.name).toBe("GMAIL_FETCH_EMAILS");
98
+ expect(payload.params.arguments).toEqual({
99
+ label_ids: ["INBOX"],
100
+ max_results: 10,
101
+ });
102
+
103
+ return new Response(
104
+ JSON.stringify({
105
+ jsonrpc: "2.0",
106
+ id: 1,
107
+ result: {
108
+ structuredContent: {
109
+ messages: [{ id: "m1", subject: "Hello" }],
110
+ },
111
+ },
112
+ }),
113
+ {
114
+ status: 200,
115
+ headers: {
116
+ "content-type": "application/json",
117
+ },
118
+ },
119
+ );
120
+ }) as typeof fetch;
121
+
122
+ const api: any = {
123
+ config: {
124
+ agents: {
125
+ defaults: {
126
+ workspace: workspaceDir,
127
+ },
128
+ },
129
+ models: {
130
+ providers: {
131
+ "dench-cloud": {
132
+ apiKey: "dc-key",
133
+ },
134
+ },
135
+ },
136
+ mcp: {
137
+ servers: {
138
+ composio: {
139
+ url: "https://gateway.example.com/v1/composio/mcp",
140
+ transport: "streamable-http",
141
+ headers: {
142
+ Authorization: "Bearer dc-key",
143
+ },
144
+ },
145
+ },
146
+ },
147
+ plugins: {
148
+ entries: {
149
+ "dench-ai-gateway": {
150
+ config: {
151
+ enabled: true,
152
+ gatewayUrl: "https://gateway.example.com",
153
+ },
154
+ },
155
+ },
156
+ },
157
+ },
158
+ registerProvider(provider: any) {
159
+ providers.push(provider);
160
+ },
161
+ registerTool(tool: any) {
162
+ tools.push(tool);
163
+ },
164
+ registerService(service: any) {
165
+ services.push(service);
166
+ },
167
+ logger: {
168
+ info,
169
+ },
170
+ };
171
+
172
+ register(api);
173
+
174
+ expect(providers).toHaveLength(1);
175
+ expect(services).toHaveLength(1);
176
+ expect(tools.map((tool) => tool.name)).toEqual([
177
+ "GMAIL_FETCH_EMAILS",
178
+ "GMAIL_SEND_EMAIL",
179
+ ]);
180
+ expect(api.config.mcp).toBeUndefined();
181
+
182
+ const result = await tools[0].execute("call-1", {
183
+ label_ids: ["INBOX"],
184
+ max_results: 10,
185
+ });
186
+
187
+ expect(globalThis.fetch).toHaveBeenCalledTimes(1);
188
+ expect(result.details).toMatchObject({
189
+ composioBridge: true,
190
+ mcpServer: "composio",
191
+ mcpTool: "GMAIL_FETCH_EMAILS",
192
+ });
193
+ expect(result.content[0]?.text).toContain('"subject": "Hello"');
194
+ });
195
+
196
+ it("falls back to a permissive object schema when the index lacks input_schema", () => {
197
+ workspaceDir = mkdtempSync(path.join(os.tmpdir(), "dench-ai-gateway-"));
198
+ writeFileSync(
199
+ path.join(workspaceDir, "composio-tool-index.json"),
200
+ JSON.stringify(
201
+ {
202
+ generated_at: "2026-04-02T00:00:00.000Z",
203
+ connected_apps: [
204
+ {
205
+ toolkit_slug: "gmail",
206
+ toolkit_name: "Gmail",
207
+ account_count: 1,
208
+ tools: [
209
+ {
210
+ name: "GMAIL_FETCH_MESSAGE_BY_MESSAGE_ID",
211
+ title: "Fetch message",
212
+ description_short: "Fetch one Gmail message.",
213
+ required_args: ["message_id"],
214
+ arg_hints: {
215
+ message_id: "Use the Gmail message id.",
216
+ },
217
+ },
218
+ ],
219
+ recipes: {
220
+ "Read one email": "GMAIL_FETCH_MESSAGE_BY_MESSAGE_ID",
221
+ },
222
+ },
223
+ ],
224
+ },
225
+ null,
226
+ 2,
227
+ ),
228
+ "utf-8",
229
+ );
230
+
231
+ const tools: any[] = [];
232
+ const api: any = {
233
+ config: {
234
+ agents: {
235
+ defaults: {
236
+ workspace: workspaceDir,
237
+ },
238
+ },
239
+ models: {
240
+ providers: {
241
+ "dench-cloud": {
242
+ apiKey: "dc-key",
243
+ },
244
+ },
245
+ },
246
+ plugins: {
247
+ entries: {
248
+ "dench-ai-gateway": {
249
+ config: {
250
+ enabled: true,
251
+ gatewayUrl: "https://gateway.example.com",
252
+ },
253
+ },
254
+ },
255
+ },
256
+ },
257
+ registerProvider() {},
258
+ registerTool(tool: any) {
259
+ tools.push(tool);
260
+ },
261
+ registerService() {},
262
+ logger: {
263
+ info: vi.fn(),
264
+ },
265
+ };
266
+
267
+ register(api);
268
+
269
+ expect(tools).toHaveLength(1);
270
+ expect(tools[0].parameters).toMatchObject({
271
+ type: "object",
272
+ additionalProperties: true,
273
+ required: ["message_id"],
274
+ properties: {
275
+ message_id: {
276
+ description: "Use the Gmail message id.",
277
+ },
278
+ },
279
+ });
280
+ });
281
+ });
@@ -0,0 +1,325 @@
1
+ import {
2
+ buildDenchGatewayApiBaseUrl,
3
+ buildDenchGatewayCatalogUrl,
4
+ cloneFallbackDenchCloudModels,
5
+ DEFAULT_DENCH_CLOUD_GATEWAY_URL,
6
+ formatDenchCloudModelHint,
7
+ normalizeDenchCloudCatalogResponse,
8
+ normalizeDenchGatewayUrl,
9
+ resolveDenchCloudModel,
10
+ type DenchCloudCatalogModel,
11
+ } from "./models.js";
12
+ import {
13
+ buildDenchCloudConfigPatch,
14
+ buildDenchCloudProviderConfig,
15
+ } from "./config-patch.js";
16
+ import { registerCuratedComposioBridge } from "./composio-bridge.js";
17
+ export { buildDenchCloudConfigPatch } from "./config-patch.js";
18
+
19
+ export const id = "dench-ai-gateway";
20
+
21
+ const PROVIDER_ID = "dench-cloud";
22
+ const PROVIDER_LABEL = "Dench Cloud";
23
+ const API_KEY_ENV_VARS = ["DENCH_CLOUD_API_KEY", "DENCH_API_KEY"] as const;
24
+
25
+ type CatalogSource = "live" | "fallback";
26
+
27
+ type CatalogLoadResult = {
28
+ models: DenchCloudCatalogModel[];
29
+ source: CatalogSource;
30
+ detail?: string;
31
+ };
32
+
33
+ type UnknownRecord = Record<string, unknown>;
34
+
35
+ function asRecord(value: unknown): UnknownRecord | undefined {
36
+ return value && typeof value === "object" ? (value as UnknownRecord) : undefined;
37
+ }
38
+
39
+ function resolvePluginConfig(api: any): UnknownRecord | undefined {
40
+ const pluginConfig = api?.config?.plugins?.entries?.["dench-ai-gateway"]?.config;
41
+ return asRecord(pluginConfig);
42
+ }
43
+
44
+ function resolveGatewayUrl(api: any): string {
45
+ const pluginConfig = resolvePluginConfig(api);
46
+ const configured = typeof pluginConfig?.gatewayUrl === "string" ? pluginConfig.gatewayUrl : undefined;
47
+ return normalizeDenchGatewayUrl(
48
+ configured || process.env.DENCH_GATEWAY_URL || DEFAULT_DENCH_CLOUD_GATEWAY_URL,
49
+ );
50
+ }
51
+
52
+ function resolveEnvApiKey(): string | undefined {
53
+ for (const envVar of API_KEY_ENV_VARS) {
54
+ const value = process.env[envVar]?.trim();
55
+ if (value) {
56
+ return value;
57
+ }
58
+ }
59
+ return undefined;
60
+ }
61
+
62
+ async function promptForApiKey(prompter: any): Promise<string> {
63
+ if (typeof prompter?.secret === "function") {
64
+ return String(
65
+ await prompter.secret(
66
+ "Enter your Dench Cloud API key (sign up at dench.com and get it at dench.com/settings)",
67
+ ),
68
+ ).trim();
69
+ }
70
+
71
+ return String(
72
+ await prompter.text({
73
+ message:
74
+ "Enter your Dench Cloud API key (sign up at dench.com and get it at dench.com/settings)",
75
+ }),
76
+ ).trim();
77
+ }
78
+
79
+ export async function fetchDenchCloudCatalog(gatewayUrl: string): Promise<CatalogLoadResult> {
80
+ try {
81
+ const response = await fetch(buildDenchGatewayCatalogUrl(gatewayUrl));
82
+ if (!response.ok) {
83
+ throw new Error(`HTTP ${response.status}`);
84
+ }
85
+
86
+ const payload = await response.json().catch(() => null);
87
+ const models = normalizeDenchCloudCatalogResponse(payload);
88
+ if (!models.length) {
89
+ throw new Error("response did not contain any usable models");
90
+ }
91
+
92
+ return { models, source: "live" };
93
+ } catch (error) {
94
+ const detail = error instanceof Error ? error.message : String(error);
95
+ return {
96
+ models: cloneFallbackDenchCloudModels(),
97
+ source: "fallback",
98
+ detail,
99
+ };
100
+ }
101
+ }
102
+
103
+ export async function validateDenchCloudApiKey(
104
+ gatewayUrl: string,
105
+ apiKey: string,
106
+ ): Promise<void> {
107
+ const response = await fetch(`${buildDenchGatewayApiBaseUrl(gatewayUrl)}/models`, {
108
+ headers: {
109
+ Authorization: `Bearer ${apiKey}`,
110
+ },
111
+ });
112
+
113
+ if (response.ok) {
114
+ return;
115
+ }
116
+
117
+ const message =
118
+ response.status === 401 || response.status === 403
119
+ ? "Invalid Dench Cloud API key."
120
+ : `Dench Cloud validation failed with HTTP ${response.status}.`;
121
+ throw new Error(`${message} Check your key at dench.com/settings.`);
122
+ }
123
+
124
+ async function promptForModelSelection(params: {
125
+ prompter: any;
126
+ models: DenchCloudCatalogModel[];
127
+ initialStableId?: string;
128
+ }): Promise<DenchCloudCatalogModel> {
129
+ const selectedStableId = String(
130
+ await params.prompter.select({
131
+ message: "Choose your default Dench Cloud model",
132
+ options: params.models.map((model) => ({
133
+ value: model.stableId,
134
+ label: model.displayName,
135
+ hint: formatDenchCloudModelHint(model),
136
+ })),
137
+ ...(params.initialStableId ? { initialValue: params.initialStableId } : {}),
138
+ }),
139
+ );
140
+
141
+ const selected = resolveDenchCloudModel(params.models, selectedStableId);
142
+ if (!selected) {
143
+ throw new Error(`Unknown Dench Cloud model "${selectedStableId}".`);
144
+ }
145
+ return selected;
146
+ }
147
+
148
+ function buildAuthNotes(params: {
149
+ gatewayUrl: string;
150
+ catalog: CatalogLoadResult;
151
+ }): string[] {
152
+ const notes = [
153
+ `Dench Cloud uses ${buildDenchGatewayApiBaseUrl(params.gatewayUrl)} for model traffic.`,
154
+ ];
155
+
156
+ if (params.catalog.source === "fallback") {
157
+ notes.push(
158
+ `Model catalog fell back to DenchClaw's bundled list (${params.catalog.detail ?? "public catalog unavailable"}).`,
159
+ );
160
+ }
161
+
162
+ return notes;
163
+ }
164
+
165
+ function buildProviderAuthResult(params: {
166
+ gatewayUrl: string;
167
+ apiKey: string;
168
+ catalog: CatalogLoadResult;
169
+ selected: DenchCloudCatalogModel;
170
+ }) {
171
+ return {
172
+ profiles: [
173
+ {
174
+ profileId: `${PROVIDER_ID}:default`,
175
+ credential: {
176
+ type: "api_key",
177
+ provider: PROVIDER_ID,
178
+ key: params.apiKey,
179
+ },
180
+ },
181
+ ],
182
+ defaultModel: `${PROVIDER_ID}/${params.selected.stableId}`,
183
+ configPatch: buildDenchCloudConfigPatch({
184
+ gatewayUrl: params.gatewayUrl,
185
+ apiKey: params.apiKey,
186
+ models: params.catalog.models,
187
+ }),
188
+ notes: buildAuthNotes({
189
+ gatewayUrl: params.gatewayUrl,
190
+ catalog: params.catalog,
191
+ }),
192
+ };
193
+ }
194
+
195
+ async function runInteractiveAuth(ctx: any, gatewayUrl: string) {
196
+ const apiKey = await promptForApiKey(ctx.prompter);
197
+ if (!apiKey) {
198
+ throw new Error("A Dench Cloud API key is required.");
199
+ }
200
+
201
+ await validateDenchCloudApiKey(gatewayUrl, apiKey);
202
+ const catalog = await fetchDenchCloudCatalog(gatewayUrl);
203
+ const selected = await promptForModelSelection({
204
+ prompter: ctx.prompter,
205
+ models: catalog.models,
206
+ });
207
+
208
+ return buildProviderAuthResult({
209
+ gatewayUrl,
210
+ apiKey,
211
+ catalog,
212
+ selected,
213
+ });
214
+ }
215
+
216
+ async function runNonInteractiveAuth(ctx: any, gatewayUrl: string) {
217
+ const apiKey = String(
218
+ ctx?.opts?.denchCloudApiKey ||
219
+ ctx?.opts?.denchCloudKey ||
220
+ resolveEnvApiKey() ||
221
+ "",
222
+ ).trim();
223
+ if (!apiKey) {
224
+ throw new Error(
225
+ "Dench Cloud non-interactive auth requires DENCH_CLOUD_API_KEY or --dench-cloud-api-key.",
226
+ );
227
+ }
228
+
229
+ await validateDenchCloudApiKey(gatewayUrl, apiKey);
230
+ const catalog = await fetchDenchCloudCatalog(gatewayUrl);
231
+ const selected = resolveDenchCloudModel(
232
+ catalog.models,
233
+ String(ctx?.opts?.denchCloudModel || process.env.DENCH_CLOUD_MODEL || "").trim(),
234
+ );
235
+ if (!selected) {
236
+ throw new Error("Configured Dench Cloud model is not available.");
237
+ }
238
+
239
+ return buildProviderAuthResult({
240
+ gatewayUrl,
241
+ apiKey,
242
+ catalog,
243
+ selected,
244
+ });
245
+ }
246
+
247
+ function buildDiscoveryProvider(api: any, gatewayUrl: string) {
248
+ const configured = api?.config?.models?.providers?.[PROVIDER_ID];
249
+ if (configured && typeof configured === "object") {
250
+ return configured;
251
+ }
252
+
253
+ const apiKey = resolveEnvApiKey();
254
+ if (!apiKey) {
255
+ return null;
256
+ }
257
+
258
+ const models = cloneFallbackDenchCloudModels();
259
+ return buildDenchCloudProviderConfig({ gatewayUrl, apiKey, models });
260
+ }
261
+
262
+ export default function register(api: any) {
263
+ const pluginConfig = resolvePluginConfig(api);
264
+ if (pluginConfig?.enabled === false) {
265
+ return;
266
+ }
267
+
268
+ const gatewayUrl = resolveGatewayUrl(api);
269
+
270
+ api.registerProvider({
271
+ id: PROVIDER_ID,
272
+ label: PROVIDER_LABEL,
273
+ docsPath: "/providers/models",
274
+ aliases: ["dench", "dench-cloud", "dench-ai-gateway"],
275
+ envVars: [...API_KEY_ENV_VARS],
276
+ auth: [
277
+ {
278
+ id: "api-key",
279
+ label: "Dench Cloud API Key",
280
+ hint: "Use your Dench Cloud key from dench.com/settings",
281
+ kind: "api_key",
282
+ run: async (ctx: any) => await runInteractiveAuth(ctx, gatewayUrl),
283
+ // Newer OpenClaw builds can call this hook during headless onboarding.
284
+ runNonInteractive: async (ctx: any) => await runNonInteractiveAuth(ctx, gatewayUrl),
285
+ },
286
+ ],
287
+ // Newer OpenClaw builds can surface provider-specific wizard entries.
288
+ wizard: {
289
+ onboarding: {
290
+ choiceId: PROVIDER_ID,
291
+ choiceLabel: PROVIDER_LABEL,
292
+ choiceHint: "Use Dench's managed AI gateway",
293
+ groupId: "dench",
294
+ groupLabel: "Dench",
295
+ groupHint: "Managed Dench Cloud models",
296
+ methodId: "api-key",
297
+ },
298
+ modelPicker: {
299
+ label: PROVIDER_LABEL,
300
+ hint: "Connect Dench Cloud with your API key",
301
+ methodId: "api-key",
302
+ },
303
+ },
304
+ // Best-effort discovery so newer OpenClaw builds can rehydrate provider config.
305
+ discovery: {
306
+ order: "profile",
307
+ run: async () => {
308
+ const provider = buildDiscoveryProvider(api, gatewayUrl);
309
+ return provider ? { provider } : null;
310
+ },
311
+ },
312
+ } as any);
313
+
314
+ registerCuratedComposioBridge(api, gatewayUrl);
315
+
316
+ api.registerService({
317
+ id: "dench-ai-gateway",
318
+ start: () => {
319
+ api.logger?.info?.(`[dench-ai-gateway] active (gateway: ${gatewayUrl})`);
320
+ },
321
+ stop: () => {
322
+ api.logger?.info?.("[dench-ai-gateway] stopped");
323
+ },
324
+ });
325
+ }