denchclaw 3.1.4 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/README.md +4 -4
  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 +180 -180
  4. package/apps/web/.next/standalone/apps/web/.next/app-path-routes-manifest.json +51 -51
  5. package/apps/web/.next/standalone/apps/web/.next/build-manifest.json +2 -2
  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/required-server-files.json +1 -1
  9. package/apps/web/.next/standalone/apps/web/.next/routes-manifest.json +1 -1
  10. package/apps/web/.next/standalone/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  11. package/apps/web/.next/standalone/apps/web/.next/server/app/api/apps/cron/route_client-reference-manifest.js +1 -1
  12. package/apps/web/.next/standalone/apps/web/.next/server/app/api/apps/proxy/route_client-reference-manifest.js +1 -1
  13. package/apps/web/.next/standalone/apps/web/.next/server/app/api/apps/route_client-reference-manifest.js +1 -1
  14. package/apps/web/.next/standalone/apps/web/.next/server/app/api/apps/serve/[...path]/route_client-reference-manifest.js +1 -1
  15. package/apps/web/.next/standalone/apps/web/.next/server/app/api/apps/store/route_client-reference-manifest.js +1 -1
  16. package/apps/web/.next/standalone/apps/web/.next/server/app/api/apps/webhooks/[...path]/route_client-reference-manifest.js +1 -1
  17. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/active/route_client-reference-manifest.js +1 -1
  18. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/route.js +1 -1
  19. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/route_client-reference-manifest.js +1 -1
  20. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/runs/route_client-reference-manifest.js +1 -1
  21. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/stop/route.js +1 -1
  22. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/stop/route_client-reference-manifest.js +1 -1
  23. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/stream/route_client-reference-manifest.js +1 -1
  24. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/subagents/route_client-reference-manifest.js +1 -1
  25. package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/callback/route_client-reference-manifest.js +1 -1
  26. package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/connect/route_client-reference-manifest.js +1 -1
  27. package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/connections/route_client-reference-manifest.js +1 -1
  28. package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/disconnect/route_client-reference-manifest.js +1 -1
  29. package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/status/route_client-reference-manifest.js +1 -1
  30. package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/toolkits/route_client-reference-manifest.js +1 -1
  31. package/apps/web/.next/standalone/apps/web/.next/server/app/api/crm/calendar/[id]/route_client-reference-manifest.js +1 -1
  32. package/apps/web/.next/standalone/apps/web/.next/server/app/api/crm/calendar/route_client-reference-manifest.js +1 -1
  33. package/apps/web/.next/standalone/apps/web/.next/server/app/api/crm/companies/[id]/route_client-reference-manifest.js +1 -1
  34. package/apps/web/.next/standalone/apps/web/.next/server/app/api/crm/enrich/[type]/[id]/route_client-reference-manifest.js +1 -1
  35. package/apps/web/.next/standalone/apps/web/.next/server/app/api/crm/inbox/[threadId]/route_client-reference-manifest.js +1 -1
  36. package/apps/web/.next/standalone/apps/web/.next/server/app/api/crm/inbox/route_client-reference-manifest.js +1 -1
  37. package/apps/web/.next/standalone/apps/web/.next/server/app/api/crm/people/[id]/activity/route_client-reference-manifest.js +1 -1
  38. package/apps/web/.next/standalone/apps/web/.next/server/app/api/crm/people/[id]/route_client-reference-manifest.js +1 -1
  39. package/apps/web/.next/standalone/apps/web/.next/server/app/api/crm/people/route_client-reference-manifest.js +1 -1
  40. package/apps/web/.next/standalone/apps/web/.next/server/app/api/crm/photos/proxy/route_client-reference-manifest.js +1 -1
  41. package/apps/web/.next/standalone/apps/web/.next/server/app/api/crm/photos/sync/route_client-reference-manifest.js +1 -1
  42. package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/heartbeat/route_client-reference-manifest.js +1 -1
  43. package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/jobs/[jobId]/runs/route_client-reference-manifest.js +1 -1
  44. package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/jobs/route_client-reference-manifest.js +1 -1
  45. package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/runs/[sessionId]/route_client-reference-manifest.js +1 -1
  46. package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/runs/search-transcript/route_client-reference-manifest.js +1 -1
  47. package/apps/web/.next/standalone/apps/web/.next/server/app/api/feedback/route.js +1 -1
  48. package/apps/web/.next/standalone/apps/web/.next/server/app/api/feedback/route_client-reference-manifest.js +1 -1
  49. package/apps/web/.next/standalone/apps/web/.next/server/app/api/gateway/channels/route_client-reference-manifest.js +1 -1
  50. package/apps/web/.next/standalone/apps/web/.next/server/app/api/gateway/chat/route_client-reference-manifest.js +1 -1
  51. package/apps/web/.next/standalone/apps/web/.next/server/app/api/gateway/chat/stream/route_client-reference-manifest.js +1 -1
  52. package/apps/web/.next/standalone/apps/web/.next/server/app/api/gateway/sessions/[id]/route_client-reference-manifest.js +1 -1
  53. package/apps/web/.next/standalone/apps/web/.next/server/app/api/gateway/sessions/route_client-reference-manifest.js +1 -1
  54. package/apps/web/.next/standalone/apps/web/.next/server/app/api/integrations/[id]/toggle/route_client-reference-manifest.js +1 -1
  55. package/apps/web/.next/standalone/apps/web/.next/server/app/api/integrations/repair/route_client-reference-manifest.js +1 -1
  56. package/apps/web/.next/standalone/apps/web/.next/server/app/api/integrations/route_client-reference-manifest.js +1 -1
  57. package/apps/web/.next/standalone/apps/web/.next/server/app/api/memories/route_client-reference-manifest.js +1 -1
  58. package/apps/web/.next/standalone/apps/web/.next/server/app/api/onboarding/connections/route.js +1 -1
  59. package/apps/web/.next/standalone/apps/web/.next/server/app/api/onboarding/connections/route_client-reference-manifest.js +1 -1
  60. package/apps/web/.next/standalone/apps/web/.next/server/app/api/onboarding/dench-cloud/route.js +1 -1
  61. package/apps/web/.next/standalone/apps/web/.next/server/app/api/onboarding/dench-cloud/route_client-reference-manifest.js +1 -1
  62. package/apps/web/.next/standalone/apps/web/.next/server/app/api/onboarding/identity/route.js +1 -1
  63. package/apps/web/.next/standalone/apps/web/.next/server/app/api/onboarding/identity/route_client-reference-manifest.js +1 -1
  64. package/apps/web/.next/standalone/apps/web/.next/server/app/api/onboarding/skill-template/consume/route_client-reference-manifest.js +1 -1
  65. package/apps/web/.next/standalone/apps/web/.next/server/app/api/onboarding/state/route.js +1 -1
  66. package/apps/web/.next/standalone/apps/web/.next/server/app/api/onboarding/state/route_client-reference-manifest.js +1 -1
  67. package/apps/web/.next/standalone/apps/web/.next/server/app/api/onboarding/sync/progress/route_client-reference-manifest.js +1 -1
  68. package/apps/web/.next/standalone/apps/web/.next/server/app/api/onboarding/sync/start/route.js +1 -1
  69. package/apps/web/.next/standalone/apps/web/.next/server/app/api/onboarding/sync/start/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_client-reference-manifest.js +1 -1
  74. package/apps/web/.next/standalone/apps/web/.next/server/app/api/settings/cloud/route_client-reference-manifest.js +1 -1
  75. package/apps/web/.next/standalone/apps/web/.next/server/app/api/settings/mcp/connect/callback/route_client-reference-manifest.js +1 -1
  76. package/apps/web/.next/standalone/apps/web/.next/server/app/api/settings/mcp/connect/start/route_client-reference-manifest.js +1 -1
  77. package/apps/web/.next/standalone/apps/web/.next/server/app/api/settings/mcp/connect/token/route_client-reference-manifest.js +1 -1
  78. package/apps/web/.next/standalone/apps/web/.next/server/app/api/settings/mcp/probe/route_client-reference-manifest.js +1 -1
  79. package/apps/web/.next/standalone/apps/web/.next/server/app/api/settings/mcp/route_client-reference-manifest.js +1 -1
  80. package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/[slug]/content/route_client-reference-manifest.js +1 -1
  81. package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/[slug]/route_client-reference-manifest.js +1 -1
  82. package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/browse/route_client-reference-manifest.js +1 -1
  83. package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/install/route_client-reference-manifest.js +1 -1
  84. package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  85. package/apps/web/.next/standalone/apps/web/.next/server/app/api/sync/poll-tick/route_client-reference-manifest.js +1 -1
  86. package/apps/web/.next/standalone/apps/web/.next/server/app/api/sync/refresh/route_client-reference-manifest.js +1 -1
  87. package/apps/web/.next/standalone/apps/web/.next/server/app/api/sync/status/route_client-reference-manifest.js +1 -1
  88. package/apps/web/.next/standalone/apps/web/.next/server/app/api/terminal/port/route_client-reference-manifest.js +1 -1
  89. package/apps/web/.next/standalone/apps/web/.next/server/app/api/voice/speech/route_client-reference-manifest.js +1 -1
  90. package/apps/web/.next/standalone/apps/web/.next/server/app/api/voice/transcribe/route_client-reference-manifest.js +1 -1
  91. package/apps/web/.next/standalone/apps/web/.next/server/app/api/voice/voices/route_client-reference-manifest.js +1 -1
  92. package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/[id]/messages/route_client-reference-manifest.js +1 -1
  93. package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/[id]/route_client-reference-manifest.js +1 -1
  94. package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/route.js +1 -1
  95. package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/route_client-reference-manifest.js +1 -1
  96. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/assets/[...path]/route_client-reference-manifest.js +1 -1
  97. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/browse/route_client-reference-manifest.js +1 -1
  98. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/browse-file/route_client-reference-manifest.js +1 -1
  99. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/context/route_client-reference-manifest.js +1 -1
  100. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/copy/route_client-reference-manifest.js +1 -1
  101. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/db/introspect/route_client-reference-manifest.js +1 -1
  102. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/db/query/route_client-reference-manifest.js +1 -1
  103. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/delete/route.js +1 -1
  104. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/delete/route_client-reference-manifest.js +1 -1
  105. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/enrichment-status/route_client-reference-manifest.js +1 -1
  106. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/execute/route_client-reference-manifest.js +1 -1
  107. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/file/route_client-reference-manifest.js +1 -1
  108. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/init/route.js +1 -1
  109. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/init/route_client-reference-manifest.js +1 -1
  110. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/link-preview/route_client-reference-manifest.js +1 -1
  111. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/list/route_client-reference-manifest.js +1 -1
  112. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/mkdir/route_client-reference-manifest.js +1 -1
  113. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/move/route_client-reference-manifest.js +1 -1
  114. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/actions/route_client-reference-manifest.js +1 -1
  115. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/actions/runs/route_client-reference-manifest.js +1 -1
  116. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/display-field/route_client-reference-manifest.js +1 -1
  117. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/enrich/route_client-reference-manifest.js +1 -1
  118. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/[id]/content/route_client-reference-manifest.js +1 -1
  119. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/[id]/route_client-reference-manifest.js +1 -1
  120. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/bulk-delete/route_client-reference-manifest.js +1 -1
  121. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/options/route_client-reference-manifest.js +1 -1
  122. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/route.js +1 -1
  123. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/route_client-reference-manifest.js +1 -1
  124. 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
  125. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/fields/[fieldId]/route_client-reference-manifest.js +1 -1
  126. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/fields/reorder/route_client-reference-manifest.js +1 -1
  127. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/fields/route_client-reference-manifest.js +1 -1
  128. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/icon/route_client-reference-manifest.js +1 -1
  129. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/route_client-reference-manifest.js +1 -1
  130. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/views/route_client-reference-manifest.js +1 -1
  131. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/route_client-reference-manifest.js +1 -1
  132. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/open-file/route_client-reference-manifest.js +1 -1
  133. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/path-info/route_client-reference-manifest.js +1 -1
  134. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/query/route_client-reference-manifest.js +1 -1
  135. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/raw-file/route_client-reference-manifest.js +1 -1
  136. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/rename/route_client-reference-manifest.js +1 -1
  137. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/reports/execute/route.js +1 -1
  138. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/reports/execute/route_client-reference-manifest.js +1 -1
  139. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/search-index/route_client-reference-manifest.js +1 -1
  140. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/suggest-files/route_client-reference-manifest.js +1 -1
  141. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/switch/route.js +1 -1
  142. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/switch/route_client-reference-manifest.js +1 -1
  143. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/thumbnail/route_client-reference-manifest.js +1 -1
  144. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/tree/route_client-reference-manifest.js +1 -1
  145. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/upload/route.js +1 -1
  146. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/upload/route_client-reference-manifest.js +1 -1
  147. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/virtual-file/route_client-reference-manifest.js +1 -1
  148. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/watch/route_client-reference-manifest.js +1 -1
  149. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/write-binary/route_client-reference-manifest.js +1 -1
  150. package/apps/web/.next/standalone/apps/web/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  151. package/apps/web/.next/standalone/apps/web/.next/server/app/page.js +1 -1
  152. package/apps/web/.next/standalone/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
  153. package/apps/web/.next/standalone/apps/web/.next/server/app/workspace/page_client-reference-manifest.js +1 -1
  154. package/apps/web/.next/standalone/apps/web/.next/server/app-paths-manifest.json +51 -51
  155. package/apps/web/.next/standalone/apps/web/.next/server/chunks/27221.js +1 -1
  156. package/apps/web/.next/standalone/apps/web/.next/server/chunks/44877.js +1 -1
  157. package/apps/web/.next/standalone/apps/web/.next/server/functions-config-manifest.json +11 -11
  158. package/apps/web/.next/standalone/apps/web/.next/server/pages/500.html +1 -1
  159. package/apps/web/.next/standalone/apps/web/.next/server/server-reference-manifest.json +1 -1
  160. package/apps/web/.next/{static/chunks/app/layout-0b073d606db56b76.js → standalone/apps/web/.next/static/chunks/app/layout-de31133dd7032809.js} +1 -1
  161. package/apps/web/.next/{static/chunks/app/page-91e10489bfb4d2cb.js → standalone/apps/web/.next/static/chunks/app/page-1b2796d991f74457.js} +1 -1
  162. package/apps/web/.next/standalone/apps/web/server.js +1 -1
  163. package/apps/web/.next/standalone/extensions/posthog-analytics/lib/build-env.js +1 -1
  164. package/apps/web/.next/standalone/package.json +1 -1
  165. package/apps/web/.next/{standalone/apps/web/.next/static/chunks/app/layout-0b073d606db56b76.js → static/chunks/app/layout-de31133dd7032809.js} +1 -1
  166. package/apps/web/.next/{standalone/apps/web/.next/static/chunks/app/page-91e10489bfb4d2cb.js → static/chunks/app/page-1b2796d991f74457.js} +1 -1
  167. package/assets/seed/workspace.duckdb +0 -0
  168. package/dist/{cli-name-Sz-5E3q2.js → cli-name-Ba7MOCpZ.js} +2 -35
  169. package/dist/dench-cloud-banner-Du3uFoUw.js +85 -0
  170. package/dist/dench-cloud-welcome-DNcvMuhx.js +56 -0
  171. package/dist/entry.js +1 -1
  172. package/dist/{program-BzTUdX93.js → program-yr1JFZ6t.js} +7 -84
  173. package/dist/{run-main-DWpG1QJ-.js → run-main-C5ja6ciD.js} +14 -28
  174. package/dist/{telemetry-C_b18hhq.js → telemetry-fWwBTkkk.js} +1 -1
  175. package/dist/theme-DrO_HVcw.js +36 -0
  176. package/extensions/posthog-analytics/lib/build-env.js +1 -1
  177. package/package.json +1 -1
  178. /package/apps/web/.next/standalone/apps/web/.next/static/{BJK3zoIUstVWHptp0v5ii → eGW-AMWzwbfxF91gug11W}/_buildManifest.js +0 -0
  179. /package/apps/web/.next/standalone/apps/web/.next/static/{BJK3zoIUstVWHptp0v5ii → eGW-AMWzwbfxF91gug11W}/_ssgManifest.js +0 -0
  180. /package/apps/web/.next/static/{BJK3zoIUstVWHptp0v5ii → eGW-AMWzwbfxF91gug11W}/_buildManifest.js +0 -0
  181. /package/apps/web/.next/static/{BJK3zoIUstVWHptp0v5ii → eGW-AMWzwbfxF91gug11W}/_ssgManifest.js +0 -0
  182. /package/dist/{version-DfFmvCFM.js → version-BcB7HG3l.js} +0 -0
Binary file
@@ -1,43 +1,10 @@
1
1
  import { o as visibleWidth, p as hasRootVersionAlias } from "./entry.js";
2
+ import { n as theme, t as isRich } from "./theme-DrO_HVcw.js";
2
3
  import { createRequire } from "node:module";
3
4
  import fs from "node:fs";
4
5
  import path from "node:path";
5
- import chalk, { Chalk } from "chalk";
6
6
  import gradient from "gradient-string";
7
7
 
8
- //#region src/terminal/palette.ts
9
- const IRON_PALETTE = {
10
- accent: "#9CA3AF",
11
- accentBright: "#D1D5DB",
12
- accentDim: "#6B7280",
13
- info: "#93C5FD",
14
- success: "#34D399",
15
- warn: "#FBBF24",
16
- error: "#F87171",
17
- muted: "#6B7280"
18
- };
19
-
20
- //#endregion
21
- //#region src/terminal/theme.ts
22
- const hasForceColor = typeof process.env.FORCE_COLOR === "string" && process.env.FORCE_COLOR.trim().length > 0 && process.env.FORCE_COLOR.trim() !== "0";
23
- const baseChalk = process.env.NO_COLOR && !hasForceColor ? new Chalk({ level: 0 }) : chalk;
24
- const hex = (value) => baseChalk.hex(value);
25
- const theme = {
26
- accent: hex(IRON_PALETTE.accent),
27
- accentBright: hex(IRON_PALETTE.accentBright),
28
- accentDim: hex(IRON_PALETTE.accentDim),
29
- info: hex(IRON_PALETTE.info),
30
- success: hex(IRON_PALETTE.success),
31
- warn: hex(IRON_PALETTE.warn),
32
- error: hex(IRON_PALETTE.error),
33
- muted: hex(IRON_PALETTE.muted),
34
- heading: baseChalk.bold.hex(IRON_PALETTE.accent),
35
- command: hex(IRON_PALETTE.accentBright),
36
- option: hex(IRON_PALETTE.warn)
37
- };
38
- const isRich = () => Boolean(baseChalk.level > 0);
39
-
40
- //#endregion
41
8
  //#region src/infra/git-root.ts
42
9
  const DEFAULT_GIT_DISCOVERY_MAX_DEPTH = 12;
43
10
  function walkUpFrom(startDir, opts, resolveAtDir) {
@@ -493,4 +460,4 @@ function replaceCliName(command, cliName = resolveCliName()) {
493
460
  }
494
461
 
495
462
  //#endregion
496
- export { hasEmittedCliBanner as a, formatCliBannerLine as i, resolveCliName as n, isRich as o, emitCliBanner as r, theme as s, replaceCliName as t };
463
+ export { hasEmittedCliBanner as a, formatCliBannerLine as i, resolveCliName as n, emitCliBanner as r, replaceCliName as t };
@@ -0,0 +1,85 @@
1
+ import { o as visibleWidth } from "./entry.js";
2
+ import { n as theme, t as isRich } from "./theme-DrO_HVcw.js";
3
+ import gradient from "gradient-string";
4
+
5
+ //#region src/terminal/prompt-style.ts
6
+ const stylePromptMessage = (message) => isRich() ? theme.accent(message) : message;
7
+
8
+ //#endregion
9
+ //#region src/cli/dench-cloud-banner.ts
10
+ function renderDenchCloudRecommendationBanner() {
11
+ const rich = isRich();
12
+ const W = 74;
13
+ const bdr = (s) => rich ? theme.accentDim(s) : s;
14
+ const ironShimmer = rich ? gradient([
15
+ "#374151",
16
+ "#6B7280",
17
+ "#9CA3AF",
18
+ "#D1D5DB",
19
+ "#9CA3AF",
20
+ "#6B7280",
21
+ "#374151"
22
+ ]) : (s) => s;
23
+ const topBar = ironShimmer("─".repeat(W));
24
+ const botBar = ironShimmer("─".repeat(W));
25
+ const top = ` ${bdr("╭")}${topBar}${bdr("╮")}`;
26
+ const bot = ` ${bdr("╰")}${botBar}${bdr("╯")}`;
27
+ const blank = ` ${bdr("│")}${" ".repeat(W)}${bdr("│")}`;
28
+ const row = (content, indent = 4) => {
29
+ const vis = visibleWidth(content);
30
+ const right = Math.max(1, W - indent - vis);
31
+ return ` ${bdr("│")}${" ".repeat(indent)}${content}${" ".repeat(right)}${bdr("│")}`;
32
+ };
33
+ const title = rich ? gradient([
34
+ "#38BDF8",
35
+ "#2DD4BF",
36
+ "#34D399"
37
+ ])("D E N C H C L O U D") : "D E N C H C L O U D";
38
+ const subtitle = rich ? theme.muted("The Ultimate CRM for your AI Agents.") : "The Ultimate CRM for your AI Agents.";
39
+ const bullet = rich ? theme.info("▸") : "▸";
40
+ const lbl = (s) => rich ? theme.accentBright(s) : s;
41
+ const dim = (s) => rich ? theme.muted(s) : s;
42
+ const COL = 14;
43
+ const featureLines = [
44
+ [lbl("AI Models"), dim("Claude, GPT, Kimi & more — no API keys needed")],
45
+ [lbl("CRM"), dim("Custom objects, companies, people, etc.")],
46
+ [lbl("Files"), dim("File Storage on Cloud")],
47
+ [lbl("24x7"), dim("Cron jobs that run in the background")],
48
+ [lbl("Web Search"), dim("Ready out of the box — no keys to manage")],
49
+ [lbl("Skills Store"), dim("Browse & install skills instantly")],
50
+ [lbl("Image Gen"), dim("State-of-the-art models from day one")]
51
+ ].map(([name, desc]) => {
52
+ return `${bullet} ${name}${" ".repeat(Math.max(1, COL - visibleWidth(name)))}${desc}`;
53
+ });
54
+ const star = rich ? theme.warn("★") : "★";
55
+ const intTitle = rich ? theme.warn("1,000+ App Integrations") : "1,000+ App Integrations";
56
+ const dot = rich ? theme.accentDim(" · ") : " · ";
57
+ const apps = [
58
+ rich ? theme.info("Gmail") : "Gmail",
59
+ rich ? theme.accentBright("Notion") : "Notion",
60
+ rich ? theme.success("HubSpot") : "HubSpot",
61
+ rich ? theme.warn("PostHog") : "PostHog",
62
+ rich ? theme.accent("Stripe") : "Stripe",
63
+ rich ? theme.success("Salesforce") : "Salesforce",
64
+ rich ? theme.muted("…") : "…"
65
+ ].join(dot);
66
+ rich && theme.success("✓");
67
+ return [
68
+ "",
69
+ top,
70
+ blank,
71
+ row(title),
72
+ row(subtitle),
73
+ blank,
74
+ ...featureLines.map((l) => row(l)),
75
+ blank,
76
+ row(`${star} ${intTitle}`),
77
+ row(apps, 7),
78
+ blank,
79
+ bot,
80
+ ""
81
+ ].join("\n");
82
+ }
83
+
84
+ //#endregion
85
+ export { stylePromptMessage as n, renderDenchCloudRecommendationBanner as t };
@@ -0,0 +1,56 @@
1
+ import { n as theme, t as isRich } from "./theme-DrO_HVcw.js";
2
+ import { n as stylePromptMessage, t as renderDenchCloudRecommendationBanner } from "./dench-cloud-banner-Du3uFoUw.js";
3
+ import { spawn } from "node:child_process";
4
+ import process from "node:process";
5
+ import { isCancel, select } from "@clack/prompts";
6
+
7
+ //#region src/cli/dench-cloud-welcome.ts
8
+ const DENCH_LOGIN_URL = "https://dench.com/login";
9
+ async function openUrlInBrowser(url) {
10
+ const [command, ...args] = process.platform === "darwin" ? ["open", url] : process.platform === "win32" ? [
11
+ "cmd",
12
+ "/c",
13
+ "start",
14
+ "",
15
+ url
16
+ ] : ["xdg-open", url];
17
+ return await new Promise((resolve) => {
18
+ const child = spawn(command, args, {
19
+ stdio: "ignore",
20
+ detached: true
21
+ });
22
+ child.once("error", () => resolve(false));
23
+ child.once("spawn", () => {
24
+ child.unref();
25
+ resolve(true);
26
+ });
27
+ });
28
+ }
29
+ /**
30
+ * The bare `npx denchclaw` flow: show the Dench Cloud banner, offer a single
31
+ * "Continue with Dench.com" action that opens dench.com/login, then end the
32
+ * session. The full local setup lives under `npx denchclaw bootstrap`.
33
+ */
34
+ async function runDenchCloudWelcome() {
35
+ const log = (line) => process.stdout.write(`${line}\n`);
36
+ log(renderDenchCloudRecommendationBanner());
37
+ if (!Boolean(process.stdin.isTTY && process.stdout.isTTY)) {
38
+ log(`Continue with Dench.com: ${DENCH_LOGIN_URL}`);
39
+ return;
40
+ }
41
+ if (isCancel(await select({
42
+ message: stylePromptMessage("Get started with Dench Cloud"),
43
+ options: [{
44
+ value: "continue",
45
+ label: "Continue with Dench.com"
46
+ }]
47
+ }))) return;
48
+ const opened = await openUrlInBrowser(DENCH_LOGIN_URL);
49
+ const url = isRich() ? theme.accentBright(DENCH_LOGIN_URL) : DENCH_LOGIN_URL;
50
+ log("");
51
+ log(opened ? ` Opening ${url} in your browser…` : ` Open ${url} in your browser to continue.`);
52
+ log("");
53
+ }
54
+
55
+ //#endregion
56
+ export { runDenchCloudWelcome };
package/dist/entry.js CHANGED
@@ -1154,7 +1154,7 @@ if (!ensureExperimentalWarningSuppressed()) {
1154
1154
  const appliedProfile = applyCliProfileEnv({ profile: parsed.profile ?? void 0 });
1155
1155
  if (appliedProfile.warning) console.warn(`[denchclaw] ${appliedProfile.warning}`);
1156
1156
  process$1.argv = parsed.argv;
1157
- import("./run-main-DWpG1QJ-.js").then(({ runCli }) => runCli(process$1.argv)).then(() => import("./telemetry-C_b18hhq.js").then((n) => n.n).then(({ shutdownTelemetry }) => shutdownTelemetry())).catch((error) => {
1157
+ import("./run-main-C5ja6ciD.js").then(({ runCli }) => runCli(process$1.argv)).then(() => import("./telemetry-fWwBTkkk.js").then((n) => n.n).then(({ shutdownTelemetry }) => shutdownTelemetry())).catch((error) => {
1158
1158
  console.error("[denchclaw] Failed to start CLI:", error instanceof Error ? error.stack ?? error.message : error);
1159
1159
  process$1.exitCode = 1;
1160
1160
  });
@@ -1,16 +1,17 @@
1
- import { a as markNoticeShown, i as getOrCreateAnonymousId, o as readTelemetryConfig, r as track, s as writeTelemetryConfig, t as isTelemetryEnabled } from "./telemetry-C_b18hhq.js";
2
- import { d as hasFlag, g as resolveRequiredHomeDir, h as expandHomePrefix, i as isDaemonlessMode, m as applyCliProfileEnv, o as visibleWidth, p as hasRootVersionAlias, r as DENCHCLAW_DEFAULT_GATEWAY_PORT, s as defaultRuntime, t as isTruthyEnvValue, u as getPrimaryCommand } from "./entry.js";
3
- import { a as hasEmittedCliBanner, i as formatCliBannerLine, n as resolveCliName, o as isRich, s as theme, t as replaceCliName } from "./cli-name-Sz-5E3q2.js";
4
- import { t as VERSION } from "./version-DfFmvCFM.js";
1
+ import { a as markNoticeShown, i as getOrCreateAnonymousId, o as readTelemetryConfig, r as track, s as writeTelemetryConfig, t as isTelemetryEnabled } from "./telemetry-fWwBTkkk.js";
2
+ import { d as hasFlag, g as resolveRequiredHomeDir, h as expandHomePrefix, i as isDaemonlessMode, m as applyCliProfileEnv, p as hasRootVersionAlias, r as DENCHCLAW_DEFAULT_GATEWAY_PORT, s as defaultRuntime, t as isTruthyEnvValue, u as getPrimaryCommand } from "./entry.js";
3
+ import { n as theme, t as isRich } from "./theme-DrO_HVcw.js";
4
+ import { n as stylePromptMessage, t as renderDenchCloudRecommendationBanner } from "./dench-cloud-banner-Du3uFoUw.js";
5
+ import { t as VERSION } from "./version-BcB7HG3l.js";
6
+ import { a as hasEmittedCliBanner, i as formatCliBannerLine, n as resolveCliName, t as replaceCliName } from "./cli-name-Ba7MOCpZ.js";
5
7
  import { execFileSync, execSync, spawn } from "node:child_process";
6
8
  import process$1 from "node:process";
7
9
  import fs, { closeSync, copyFileSync, cpSync, existsSync, lstatSync, mkdirSync, openSync, readFileSync, readSync, readdirSync, readlinkSync, realpathSync, renameSync, rmSync, statSync, writeFileSync } from "node:fs";
8
10
  import os from "node:os";
9
11
  import path from "node:path";
10
12
  import json5 from "json5";
11
- import { Command } from "commander";
12
13
  import { confirm, isCancel, select, spinner, text } from "@clack/prompts";
13
- import gradient from "gradient-string";
14
+ import { Command } from "commander";
14
15
  import { fileURLToPath } from "node:url";
15
16
  import { createConnection } from "node:net";
16
17
 
@@ -139,10 +140,6 @@ function formatDocsLink(path, label, opts) {
139
140
  });
140
141
  }
141
142
 
142
- //#endregion
143
- //#region src/terminal/prompt-style.ts
144
- const stylePromptMessage = (message) => isRich() ? theme.accent(message) : message;
145
-
146
143
  //#endregion
147
144
  //#region src/cli/dench-cloud.ts
148
145
  const DEFAULT_DENCH_CLOUD_GATEWAY_URL = "https://gateway.merseoriginals.com";
@@ -3444,80 +3441,6 @@ async function promptForDenchCloudModel(params) {
3444
3441
  if (isCancel(selection)) return;
3445
3442
  return String(selection);
3446
3443
  }
3447
- function renderDenchCloudRecommendationBanner() {
3448
- const rich = isRich();
3449
- const W = 74;
3450
- const bdr = (s) => rich ? theme.accentDim(s) : s;
3451
- const ironShimmer = rich ? gradient([
3452
- "#374151",
3453
- "#6B7280",
3454
- "#9CA3AF",
3455
- "#D1D5DB",
3456
- "#9CA3AF",
3457
- "#6B7280",
3458
- "#374151"
3459
- ]) : (s) => s;
3460
- const topBar = ironShimmer("─".repeat(W));
3461
- const botBar = ironShimmer("─".repeat(W));
3462
- const top = ` ${bdr("╭")}${topBar}${bdr("╮")}`;
3463
- const bot = ` ${bdr("╰")}${botBar}${bdr("╯")}`;
3464
- const blank = ` ${bdr("│")}${" ".repeat(W)}${bdr("│")}`;
3465
- const row = (content, indent = 4) => {
3466
- const vis = visibleWidth(content);
3467
- const right = Math.max(1, W - indent - vis);
3468
- return ` ${bdr("│")}${" ".repeat(indent)}${content}${" ".repeat(right)}${bdr("│")}`;
3469
- };
3470
- const title = rich ? gradient([
3471
- "#38BDF8",
3472
- "#2DD4BF",
3473
- "#34D399"
3474
- ])("D E N C H C L O U D") : "D E N C H C L O U D";
3475
- const subtitle = rich ? theme.muted("The recommended way to run DenchClaw. Everything is managed for you.") : "The recommended way to run DenchClaw. Everything is managed for you.";
3476
- const bullet = rich ? theme.info("▸") : "▸";
3477
- const lbl = (s) => rich ? theme.accentBright(s) : s;
3478
- const dim = (s) => rich ? theme.muted(s) : s;
3479
- const COL = 14;
3480
- const featureLines = [
3481
- [lbl("AI Models"), dim("Claude, GPT, Kimi & more — no API keys needed")],
3482
- [lbl("Voice"), dim("ElevenLabs built in — no account required")],
3483
- [lbl("Web Search"), dim("Exa ready out of the box — no key to manage")],
3484
- [lbl("Skills Store"), dim("Browse & install skills instantly")],
3485
- [lbl("Image Gen"), dim("State-of-the-art models from day one")]
3486
- ].map(([name, desc]) => {
3487
- return `${bullet} ${name}${" ".repeat(Math.max(1, COL - visibleWidth(name)))}${desc}`;
3488
- });
3489
- const star = rich ? theme.warn("★") : "★";
3490
- const intTitle = rich ? theme.warn("1,000+ App Integrations") : "1,000+ App Integrations";
3491
- const dot = rich ? theme.accentDim(" · ") : " · ";
3492
- const apps = [
3493
- rich ? theme.info("Gmail") : "Gmail",
3494
- rich ? theme.accentBright("Notion") : "Notion",
3495
- rich ? theme.success("HubSpot") : "HubSpot",
3496
- rich ? theme.warn("PostHog") : "PostHog",
3497
- rich ? theme.accent("Stripe") : "Stripe",
3498
- rich ? theme.success("Salesforce") : "Salesforce",
3499
- rich ? theme.muted("…") : "…"
3500
- ].join(dot);
3501
- const check = rich ? theme.success("✓") : "✓";
3502
- const cta = rich ? theme.success("Recommended for most users") : "Recommended for most users";
3503
- return [
3504
- "",
3505
- top,
3506
- blank,
3507
- row(title),
3508
- row(subtitle),
3509
- blank,
3510
- ...featureLines.map((l) => row(l)),
3511
- blank,
3512
- row(`${star} ${intTitle}`),
3513
- row(apps, 7),
3514
- blank,
3515
- row(`${check} ${cta}`),
3516
- blank,
3517
- bot,
3518
- ""
3519
- ].join("\n");
3520
- }
3521
3444
  function preStageDenchCloudConfig(params) {
3522
3445
  try {
3523
3446
  const nextConfig = { ...readBootstrapConfig(params.stateDir) ?? {} };
@@ -1,6 +1,7 @@
1
1
  import { c as normalizeWindowsArgv, f as hasHelpOrVersion, l as getCommandPath, n as normalizeEnv, t as isTruthyEnvValue, u as getPrimaryCommand } from "./entry.js";
2
- import { n as resolveCliName, r as emitCliBanner } from "./cli-name-Sz-5E3q2.js";
3
- import { t as VERSION } from "./version-DfFmvCFM.js";
2
+ import "./theme-DrO_HVcw.js";
3
+ import { t as VERSION } from "./version-BcB7HG3l.js";
4
+ import { n as resolveCliName, r as emitCliBanner } from "./cli-name-Ba7MOCpZ.js";
4
5
  import { spawn } from "node:child_process";
5
6
  import process$1 from "node:process";
6
7
  import fs from "node:fs";
@@ -156,30 +157,10 @@ function shouldEnsureCliPath(argv) {
156
157
  if (primary === "models" && (secondary === "list" || secondary === "status")) return false;
157
158
  return true;
158
159
  }
159
- function normalizeBootstrapRolloutStage(value) {
160
- const normalized = value?.trim().toLowerCase();
161
- if (normalized === "legacy" || normalized === "internal" || normalized === "beta" || normalized === "default") return normalized;
162
- }
163
- function resolveBootstrapRolloutStage(env = process$1.env) {
164
- return normalizeBootstrapRolloutStage(env.DENCHCLAW_BOOTSTRAP_ROLLOUT ?? env.OPENCLAW_BOOTSTRAP_ROLLOUT) ?? "default";
165
- }
166
- function shouldEnableBootstrapCutover(env = process$1.env) {
167
- if (isTruthyEnvValue(env.DENCHCLAW_BOOTSTRAP_LEGACY_FALLBACK) || isTruthyEnvValue(env.OPENCLAW_BOOTSTRAP_LEGACY_FALLBACK)) return false;
168
- const stage = resolveBootstrapRolloutStage(env);
169
- if (stage === "legacy") return false;
170
- if (stage === "beta") return isTruthyEnvValue(env.DENCHCLAW_BOOTSTRAP_BETA_OPT_IN) || isTruthyEnvValue(env.OPENCLAW_BOOTSTRAP_BETA_OPT_IN);
171
- return true;
172
- }
173
- function rewriteBareArgvToBootstrap(argv, env = process$1.env) {
174
- if (hasHelpOrVersion(argv)) return argv;
175
- if (getPrimaryCommand(argv)) return argv;
176
- if (resolveCliName(argv) !== "denchclaw") return argv;
177
- if (!shouldEnableBootstrapCutover(env)) return argv;
178
- return [
179
- ...argv.slice(0, 2),
180
- "bootstrap",
181
- ...argv.slice(2)
182
- ];
160
+ function isBareDenchclawInvocation(argv) {
161
+ if (hasHelpOrVersion(argv)) return false;
162
+ if (getPrimaryCommand(argv)) return false;
163
+ return resolveCliName(argv) === "denchclaw";
183
164
  }
184
165
  function isDelegationDisabled(env = process$1.env) {
185
166
  return isTruthyEnvValue(env.DENCHCLAW_DISABLE_OPENCLAW_DELEGATION) || isTruthyEnvValue(env.OPENCLAW_DISABLE_OPENCLAW_DELEGATION);
@@ -233,12 +214,17 @@ async function runCli(argv = process$1.argv) {
233
214
  if (shouldEnsureCliPath(normalizedArgv)) ensureOpenClawCliOnPath();
234
215
  assertSupportedRuntime();
235
216
  if (!shouldHideCliBanner(normalizedArgv, process$1.env)) await emitCliBanner(VERSION, { argv: normalizedArgv });
236
- const parseArgv = rewriteBareArgvToBootstrap(rewriteUpdateFlagArgv(normalizedArgv));
217
+ if (isBareDenchclawInvocation(normalizedArgv)) {
218
+ const { runDenchCloudWelcome } = await import("./dench-cloud-welcome-DNcvMuhx.js");
219
+ await runDenchCloudWelcome();
220
+ return;
221
+ }
222
+ const parseArgv = rewriteUpdateFlagArgv(normalizedArgv);
237
223
  if (shouldDelegateToGlobalOpenClaw(parseArgv)) {
238
224
  process$1.exitCode = await delegateToGlobalOpenClaw(parseArgv);
239
225
  return;
240
226
  }
241
- const { buildProgram } = await import("./program-BzTUdX93.js");
227
+ const { buildProgram } = await import("./program-yr1JFZ6t.js");
242
228
  await buildProgram().parseAsync(parseArgv);
243
229
  }
244
230
 
@@ -1,5 +1,5 @@
1
1
  import { a as resolveStateDir } from "./entry.js";
2
- import { n as resolveOpenClawVersion, t as VERSION } from "./version-DfFmvCFM.js";
2
+ import { n as resolveOpenClawVersion, t as VERSION } from "./version-BcB7HG3l.js";
3
3
  import { createRequire } from "node:module";
4
4
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
5
5
  import { dirname, join } from "node:path";
@@ -0,0 +1,36 @@
1
+ import chalk, { Chalk } from "chalk";
2
+
3
+ //#region src/terminal/palette.ts
4
+ const IRON_PALETTE = {
5
+ accent: "#9CA3AF",
6
+ accentBright: "#D1D5DB",
7
+ accentDim: "#6B7280",
8
+ info: "#93C5FD",
9
+ success: "#34D399",
10
+ warn: "#FBBF24",
11
+ error: "#F87171",
12
+ muted: "#6B7280"
13
+ };
14
+
15
+ //#endregion
16
+ //#region src/terminal/theme.ts
17
+ const hasForceColor = typeof process.env.FORCE_COLOR === "string" && process.env.FORCE_COLOR.trim().length > 0 && process.env.FORCE_COLOR.trim() !== "0";
18
+ const baseChalk = process.env.NO_COLOR && !hasForceColor ? new Chalk({ level: 0 }) : chalk;
19
+ const hex = (value) => baseChalk.hex(value);
20
+ const theme = {
21
+ accent: hex(IRON_PALETTE.accent),
22
+ accentBright: hex(IRON_PALETTE.accentBright),
23
+ accentDim: hex(IRON_PALETTE.accentDim),
24
+ info: hex(IRON_PALETTE.info),
25
+ success: hex(IRON_PALETTE.success),
26
+ warn: hex(IRON_PALETTE.warn),
27
+ error: hex(IRON_PALETTE.error),
28
+ muted: hex(IRON_PALETTE.muted),
29
+ heading: baseChalk.bold.hex(IRON_PALETTE.accent),
30
+ command: hex(IRON_PALETTE.accentBright),
31
+ option: hex(IRON_PALETTE.warn)
32
+ };
33
+ const isRich = () => Boolean(baseChalk.level > 0);
34
+
35
+ //#endregion
36
+ export { theme as n, isRich as t };
@@ -1,3 +1,3 @@
1
1
  export const POSTHOG_KEY = "phc_Nt8s1Ny8062TY9aKT8LWiB4nBuoHNYQXRU9MypWfQCW";
2
- export const DENCHCLAW_VERSION = "3.1.4";
2
+ export const DENCHCLAW_VERSION = "4.0.0";
3
3
  export const OPENCLAW_VERSION = "";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "denchclaw",
3
- "version": "3.1.4",
3
+ "version": "4.0.0",
4
4
  "description": "Fully Managed OpenClaw Framework for managing your CRM, Sales Automation and Outreach agents. The only local productivity tool you need.",
5
5
  "keywords": [],
6
6
  "homepage": "https://github.com/DenchHQ/DenchClaw#readme",