denchclaw 2.4.6 → 2.5.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 (628) 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 +331 -202
  4. package/apps/web/.next/standalone/apps/web/.next/app-path-routes-manifest.json +42 -24
  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 +42 -24
  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 +19 -5
  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/{static/chunks/eca025f9.538b3f5d85eeef79.js → standalone/apps/web/.next/static/chunks/0c958985.3ccb9c3aea7cd083.js} +2 -2
  177. package/apps/web/.next/standalone/apps/web/.next/static/chunks/3999.548dd8ec57152081.js +1 -0
  178. package/apps/web/.next/standalone/apps/web/.next/static/chunks/{2489.b5e1ce196331926c.js → 4870.507a55774d37d072.js} +1 -1
  179. package/apps/web/.next/standalone/apps/web/.next/static/chunks/{7812.c1435a724050dfec.js → 5431.a2353a2aa8c55a67.js} +1 -1
  180. package/apps/web/.next/standalone/apps/web/.next/static/chunks/7f67b0df-54679694c67e2b76.js +1 -0
  181. package/apps/web/.next/standalone/apps/web/.next/static/chunks/80f1cbb7-c9635d81d9fe6819.js +1 -0
  182. package/apps/web/.next/standalone/apps/web/.next/static/chunks/8532165e-abce74bbb270ef26.js +1 -0
  183. package/apps/web/.next/standalone/apps/web/.next/static/chunks/9372.e71f5b96da3f9dfd.js +1 -0
  184. package/apps/web/.next/standalone/apps/web/.next/static/chunks/9702-d646bcd7cb8fe6bf.js +135 -0
  185. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/cron/route-982235d988e17f31.js +1 -0
  186. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/proxy/route-982235d988e17f31.js +1 -0
  187. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/route-982235d988e17f31.js +1 -0
  188. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/serve/[...path]/route-982235d988e17f31.js +1 -0
  189. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/store/route-982235d988e17f31.js +1 -0
  190. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/webhooks/[...path]/route-982235d988e17f31.js +1 -0
  191. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/active/route-982235d988e17f31.js +1 -0
  192. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/route-982235d988e17f31.js +1 -0
  193. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/runs/route-982235d988e17f31.js +1 -0
  194. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/stop/route-982235d988e17f31.js +1 -0
  195. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/stream/route-982235d988e17f31.js +1 -0
  196. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/subagents/route-982235d988e17f31.js +1 -0
  197. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/composio/callback/route-982235d988e17f31.js +1 -0
  198. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/composio/connect/route-982235d988e17f31.js +1 -0
  199. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/composio/connections/route-982235d988e17f31.js +1 -0
  200. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/composio/disconnect/route-982235d988e17f31.js +1 -0
  201. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/composio/status/route-982235d988e17f31.js +1 -0
  202. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/composio/tool-index/route-982235d988e17f31.js +1 -0
  203. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/composio/toolkits/route-982235d988e17f31.js +1 -0
  204. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/jobs/[jobId]/runs/route-982235d988e17f31.js +1 -0
  205. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/jobs/route-982235d988e17f31.js +1 -0
  206. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/runs/[sessionId]/route-982235d988e17f31.js +1 -0
  207. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/runs/search-transcript/route-982235d988e17f31.js +1 -0
  208. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/feedback/route-982235d988e17f31.js +1 -0
  209. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/gateway/channels/route-982235d988e17f31.js +1 -0
  210. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/gateway/chat/route-982235d988e17f31.js +1 -0
  211. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/gateway/chat/stream/route-982235d988e17f31.js +1 -0
  212. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/gateway/sessions/[id]/route-982235d988e17f31.js +1 -0
  213. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/gateway/sessions/route-982235d988e17f31.js +1 -0
  214. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/integrations/[id]/toggle/route-982235d988e17f31.js +1 -0
  215. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/integrations/repair/route-982235d988e17f31.js +1 -0
  216. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/integrations/route-982235d988e17f31.js +1 -0
  217. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/memories/route-982235d988e17f31.js +1 -0
  218. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/profiles/route-982235d988e17f31.js +1 -0
  219. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/profiles/switch/route-982235d988e17f31.js +1 -0
  220. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/sessions/[sessionId]/route-982235d988e17f31.js +1 -0
  221. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/sessions/route-982235d988e17f31.js +1 -0
  222. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/settings/cloud/route-982235d988e17f31.js +1 -0
  223. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/skills/[slug]/content/route-982235d988e17f31.js +1 -0
  224. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/skills/[slug]/route-982235d988e17f31.js +1 -0
  225. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/skills/browse/route-982235d988e17f31.js +1 -0
  226. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/skills/install/route-982235d988e17f31.js +1 -0
  227. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/skills/route-982235d988e17f31.js +1 -0
  228. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/terminal/port/route-982235d988e17f31.js +1 -0
  229. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/voice/speech/route-982235d988e17f31.js +1 -0
  230. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/voice/transcribe/route-982235d988e17f31.js +1 -0
  231. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/voice/voices/route-982235d988e17f31.js +1 -0
  232. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/[id]/messages/route-982235d988e17f31.js +1 -0
  233. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/[id]/route-982235d988e17f31.js +1 -0
  234. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/route-982235d988e17f31.js +1 -0
  235. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/assets/[...path]/route-982235d988e17f31.js +1 -0
  236. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/browse/route-982235d988e17f31.js +1 -0
  237. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/browse-file/route-982235d988e17f31.js +1 -0
  238. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/context/route-982235d988e17f31.js +1 -0
  239. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/copy/route-982235d988e17f31.js +1 -0
  240. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/db/introspect/route-982235d988e17f31.js +1 -0
  241. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/db/query/route-982235d988e17f31.js +1 -0
  242. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/delete/route-982235d988e17f31.js +1 -0
  243. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/execute/route-982235d988e17f31.js +1 -0
  244. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/file/route-982235d988e17f31.js +1 -0
  245. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/init/route-982235d988e17f31.js +1 -0
  246. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/link-preview/route-982235d988e17f31.js +1 -0
  247. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/list/route-982235d988e17f31.js +1 -0
  248. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/mkdir/route-982235d988e17f31.js +1 -0
  249. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/move/route-982235d988e17f31.js +1 -0
  250. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/actions/route-982235d988e17f31.js +1 -0
  251. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/actions/runs/route-982235d988e17f31.js +1 -0
  252. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/display-field/route-982235d988e17f31.js +1 -0
  253. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/content/route-982235d988e17f31.js +1 -0
  254. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/route-982235d988e17f31.js +1 -0
  255. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/bulk-delete/route-982235d988e17f31.js +1 -0
  256. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/options/route-982235d988e17f31.js +1 -0
  257. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/route-982235d988e17f31.js +1 -0
  258. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/enum-rename/route-982235d988e17f31.js +1 -0
  259. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/route-982235d988e17f31.js +1 -0
  260. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/reorder/route-982235d988e17f31.js +1 -0
  261. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/route-982235d988e17f31.js +1 -0
  262. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/route-982235d988e17f31.js +1 -0
  263. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/views/route-982235d988e17f31.js +1 -0
  264. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/open-file/route-982235d988e17f31.js +1 -0
  265. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/path-info/route-982235d988e17f31.js +1 -0
  266. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/query/route-982235d988e17f31.js +1 -0
  267. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/raw-file/route-982235d988e17f31.js +1 -0
  268. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/rename/route-982235d988e17f31.js +1 -0
  269. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/reports/execute/route-982235d988e17f31.js +1 -0
  270. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/search-index/route-982235d988e17f31.js +1 -0
  271. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/suggest-files/route-982235d988e17f31.js +1 -0
  272. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/switch/route-982235d988e17f31.js +1 -0
  273. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/thumbnail/route-982235d988e17f31.js +1 -0
  274. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/tree/route-982235d988e17f31.js +1 -0
  275. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/upload/route-982235d988e17f31.js +1 -0
  276. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/virtual-file/route-982235d988e17f31.js +1 -0
  277. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/watch/route-982235d988e17f31.js +1 -0
  278. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/write-binary/route-982235d988e17f31.js +1 -0
  279. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/{layout-3b33b798ff1504e9.js → layout-33207ce031676561.js} +1 -1
  280. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/page-27c6d6093051ac5c.js +1 -0
  281. package/apps/web/.next/standalone/apps/web/.next/static/chunks/webpack-d4501ef5cbbcf069.js +1 -0
  282. package/apps/web/.next/standalone/apps/web/.next/static/css/4f71a2dee93c9f97.css +1 -0
  283. package/apps/web/.next/standalone/apps/web/.next/static/jcrHaOr6nJr3WKHp3ijBE/_buildManifest.js +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/logo/composio.webp +0 -0
  288. package/apps/web/.next/standalone/apps/web/public/models/deepseek.ico +0 -0
  289. package/apps/web/.next/standalone/apps/web/public/models/kimi.png +0 -0
  290. package/apps/web/.next/standalone/apps/web/public/models/kimi.svg +89 -0
  291. package/apps/web/.next/standalone/apps/web/public/models/minimax.png +0 -0
  292. package/apps/web/.next/standalone/apps/web/server.js +1 -1
  293. package/apps/web/.next/standalone/extensions/apollo-enrichment/index.ts +268 -0
  294. package/apps/web/.next/standalone/extensions/apollo-enrichment/openclaw.plugin.json +16 -0
  295. package/apps/web/.next/standalone/extensions/apollo-enrichment/package.json +8 -0
  296. package/apps/web/.next/standalone/extensions/dench-ai-gateway/composio-bridge.ts +474 -0
  297. package/apps/web/.next/standalone/extensions/dench-ai-gateway/config-patch.ts +83 -0
  298. package/apps/web/.next/standalone/extensions/dench-ai-gateway/index.test.ts +281 -0
  299. package/apps/web/.next/standalone/extensions/dench-ai-gateway/index.ts +325 -0
  300. package/apps/web/.next/standalone/extensions/dench-ai-gateway/models.ts +325 -0
  301. package/apps/web/.next/standalone/extensions/dench-ai-gateway/openclaw.plugin.json +27 -0
  302. package/apps/web/.next/standalone/extensions/dench-ai-gateway/package.json +8 -0
  303. package/apps/web/.next/standalone/extensions/dench-identity/composio-cheat-sheet.test.ts +146 -0
  304. package/apps/web/.next/standalone/extensions/dench-identity/composio-cheat-sheet.ts +197 -0
  305. package/apps/web/.next/standalone/extensions/dench-identity/index.test.ts +361 -0
  306. package/apps/web/.next/standalone/extensions/dench-identity/index.ts +920 -0
  307. package/apps/web/.next/standalone/extensions/dench-identity/openclaw.plugin.json +17 -0
  308. package/apps/web/.next/standalone/extensions/dench-identity/package.json +8 -0
  309. package/apps/web/.next/standalone/extensions/exa-search/index.ts +363 -0
  310. package/apps/web/.next/standalone/extensions/exa-search/openclaw.plugin.json +16 -0
  311. package/apps/web/.next/standalone/extensions/exa-search/package.json +8 -0
  312. package/apps/web/.next/standalone/extensions/posthog-analytics/index.ts +190 -0
  313. package/apps/web/.next/standalone/extensions/posthog-analytics/lib/build-env.js +3 -0
  314. package/apps/web/.next/standalone/extensions/posthog-analytics/lib/build-env.ts +3 -0
  315. package/apps/web/.next/standalone/extensions/posthog-analytics/lib/event-mappers.ts +403 -0
  316. package/apps/web/.next/standalone/extensions/posthog-analytics/lib/posthog-client.ts +105 -0
  317. package/apps/web/.next/standalone/extensions/posthog-analytics/lib/privacy.ts +294 -0
  318. package/apps/web/.next/standalone/extensions/posthog-analytics/lib/trace-context.ts +103 -0
  319. package/apps/web/.next/standalone/extensions/posthog-analytics/lib/types.ts +28 -0
  320. package/apps/web/.next/standalone/extensions/posthog-analytics/openclaw.plugin.json +22 -0
  321. package/apps/web/.next/standalone/extensions/posthog-analytics/package.json +8 -0
  322. package/apps/web/.next/standalone/extensions/vitest.config.ts +13 -0
  323. package/apps/web/.next/standalone/package.json +2 -2
  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-3b33b798ff1504e9.js → layout-33207ce031676561.js} +1 -1
  428. package/apps/web/.next/static/chunks/app/page-27c6d6093051ac5c.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/.next/static/jcrHaOr6nJr3WKHp3ijBE/_buildManifest.js +1 -0
  432. package/apps/web/public/integrations/exa-logomark.svg +4 -0
  433. package/apps/web/public/logo/composio.webp +0 -0
  434. package/apps/web/public/models/deepseek.ico +0 -0
  435. package/apps/web/public/models/kimi.png +0 -0
  436. package/apps/web/public/models/kimi.svg +89 -0
  437. package/apps/web/public/models/minimax.png +0 -0
  438. package/dist/entry.js +1 -1
  439. package/dist/{program-BDz7WHcZ.js → program-BYB4nfWK.js} +235 -12
  440. package/dist/{run-main-Ddx9Tsa1.js → run-main-Z-P_Zlf6.js} +1 -1
  441. package/extensions/apollo-enrichment/index.ts +268 -0
  442. package/extensions/apollo-enrichment/openclaw.plugin.json +16 -0
  443. package/extensions/apollo-enrichment/package.json +8 -0
  444. package/extensions/dench-ai-gateway/composio-bridge.ts +474 -0
  445. package/extensions/dench-ai-gateway/config-patch.ts +83 -0
  446. package/extensions/dench-ai-gateway/index.test.ts +281 -0
  447. package/extensions/dench-ai-gateway/index.ts +9 -36
  448. package/extensions/dench-ai-gateway/models.ts +5 -5
  449. package/extensions/dench-identity/composio-cheat-sheet.test.ts +146 -0
  450. package/extensions/dench-identity/composio-cheat-sheet.ts +197 -0
  451. package/extensions/dench-identity/index.test.ts +226 -1
  452. package/extensions/dench-identity/index.ts +795 -5
  453. package/extensions/exa-search/index.ts +363 -0
  454. package/extensions/exa-search/openclaw.plugin.json +16 -0
  455. package/extensions/exa-search/package.json +8 -0
  456. package/extensions/posthog-analytics/lib/build-env.js +1 -1
  457. package/package.json +2 -2
  458. package/skills/composio-apps/SKILL.md +88 -0
  459. package/apps/web/.next/standalone/apps/web/.next/server/chunks/4334.js +0 -481
  460. package/apps/web/.next/standalone/apps/web/.next/static/bHQQHboaVXn6uVyBK8na1/_buildManifest.js +0 -1
  461. package/apps/web/.next/standalone/apps/web/.next/static/chunks/2457.b2932424bcf38aee.js +0 -1
  462. package/apps/web/.next/standalone/apps/web/.next/static/chunks/2716-475d96c202834586.js +0 -135
  463. package/apps/web/.next/standalone/apps/web/.next/static/chunks/4062.6ff486abe87e56aa.js +0 -1
  464. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/cron/route-d14ffafd970f186e.js +0 -1
  465. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/proxy/route-d14ffafd970f186e.js +0 -1
  466. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/route-d14ffafd970f186e.js +0 -1
  467. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/serve/[...path]/route-d14ffafd970f186e.js +0 -1
  468. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/store/route-d14ffafd970f186e.js +0 -1
  469. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/webhooks/[...path]/route-d14ffafd970f186e.js +0 -1
  470. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/active/route-d14ffafd970f186e.js +0 -1
  471. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/route-d14ffafd970f186e.js +0 -1
  472. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/runs/route-d14ffafd970f186e.js +0 -1
  473. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/stop/route-d14ffafd970f186e.js +0 -1
  474. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/stream/route-d14ffafd970f186e.js +0 -1
  475. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/subagents/route-d14ffafd970f186e.js +0 -1
  476. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/jobs/[jobId]/runs/route-d14ffafd970f186e.js +0 -1
  477. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/jobs/route-d14ffafd970f186e.js +0 -1
  478. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/runs/[sessionId]/route-d14ffafd970f186e.js +0 -1
  479. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/runs/search-transcript/route-d14ffafd970f186e.js +0 -1
  480. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/feedback/route-d14ffafd970f186e.js +0 -1
  481. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/gateway/channels/route-d14ffafd970f186e.js +0 -1
  482. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/gateway/chat/route-d14ffafd970f186e.js +0 -1
  483. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/gateway/chat/stream/route-d14ffafd970f186e.js +0 -1
  484. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/gateway/sessions/[id]/route-d14ffafd970f186e.js +0 -1
  485. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/gateway/sessions/route-d14ffafd970f186e.js +0 -1
  486. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/memories/route-d14ffafd970f186e.js +0 -1
  487. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/profiles/route-d14ffafd970f186e.js +0 -1
  488. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/profiles/switch/route-d14ffafd970f186e.js +0 -1
  489. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/sessions/[sessionId]/route-d14ffafd970f186e.js +0 -1
  490. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/sessions/route-d14ffafd970f186e.js +0 -1
  491. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/skills/route-d14ffafd970f186e.js +0 -1
  492. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/terminal/port/route-d14ffafd970f186e.js +0 -1
  493. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/[id]/messages/route-d14ffafd970f186e.js +0 -1
  494. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/[id]/route-d14ffafd970f186e.js +0 -1
  495. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/route-d14ffafd970f186e.js +0 -1
  496. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/assets/[...path]/route-d14ffafd970f186e.js +0 -1
  497. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/browse/route-d14ffafd970f186e.js +0 -1
  498. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/browse-file/route-d14ffafd970f186e.js +0 -1
  499. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/context/route-d14ffafd970f186e.js +0 -1
  500. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/copy/route-d14ffafd970f186e.js +0 -1
  501. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/db/introspect/route-d14ffafd970f186e.js +0 -1
  502. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/db/query/route-d14ffafd970f186e.js +0 -1
  503. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/delete/route-d14ffafd970f186e.js +0 -1
  504. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/execute/route-d14ffafd970f186e.js +0 -1
  505. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/file/route-d14ffafd970f186e.js +0 -1
  506. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/init/route-d14ffafd970f186e.js +0 -1
  507. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/link-preview/route-d14ffafd970f186e.js +0 -1
  508. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/list/route-d14ffafd970f186e.js +0 -1
  509. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/mkdir/route-d14ffafd970f186e.js +0 -1
  510. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/move/route-d14ffafd970f186e.js +0 -1
  511. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/actions/route-d14ffafd970f186e.js +0 -1
  512. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/actions/runs/route-d14ffafd970f186e.js +0 -1
  513. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/display-field/route-d14ffafd970f186e.js +0 -1
  514. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/content/route-d14ffafd970f186e.js +0 -1
  515. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/route-d14ffafd970f186e.js +0 -1
  516. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/bulk-delete/route-d14ffafd970f186e.js +0 -1
  517. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/options/route-d14ffafd970f186e.js +0 -1
  518. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/route-d14ffafd970f186e.js +0 -1
  519. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/enum-rename/route-d14ffafd970f186e.js +0 -1
  520. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/route-d14ffafd970f186e.js +0 -1
  521. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/reorder/route-d14ffafd970f186e.js +0 -1
  522. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/route-d14ffafd970f186e.js +0 -1
  523. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/route-d14ffafd970f186e.js +0 -1
  524. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/views/route-d14ffafd970f186e.js +0 -1
  525. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/open-file/route-d14ffafd970f186e.js +0 -1
  526. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/path-info/route-d14ffafd970f186e.js +0 -1
  527. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/query/route-d14ffafd970f186e.js +0 -1
  528. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/raw-file/route-d14ffafd970f186e.js +0 -1
  529. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/rename/route-d14ffafd970f186e.js +0 -1
  530. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/reports/execute/route-d14ffafd970f186e.js +0 -1
  531. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/search-index/route-d14ffafd970f186e.js +0 -1
  532. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/suggest-files/route-d14ffafd970f186e.js +0 -1
  533. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/switch/route-d14ffafd970f186e.js +0 -1
  534. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/thumbnail/route-d14ffafd970f186e.js +0 -1
  535. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/tree/route-d14ffafd970f186e.js +0 -1
  536. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/upload/route-d14ffafd970f186e.js +0 -1
  537. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/virtual-file/route-d14ffafd970f186e.js +0 -1
  538. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/watch/route-d14ffafd970f186e.js +0 -1
  539. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/write-binary/route-d14ffafd970f186e.js +0 -1
  540. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/page-c8e88d7669047677.js +0 -1
  541. package/apps/web/.next/standalone/apps/web/.next/static/chunks/webpack-a769c08a3fea86bb.js +0 -1
  542. package/apps/web/.next/standalone/apps/web/.next/static/css/99b07ab2db5fe339.css +0 -1
  543. package/apps/web/.next/static/bHQQHboaVXn6uVyBK8na1/_buildManifest.js +0 -1
  544. package/apps/web/.next/static/chunks/2457.b2932424bcf38aee.js +0 -1
  545. package/apps/web/.next/static/chunks/2716-475d96c202834586.js +0 -135
  546. package/apps/web/.next/static/chunks/4062.6ff486abe87e56aa.js +0 -1
  547. package/apps/web/.next/static/chunks/app/api/apps/cron/route-d14ffafd970f186e.js +0 -1
  548. package/apps/web/.next/static/chunks/app/api/apps/proxy/route-d14ffafd970f186e.js +0 -1
  549. package/apps/web/.next/static/chunks/app/api/apps/route-d14ffafd970f186e.js +0 -1
  550. package/apps/web/.next/static/chunks/app/api/apps/serve/[...path]/route-d14ffafd970f186e.js +0 -1
  551. package/apps/web/.next/static/chunks/app/api/apps/store/route-d14ffafd970f186e.js +0 -1
  552. package/apps/web/.next/static/chunks/app/api/apps/webhooks/[...path]/route-d14ffafd970f186e.js +0 -1
  553. package/apps/web/.next/static/chunks/app/api/chat/active/route-d14ffafd970f186e.js +0 -1
  554. package/apps/web/.next/static/chunks/app/api/chat/route-d14ffafd970f186e.js +0 -1
  555. package/apps/web/.next/static/chunks/app/api/chat/runs/route-d14ffafd970f186e.js +0 -1
  556. package/apps/web/.next/static/chunks/app/api/chat/stop/route-d14ffafd970f186e.js +0 -1
  557. package/apps/web/.next/static/chunks/app/api/chat/stream/route-d14ffafd970f186e.js +0 -1
  558. package/apps/web/.next/static/chunks/app/api/chat/subagents/route-d14ffafd970f186e.js +0 -1
  559. package/apps/web/.next/static/chunks/app/api/cron/jobs/[jobId]/runs/route-d14ffafd970f186e.js +0 -1
  560. package/apps/web/.next/static/chunks/app/api/cron/jobs/route-d14ffafd970f186e.js +0 -1
  561. package/apps/web/.next/static/chunks/app/api/cron/runs/[sessionId]/route-d14ffafd970f186e.js +0 -1
  562. package/apps/web/.next/static/chunks/app/api/cron/runs/search-transcript/route-d14ffafd970f186e.js +0 -1
  563. package/apps/web/.next/static/chunks/app/api/feedback/route-d14ffafd970f186e.js +0 -1
  564. package/apps/web/.next/static/chunks/app/api/gateway/channels/route-d14ffafd970f186e.js +0 -1
  565. package/apps/web/.next/static/chunks/app/api/gateway/chat/route-d14ffafd970f186e.js +0 -1
  566. package/apps/web/.next/static/chunks/app/api/gateway/chat/stream/route-d14ffafd970f186e.js +0 -1
  567. package/apps/web/.next/static/chunks/app/api/gateway/sessions/[id]/route-d14ffafd970f186e.js +0 -1
  568. package/apps/web/.next/static/chunks/app/api/gateway/sessions/route-d14ffafd970f186e.js +0 -1
  569. package/apps/web/.next/static/chunks/app/api/memories/route-d14ffafd970f186e.js +0 -1
  570. package/apps/web/.next/static/chunks/app/api/profiles/route-d14ffafd970f186e.js +0 -1
  571. package/apps/web/.next/static/chunks/app/api/profiles/switch/route-d14ffafd970f186e.js +0 -1
  572. package/apps/web/.next/static/chunks/app/api/sessions/[sessionId]/route-d14ffafd970f186e.js +0 -1
  573. package/apps/web/.next/static/chunks/app/api/sessions/route-d14ffafd970f186e.js +0 -1
  574. package/apps/web/.next/static/chunks/app/api/skills/route-d14ffafd970f186e.js +0 -1
  575. package/apps/web/.next/static/chunks/app/api/terminal/port/route-d14ffafd970f186e.js +0 -1
  576. package/apps/web/.next/static/chunks/app/api/web-sessions/[id]/messages/route-d14ffafd970f186e.js +0 -1
  577. package/apps/web/.next/static/chunks/app/api/web-sessions/[id]/route-d14ffafd970f186e.js +0 -1
  578. package/apps/web/.next/static/chunks/app/api/web-sessions/route-d14ffafd970f186e.js +0 -1
  579. package/apps/web/.next/static/chunks/app/api/workspace/assets/[...path]/route-d14ffafd970f186e.js +0 -1
  580. package/apps/web/.next/static/chunks/app/api/workspace/browse/route-d14ffafd970f186e.js +0 -1
  581. package/apps/web/.next/static/chunks/app/api/workspace/browse-file/route-d14ffafd970f186e.js +0 -1
  582. package/apps/web/.next/static/chunks/app/api/workspace/context/route-d14ffafd970f186e.js +0 -1
  583. package/apps/web/.next/static/chunks/app/api/workspace/copy/route-d14ffafd970f186e.js +0 -1
  584. package/apps/web/.next/static/chunks/app/api/workspace/db/introspect/route-d14ffafd970f186e.js +0 -1
  585. package/apps/web/.next/static/chunks/app/api/workspace/db/query/route-d14ffafd970f186e.js +0 -1
  586. package/apps/web/.next/static/chunks/app/api/workspace/delete/route-d14ffafd970f186e.js +0 -1
  587. package/apps/web/.next/static/chunks/app/api/workspace/execute/route-d14ffafd970f186e.js +0 -1
  588. package/apps/web/.next/static/chunks/app/api/workspace/file/route-d14ffafd970f186e.js +0 -1
  589. package/apps/web/.next/static/chunks/app/api/workspace/init/route-d14ffafd970f186e.js +0 -1
  590. package/apps/web/.next/static/chunks/app/api/workspace/link-preview/route-d14ffafd970f186e.js +0 -1
  591. package/apps/web/.next/static/chunks/app/api/workspace/list/route-d14ffafd970f186e.js +0 -1
  592. package/apps/web/.next/static/chunks/app/api/workspace/mkdir/route-d14ffafd970f186e.js +0 -1
  593. package/apps/web/.next/static/chunks/app/api/workspace/move/route-d14ffafd970f186e.js +0 -1
  594. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/actions/route-d14ffafd970f186e.js +0 -1
  595. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/actions/runs/route-d14ffafd970f186e.js +0 -1
  596. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/display-field/route-d14ffafd970f186e.js +0 -1
  597. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/content/route-d14ffafd970f186e.js +0 -1
  598. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/route-d14ffafd970f186e.js +0 -1
  599. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/bulk-delete/route-d14ffafd970f186e.js +0 -1
  600. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/options/route-d14ffafd970f186e.js +0 -1
  601. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/route-d14ffafd970f186e.js +0 -1
  602. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/enum-rename/route-d14ffafd970f186e.js +0 -1
  603. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/route-d14ffafd970f186e.js +0 -1
  604. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/reorder/route-d14ffafd970f186e.js +0 -1
  605. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/route-d14ffafd970f186e.js +0 -1
  606. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/route-d14ffafd970f186e.js +0 -1
  607. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/views/route-d14ffafd970f186e.js +0 -1
  608. package/apps/web/.next/static/chunks/app/api/workspace/open-file/route-d14ffafd970f186e.js +0 -1
  609. package/apps/web/.next/static/chunks/app/api/workspace/path-info/route-d14ffafd970f186e.js +0 -1
  610. package/apps/web/.next/static/chunks/app/api/workspace/query/route-d14ffafd970f186e.js +0 -1
  611. package/apps/web/.next/static/chunks/app/api/workspace/raw-file/route-d14ffafd970f186e.js +0 -1
  612. package/apps/web/.next/static/chunks/app/api/workspace/rename/route-d14ffafd970f186e.js +0 -1
  613. package/apps/web/.next/static/chunks/app/api/workspace/reports/execute/route-d14ffafd970f186e.js +0 -1
  614. package/apps/web/.next/static/chunks/app/api/workspace/search-index/route-d14ffafd970f186e.js +0 -1
  615. package/apps/web/.next/static/chunks/app/api/workspace/suggest-files/route-d14ffafd970f186e.js +0 -1
  616. package/apps/web/.next/static/chunks/app/api/workspace/switch/route-d14ffafd970f186e.js +0 -1
  617. package/apps/web/.next/static/chunks/app/api/workspace/thumbnail/route-d14ffafd970f186e.js +0 -1
  618. package/apps/web/.next/static/chunks/app/api/workspace/tree/route-d14ffafd970f186e.js +0 -1
  619. package/apps/web/.next/static/chunks/app/api/workspace/upload/route-d14ffafd970f186e.js +0 -1
  620. package/apps/web/.next/static/chunks/app/api/workspace/virtual-file/route-d14ffafd970f186e.js +0 -1
  621. package/apps/web/.next/static/chunks/app/api/workspace/watch/route-d14ffafd970f186e.js +0 -1
  622. package/apps/web/.next/static/chunks/app/api/workspace/write-binary/route-d14ffafd970f186e.js +0 -1
  623. package/apps/web/.next/static/chunks/app/page-c8e88d7669047677.js +0 -1
  624. package/apps/web/.next/static/chunks/webpack-a769c08a3fea86bb.js +0 -1
  625. package/apps/web/.next/static/css/99b07ab2db5fe339.css +0 -1
  626. package/skills/browser/SKILL.md +0 -16
  627. /package/apps/web/.next/standalone/apps/web/.next/static/{bHQQHboaVXn6uVyBK8na1 → jcrHaOr6nJr3WKHp3ijBE}/_ssgManifest.js +0 -0
  628. /package/apps/web/.next/static/{bHQQHboaVXn6uVyBK8na1 → jcrHaOr6nJr3WKHp3ijBE}/_ssgManifest.js +0 -0
@@ -0,0 +1,325 @@
1
+ export const DEFAULT_DENCH_CLOUD_GATEWAY_URL = "https://gateway.merseoriginals.com";
2
+ export const DEFAULT_DENCH_CLOUD_MARGIN_PERCENT = 0.35;
3
+
4
+ export type DenchCloudCatalogCost = {
5
+ input: number;
6
+ output: number;
7
+ cacheRead: number;
8
+ cacheWrite: number;
9
+ marginPercent?: number;
10
+ };
11
+
12
+ export type DenchCloudCatalogModel = {
13
+ id: string;
14
+ stableId: string;
15
+ displayName: string;
16
+ provider: string;
17
+ transportProvider: string;
18
+ api: "openai-completions" | "openai-responses";
19
+ input: Array<"text" | "image">;
20
+ reasoning: boolean;
21
+ contextWindow: number;
22
+ maxTokens: number;
23
+ supportsStreaming: boolean;
24
+ supportsImages: boolean;
25
+ supportsResponses: boolean;
26
+ supportsReasoning: boolean;
27
+ cost: DenchCloudCatalogCost;
28
+ };
29
+
30
+ type UnknownRecord = Record<string, unknown>;
31
+
32
+ function roundUsd(value: number): number {
33
+ return Number(value.toFixed(8));
34
+ }
35
+
36
+ function markupCost(value: number): number {
37
+ return roundUsd(value * (1 + DEFAULT_DENCH_CLOUD_MARGIN_PERCENT));
38
+ }
39
+
40
+ function asRecord(value: unknown): UnknownRecord | undefined {
41
+ return value && typeof value === "object" ? (value as UnknownRecord) : undefined;
42
+ }
43
+
44
+ function readString(input: UnknownRecord, ...keys: string[]): string | undefined {
45
+ for (const key of keys) {
46
+ const value = input[key];
47
+ if (typeof value === "string" && value.trim().length > 0) {
48
+ return value.trim();
49
+ }
50
+ }
51
+ return undefined;
52
+ }
53
+
54
+ function readNumber(input: UnknownRecord, ...keys: string[]): number | undefined {
55
+ for (const key of keys) {
56
+ const value = input[key];
57
+ if (typeof value === "number" && Number.isFinite(value)) {
58
+ return value;
59
+ }
60
+ if (typeof value === "string" && value.trim().length > 0) {
61
+ const parsed = Number(value);
62
+ if (Number.isFinite(parsed)) {
63
+ return parsed;
64
+ }
65
+ }
66
+ }
67
+ return undefined;
68
+ }
69
+
70
+ function readBoolean(input: UnknownRecord, ...keys: string[]): boolean | undefined {
71
+ for (const key of keys) {
72
+ const value = input[key];
73
+ if (typeof value === "boolean") {
74
+ return value;
75
+ }
76
+ }
77
+ return undefined;
78
+ }
79
+
80
+ function isNonEmptyString(value: string | undefined): value is string {
81
+ return typeof value === "string" && value.trim().length > 0;
82
+ }
83
+
84
+ function normalizeInputKinds(input: unknown, supportsImages: boolean): Array<"text" | "image"> {
85
+ if (!Array.isArray(input)) {
86
+ return supportsImages ? ["text", "image"] : ["text"];
87
+ }
88
+
89
+ const kinds = new Set<"text" | "image">();
90
+ for (const value of input) {
91
+ if (value === "text" || value === "image") {
92
+ kinds.add(value);
93
+ }
94
+ }
95
+
96
+ if (!kinds.has("text")) {
97
+ kinds.add("text");
98
+ }
99
+ if (supportsImages) {
100
+ kinds.add("image");
101
+ }
102
+ return [...kinds];
103
+ }
104
+
105
+ export function normalizeDenchGatewayUrl(value: string | undefined): string {
106
+ const raw = (value || DEFAULT_DENCH_CLOUD_GATEWAY_URL).trim();
107
+ const withProtocol = raw.startsWith("http://") || raw.startsWith("https://")
108
+ ? raw
109
+ : `https://${raw}`;
110
+ return withProtocol.replace(/\/+$/, "").replace(/\/v1$/u, "");
111
+ }
112
+
113
+ export function buildDenchGatewayApiBaseUrl(gatewayUrl: string | undefined): string {
114
+ return `${normalizeDenchGatewayUrl(gatewayUrl)}/v1`;
115
+ }
116
+
117
+ export function buildDenchGatewayCatalogUrl(gatewayUrl: string | undefined): string {
118
+ return `${normalizeDenchGatewayUrl(gatewayUrl)}/v1/public/models`;
119
+ }
120
+
121
+ export const RECOMMENDED_DENCH_CLOUD_MODEL_ID = "claude-opus-4.6";
122
+
123
+ export const FALLBACK_DENCH_CLOUD_MODELS: DenchCloudCatalogModel[] = [
124
+ {
125
+ id: "claude-opus-4.6",
126
+ stableId: "anthropic.claude-opus-4-6-v1",
127
+ displayName: "Claude Opus 4.6",
128
+ provider: "anthropic",
129
+ transportProvider: "bedrock",
130
+ api: "openai-responses",
131
+ input: ["text", "image"],
132
+ reasoning: false,
133
+ contextWindow: 200000,
134
+ maxTokens: 64000,
135
+ supportsStreaming: true,
136
+ supportsImages: true,
137
+ supportsResponses: true,
138
+ supportsReasoning: false,
139
+ cost: {
140
+ input: markupCost(5),
141
+ output: markupCost(25),
142
+ cacheRead: 0,
143
+ cacheWrite: 0,
144
+ marginPercent: DEFAULT_DENCH_CLOUD_MARGIN_PERCENT,
145
+ },
146
+ },
147
+ {
148
+ id: "gpt-5.4",
149
+ stableId: "gpt-5.4",
150
+ displayName: "GPT-5.4",
151
+ provider: "openai",
152
+ transportProvider: "openai",
153
+ api: "openai-responses",
154
+ input: ["text", "image"],
155
+ reasoning: false,
156
+ contextWindow: 128000,
157
+ maxTokens: 128000,
158
+ supportsStreaming: true,
159
+ supportsImages: true,
160
+ supportsResponses: true,
161
+ supportsReasoning: false,
162
+ cost: {
163
+ input: markupCost(2.5),
164
+ output: markupCost(15),
165
+ cacheRead: 0,
166
+ cacheWrite: 0,
167
+ marginPercent: DEFAULT_DENCH_CLOUD_MARGIN_PERCENT,
168
+ },
169
+ },
170
+ {
171
+ id: "claude-sonnet-4.6",
172
+ stableId: "anthropic.claude-sonnet-4-6-v1",
173
+ displayName: "Claude Sonnet 4.6",
174
+ provider: "anthropic",
175
+ transportProvider: "bedrock",
176
+ api: "openai-responses",
177
+ input: ["text", "image"],
178
+ reasoning: false,
179
+ contextWindow: 200000,
180
+ maxTokens: 64000,
181
+ supportsStreaming: true,
182
+ supportsImages: true,
183
+ supportsResponses: true,
184
+ supportsReasoning: false,
185
+ cost: {
186
+ input: markupCost(3),
187
+ output: markupCost(15),
188
+ cacheRead: 0,
189
+ cacheWrite: 0,
190
+ marginPercent: DEFAULT_DENCH_CLOUD_MARGIN_PERCENT,
191
+ },
192
+ },
193
+ ];
194
+
195
+ export function cloneFallbackDenchCloudModels(): DenchCloudCatalogModel[] {
196
+ return FALLBACK_DENCH_CLOUD_MODELS.map((model) => ({
197
+ ...model,
198
+ input: [...model.input],
199
+ cost: { ...model.cost },
200
+ }));
201
+ }
202
+
203
+ export function normalizeDenchCloudCatalogModel(input: unknown): DenchCloudCatalogModel | null {
204
+ const record = asRecord(input);
205
+ if (!record) {
206
+ return null;
207
+ }
208
+
209
+ const publicId = readString(record, "id", "publicId", "public_id");
210
+ const stableId = readString(record, "stableId", "stable_id") || publicId;
211
+ const displayName = readString(record, "name", "displayName", "display_name");
212
+ const provider = readString(record, "provider");
213
+ const transportProvider = readString(record, "transportProvider", "transport_provider");
214
+ if (!publicId || !stableId || !displayName || !isNonEmptyString(provider) || !isNonEmptyString(transportProvider)) {
215
+ return null;
216
+ }
217
+
218
+ const supportsImages = readBoolean(record, "supportsImages", "supports_images") ?? false;
219
+ const supportsStreaming = readBoolean(record, "supportsStreaming", "supports_streaming") ?? true;
220
+ const supportsResponses = readBoolean(record, "supportsResponses", "supports_responses") ?? true;
221
+ const supportsReasoning = readBoolean(record, "supportsReasoning", "supports_reasoning")
222
+ ?? readBoolean(record, "reasoning")
223
+ ?? false;
224
+ const contextWindow = readNumber(record, "contextWindow", "context_window") ?? 200000;
225
+ const maxTokens = readNumber(record, "maxTokens", "max_tokens", "maxOutputTokens", "max_output_tokens") ?? 64000;
226
+
227
+ const costRecord = asRecord(record.cost) ?? {};
228
+ const inputCost = readNumber(costRecord, "input") ?? 0;
229
+ const outputCost = readNumber(costRecord, "output") ?? 0;
230
+ const cacheRead = readNumber(costRecord, "cacheRead", "cache_read") ?? 0;
231
+ const cacheWrite = readNumber(costRecord, "cacheWrite", "cache_write") ?? 0;
232
+ const marginPercent = readNumber(costRecord, "marginPercent", "margin_percent");
233
+
234
+ return {
235
+ id: publicId,
236
+ stableId,
237
+ displayName,
238
+ provider,
239
+ transportProvider,
240
+ api: record.api === "openai-completions" ? "openai-completions" : "openai-responses",
241
+ input: normalizeInputKinds(record.input, supportsImages),
242
+ reasoning: supportsReasoning,
243
+ contextWindow,
244
+ maxTokens,
245
+ supportsStreaming,
246
+ supportsImages,
247
+ supportsResponses,
248
+ supportsReasoning,
249
+ cost: {
250
+ input: inputCost,
251
+ output: outputCost,
252
+ cacheRead,
253
+ cacheWrite,
254
+ ...(marginPercent !== undefined ? { marginPercent } : {}),
255
+ },
256
+ };
257
+ }
258
+
259
+ export function normalizeDenchCloudCatalogResponse(payload: unknown): DenchCloudCatalogModel[] {
260
+ const root = asRecord(payload);
261
+ const data = root?.data;
262
+ if (!Array.isArray(data)) {
263
+ return [];
264
+ }
265
+
266
+ const models: DenchCloudCatalogModel[] = [];
267
+ const seen = new Set<string>();
268
+ for (const entry of data) {
269
+ const normalized = normalizeDenchCloudCatalogModel(entry);
270
+ if (!normalized || seen.has(normalized.stableId)) {
271
+ continue;
272
+ }
273
+ seen.add(normalized.stableId);
274
+ models.push(normalized);
275
+ }
276
+ return models;
277
+ }
278
+
279
+ export function buildDenchCloudProviderModels(models: DenchCloudCatalogModel[]) {
280
+ return models.map((model) => ({
281
+ id: model.stableId,
282
+ name: `${model.displayName} (Dench Cloud)`,
283
+ reasoning: model.reasoning,
284
+ input: [...model.input],
285
+ cost: {
286
+ input: model.cost.input,
287
+ output: model.cost.output,
288
+ cacheRead: model.cost.cacheRead,
289
+ cacheWrite: model.cost.cacheWrite,
290
+ },
291
+ contextWindow: model.contextWindow,
292
+ maxTokens: model.maxTokens,
293
+ }));
294
+ }
295
+
296
+ export function buildDenchCloudAgentModelEntries(models: DenchCloudCatalogModel[]) {
297
+ return Object.fromEntries(
298
+ models.map((model) => [
299
+ `dench-cloud/${model.stableId}`,
300
+ { alias: `${model.displayName} (Dench Cloud)` },
301
+ ]),
302
+ );
303
+ }
304
+
305
+ export function resolveDenchCloudModel(
306
+ models: DenchCloudCatalogModel[],
307
+ requestedId: string | undefined,
308
+ ): DenchCloudCatalogModel | undefined {
309
+ const normalized = requestedId?.trim();
310
+ if (!normalized) {
311
+ return (
312
+ models.find((model) => model.id === RECOMMENDED_DENCH_CLOUD_MODEL_ID) ||
313
+ models[0]
314
+ );
315
+ }
316
+
317
+ return models.find((model) => model.id === normalized || model.stableId === normalized);
318
+ }
319
+
320
+ export function formatDenchCloudModelHint(model: DenchCloudCatalogModel): string {
321
+ const parts: string[] = [model.provider];
322
+ if (model.reasoning) parts.push("reasoning");
323
+ if (model.id === RECOMMENDED_DENCH_CLOUD_MODEL_ID) parts.push("recommended");
324
+ return parts.join(" · ");
325
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "id": "dench-ai-gateway",
3
+ "name": "Dench AI Gateway",
4
+ "version": "1.0.0",
5
+ "description": "Registers Dench Cloud as an OpenClaw model provider with live gateway-backed model discovery.",
6
+ "configSchema": {
7
+ "type": "object",
8
+ "additionalProperties": false,
9
+ "properties": {
10
+ "gatewayUrl": {
11
+ "type": "string",
12
+ "default": "https://gateway.merseoriginals.com"
13
+ },
14
+ "enabled": {
15
+ "type": "boolean",
16
+ "default": true
17
+ }
18
+ },
19
+ "required": []
20
+ },
21
+ "uiHints": {
22
+ "gatewayUrl": {
23
+ "label": "Dench Gateway URL",
24
+ "placeholder": "https://gateway.merseoriginals.com"
25
+ }
26
+ }
27
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "@denchclaw/dench-ai-gateway",
3
+ "version": "1.0.0",
4
+ "private": true,
5
+ "openclaw": {
6
+ "extensions": ["./index.ts"]
7
+ }
8
+ }
@@ -0,0 +1,146 @@
1
+ import { mkdirSync, writeFileSync, rmSync } from "node:fs";
2
+ import path from "node:path";
3
+ import os from "node:os";
4
+ import { describe, expect, it, afterEach } from "vitest";
5
+ import {
6
+ formatComposioToolCheatSheetFromIndex,
7
+ loadComposioToolCheatSheetMarkdown,
8
+ } from "./composio-cheat-sheet.js";
9
+
10
+ describe("formatComposioToolCheatSheetFromIndex", () => {
11
+ it("renders markdown with tool table and gotchas", () => {
12
+ const md = formatComposioToolCheatSheetFromIndex({
13
+ generated_at: "2025-01-01T00:00:00.000Z",
14
+ connected_apps: [
15
+ {
16
+ toolkit_slug: "gmail",
17
+ toolkit_name: "Gmail",
18
+ account_count: 2,
19
+ tools: [
20
+ {
21
+ name: "GMAIL_FETCH_EMAILS",
22
+ title: "Fetch emails",
23
+ description_short: "List messages.",
24
+ required_args: [],
25
+ arg_hints: {
26
+ label_ids: 'Use ["INBOX"]',
27
+ },
28
+ },
29
+ ],
30
+ recipes: {
31
+ "Read recent emails": "GMAIL_FETCH_EMAILS",
32
+ },
33
+ },
34
+ ],
35
+ });
36
+
37
+ expect(md).toContain("### Gmail (2 accounts connected)");
38
+ expect(md).toContain("GMAIL_FETCH_EMAILS");
39
+ expect(md).toContain("Read recent emails");
40
+ expect(md).toContain("label_ids");
41
+ expect(md).toContain("Composio MCP");
42
+ });
43
+ });
44
+
45
+ describe("loadComposioToolCheatSheetMarkdown", () => {
46
+ let tmp: string;
47
+
48
+ afterEach(() => {
49
+ if (tmp) {
50
+ rmSync(tmp, { recursive: true, force: true });
51
+ }
52
+ });
53
+
54
+ it("reads composio-tool-index.json from workspace dir", () => {
55
+ tmp = path.join(
56
+ os.tmpdir(),
57
+ `dench-composio-index-${Date.now()}-${Math.random().toString(36).slice(2)}`,
58
+ );
59
+ mkdirSync(tmp, { recursive: true });
60
+ writeFileSync(
61
+ path.join(tmp, "composio-tool-index.json"),
62
+ JSON.stringify({
63
+ generated_at: "2025-01-02T00:00:00.000Z",
64
+ connected_apps: [
65
+ {
66
+ toolkit_slug: "slack",
67
+ toolkit_name: "Slack",
68
+ account_count: 1,
69
+ tools: [
70
+ {
71
+ name: "SLACK_SEND_MESSAGE",
72
+ title: "Send",
73
+ description_short: "Send a message.",
74
+ required_args: ["channel", "text"],
75
+ arg_hints: {},
76
+ },
77
+ ],
78
+ recipes: {},
79
+ },
80
+ ],
81
+ }),
82
+ "utf-8",
83
+ );
84
+
85
+ const md = loadComposioToolCheatSheetMarkdown(tmp);
86
+ expect(md).toContain("Slack (1 account connected)");
87
+ expect(md).toContain("SLACK_SEND_MESSAGE");
88
+ expect(md).toContain("composio_resolve_tool");
89
+ });
90
+
91
+ it("only claims verified MCP availability when the status file says so", () => {
92
+ tmp = path.join(
93
+ os.tmpdir(),
94
+ `dench-composio-status-${Date.now()}-${Math.random().toString(36).slice(2)}`,
95
+ );
96
+ mkdirSync(tmp, { recursive: true });
97
+ writeFileSync(
98
+ path.join(tmp, "composio-tool-index.json"),
99
+ JSON.stringify({
100
+ generated_at: "2025-01-02T00:00:00.000Z",
101
+ connected_apps: [
102
+ {
103
+ toolkit_slug: "gmail",
104
+ toolkit_name: "Gmail",
105
+ account_count: 1,
106
+ tools: [
107
+ {
108
+ name: "GMAIL_FETCH_EMAILS",
109
+ title: "Fetch emails",
110
+ description_short: "List inbox messages.",
111
+ required_args: [],
112
+ arg_hints: {},
113
+ default_args: { label_ids: ["INBOX"], max_results: 10 },
114
+ },
115
+ ],
116
+ recipes: { "Read recent emails": "GMAIL_FETCH_EMAILS" },
117
+ },
118
+ ],
119
+ }),
120
+ "utf-8",
121
+ );
122
+ writeFileSync(
123
+ path.join(tmp, "composio-mcp-status.json"),
124
+ JSON.stringify({
125
+ summary: {
126
+ verified: false,
127
+ message: "Composio MCP is configured and the gateway is reachable, but live agent visibility has not been verified yet.",
128
+ },
129
+ }),
130
+ "utf-8",
131
+ );
132
+
133
+ const md = loadComposioToolCheatSheetMarkdown(tmp);
134
+ expect(md).toContain("configured integration layer");
135
+ expect(md).not.toContain("verified MCP tools available");
136
+ });
137
+
138
+ it("returns null when file is missing", () => {
139
+ tmp = path.join(
140
+ os.tmpdir(),
141
+ `dench-composio-empty-${Date.now()}-${Math.random().toString(36).slice(2)}`,
142
+ );
143
+ mkdirSync(tmp, { recursive: true });
144
+ expect(loadComposioToolCheatSheetMarkdown(tmp)).toBeNull();
145
+ });
146
+ });
@@ -0,0 +1,197 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import path from "node:path";
3
+
4
+ /**
5
+ * Shape written by `apps/web/lib/composio-tool-index.ts` to
6
+ * `<workspace>/composio-tool-index.json`. Kept in the extension package so the
7
+ * agent runtime can format the cheat sheet without importing the Next app.
8
+ */
9
+ export type ComposioToolIndexFile = {
10
+ generated_at: string;
11
+ connected_apps: Array<{
12
+ toolkit_slug: string;
13
+ toolkit_name: string;
14
+ account_count: number;
15
+ tools: Array<{
16
+ name: string;
17
+ title: string;
18
+ description_short: string;
19
+ required_args: string[];
20
+ arg_hints: Record<string, string>;
21
+ default_args?: Record<string, unknown>;
22
+ example_args?: Record<string, unknown>;
23
+ example_prompts?: string[];
24
+ input_schema?: Record<string, unknown>;
25
+ }>;
26
+ recipes: Record<string, string>;
27
+ }>;
28
+ };
29
+
30
+ type ComposioMcpStatusFile = {
31
+ summary?: {
32
+ verified?: boolean;
33
+ message?: string;
34
+ };
35
+ config?: {
36
+ status?: "pass" | "fail" | "unknown";
37
+ };
38
+ gatewayTools?: {
39
+ status?: "pass" | "fail" | "unknown";
40
+ };
41
+ liveAgent?: {
42
+ status?: "pass" | "fail" | "unknown";
43
+ };
44
+ };
45
+
46
+ function isComposioToolIndexFile(value: unknown): value is ComposioToolIndexFile {
47
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
48
+ return false;
49
+ }
50
+ const rec = value as Record<string, unknown>;
51
+ if (typeof rec.generated_at !== "string" || !Array.isArray(rec.connected_apps)) {
52
+ return false;
53
+ }
54
+ return true;
55
+ }
56
+
57
+ /**
58
+ * Build markdown for the identity system prompt from a parsed index file.
59
+ */
60
+ export function formatComposioToolCheatSheetFromIndex(index: ComposioToolIndexFile): string {
61
+ return formatComposioToolCheatSheet(index, null);
62
+ }
63
+
64
+ function formatComposioToolCheatSheet(
65
+ index: ComposioToolIndexFile,
66
+ status: ComposioMcpStatusFile | null,
67
+ ): string {
68
+ const verified = status?.summary?.verified === true;
69
+ const summaryMessage = typeof status?.summary?.message === "string" ? status.summary.message : null;
70
+ const lines: string[] = [
71
+ "## Connected App Tools (via Composio MCP)",
72
+ "",
73
+ verified
74
+ ? "You have verified MCP tools available for these connected apps. Call them directly."
75
+ : "Composio MCP is the configured integration layer for these connected apps. If the MCP tools are missing in this session, stop and report the Composio MCP repair status instead of bypassing it.",
76
+ "",
77
+ "- Use `composio_resolve_tool` first when the exact Composio tool name or argument shape is not already obvious.",
78
+ "- Never use `gog`, shell CLIs, curl, or raw `/v1/composio/*` HTTP as a fallback for these connected apps.",
79
+ "- If a Composio tool fails because of argument shape, fix the JSON arguments and retry once.",
80
+ "",
81
+ ];
82
+ if (summaryMessage) {
83
+ lines.push(`Current verification status: ${summaryMessage}`, "");
84
+ }
85
+
86
+ for (const app of index.connected_apps) {
87
+ const title =
88
+ app.account_count > 1
89
+ ? `### ${app.toolkit_name} (${app.account_count} accounts connected)`
90
+ : `### ${app.toolkit_name} (1 account connected)`;
91
+ lines.push(title, "");
92
+ lines.push("| Intent | Tool | Key args |");
93
+ lines.push("|--------|------|----------|");
94
+
95
+ const recipeByTool = Object.fromEntries(
96
+ Object.entries(app.recipes).map(([intent, tool]) => [tool, intent]),
97
+ );
98
+
99
+ for (const tool of app.tools) {
100
+ const intent = recipeByTool[tool.name] ?? "—";
101
+ const keyParts: string[] = [];
102
+ for (const a of tool.required_args.slice(0, 4)) {
103
+ keyParts.push(a);
104
+ }
105
+ const hintSample = Object.entries(tool.arg_hints).slice(0, 2);
106
+ for (const [k, v] of hintSample) {
107
+ keyParts.push(`${k}: ${v}`);
108
+ }
109
+ if (tool.default_args && Object.keys(tool.default_args).length > 0) {
110
+ keyParts.push(`defaults: ${JSON.stringify(tool.default_args)}`);
111
+ }
112
+ const keyArgs = keyParts.length ? keyParts.join("; ") : "—";
113
+ lines.push(`| ${intent} | \`${tool.name}\` | ${keyArgs} |`);
114
+ }
115
+
116
+ const gotchas = Object.entries(
117
+ app.tools.reduce<Record<string, string>>((acc, t) => {
118
+ for (const [k, v] of Object.entries(t.arg_hints)) {
119
+ if (!acc[k]) {
120
+ acc[k] = v;
121
+ }
122
+ }
123
+ return acc;
124
+ }, {}),
125
+ );
126
+ if (gotchas.length > 0) {
127
+ lines.push("");
128
+ lines.push(
129
+ "**Known gotchas:**",
130
+ ...gotchas.map(([k, v]) => `- \`${k}\`: ${v}`),
131
+ );
132
+ }
133
+
134
+ const extraRecipes = Object.entries(app.recipes).filter(
135
+ ([, toolName]) => !app.tools.some((t) => t.name === toolName),
136
+ );
137
+ if (extraRecipes.length > 0) {
138
+ lines.push("");
139
+ lines.push("**More intents (tool may be outside the curated direct-tool list):**");
140
+ for (const [intent, toolName] of extraRecipes) {
141
+ lines.push(`- ${intent}: \`${toolName}\``);
142
+ }
143
+ }
144
+
145
+ lines.push("");
146
+ }
147
+
148
+ return lines.join("\n").trimEnd() + "\n";
149
+ }
150
+
151
+ function readComposioToolIndex(workspaceDir: string): ComposioToolIndexFile | null {
152
+ const filePath = path.join(workspaceDir, "composio-tool-index.json");
153
+ if (!existsSync(filePath)) {
154
+ return null;
155
+ }
156
+ try {
157
+ const raw = JSON.parse(readFileSync(filePath, "utf-8")) as unknown;
158
+ return isComposioToolIndexFile(raw) ? raw : null;
159
+ } catch {
160
+ return null;
161
+ }
162
+ }
163
+
164
+ export function readComposioToolIndexFile(workspaceDir: string): ComposioToolIndexFile | null {
165
+ return readComposioToolIndex(workspaceDir);
166
+ }
167
+
168
+ function readComposioMcpStatus(workspaceDir: string): ComposioMcpStatusFile | null {
169
+ const filePath = path.join(workspaceDir, "composio-mcp-status.json");
170
+ if (!existsSync(filePath)) {
171
+ return null;
172
+ }
173
+ try {
174
+ const raw = JSON.parse(readFileSync(filePath, "utf-8")) as unknown;
175
+ if (raw && typeof raw === "object" && !Array.isArray(raw)) {
176
+ return raw as ComposioMcpStatusFile;
177
+ }
178
+ return null;
179
+ } catch {
180
+ return null;
181
+ }
182
+ }
183
+
184
+ export function readComposioMcpStatusFile(workspaceDir: string): ComposioMcpStatusFile | null {
185
+ return readComposioMcpStatus(workspaceDir);
186
+ }
187
+
188
+ /**
189
+ * Loads and formats the cheat sheet, or returns null if no index file / invalid JSON.
190
+ */
191
+ export function loadComposioToolCheatSheetMarkdown(workspaceDir: string): string | null {
192
+ const index = readComposioToolIndex(workspaceDir);
193
+ if (!index || index.connected_apps.length === 0) {
194
+ return null;
195
+ }
196
+ return formatComposioToolCheatSheet(index, readComposioMcpStatus(workspaceDir));
197
+ }