denchclaw 2.0.6 → 2.0.7

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 (442) hide show
  1. package/README.md +9 -3
  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 +172 -165
  4. package/apps/web/.next/standalone/apps/web/.next/app-path-routes-manifest.json +29 -28
  5. package/apps/web/.next/standalone/apps/web/.next/build-manifest.json +3 -3
  6. package/apps/web/.next/standalone/apps/web/.next/required-server-files.json +3 -3
  7. package/apps/web/.next/standalone/apps/web/.next/server/app/_not-found/page.js +2 -2
  8. package/apps/web/.next/standalone/apps/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  9. package/apps/web/.next/standalone/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  10. package/apps/web/.next/standalone/apps/web/.next/server/app/_not-found.html +1 -1
  11. package/apps/web/.next/standalone/apps/web/.next/server/app/_not-found.rsc +2 -2
  12. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/active/route.js +1 -1
  13. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/active/route_client-reference-manifest.js +1 -1
  14. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/route.js +2 -2
  15. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/route_client-reference-manifest.js +1 -1
  16. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/stop/route.js +1 -1
  17. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/stop/route_client-reference-manifest.js +1 -1
  18. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/stream/route.js +2 -2
  19. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/stream/route_client-reference-manifest.js +1 -1
  20. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/subagents/route.js +1 -1
  21. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/subagents/route_client-reference-manifest.js +1 -1
  22. package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/jobs/[jobId]/runs/route.js +1 -1
  23. package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/jobs/[jobId]/runs/route_client-reference-manifest.js +1 -1
  24. package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/jobs/route.js +1 -1
  25. package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/jobs/route_client-reference-manifest.js +1 -1
  26. package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/runs/[sessionId]/route.js +1 -1
  27. package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/runs/[sessionId]/route_client-reference-manifest.js +1 -1
  28. package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/runs/search-transcript/route.js +1 -1
  29. package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/runs/search-transcript/route_client-reference-manifest.js +1 -1
  30. package/apps/web/.next/standalone/apps/web/.next/server/app/api/feedback/route.js +1 -0
  31. package/apps/web/.next/standalone/apps/web/.next/server/app/api/feedback/route.js.nft.json +1 -0
  32. package/apps/web/.next/standalone/apps/web/.next/server/app/api/feedback/route_client-reference-manifest.js +1 -0
  33. package/apps/web/.next/standalone/apps/web/.next/server/app/api/memories/route.js +1 -1
  34. package/apps/web/.next/standalone/apps/web/.next/server/app/api/memories/route_client-reference-manifest.js +1 -1
  35. package/apps/web/.next/standalone/apps/web/.next/server/app/api/profiles/route.js +1 -1
  36. package/apps/web/.next/standalone/apps/web/.next/server/app/api/profiles/route_client-reference-manifest.js +1 -1
  37. package/apps/web/.next/standalone/apps/web/.next/server/app/api/profiles/switch/route.js +1 -1
  38. package/apps/web/.next/standalone/apps/web/.next/server/app/api/profiles/switch/route_client-reference-manifest.js +1 -1
  39. package/apps/web/.next/standalone/apps/web/.next/server/app/api/sessions/[sessionId]/route.js +1 -1
  40. package/apps/web/.next/standalone/apps/web/.next/server/app/api/sessions/[sessionId]/route_client-reference-manifest.js +1 -1
  41. package/apps/web/.next/standalone/apps/web/.next/server/app/api/sessions/route.js +1 -1
  42. package/apps/web/.next/standalone/apps/web/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  43. package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/route.js +1 -1
  44. package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  45. package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/[id]/messages/route.js +1 -1
  46. package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/[id]/messages/route_client-reference-manifest.js +1 -1
  47. package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/[id]/route.js +1 -1
  48. package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/[id]/route_client-reference-manifest.js +1 -1
  49. package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/route.js +1 -1
  50. package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/route_client-reference-manifest.js +1 -1
  51. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/assets/[...path]/route.js +1 -1
  52. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/assets/[...path]/route_client-reference-manifest.js +1 -1
  53. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/browse/route.js +1 -1
  54. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/browse/route_client-reference-manifest.js +1 -1
  55. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/browse-file/route.js +1 -1
  56. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/browse-file/route_client-reference-manifest.js +1 -1
  57. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/context/route.js +1 -1
  58. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/context/route_client-reference-manifest.js +1 -1
  59. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/copy/route.js +1 -1
  60. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/copy/route_client-reference-manifest.js +1 -1
  61. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/db/introspect/route.js +1 -1
  62. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/db/introspect/route_client-reference-manifest.js +1 -1
  63. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/db/query/route.js +1 -1
  64. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/db/query/route_client-reference-manifest.js +1 -1
  65. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/delete/route.js +1 -1
  66. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/delete/route_client-reference-manifest.js +1 -1
  67. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/file/route.js +1 -1
  68. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/file/route_client-reference-manifest.js +1 -1
  69. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/init/route.js +2 -2
  70. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/init/route_client-reference-manifest.js +1 -1
  71. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/list/route.js +1 -1
  72. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/list/route_client-reference-manifest.js +1 -1
  73. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/mkdir/route.js +1 -1
  74. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/mkdir/route_client-reference-manifest.js +1 -1
  75. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/move/route.js +1 -1
  76. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/move/route_client-reference-manifest.js +1 -1
  77. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/display-field/route.js +1 -1
  78. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/display-field/route_client-reference-manifest.js +1 -1
  79. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/[id]/route.js +2 -2
  80. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/[id]/route_client-reference-manifest.js +1 -1
  81. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/bulk-delete/route.js +1 -1
  82. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/bulk-delete/route_client-reference-manifest.js +1 -1
  83. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/options/route.js +2 -2
  84. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/options/route_client-reference-manifest.js +1 -1
  85. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/route.js +1 -1
  86. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/route_client-reference-manifest.js +1 -1
  87. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/fields/[fieldId]/enum-rename/route.js +1 -1
  88. 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
  89. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/fields/[fieldId]/route.js +1 -1
  90. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/fields/[fieldId]/route_client-reference-manifest.js +1 -1
  91. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/fields/reorder/route.js +1 -1
  92. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/fields/reorder/route_client-reference-manifest.js +1 -1
  93. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/route.js +2 -2
  94. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/route_client-reference-manifest.js +1 -1
  95. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/views/route.js +1 -1
  96. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/views/route_client-reference-manifest.js +1 -1
  97. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/open-file/route.js +1 -1
  98. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/open-file/route_client-reference-manifest.js +1 -1
  99. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/path-info/route.js +1 -1
  100. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/path-info/route_client-reference-manifest.js +1 -1
  101. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/query/route.js +1 -1
  102. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/query/route_client-reference-manifest.js +1 -1
  103. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/raw-file/route.js +1 -1
  104. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/raw-file/route_client-reference-manifest.js +1 -1
  105. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/rename/route.js +1 -1
  106. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/rename/route_client-reference-manifest.js +1 -1
  107. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/reports/execute/route.js +1 -1
  108. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/reports/execute/route_client-reference-manifest.js +1 -1
  109. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/search-index/route.js +2 -2
  110. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/search-index/route_client-reference-manifest.js +1 -1
  111. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/suggest-files/route.js +2 -2
  112. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/suggest-files/route_client-reference-manifest.js +1 -1
  113. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/switch/route.js +1 -1
  114. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/switch/route_client-reference-manifest.js +1 -1
  115. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/thumbnail/route.js +1 -1
  116. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/thumbnail/route_client-reference-manifest.js +1 -1
  117. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/tree/route.js +1 -1
  118. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/tree/route_client-reference-manifest.js +1 -1
  119. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/upload/route.js +1 -1
  120. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/upload/route_client-reference-manifest.js +1 -1
  121. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/virtual-file/route.js +1 -1
  122. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/virtual-file/route_client-reference-manifest.js +1 -1
  123. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/watch/route.js +2 -2
  124. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/watch/route_client-reference-manifest.js +1 -1
  125. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/write-binary/route.js +1 -1
  126. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/write-binary/route_client-reference-manifest.js +1 -1
  127. package/apps/web/.next/standalone/apps/web/.next/server/app/index.html +2 -2
  128. package/apps/web/.next/standalone/apps/web/.next/server/app/index.rsc +3 -3
  129. package/apps/web/.next/standalone/apps/web/.next/server/app/page.js +3 -3
  130. package/apps/web/.next/standalone/apps/web/.next/server/app/page.js.nft.json +1 -1
  131. package/apps/web/.next/standalone/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
  132. package/apps/web/.next/standalone/apps/web/.next/server/app/workspace/page.js +14 -14
  133. package/apps/web/.next/standalone/apps/web/.next/server/app/workspace/page.js.nft.json +1 -1
  134. package/apps/web/.next/standalone/apps/web/.next/server/app/workspace/page_client-reference-manifest.js +1 -1
  135. package/apps/web/.next/standalone/apps/web/.next/server/app/workspace.html +1 -1
  136. package/apps/web/.next/standalone/apps/web/.next/server/app/workspace.rsc +3 -3
  137. package/apps/web/.next/standalone/apps/web/.next/server/app-paths-manifest.json +29 -28
  138. package/apps/web/.next/standalone/apps/web/.next/server/chunks/3180.js +3 -3
  139. package/apps/web/.next/standalone/apps/web/.next/server/functions-config-manifest.json +3 -3
  140. package/apps/web/.next/standalone/apps/web/.next/server/middleware-build-manifest.js +1 -1
  141. package/apps/web/.next/standalone/apps/web/.next/server/pages/404.html +1 -1
  142. package/apps/web/.next/standalone/apps/web/.next/server/pages/500.html +1 -1
  143. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/_not-found/page-23e70510b8d52088.js +1 -0
  144. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/active/route-ff99b057da8a00ed.js +1 -0
  145. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/route-ff99b057da8a00ed.js +1 -0
  146. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/stop/route-ff99b057da8a00ed.js +1 -0
  147. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/stream/route-ff99b057da8a00ed.js +1 -0
  148. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/subagents/route-ff99b057da8a00ed.js +1 -0
  149. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/jobs/[jobId]/runs/route-ff99b057da8a00ed.js +1 -0
  150. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/jobs/route-ff99b057da8a00ed.js +1 -0
  151. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/runs/[sessionId]/route-ff99b057da8a00ed.js +1 -0
  152. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/runs/search-transcript/route-ff99b057da8a00ed.js +1 -0
  153. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/feedback/route-ff99b057da8a00ed.js +1 -0
  154. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/memories/route-ff99b057da8a00ed.js +1 -0
  155. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/profiles/route-ff99b057da8a00ed.js +1 -0
  156. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/profiles/switch/route-ff99b057da8a00ed.js +1 -0
  157. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/sessions/[sessionId]/route-ff99b057da8a00ed.js +1 -0
  158. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/sessions/route-ff99b057da8a00ed.js +1 -0
  159. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/skills/route-ff99b057da8a00ed.js +1 -0
  160. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/[id]/messages/route-ff99b057da8a00ed.js +1 -0
  161. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/[id]/route-ff99b057da8a00ed.js +1 -0
  162. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/route-ff99b057da8a00ed.js +1 -0
  163. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/assets/[...path]/route-ff99b057da8a00ed.js +1 -0
  164. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/browse/route-ff99b057da8a00ed.js +1 -0
  165. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/browse-file/route-ff99b057da8a00ed.js +1 -0
  166. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/context/route-ff99b057da8a00ed.js +1 -0
  167. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/copy/route-ff99b057da8a00ed.js +1 -0
  168. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/db/introspect/route-ff99b057da8a00ed.js +1 -0
  169. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/db/query/route-ff99b057da8a00ed.js +1 -0
  170. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/delete/route-ff99b057da8a00ed.js +1 -0
  171. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/file/route-ff99b057da8a00ed.js +1 -0
  172. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/init/route-ff99b057da8a00ed.js +1 -0
  173. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/list/route-ff99b057da8a00ed.js +1 -0
  174. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/mkdir/route-ff99b057da8a00ed.js +1 -0
  175. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/move/route-ff99b057da8a00ed.js +1 -0
  176. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/display-field/route-ff99b057da8a00ed.js +1 -0
  177. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/route-ff99b057da8a00ed.js +1 -0
  178. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/bulk-delete/route-ff99b057da8a00ed.js +1 -0
  179. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/options/route-ff99b057da8a00ed.js +1 -0
  180. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/route-ff99b057da8a00ed.js +1 -0
  181. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/enum-rename/route-ff99b057da8a00ed.js +1 -0
  182. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/route-ff99b057da8a00ed.js +1 -0
  183. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/reorder/route-ff99b057da8a00ed.js +1 -0
  184. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/route-ff99b057da8a00ed.js +1 -0
  185. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/views/route-ff99b057da8a00ed.js +1 -0
  186. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/open-file/route-ff99b057da8a00ed.js +1 -0
  187. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/path-info/route-ff99b057da8a00ed.js +1 -0
  188. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/query/route-ff99b057da8a00ed.js +1 -0
  189. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/raw-file/route-ff99b057da8a00ed.js +1 -0
  190. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/rename/route-ff99b057da8a00ed.js +1 -0
  191. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/reports/execute/route-ff99b057da8a00ed.js +1 -0
  192. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/search-index/route-ff99b057da8a00ed.js +1 -0
  193. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/suggest-files/route-ff99b057da8a00ed.js +1 -0
  194. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/switch/route-ff99b057da8a00ed.js +1 -0
  195. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/thumbnail/route-ff99b057da8a00ed.js +1 -0
  196. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/tree/route-ff99b057da8a00ed.js +1 -0
  197. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/upload/route-ff99b057da8a00ed.js +1 -0
  198. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/virtual-file/route-ff99b057da8a00ed.js +1 -0
  199. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/watch/route-ff99b057da8a00ed.js +1 -0
  200. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/write-binary/route-ff99b057da8a00ed.js +1 -0
  201. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/layout-af0e9292b7fe2ec1.js +1 -0
  202. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/page-b213929ad6255c65.js +1 -0
  203. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/workspace/{page-a9c68aaa3f71a7fe.js → page-fe39ceef01137175.js} +1 -1
  204. package/apps/web/.next/standalone/apps/web/.next/static/chunks/main-app-c71b105c32544ad9.js +1 -0
  205. package/apps/web/.next/standalone/apps/web/.next/static/ezaYRoo0uHfvCgSL72gWA/_buildManifest.js +1 -0
  206. package/apps/web/.next/standalone/apps/web/server.js +1 -1
  207. package/apps/web/.next/standalone/package.json +2 -1
  208. package/apps/web/.next/static/chunks/app/_not-found/page-23e70510b8d52088.js +1 -0
  209. package/apps/web/.next/static/chunks/app/api/chat/active/route-ff99b057da8a00ed.js +1 -0
  210. package/apps/web/.next/static/chunks/app/api/chat/route-ff99b057da8a00ed.js +1 -0
  211. package/apps/web/.next/static/chunks/app/api/chat/stop/route-ff99b057da8a00ed.js +1 -0
  212. package/apps/web/.next/static/chunks/app/api/chat/stream/route-ff99b057da8a00ed.js +1 -0
  213. package/apps/web/.next/static/chunks/app/api/chat/subagents/route-ff99b057da8a00ed.js +1 -0
  214. package/apps/web/.next/static/chunks/app/api/cron/jobs/[jobId]/runs/route-ff99b057da8a00ed.js +1 -0
  215. package/apps/web/.next/static/chunks/app/api/cron/jobs/route-ff99b057da8a00ed.js +1 -0
  216. package/apps/web/.next/static/chunks/app/api/cron/runs/[sessionId]/route-ff99b057da8a00ed.js +1 -0
  217. package/apps/web/.next/static/chunks/app/api/cron/runs/search-transcript/route-ff99b057da8a00ed.js +1 -0
  218. package/apps/web/.next/static/chunks/app/api/feedback/route-ff99b057da8a00ed.js +1 -0
  219. package/apps/web/.next/static/chunks/app/api/memories/route-ff99b057da8a00ed.js +1 -0
  220. package/apps/web/.next/static/chunks/app/api/profiles/route-ff99b057da8a00ed.js +1 -0
  221. package/apps/web/.next/static/chunks/app/api/profiles/switch/route-ff99b057da8a00ed.js +1 -0
  222. package/apps/web/.next/static/chunks/app/api/sessions/[sessionId]/route-ff99b057da8a00ed.js +1 -0
  223. package/apps/web/.next/static/chunks/app/api/sessions/route-ff99b057da8a00ed.js +1 -0
  224. package/apps/web/.next/static/chunks/app/api/skills/route-ff99b057da8a00ed.js +1 -0
  225. package/apps/web/.next/static/chunks/app/api/web-sessions/[id]/messages/route-ff99b057da8a00ed.js +1 -0
  226. package/apps/web/.next/static/chunks/app/api/web-sessions/[id]/route-ff99b057da8a00ed.js +1 -0
  227. package/apps/web/.next/static/chunks/app/api/web-sessions/route-ff99b057da8a00ed.js +1 -0
  228. package/apps/web/.next/static/chunks/app/api/workspace/assets/[...path]/route-ff99b057da8a00ed.js +1 -0
  229. package/apps/web/.next/static/chunks/app/api/workspace/browse/route-ff99b057da8a00ed.js +1 -0
  230. package/apps/web/.next/static/chunks/app/api/workspace/browse-file/route-ff99b057da8a00ed.js +1 -0
  231. package/apps/web/.next/static/chunks/app/api/workspace/context/route-ff99b057da8a00ed.js +1 -0
  232. package/apps/web/.next/static/chunks/app/api/workspace/copy/route-ff99b057da8a00ed.js +1 -0
  233. package/apps/web/.next/static/chunks/app/api/workspace/db/introspect/route-ff99b057da8a00ed.js +1 -0
  234. package/apps/web/.next/static/chunks/app/api/workspace/db/query/route-ff99b057da8a00ed.js +1 -0
  235. package/apps/web/.next/static/chunks/app/api/workspace/delete/route-ff99b057da8a00ed.js +1 -0
  236. package/apps/web/.next/static/chunks/app/api/workspace/file/route-ff99b057da8a00ed.js +1 -0
  237. package/apps/web/.next/static/chunks/app/api/workspace/init/route-ff99b057da8a00ed.js +1 -0
  238. package/apps/web/.next/static/chunks/app/api/workspace/list/route-ff99b057da8a00ed.js +1 -0
  239. package/apps/web/.next/static/chunks/app/api/workspace/mkdir/route-ff99b057da8a00ed.js +1 -0
  240. package/apps/web/.next/static/chunks/app/api/workspace/move/route-ff99b057da8a00ed.js +1 -0
  241. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/display-field/route-ff99b057da8a00ed.js +1 -0
  242. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/route-ff99b057da8a00ed.js +1 -0
  243. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/bulk-delete/route-ff99b057da8a00ed.js +1 -0
  244. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/options/route-ff99b057da8a00ed.js +1 -0
  245. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/route-ff99b057da8a00ed.js +1 -0
  246. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/enum-rename/route-ff99b057da8a00ed.js +1 -0
  247. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/route-ff99b057da8a00ed.js +1 -0
  248. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/reorder/route-ff99b057da8a00ed.js +1 -0
  249. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/route-ff99b057da8a00ed.js +1 -0
  250. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/views/route-ff99b057da8a00ed.js +1 -0
  251. package/apps/web/.next/static/chunks/app/api/workspace/open-file/route-ff99b057da8a00ed.js +1 -0
  252. package/apps/web/.next/static/chunks/app/api/workspace/path-info/route-ff99b057da8a00ed.js +1 -0
  253. package/apps/web/.next/static/chunks/app/api/workspace/query/route-ff99b057da8a00ed.js +1 -0
  254. package/apps/web/.next/static/chunks/app/api/workspace/raw-file/route-ff99b057da8a00ed.js +1 -0
  255. package/apps/web/.next/static/chunks/app/api/workspace/rename/route-ff99b057da8a00ed.js +1 -0
  256. package/apps/web/.next/static/chunks/app/api/workspace/reports/execute/route-ff99b057da8a00ed.js +1 -0
  257. package/apps/web/.next/static/chunks/app/api/workspace/search-index/route-ff99b057da8a00ed.js +1 -0
  258. package/apps/web/.next/static/chunks/app/api/workspace/suggest-files/route-ff99b057da8a00ed.js +1 -0
  259. package/apps/web/.next/static/chunks/app/api/workspace/switch/route-ff99b057da8a00ed.js +1 -0
  260. package/apps/web/.next/static/chunks/app/api/workspace/thumbnail/route-ff99b057da8a00ed.js +1 -0
  261. package/apps/web/.next/static/chunks/app/api/workspace/tree/route-ff99b057da8a00ed.js +1 -0
  262. package/apps/web/.next/static/chunks/app/api/workspace/upload/route-ff99b057da8a00ed.js +1 -0
  263. package/apps/web/.next/static/chunks/app/api/workspace/virtual-file/route-ff99b057da8a00ed.js +1 -0
  264. package/apps/web/.next/static/chunks/app/api/workspace/watch/route-ff99b057da8a00ed.js +1 -0
  265. package/apps/web/.next/static/chunks/app/api/workspace/write-binary/route-ff99b057da8a00ed.js +1 -0
  266. package/apps/web/.next/static/chunks/app/layout-af0e9292b7fe2ec1.js +1 -0
  267. package/apps/web/.next/static/chunks/app/page-b213929ad6255c65.js +1 -0
  268. package/apps/web/.next/static/chunks/app/workspace/{page-a9c68aaa3f71a7fe.js → page-fe39ceef01137175.js} +1 -1
  269. package/apps/web/.next/static/chunks/main-app-c71b105c32544ad9.js +1 -0
  270. package/apps/web/.next/static/ezaYRoo0uHfvCgSL72gWA/_buildManifest.js +1 -0
  271. package/dist/{cli-name-yhDyCrts.js → cli-name-YmLsNGR6.js} +1 -1
  272. package/dist/entry.js +3 -2
  273. package/dist/{program-CVEqiDmd.js → program-CfNvnqVx.js} +588 -25
  274. package/dist/{run-main-CBWtZaUl.js → run-main-BWHpVYis.js} +4 -4
  275. package/dist/{telemetry-UyOfXAoS.js → telemetry-CwRnbZ2F.js} +3 -2
  276. package/extensions/bluebubbles/node_modules/.bin/ironclaw +21 -0
  277. package/extensions/copilot-proxy/node_modules/.bin/ironclaw +21 -0
  278. package/extensions/diagnostics-otel/node_modules/.bin/ironclaw +21 -0
  279. package/extensions/discord/node_modules/.bin/ironclaw +21 -0
  280. package/extensions/feishu/node_modules/.bin/ironclaw +21 -0
  281. package/extensions/google-antigravity-auth/node_modules/.bin/ironclaw +21 -0
  282. package/extensions/google-gemini-cli-auth/node_modules/.bin/ironclaw +21 -0
  283. package/extensions/googlechat/node_modules/.bin/ironclaw +21 -0
  284. package/extensions/imessage/node_modules/.bin/ironclaw +21 -0
  285. package/extensions/irc/node_modules/.bin/ironclaw +21 -0
  286. package/extensions/line/node_modules/.bin/ironclaw +21 -0
  287. package/extensions/llm-task/node_modules/.bin/ironclaw +21 -0
  288. package/extensions/lobster/node_modules/.bin/ironclaw +21 -0
  289. package/extensions/matrix/node_modules/.bin/ironclaw +21 -0
  290. package/extensions/matrix/node_modules/.bin/markdown-it +21 -0
  291. package/extensions/mattermost/node_modules/.bin/ironclaw +21 -0
  292. package/extensions/memory-core/node_modules/.bin/ironclaw +21 -0
  293. package/extensions/memory-lancedb/node_modules/.bin/ironclaw +21 -0
  294. package/extensions/memory-lancedb/node_modules/.bin/openai +21 -0
  295. package/extensions/minimax-portal-auth/node_modules/.bin/ironclaw +21 -0
  296. package/extensions/msteams/node_modules/.bin/ironclaw +21 -0
  297. package/extensions/nextcloud-talk/node_modules/.bin/ironclaw +21 -0
  298. package/extensions/nostr/node_modules/.bin/ironclaw +21 -0
  299. package/extensions/open-prose/node_modules/.bin/ironclaw +21 -0
  300. package/extensions/posthog-analytics/index.ts +162 -0
  301. package/extensions/posthog-analytics/lib/event-mappers.ts +312 -0
  302. package/extensions/posthog-analytics/lib/posthog-client.ts +81 -0
  303. package/extensions/posthog-analytics/lib/privacy.ts +83 -0
  304. package/extensions/posthog-analytics/lib/trace-context.ts +103 -0
  305. package/extensions/posthog-analytics/lib/types.ts +28 -0
  306. package/extensions/posthog-analytics/openclaw.plugin.json +22 -0
  307. package/extensions/posthog-analytics/package.json +8 -0
  308. package/extensions/signal/node_modules/.bin/ironclaw +21 -0
  309. package/extensions/slack/node_modules/.bin/ironclaw +21 -0
  310. package/extensions/synology-chat/node_modules/.bin/ironclaw +21 -0
  311. package/extensions/telegram/node_modules/.bin/ironclaw +21 -0
  312. package/extensions/tlon/node_modules/.bin/ironclaw +21 -0
  313. package/extensions/twitch/node_modules/.bin/ironclaw +21 -0
  314. package/extensions/voice-call/node_modules/.bin/ironclaw +21 -0
  315. package/extensions/whatsapp/node_modules/.bin/ironclaw +21 -0
  316. package/extensions/zalo/node_modules/.bin/ironclaw +21 -0
  317. package/extensions/zalouser/node_modules/.bin/ironclaw +21 -0
  318. package/package.json +2 -1
  319. package/apps/web/.next/standalone/apps/web/.next/static/bfBSw7Zh4Df36UcKsQE27/_buildManifest.js +0 -1
  320. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/_not-found/page-6934a35b4d14cdab.js +0 -1
  321. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/active/route-5dc3b3b56eb45a36.js +0 -1
  322. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/route-5dc3b3b56eb45a36.js +0 -1
  323. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/stop/route-5dc3b3b56eb45a36.js +0 -1
  324. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/stream/route-5dc3b3b56eb45a36.js +0 -1
  325. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/subagents/route-5dc3b3b56eb45a36.js +0 -1
  326. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/jobs/[jobId]/runs/route-5dc3b3b56eb45a36.js +0 -1
  327. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/jobs/route-5dc3b3b56eb45a36.js +0 -1
  328. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/runs/[sessionId]/route-5dc3b3b56eb45a36.js +0 -1
  329. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/runs/search-transcript/route-5dc3b3b56eb45a36.js +0 -1
  330. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/memories/route-5dc3b3b56eb45a36.js +0 -1
  331. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/profiles/route-5dc3b3b56eb45a36.js +0 -1
  332. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/profiles/switch/route-5dc3b3b56eb45a36.js +0 -1
  333. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/sessions/[sessionId]/route-5dc3b3b56eb45a36.js +0 -1
  334. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/sessions/route-5dc3b3b56eb45a36.js +0 -1
  335. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/skills/route-5dc3b3b56eb45a36.js +0 -1
  336. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/[id]/messages/route-5dc3b3b56eb45a36.js +0 -1
  337. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/[id]/route-5dc3b3b56eb45a36.js +0 -1
  338. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/route-5dc3b3b56eb45a36.js +0 -1
  339. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/assets/[...path]/route-5dc3b3b56eb45a36.js +0 -1
  340. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/browse/route-5dc3b3b56eb45a36.js +0 -1
  341. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/browse-file/route-5dc3b3b56eb45a36.js +0 -1
  342. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/context/route-5dc3b3b56eb45a36.js +0 -1
  343. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/copy/route-5dc3b3b56eb45a36.js +0 -1
  344. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/db/introspect/route-5dc3b3b56eb45a36.js +0 -1
  345. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/db/query/route-5dc3b3b56eb45a36.js +0 -1
  346. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/delete/route-5dc3b3b56eb45a36.js +0 -1
  347. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/file/route-5dc3b3b56eb45a36.js +0 -1
  348. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/init/route-5dc3b3b56eb45a36.js +0 -1
  349. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/list/route-5dc3b3b56eb45a36.js +0 -1
  350. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/mkdir/route-5dc3b3b56eb45a36.js +0 -1
  351. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/move/route-5dc3b3b56eb45a36.js +0 -1
  352. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/display-field/route-5dc3b3b56eb45a36.js +0 -1
  353. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/route-5dc3b3b56eb45a36.js +0 -1
  354. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/bulk-delete/route-5dc3b3b56eb45a36.js +0 -1
  355. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/options/route-5dc3b3b56eb45a36.js +0 -1
  356. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/route-5dc3b3b56eb45a36.js +0 -1
  357. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/enum-rename/route-5dc3b3b56eb45a36.js +0 -1
  358. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/route-5dc3b3b56eb45a36.js +0 -1
  359. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/reorder/route-5dc3b3b56eb45a36.js +0 -1
  360. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/route-5dc3b3b56eb45a36.js +0 -1
  361. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/views/route-5dc3b3b56eb45a36.js +0 -1
  362. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/open-file/route-5dc3b3b56eb45a36.js +0 -1
  363. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/path-info/route-5dc3b3b56eb45a36.js +0 -1
  364. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/query/route-5dc3b3b56eb45a36.js +0 -1
  365. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/raw-file/route-5dc3b3b56eb45a36.js +0 -1
  366. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/rename/route-5dc3b3b56eb45a36.js +0 -1
  367. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/reports/execute/route-5dc3b3b56eb45a36.js +0 -1
  368. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/search-index/route-5dc3b3b56eb45a36.js +0 -1
  369. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/suggest-files/route-5dc3b3b56eb45a36.js +0 -1
  370. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/switch/route-5dc3b3b56eb45a36.js +0 -1
  371. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/thumbnail/route-5dc3b3b56eb45a36.js +0 -1
  372. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/tree/route-5dc3b3b56eb45a36.js +0 -1
  373. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/upload/route-5dc3b3b56eb45a36.js +0 -1
  374. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/virtual-file/route-5dc3b3b56eb45a36.js +0 -1
  375. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/watch/route-5dc3b3b56eb45a36.js +0 -1
  376. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/write-binary/route-5dc3b3b56eb45a36.js +0 -1
  377. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/layout-01f7966beacdd67b.js +0 -1
  378. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/page-f365ecf6d5915738.js +0 -1
  379. package/apps/web/.next/standalone/apps/web/.next/static/chunks/main-app-b49c23ad3d7c2890.js +0 -1
  380. package/apps/web/.next/static/bfBSw7Zh4Df36UcKsQE27/_buildManifest.js +0 -1
  381. package/apps/web/.next/static/chunks/app/_not-found/page-6934a35b4d14cdab.js +0 -1
  382. package/apps/web/.next/static/chunks/app/api/chat/active/route-5dc3b3b56eb45a36.js +0 -1
  383. package/apps/web/.next/static/chunks/app/api/chat/route-5dc3b3b56eb45a36.js +0 -1
  384. package/apps/web/.next/static/chunks/app/api/chat/stop/route-5dc3b3b56eb45a36.js +0 -1
  385. package/apps/web/.next/static/chunks/app/api/chat/stream/route-5dc3b3b56eb45a36.js +0 -1
  386. package/apps/web/.next/static/chunks/app/api/chat/subagents/route-5dc3b3b56eb45a36.js +0 -1
  387. package/apps/web/.next/static/chunks/app/api/cron/jobs/[jobId]/runs/route-5dc3b3b56eb45a36.js +0 -1
  388. package/apps/web/.next/static/chunks/app/api/cron/jobs/route-5dc3b3b56eb45a36.js +0 -1
  389. package/apps/web/.next/static/chunks/app/api/cron/runs/[sessionId]/route-5dc3b3b56eb45a36.js +0 -1
  390. package/apps/web/.next/static/chunks/app/api/cron/runs/search-transcript/route-5dc3b3b56eb45a36.js +0 -1
  391. package/apps/web/.next/static/chunks/app/api/memories/route-5dc3b3b56eb45a36.js +0 -1
  392. package/apps/web/.next/static/chunks/app/api/profiles/route-5dc3b3b56eb45a36.js +0 -1
  393. package/apps/web/.next/static/chunks/app/api/profiles/switch/route-5dc3b3b56eb45a36.js +0 -1
  394. package/apps/web/.next/static/chunks/app/api/sessions/[sessionId]/route-5dc3b3b56eb45a36.js +0 -1
  395. package/apps/web/.next/static/chunks/app/api/sessions/route-5dc3b3b56eb45a36.js +0 -1
  396. package/apps/web/.next/static/chunks/app/api/skills/route-5dc3b3b56eb45a36.js +0 -1
  397. package/apps/web/.next/static/chunks/app/api/web-sessions/[id]/messages/route-5dc3b3b56eb45a36.js +0 -1
  398. package/apps/web/.next/static/chunks/app/api/web-sessions/[id]/route-5dc3b3b56eb45a36.js +0 -1
  399. package/apps/web/.next/static/chunks/app/api/web-sessions/route-5dc3b3b56eb45a36.js +0 -1
  400. package/apps/web/.next/static/chunks/app/api/workspace/assets/[...path]/route-5dc3b3b56eb45a36.js +0 -1
  401. package/apps/web/.next/static/chunks/app/api/workspace/browse/route-5dc3b3b56eb45a36.js +0 -1
  402. package/apps/web/.next/static/chunks/app/api/workspace/browse-file/route-5dc3b3b56eb45a36.js +0 -1
  403. package/apps/web/.next/static/chunks/app/api/workspace/context/route-5dc3b3b56eb45a36.js +0 -1
  404. package/apps/web/.next/static/chunks/app/api/workspace/copy/route-5dc3b3b56eb45a36.js +0 -1
  405. package/apps/web/.next/static/chunks/app/api/workspace/db/introspect/route-5dc3b3b56eb45a36.js +0 -1
  406. package/apps/web/.next/static/chunks/app/api/workspace/db/query/route-5dc3b3b56eb45a36.js +0 -1
  407. package/apps/web/.next/static/chunks/app/api/workspace/delete/route-5dc3b3b56eb45a36.js +0 -1
  408. package/apps/web/.next/static/chunks/app/api/workspace/file/route-5dc3b3b56eb45a36.js +0 -1
  409. package/apps/web/.next/static/chunks/app/api/workspace/init/route-5dc3b3b56eb45a36.js +0 -1
  410. package/apps/web/.next/static/chunks/app/api/workspace/list/route-5dc3b3b56eb45a36.js +0 -1
  411. package/apps/web/.next/static/chunks/app/api/workspace/mkdir/route-5dc3b3b56eb45a36.js +0 -1
  412. package/apps/web/.next/static/chunks/app/api/workspace/move/route-5dc3b3b56eb45a36.js +0 -1
  413. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/display-field/route-5dc3b3b56eb45a36.js +0 -1
  414. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/route-5dc3b3b56eb45a36.js +0 -1
  415. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/bulk-delete/route-5dc3b3b56eb45a36.js +0 -1
  416. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/options/route-5dc3b3b56eb45a36.js +0 -1
  417. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/route-5dc3b3b56eb45a36.js +0 -1
  418. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/enum-rename/route-5dc3b3b56eb45a36.js +0 -1
  419. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/route-5dc3b3b56eb45a36.js +0 -1
  420. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/reorder/route-5dc3b3b56eb45a36.js +0 -1
  421. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/route-5dc3b3b56eb45a36.js +0 -1
  422. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/views/route-5dc3b3b56eb45a36.js +0 -1
  423. package/apps/web/.next/static/chunks/app/api/workspace/open-file/route-5dc3b3b56eb45a36.js +0 -1
  424. package/apps/web/.next/static/chunks/app/api/workspace/path-info/route-5dc3b3b56eb45a36.js +0 -1
  425. package/apps/web/.next/static/chunks/app/api/workspace/query/route-5dc3b3b56eb45a36.js +0 -1
  426. package/apps/web/.next/static/chunks/app/api/workspace/raw-file/route-5dc3b3b56eb45a36.js +0 -1
  427. package/apps/web/.next/static/chunks/app/api/workspace/rename/route-5dc3b3b56eb45a36.js +0 -1
  428. package/apps/web/.next/static/chunks/app/api/workspace/reports/execute/route-5dc3b3b56eb45a36.js +0 -1
  429. package/apps/web/.next/static/chunks/app/api/workspace/search-index/route-5dc3b3b56eb45a36.js +0 -1
  430. package/apps/web/.next/static/chunks/app/api/workspace/suggest-files/route-5dc3b3b56eb45a36.js +0 -1
  431. package/apps/web/.next/static/chunks/app/api/workspace/switch/route-5dc3b3b56eb45a36.js +0 -1
  432. package/apps/web/.next/static/chunks/app/api/workspace/thumbnail/route-5dc3b3b56eb45a36.js +0 -1
  433. package/apps/web/.next/static/chunks/app/api/workspace/tree/route-5dc3b3b56eb45a36.js +0 -1
  434. package/apps/web/.next/static/chunks/app/api/workspace/upload/route-5dc3b3b56eb45a36.js +0 -1
  435. package/apps/web/.next/static/chunks/app/api/workspace/virtual-file/route-5dc3b3b56eb45a36.js +0 -1
  436. package/apps/web/.next/static/chunks/app/api/workspace/watch/route-5dc3b3b56eb45a36.js +0 -1
  437. package/apps/web/.next/static/chunks/app/api/workspace/write-binary/route-5dc3b3b56eb45a36.js +0 -1
  438. package/apps/web/.next/static/chunks/app/layout-01f7966beacdd67b.js +0 -1
  439. package/apps/web/.next/static/chunks/app/page-f365ecf6d5915738.js +0 -1
  440. package/apps/web/.next/static/chunks/main-app-b49c23ad3d7c2890.js +0 -1
  441. /package/apps/web/.next/standalone/apps/web/.next/static/{bfBSw7Zh4Df36UcKsQE27 → ezaYRoo0uHfvCgSL72gWA}/_ssgManifest.js +0 -0
  442. /package/apps/web/.next/static/{bfBSw7Zh4Df36UcKsQE27 → ezaYRoo0uHfvCgSL72gWA}/_ssgManifest.js +0 -0
@@ -1,11 +1,11 @@
1
- import { a as readTelemetryConfig, i as markNoticeShown, o as writeTelemetryConfig, r as track, t as isTelemetryEnabled } from "./telemetry-UyOfXAoS.js";
2
- import { a as defaultRuntime, c as getPrimaryCommand, d as hasRootVersionAlias, f as applyCliProfileEnv, l as hasFlag, m as resolveRequiredHomeDir, p as expandHomePrefix, t as isTruthyEnvValue } from "./entry.js";
3
- import { a as hasEmittedCliBanner, c as theme, i as formatCliBannerLine, n as resolveCliName, o as VERSION, s as isRich, t as replaceCliName } from "./cli-name-yhDyCrts.js";
1
+ import { a as readTelemetryConfig, i as markNoticeShown, o as writeTelemetryConfig, r as track, t as isTelemetryEnabled } from "./telemetry-CwRnbZ2F.js";
2
+ import { f as hasRootVersionAlias, h as resolveRequiredHomeDir, l as getPrimaryCommand, m as expandHomePrefix, o as defaultRuntime, p as applyCliProfileEnv, r as DENCHCLAW_DEFAULT_GATEWAY_PORT, t as isTruthyEnvValue, u as hasFlag } from "./entry.js";
3
+ import { a as hasEmittedCliBanner, c as theme, i as formatCliBannerLine, n as resolveCliName, o as VERSION, s as isRich, t as replaceCliName } from "./cli-name-YmLsNGR6.js";
4
4
  import { execFileSync, spawn } from "node:child_process";
5
5
  import process$1 from "node:process";
6
6
  import os from "node:os";
7
7
  import path from "node:path";
8
- import fs, { copyFileSync, cpSync, existsSync, mkdirSync, openSync, readFileSync, readdirSync, rmSync, writeFileSync } from "node:fs";
8
+ import fs, { copyFileSync, cpSync, existsSync, lstatSync, mkdirSync, openSync, readFileSync, readdirSync, readlinkSync, rmSync, writeFileSync } from "node:fs";
9
9
  import { Command } from "commander";
10
10
  import { confirm, isCancel, spinner } from "@clack/prompts";
11
11
  import { fileURLToPath } from "node:url";
@@ -108,6 +108,90 @@ function formatDocsLink(path, label, opts) {
108
108
  //#region src/terminal/prompt-style.ts
109
109
  const stylePromptMessage = (message) => isRich() ? theme.accent(message) : message;
110
110
 
111
+ //#endregion
112
+ //#region src/cli/flatten-standalone-deps.ts
113
+ /**
114
+ * Flatten pnpm virtual-store symlinks in a Next.js standalone output
115
+ * into a standard flat node_modules layout.
116
+ *
117
+ * Why: pnpm's standalone output uses symlinks inside node_modules/ that
118
+ * npm pack silently drops. Without this step the published package ships
119
+ * with an empty node_modules/ and `require('next')` fails on user machines.
120
+ */
121
+ /**
122
+ * Walk the pnpm `.pnpm/` virtual store inside `standaloneDir/node_modules/`
123
+ * and copy every traced package (dereferenced) into a flat
124
+ * `standaloneDir/apps/web/node_modules/` layout. Removes the root
125
+ * `node_modules/` afterwards so only the self-contained app dir remains.
126
+ */
127
+ function flattenPnpmStandaloneDeps(standaloneDir) {
128
+ const pnpmStore = path.join(standaloneDir, "node_modules", ".pnpm");
129
+ const target = path.join(standaloneDir, "apps", "web", "node_modules");
130
+ if (!existsSync(pnpmStore)) return {
131
+ skipped: true,
132
+ copied: 0
133
+ };
134
+ rmSync(target, {
135
+ recursive: true,
136
+ force: true
137
+ });
138
+ mkdirSync(target, { recursive: true });
139
+ let copied = 0;
140
+ for (const storeEntry of readdirSync(pnpmStore)) {
141
+ const nmDir = path.join(pnpmStore, storeEntry, "node_modules");
142
+ if (!existsSync(nmDir)) continue;
143
+ const stat = lstatSync(nmDir);
144
+ if (!stat.isDirectory() && !stat.isSymbolicLink()) continue;
145
+ let deps;
146
+ try {
147
+ deps = readdirSync(nmDir);
148
+ } catch {
149
+ continue;
150
+ }
151
+ for (const dep of deps) {
152
+ if (dep === ".pnpm" || dep === "node_modules") continue;
153
+ const depPath = path.join(nmDir, dep);
154
+ if (dep.startsWith("@")) {
155
+ let scopedPkgs;
156
+ try {
157
+ scopedPkgs = readdirSync(depPath);
158
+ } catch {
159
+ continue;
160
+ }
161
+ for (const pkg of scopedPkgs) {
162
+ const src = path.join(depPath, pkg);
163
+ const dst = path.join(target, dep, pkg);
164
+ if (existsSync(dst)) continue;
165
+ mkdirSync(path.join(target, dep), { recursive: true });
166
+ cpSync(src, dst, {
167
+ recursive: true,
168
+ dereference: true,
169
+ force: true
170
+ });
171
+ copied++;
172
+ }
173
+ } else {
174
+ const dst = path.join(target, dep);
175
+ if (existsSync(dst)) continue;
176
+ cpSync(depPath, dst, {
177
+ recursive: true,
178
+ dereference: true,
179
+ force: true
180
+ });
181
+ copied++;
182
+ }
183
+ }
184
+ }
185
+ rmSync(path.join(standaloneDir, "node_modules"), {
186
+ recursive: true,
187
+ force: true
188
+ });
189
+ return {
190
+ skipped: false,
191
+ copied
192
+ };
193
+ }
194
+
111
195
  //#endregion
112
196
  //#region src/cli/web-runtime.ts
113
197
  const DEFAULT_WEB_APP_PORT = 3100;
@@ -147,6 +231,13 @@ function writeJsonFile(filePath, value) {
147
231
  ensureParentDir(filePath);
148
232
  writeFileSync(filePath, `${JSON.stringify(value, null, 2)}\n`, "utf-8");
149
233
  }
234
+ function resolveCommandForPlatform$1(command) {
235
+ if (process$1.platform !== "win32") return command;
236
+ if (path.extname(command)) return command;
237
+ const normalized = path.basename(command).toLowerCase();
238
+ if (normalized === "npm" || normalized === "pnpm" || normalized === "npx" || normalized === "yarn") return `${command}.cmd`;
239
+ return command;
240
+ }
150
241
  function isProcessAlive(pid) {
151
242
  try {
152
243
  process$1.kill(pid, 0);
@@ -364,6 +455,162 @@ function readLastKnownWebPort(stateDir) {
364
455
  if (manifestPort) return manifestPort;
365
456
  return DEFAULT_WEB_APP_PORT;
366
457
  }
458
+ /**
459
+ * Node.js cpSync with dereference:true does NOT dereference symlinks nested
460
+ * inside a recursively-copied directory. After copying the app dir:
461
+ *
462
+ * 1. Merge all packages from the standalone root node_modules/ into the
463
+ * runtime's node_modules/ (provides transitive deps like styled-jsx).
464
+ * 2. Replace any remaining symlinks with real copies of their targets,
465
+ * falling back to the standalone root node_modules/ when the original
466
+ * target is missing (e.g. .pnpm/ was removed by a prior flatten).
467
+ */
468
+ function dereferenceRuntimeNodeModules(runtimeAppDir, standaloneDir) {
469
+ const nmDir = path.join(runtimeAppDir, "node_modules");
470
+ mkdirSync(nmDir, { recursive: true });
471
+ const rootNm = path.join(standaloneDir, "node_modules");
472
+ mergeRootNodeModules(nmDir, rootNm);
473
+ resolveRemainingSymlinks(nmDir, rootNm);
474
+ }
475
+ function mergeRootNodeModules(targetNm, rootNm) {
476
+ if (!existsSync(rootNm)) return;
477
+ let entries;
478
+ try {
479
+ entries = readdirSync(rootNm);
480
+ } catch {
481
+ return;
482
+ }
483
+ for (const entry of entries) {
484
+ if (entry === ".pnpm" || entry === "node_modules") continue;
485
+ const src = path.join(rootNm, entry);
486
+ if (entry.startsWith("@")) {
487
+ let scopeEntries;
488
+ try {
489
+ scopeEntries = readdirSync(src);
490
+ } catch {
491
+ continue;
492
+ }
493
+ for (const pkg of scopeEntries) {
494
+ const dst = path.join(targetNm, entry, pkg);
495
+ if (existsSync(dst) && !lstatSync(dst).isSymbolicLink()) continue;
496
+ const scopeSrc = path.join(src, pkg);
497
+ try {
498
+ rmSync(dst, {
499
+ recursive: true,
500
+ force: true
501
+ });
502
+ mkdirSync(path.join(targetNm, entry), { recursive: true });
503
+ cpSync(scopeSrc, dst, {
504
+ recursive: true,
505
+ dereference: true,
506
+ force: true
507
+ });
508
+ } catch {}
509
+ }
510
+ continue;
511
+ }
512
+ const dst = path.join(targetNm, entry);
513
+ if (existsSync(dst) && !lstatSync(dst).isSymbolicLink()) continue;
514
+ try {
515
+ rmSync(dst, {
516
+ recursive: true,
517
+ force: true
518
+ });
519
+ cpSync(src, dst, {
520
+ recursive: true,
521
+ dereference: true,
522
+ force: true
523
+ });
524
+ } catch {}
525
+ }
526
+ }
527
+ function resolveRemainingSymlinks(nmDir, rootNm) {
528
+ let entries;
529
+ try {
530
+ entries = readdirSync(nmDir);
531
+ } catch {
532
+ return;
533
+ }
534
+ for (const entry of entries) {
535
+ const entryPath = path.join(nmDir, entry);
536
+ try {
537
+ if (!lstatSync(entryPath).isSymbolicLink()) {
538
+ if (entry.startsWith("@")) resolveScopeSymlinks(entryPath, entry, rootNm);
539
+ continue;
540
+ }
541
+ } catch {
542
+ continue;
543
+ }
544
+ resolveSymlinkedPackage(entryPath, entry, rootNm);
545
+ }
546
+ }
547
+ function resolveScopeSymlinks(scopeDir, scopeName, rootNm) {
548
+ let scopeEntries;
549
+ try {
550
+ scopeEntries = readdirSync(scopeDir);
551
+ } catch {
552
+ return;
553
+ }
554
+ for (const pkg of scopeEntries) {
555
+ const pkgPath = path.join(scopeDir, pkg);
556
+ try {
557
+ if (!lstatSync(pkgPath).isSymbolicLink()) continue;
558
+ } catch {
559
+ continue;
560
+ }
561
+ resolveSymlinkedPackage(pkgPath, `${scopeName}/${pkg}`, rootNm);
562
+ }
563
+ }
564
+ function resolveSymlinkedPackage(linkPath, packageName, rootNm) {
565
+ try {
566
+ const target = readlinkSync(linkPath);
567
+ const resolved = path.isAbsolute(target) ? target : path.resolve(path.dirname(linkPath), target);
568
+ if (existsSync(resolved)) {
569
+ rmSync(linkPath, { force: true });
570
+ cpSync(resolved, linkPath, {
571
+ recursive: true,
572
+ dereference: true,
573
+ force: true
574
+ });
575
+ return;
576
+ }
577
+ } catch {}
578
+ const fallback = path.join(rootNm, packageName);
579
+ if (existsSync(fallback)) {
580
+ try {
581
+ rmSync(linkPath, { force: true });
582
+ cpSync(fallback, linkPath, {
583
+ recursive: true,
584
+ dereference: true,
585
+ force: true
586
+ });
587
+ } catch {}
588
+ return;
589
+ }
590
+ try {
591
+ rmSync(linkPath, { force: true });
592
+ } catch {}
593
+ }
594
+ /**
595
+ * Copy .next/static/ and public/ into the runtime app dir if they aren't
596
+ * already present. In production the prepack script copies these into the
597
+ * standalone app dir before publish, so cpSync already picks them up.
598
+ * In dev the prepack hasn't run, so we pull them from the source tree.
599
+ */
600
+ function ensureStaticAssets(runtimeAppDir, packageRoot) {
601
+ const pairs = [[path.join(packageRoot, "apps", "web", ".next", "static"), path.join(runtimeAppDir, ".next", "static")], [path.join(packageRoot, "apps", "web", "public"), path.join(runtimeAppDir, "public")]];
602
+ for (const [src, dst] of pairs) {
603
+ if (existsSync(dst) || !existsSync(src)) continue;
604
+ try {
605
+ mkdirSync(path.dirname(dst), { recursive: true });
606
+ cpSync(src, dst, {
607
+ recursive: true,
608
+ dereference: true,
609
+ force: true
610
+ });
611
+ } catch {}
612
+ }
613
+ }
367
614
  function installManagedWebRuntime(params) {
368
615
  const runtimeDir = resolveManagedWebRuntimeDir(params.stateDir);
369
616
  const runtimeAppDir = resolveManagedWebRuntimeAppDir(params.stateDir);
@@ -377,6 +624,8 @@ function installManagedWebRuntime(params) {
377
624
  runtimeServerPath,
378
625
  reason: "standalone-missing"
379
626
  };
627
+ const standaloneDir = path.join(params.packageRoot, "apps", "web", ".next", "standalone");
628
+ flattenPnpmStandaloneDeps(standaloneDir);
380
629
  mkdirSync(runtimeDir, { recursive: true });
381
630
  rmSync(runtimeAppDir, {
382
631
  recursive: true,
@@ -387,6 +636,8 @@ function installManagedWebRuntime(params) {
387
636
  force: true,
388
637
  dereference: true
389
638
  });
639
+ dereferenceRuntimeNodeModules(runtimeAppDir, standaloneDir);
640
+ ensureStaticAssets(runtimeAppDir, params.packageRoot);
390
641
  const manifest = {
391
642
  schemaVersion: 1,
392
643
  deployedDenchVersion: params.denchVersion,
@@ -513,6 +764,50 @@ function resolveOpenClawCommandOrThrow() {
513
764
  throw new Error("Global `openclaw` CLI was not found on PATH. Install it with: npm install -g openclaw");
514
765
  }
515
766
  }
767
+ async function runOpenClawCommand(params) {
768
+ return await new Promise((resolve, reject) => {
769
+ const child = spawn(resolveCommandForPlatform$1(params.openclawCommand), params.args, {
770
+ stdio: [
771
+ "ignore",
772
+ "pipe",
773
+ "pipe"
774
+ ],
775
+ env: params.env ? {
776
+ ...process$1.env,
777
+ ...params.env
778
+ } : process$1.env
779
+ });
780
+ let stdout = "";
781
+ let stderr = "";
782
+ let settled = false;
783
+ const timer = setTimeout(() => {
784
+ if (settled) return;
785
+ child.kill("SIGKILL");
786
+ }, params.timeoutMs);
787
+ child.stdout?.on("data", (chunk) => {
788
+ stdout += String(chunk);
789
+ });
790
+ child.stderr?.on("data", (chunk) => {
791
+ stderr += String(chunk);
792
+ });
793
+ child.once("error", (error) => {
794
+ if (settled) return;
795
+ settled = true;
796
+ clearTimeout(timer);
797
+ reject(error);
798
+ });
799
+ child.once("close", (code) => {
800
+ if (settled) return;
801
+ settled = true;
802
+ clearTimeout(timer);
803
+ resolve({
804
+ code: typeof code === "number" ? code : 1,
805
+ stdout,
806
+ stderr
807
+ });
808
+ });
809
+ });
810
+ }
516
811
 
517
812
  //#endregion
518
813
  //#region src/cli/workspace-seed.ts
@@ -829,7 +1124,6 @@ function seedWorkspaceFromAssets(params) {
829
1124
  //#endregion
830
1125
  //#region src/cli/bootstrap-external.ts
831
1126
  const DEFAULT_DENCHCLAW_PROFILE = "dench";
832
- const DEFAULT_GATEWAY_PORT = 18789;
833
1127
  const DENCHCLAW_GATEWAY_PORT_START = 19001;
834
1128
  const MAX_PORT_SCAN_ATTEMPTS = 100;
835
1129
  const DEFAULT_BOOTSTRAP_ROLLOUT_STAGE = "default";
@@ -943,6 +1237,21 @@ async function findAvailablePort(startPort, maxAttempts) {
943
1237
  if (await isPortAvailable(port)) return port;
944
1238
  }
945
1239
  }
1240
+ /**
1241
+ * Port 18789 belongs to the host OpenClaw installation. A persisted config
1242
+ * that drifted to that value (e.g. bootstrap ran while OpenClaw was down)
1243
+ * must be rejected to prevent service hijack on launchd restart.
1244
+ */
1245
+ function isPersistedPortAcceptable(port) {
1246
+ return typeof port === "number" && port > 0 && port !== 18789;
1247
+ }
1248
+ function readExistingGatewayPort(stateDir) {
1249
+ for (const name of ["openclaw.json", "config.json"]) try {
1250
+ const raw = JSON.parse(readFileSync(path.join(stateDir, name), "utf-8"));
1251
+ const port = typeof raw.gateway?.port === "number" ? raw.gateway.port : typeof raw.gateway?.port === "string" ? Number.parseInt(raw.gateway.port, 10) : void 0;
1252
+ if (typeof port === "number" && Number.isFinite(port) && port > 0) return port;
1253
+ } catch {}
1254
+ }
946
1255
  function normalizeBootstrapRolloutStage(raw) {
947
1256
  const normalized = raw?.trim().toLowerCase();
948
1257
  if (normalized === "internal" || normalized === "beta" || normalized === "default") return normalized;
@@ -969,6 +1278,75 @@ function resolveGatewayLaunchAgentLabel(profile) {
969
1278
  if (!normalized || normalized === "default") return DEFAULT_GATEWAY_LAUNCH_AGENT_LABEL;
970
1279
  return `ai.openclaw.${normalized}`;
971
1280
  }
1281
+ async function installBundledPlugins(params) {
1282
+ try {
1283
+ const pluginSrc = path.join(resolveCliPackageRoot(), "extensions", "posthog-analytics");
1284
+ if (!existsSync(pluginSrc)) return false;
1285
+ const pluginDest = path.join(params.stateDir, "extensions", "posthog-analytics");
1286
+ mkdirSync(path.dirname(pluginDest), { recursive: true });
1287
+ cpSync(pluginSrc, pluginDest, {
1288
+ recursive: true,
1289
+ force: true
1290
+ });
1291
+ await runOpenClawOrThrow({
1292
+ openclawCommand: params.openclawCommand,
1293
+ args: [
1294
+ "--profile",
1295
+ params.profile,
1296
+ "config",
1297
+ "set",
1298
+ "plugins.allow",
1299
+ "[\"posthog-analytics\"]"
1300
+ ],
1301
+ timeoutMs: 3e4,
1302
+ errorMessage: "Failed to set plugins.allow for posthog-analytics."
1303
+ });
1304
+ await runOpenClawOrThrow({
1305
+ openclawCommand: params.openclawCommand,
1306
+ args: [
1307
+ "--profile",
1308
+ params.profile,
1309
+ "config",
1310
+ "set",
1311
+ "plugins.load.paths",
1312
+ JSON.stringify([pluginDest])
1313
+ ],
1314
+ timeoutMs: 3e4,
1315
+ errorMessage: "Failed to set plugins.load.paths for posthog-analytics."
1316
+ });
1317
+ if (params.posthogKey) {
1318
+ await runOpenClawOrThrow({
1319
+ openclawCommand: params.openclawCommand,
1320
+ args: [
1321
+ "--profile",
1322
+ params.profile,
1323
+ "config",
1324
+ "set",
1325
+ "plugins.entries.posthog-analytics.enabled",
1326
+ "true"
1327
+ ],
1328
+ timeoutMs: 3e4,
1329
+ errorMessage: "Failed to enable posthog-analytics plugin."
1330
+ });
1331
+ await runOpenClawOrThrow({
1332
+ openclawCommand: params.openclawCommand,
1333
+ args: [
1334
+ "--profile",
1335
+ params.profile,
1336
+ "config",
1337
+ "set",
1338
+ "plugins.entries.posthog-analytics.config.apiKey",
1339
+ params.posthogKey
1340
+ ],
1341
+ timeoutMs: 3e4,
1342
+ errorMessage: "Failed to set posthog-analytics API key."
1343
+ });
1344
+ }
1345
+ return true;
1346
+ } catch {
1347
+ return false;
1348
+ }
1349
+ }
972
1350
  async function ensureGatewayModeLocal(openclawCommand, profile) {
973
1351
  if ((await runOpenClaw(openclawCommand, [
974
1352
  "--profile",
@@ -1536,7 +1914,7 @@ async function attemptGatewayAutoFix(params) {
1536
1914
  logExcerpts
1537
1915
  };
1538
1916
  }
1539
- async function openUrl(url) {
1917
+ async function openUrl$1(url) {
1540
1918
  const result = await runCommandWithTimeout(process$1.platform === "darwin" ? ["open", url] : process$1.platform === "win32" ? [
1541
1919
  "cmd",
1542
1920
  "/c",
@@ -1668,6 +2046,7 @@ function buildBootstrapDiagnostics(params) {
1668
2046
  const enforceCutoverGates = isTruthyEnvValue(env.DENCHCLAW_BOOTSTRAP_ENFORCE_SAFETY_GATES);
1669
2047
  const cutoverGatePassed = migrationSuiteOk && onboardingE2EOk;
1670
2048
  checks.push(createCheck("cutover-gates", cutoverGatePassed ? "pass" : enforceCutoverGates ? "fail" : "warn", `Cutover gate: migrationSuite=${migrationSuiteOk ? "pass" : "missing"}, onboardingE2E=${onboardingE2EOk ? "pass" : "missing"}.`, cutoverGatePassed ? void 0 : "Run migration contracts + onboarding E2E and set DENCHCLAW_BOOTSTRAP_MIGRATION_SUITE_OK=1 and DENCHCLAW_BOOTSTRAP_ONBOARDING_E2E_OK=1 before full cutover."));
2049
+ if (params.posthogPluginInstalled != null) checks.push(createCheck("posthog-analytics", params.posthogPluginInstalled ? "pass" : "warn", params.posthogPluginInstalled ? "PostHog analytics plugin installed." : "PostHog analytics plugin not installed (POSTHOG_KEY missing or extension not bundled)."));
1671
2050
  return {
1672
2051
  rolloutStage: params.rolloutStage,
1673
2052
  legacyFallbackEnabled: params.legacyFallbackEnabled,
@@ -1748,15 +2127,26 @@ async function bootstrapCommand(opts, runtime = defaultRuntime) {
1748
2127
  let gatewayPort;
1749
2128
  let portAutoAssigned = false;
1750
2129
  if (explicitPort) gatewayPort = explicitPort;
1751
- else if (await isPortAvailable(DEFAULT_GATEWAY_PORT)) gatewayPort = DEFAULT_GATEWAY_PORT;
1752
2130
  else {
1753
- const availablePort = await findAvailablePort(DENCHCLAW_GATEWAY_PORT_START, MAX_PORT_SCAN_ATTEMPTS);
1754
- if (!availablePort) throw new Error(`Could not find an available gateway port between ${DENCHCLAW_GATEWAY_PORT_START} and ${DENCHCLAW_GATEWAY_PORT_START + MAX_PORT_SCAN_ATTEMPTS}. Please specify a port explicitly with --gateway-port.`);
1755
- gatewayPort = availablePort;
1756
- portAutoAssigned = true;
2131
+ const existingPort = readExistingGatewayPort(stateDir);
2132
+ if (isPersistedPortAcceptable(existingPort) && await isPortAvailable(existingPort)) gatewayPort = existingPort;
2133
+ else if (await isPortAvailable(DENCHCLAW_GATEWAY_PORT_START)) gatewayPort = DENCHCLAW_GATEWAY_PORT_START;
2134
+ else {
2135
+ const availablePort = await findAvailablePort(DENCHCLAW_GATEWAY_PORT_START + 1, MAX_PORT_SCAN_ATTEMPTS);
2136
+ if (!availablePort) throw new Error(`Could not find an available gateway port between ${DENCHCLAW_GATEWAY_PORT_START} and ${DENCHCLAW_GATEWAY_PORT_START + MAX_PORT_SCAN_ATTEMPTS}. Please specify a port explicitly with --gateway-port.`);
2137
+ gatewayPort = availablePort;
2138
+ portAutoAssigned = true;
2139
+ }
1757
2140
  }
1758
- if (portAutoAssigned && !opts.json) runtime.log(theme.muted(`Default gateway port ${DEFAULT_GATEWAY_PORT} is in use. Using auto-assigned port ${gatewayPort}.`));
2141
+ if (portAutoAssigned && !opts.json) runtime.log(theme.muted(`Default gateway port ${DENCHCLAW_GATEWAY_PORT_START} is in use. Using auto-assigned port ${gatewayPort}.`));
1759
2142
  await ensureDefaultWorkspacePath(openclawCommand, profile, workspaceDir);
2143
+ const packageRoot = resolveCliPackageRoot();
2144
+ const posthogPluginInstalled = await installBundledPlugins({
2145
+ openclawCommand,
2146
+ profile,
2147
+ stateDir,
2148
+ posthogKey: process$1.env.POSTHOG_KEY || ""
2149
+ });
1760
2150
  const onboardArgv = [
1761
2151
  "--profile",
1762
2152
  profile,
@@ -1782,7 +2172,6 @@ async function bootstrapCommand(opts, runtime = defaultRuntime) {
1782
2172
  timeoutMs: 12 * 6e4,
1783
2173
  errorMessage: "OpenClaw onboarding failed."
1784
2174
  });
1785
- const packageRoot = resolveCliPackageRoot();
1786
2175
  const workspaceSeed = seedWorkspaceFromAssets({
1787
2176
  workspaceDir,
1788
2177
  packageRoot
@@ -1837,10 +2226,24 @@ async function bootstrapCommand(opts, runtime = defaultRuntime) {
1837
2226
  webReachable,
1838
2227
  rolloutStage,
1839
2228
  legacyFallbackEnabled,
1840
- stateDir
2229
+ stateDir,
2230
+ posthogPluginInstalled
1841
2231
  });
1842
- const shouldOpen = !opts.noOpen && !opts.json;
1843
- const opened = shouldOpen ? await openUrl(webUrl) : false;
2232
+ let opened = false;
2233
+ let openAttempted = false;
2234
+ if (!opts.noOpen && !opts.json && webReachable) if (nonInteractive) {
2235
+ openAttempted = true;
2236
+ opened = await openUrl$1(webUrl);
2237
+ } else {
2238
+ const wantOpen = await confirm({
2239
+ message: stylePromptMessage(`Open ${webUrl} in your browser?`),
2240
+ initialValue: true
2241
+ });
2242
+ if (!isCancel(wantOpen) && wantOpen) {
2243
+ openAttempted = true;
2244
+ opened = await openUrl$1(webUrl);
2245
+ }
2246
+ }
1844
2247
  if (!opts.json) {
1845
2248
  if (!webRuntimeStatus.ready) runtime.log(theme.warn(`Managed web runtime check failed: ${webRuntimeStatus.reason}`));
1846
2249
  if (installResult.installed) runtime.log(theme.muted("Installed global OpenClaw CLI via npm."));
@@ -1872,7 +2275,7 @@ async function bootstrapCommand(opts, runtime = defaultRuntime) {
1872
2275
  runtime.log(`Gateway: ${gatewayProbe.ok ? "reachable" : "check failed"}`);
1873
2276
  runtime.log(`Web UI: ${webUrl}`);
1874
2277
  runtime.log(`Rollout stage: ${rolloutStage}${legacyFallbackEnabled ? " (legacy fallback enabled)" : ""}`);
1875
- if (!opened && shouldOpen) runtime.log(theme.muted("Browser open failed; copy/paste the URL above."));
2278
+ if (!opened && openAttempted) runtime.log(theme.muted("Browser open failed; copy/paste the URL above."));
1876
2279
  if (diagnostics.hasFailures) runtime.log(theme.warn("Bootstrap completed with failing checks. Address remediation items above before full cutover."));
1877
2280
  }
1878
2281
  const summary = {
@@ -1958,7 +2361,7 @@ async function runCommandWithRuntime(runtime, action, onError) {
1958
2361
  //#endregion
1959
2362
  //#region src/cli/program/register.bootstrap.ts
1960
2363
  function registerBootstrapCommand(program) {
1961
- program.command("bootstrap").description("Bootstrap DenchClaw on top of OpenClaw and open the web UI").option("--profile <name>", "Compatibility flag; non-dench values are ignored with a warning").option("--force-onboard", "Run onboarding even if config already exists", false).option("--non-interactive", "Skip prompts where possible", false).option("--yes", "Auto-approve install prompts", false).option("--skip-update", "Skip update prompt/check", false).option("--update-now", "Run OpenClaw update before onboarding", false).option("--gateway-port <port>", "Gateway port override for first-run onboarding").option("--web-port <port>", "Preferred web UI port (default: 3100)").option("--no-open", "Do not open the browser automatically", false).option("--json", "Output summary as JSON", false).addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/onboard", "docs.openclaw.ai/cli/onboard")}\n`).action(async (opts) => {
2364
+ program.command("bootstrap").description("Bootstrap DenchClaw on top of OpenClaw and open the web UI").option("--profile <name>", "Compatibility flag; non-dench values are ignored with a warning").option("--force-onboard", "Run onboarding even if config already exists", false).option("--non-interactive", "Skip prompts where possible", false).option("--yes", "Auto-approve install prompts", false).option("--skip-update", "Skip update prompt/check", false).option("--update-now", "Run OpenClaw update before onboarding", false).option("--gateway-port <port>", "Gateway port override for first-run onboarding").option("--web-port <port>", "Preferred web UI port (default: 3100)").option("--no-open", "Do not open the browser automatically").option("--json", "Output summary as JSON", false).addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/onboard", "docs.openclaw.ai/cli/onboard")}\n`).action(async (opts) => {
1962
2365
  await runCommandWithRuntime(defaultRuntime, async () => {
1963
2366
  await bootstrapCommand({
1964
2367
  profile: opts.profile,
@@ -1990,6 +2393,41 @@ function firstNonEmptyLine(...values) {
1990
2393
  if (first) return first;
1991
2394
  }
1992
2395
  }
2396
+ async function openUrl(url) {
2397
+ const [cmd, ...args] = process$1.platform === "darwin" ? ["open", url] : process$1.platform === "win32" ? [
2398
+ "cmd",
2399
+ "/c",
2400
+ "start",
2401
+ "",
2402
+ url
2403
+ ] : ["xdg-open", url];
2404
+ if (!cmd) return false;
2405
+ return new Promise((resolve) => {
2406
+ const child = spawn(cmd, args, { stdio: "ignore" });
2407
+ const timer = setTimeout(() => {
2408
+ child.kill();
2409
+ resolve(false);
2410
+ }, 5e3);
2411
+ child.once("close", (code) => {
2412
+ clearTimeout(timer);
2413
+ resolve(code === 0);
2414
+ });
2415
+ child.once("error", () => {
2416
+ clearTimeout(timer);
2417
+ resolve(false);
2418
+ });
2419
+ });
2420
+ }
2421
+ async function promptAndOpenWebUi(params) {
2422
+ if (params.noOpen || params.json || !process$1.stdin.isTTY) return;
2423
+ const webUrl = `http://localhost:${params.webPort}`;
2424
+ const wantOpen = await confirm({
2425
+ message: stylePromptMessage(`Open ${webUrl} in your browser?`),
2426
+ initialValue: true
2427
+ });
2428
+ if (isCancel(wantOpen) || !wantOpen) return;
2429
+ if (!await openUrl(webUrl)) params.runtime.log(theme.muted("Browser open failed; copy/paste the URL above."));
2430
+ }
1993
2431
  async function runOpenClawUpdateWithProgress(openclawCommand) {
1994
2432
  const s = spinner();
1995
2433
  s.start("Updating OpenClaw (required for this major Dench upgrade)...");
@@ -2070,7 +2508,7 @@ function resolveGatewayPort(stateDir) {
2070
2508
  const port = readConfigGatewayPort(path.join(stateDir, name));
2071
2509
  if (typeof port === "number") return port;
2072
2510
  }
2073
- return 18789;
2511
+ return DENCHCLAW_DEFAULT_GATEWAY_PORT;
2074
2512
  }
2075
2513
  function readConfigGatewayPort(configPath) {
2076
2514
  try {
@@ -2082,6 +2520,78 @@ function readConfigGatewayPort(configPath) {
2082
2520
  return;
2083
2521
  }
2084
2522
  }
2523
+ async function restartGatewayDaemon(params) {
2524
+ let openclawCommand;
2525
+ try {
2526
+ openclawCommand = resolveOpenClawCommandOrThrow();
2527
+ } catch {
2528
+ return {
2529
+ restarted: false,
2530
+ error: "openclaw CLI not found on PATH"
2531
+ };
2532
+ }
2533
+ const s = !params.json ? spinner() : null;
2534
+ s?.start("Stopping gateway daemon…");
2535
+ await runOpenClawCommand({
2536
+ openclawCommand,
2537
+ args: [
2538
+ "--profile",
2539
+ params.profile,
2540
+ "gateway",
2541
+ "stop"
2542
+ ],
2543
+ timeoutMs: 9e4
2544
+ }).catch(() => ({
2545
+ code: 1,
2546
+ stdout: "",
2547
+ stderr: "stop timed out"
2548
+ }));
2549
+ s?.message("Installing gateway daemon…");
2550
+ await runOpenClawCommand({
2551
+ openclawCommand,
2552
+ args: [
2553
+ "--profile",
2554
+ params.profile,
2555
+ "gateway",
2556
+ "install",
2557
+ "--force",
2558
+ "--port",
2559
+ String(params.gatewayPort)
2560
+ ],
2561
+ timeoutMs: 2 * 6e4
2562
+ }).catch(() => ({
2563
+ code: 1,
2564
+ stdout: "",
2565
+ stderr: "install failed"
2566
+ }));
2567
+ s?.message("Starting gateway daemon…");
2568
+ const startResult = await runOpenClawCommand({
2569
+ openclawCommand,
2570
+ args: [
2571
+ "--profile",
2572
+ params.profile,
2573
+ "gateway",
2574
+ "start",
2575
+ "--port",
2576
+ String(params.gatewayPort)
2577
+ ],
2578
+ timeoutMs: 2 * 6e4
2579
+ }).catch(() => ({
2580
+ code: 1,
2581
+ stdout: "",
2582
+ stderr: "start failed"
2583
+ }));
2584
+ if (startResult.code !== 0) {
2585
+ const detail = firstNonEmptyLine(startResult.stderr, startResult.stdout);
2586
+ s?.stop(detail ? `Gateway restart failed: ${detail}` : "Gateway restart failed.");
2587
+ return {
2588
+ restarted: false,
2589
+ error: detail ?? "gateway start failed"
2590
+ };
2591
+ }
2592
+ s?.stop("Gateway daemon restarted.");
2593
+ return { restarted: true };
2594
+ }
2085
2595
  async function updateWebRuntimeCommand(opts, runtime = defaultRuntime) {
2086
2596
  const appliedProfile = applyCliProfileEnv({ profile: opts.profile });
2087
2597
  const profile = appliedProfile.effectiveProfile;
@@ -2110,6 +2620,11 @@ async function updateWebRuntimeCommand(opts, runtime = defaultRuntime) {
2110
2620
  port: selectedPort,
2111
2621
  includeLegacyStandalone: true
2112
2622
  });
2623
+ const gatewayResult = await restartGatewayDaemon({
2624
+ profile,
2625
+ gatewayPort,
2626
+ json: Boolean(opts.json)
2627
+ });
2113
2628
  const ensureResult = await ensureManagedWebRuntime({
2114
2629
  stateDir,
2115
2630
  packageRoot,
@@ -2129,7 +2644,9 @@ async function updateWebRuntimeCommand(opts, runtime = defaultRuntime) {
2129
2644
  stoppedPids: stopResult.stoppedPids,
2130
2645
  skippedForeignPids: stopResult.skippedForeignPids,
2131
2646
  ready: ensureResult.ready,
2132
- reason: ensureResult.reason
2647
+ reason: ensureResult.reason,
2648
+ gatewayRestarted: gatewayResult.restarted,
2649
+ gatewayError: gatewayResult.error
2133
2650
  };
2134
2651
  if (!opts.json) {
2135
2652
  runtime.log("");
@@ -2137,12 +2654,20 @@ async function updateWebRuntimeCommand(opts, runtime = defaultRuntime) {
2137
2654
  runtime.log(`Profile: ${profile}`);
2138
2655
  runtime.log(`Version: ${VERSION}`);
2139
2656
  runtime.log(`Web port: ${selectedPort}`);
2657
+ runtime.log(`Gateway: ${summary.gatewayRestarted ? "restarted" : "restart failed"}`);
2658
+ if (summary.gatewayError) runtime.log(theme.warn(`Gateway error: ${summary.gatewayError}`));
2140
2659
  runtime.log(`Stopped web processes: ${summary.stoppedPids.length}`);
2141
2660
  if (summary.skippedForeignPids.length > 0) runtime.log(theme.warn(`Skipped non-Dench listeners on ${selectedPort}: ${summary.skippedForeignPids.join(", ")}`));
2142
2661
  runtime.log(`Web runtime: ${summary.ready ? "ready" : "not ready"}`);
2143
2662
  if (!summary.ready) runtime.log(theme.warn(summary.reason));
2144
2663
  }
2145
2664
  if (!summary.ready) throw new Error(`Web runtime update failed: ${summary.reason}`);
2665
+ await promptAndOpenWebUi({
2666
+ webPort: selectedPort,
2667
+ json: opts.json,
2668
+ noOpen: opts.noOpen,
2669
+ runtime
2670
+ });
2146
2671
  if (opts.json) runtime.log(JSON.stringify(summary, null, 2));
2147
2672
  return summary;
2148
2673
  }
@@ -2191,6 +2716,11 @@ async function startWebRuntimeCommand(opts, runtime = defaultRuntime, label = "s
2191
2716
  includeLegacyStandalone: true
2192
2717
  });
2193
2718
  if (stopResult.skippedForeignPids.length > 0) throw new Error(`Cannot start on ${selectedPort}; non-Dench listener(s) still own the port: ${stopResult.skippedForeignPids.join(", ")}`);
2719
+ const gatewayResult = await restartGatewayDaemon({
2720
+ profile,
2721
+ gatewayPort,
2722
+ json: Boolean(opts.json)
2723
+ });
2194
2724
  if (!startManagedWebRuntime({
2195
2725
  stateDir,
2196
2726
  port: selectedPort,
@@ -2206,7 +2736,9 @@ async function startWebRuntimeCommand(opts, runtime = defaultRuntime, label = "s
2206
2736
  stoppedPids: stopResult.stoppedPids,
2207
2737
  skippedForeignPids: stopResult.skippedForeignPids,
2208
2738
  started: probe.ok,
2209
- reason: probe.reason
2739
+ reason: probe.reason,
2740
+ gatewayRestarted: gatewayResult.restarted,
2741
+ gatewayError: gatewayResult.error
2210
2742
  };
2211
2743
  if (opts.json) {
2212
2744
  runtime.log(JSON.stringify(summary, null, 2));
@@ -2216,20 +2748,29 @@ async function startWebRuntimeCommand(opts, runtime = defaultRuntime, label = "s
2216
2748
  runtime.log(theme.heading(`Dench web ${label}`));
2217
2749
  runtime.log(`Profile: ${profile}`);
2218
2750
  runtime.log(`Web port: ${selectedPort}`);
2751
+ runtime.log(`Gateway: ${summary.gatewayRestarted ? "restarted" : "restart failed"}`);
2752
+ if (summary.gatewayError) runtime.log(theme.warn(`Gateway error: ${summary.gatewayError}`));
2219
2753
  runtime.log(`Restarted managed web runtime: ${summary.started ? "yes" : "no"}`);
2220
2754
  if (!summary.started) runtime.log(theme.warn(summary.reason));
2221
2755
  if (!summary.started) throw new Error(`Web runtime failed readiness probe: ${summary.reason}`);
2756
+ await promptAndOpenWebUi({
2757
+ webPort: selectedPort,
2758
+ json: opts.json,
2759
+ noOpen: opts.noOpen,
2760
+ runtime
2761
+ });
2222
2762
  return summary;
2223
2763
  }
2224
2764
 
2225
2765
  //#endregion
2226
2766
  //#region src/cli/program/register.restart.ts
2227
2767
  function registerRestartCommand(program) {
2228
- program.command("restart").description("Restart Dench managed web runtime (stop then start)").option("--profile <name>", "Compatibility flag; non-dench values are ignored with a warning").option("--web-port <port>", "Web runtime port override").option("--json", "Output summary as JSON", false).action(async (opts) => {
2768
+ program.command("restart").description("Restart Dench managed web runtime (stop then start)").option("--profile <name>", "Compatibility flag; non-dench values are ignored with a warning").option("--web-port <port>", "Web runtime port override").option("--no-open", "Do not open the browser automatically").option("--json", "Output summary as JSON", false).action(async (opts) => {
2229
2769
  await runCommandWithRuntime(defaultRuntime, async () => {
2230
2770
  await restartWebRuntimeCommand({
2231
2771
  profile: opts.profile,
2232
2772
  webPort: opts.webPort,
2773
+ noOpen: Boolean(opts.open === false),
2233
2774
  json: Boolean(opts.json)
2234
2775
  });
2235
2776
  });
@@ -2239,11 +2780,12 @@ function registerRestartCommand(program) {
2239
2780
  //#endregion
2240
2781
  //#region src/cli/program/register.start.ts
2241
2782
  function registerStartCommand(program) {
2242
- program.command("start").description("Start Dench managed web runtime without updating assets").option("--profile <name>", "Compatibility flag; non-dench values are ignored with a warning").option("--web-port <port>", "Web runtime port override").option("--json", "Output summary as JSON", false).action(async (opts) => {
2783
+ program.command("start").description("Start Dench managed web runtime without updating assets").option("--profile <name>", "Compatibility flag; non-dench values are ignored with a warning").option("--web-port <port>", "Web runtime port override").option("--no-open", "Do not open the browser automatically").option("--json", "Output summary as JSON", false).action(async (opts) => {
2243
2784
  await runCommandWithRuntime(defaultRuntime, async () => {
2244
2785
  await startWebRuntimeCommand({
2245
2786
  profile: opts.profile,
2246
2787
  webPort: opts.webPort,
2788
+ noOpen: Boolean(opts.open === false),
2247
2789
  json: Boolean(opts.json)
2248
2790
  });
2249
2791
  });
@@ -2272,9 +2814,11 @@ function registerTelemetryCommand(program) {
2272
2814
  const config = readTelemetryConfig();
2273
2815
  const envDisabled = process.env.DO_NOT_TRACK === "1" || process.env.DENCHCLAW_TELEMETRY_DISABLED === "1" || Boolean(process.env.CI);
2274
2816
  const effective = isTelemetryEnabled();
2817
+ const privacyOn = config.privacyMode !== false;
2275
2818
  console.log(`Telemetry config: ${config.enabled ? "enabled" : "disabled"}`);
2276
2819
  if (envDisabled) console.log("Environment override: disabled (DO_NOT_TRACK, DENCHCLAW_TELEMETRY_DISABLED, or CI)");
2277
2820
  console.log(`Effective status: ${effective ? "enabled" : "disabled"}`);
2821
+ console.log(`Privacy mode: ${privacyOn ? "on (message content is redacted)" : "off (full content is captured)"}`);
2278
2822
  console.log("\nLearn more: https://github.com/openclaw/openclaw/blob/main/TELEMETRY.md");
2279
2823
  });
2280
2824
  cmd.command("disable").description("Disable anonymous telemetry").action(() => {
@@ -2286,18 +2830,37 @@ function registerTelemetryCommand(program) {
2286
2830
  writeTelemetryConfig({ enabled: true });
2287
2831
  console.log("Telemetry has been enabled. Thank you for helping improve DenchClaw!");
2288
2832
  });
2833
+ const privacyCmd = cmd.command("privacy").description("Control whether message content is included in telemetry");
2834
+ privacyCmd.command("on").description("Enable privacy mode (redacts message content, default)").action(() => {
2835
+ if (!isTelemetryEnabled()) {
2836
+ console.log("Telemetry is currently disabled. Enable it first with: denchclaw telemetry enable");
2837
+ return;
2838
+ }
2839
+ writeTelemetryConfig({ privacyMode: true });
2840
+ console.log("Privacy mode enabled. Message content and tool results will be redacted.");
2841
+ });
2842
+ privacyCmd.command("off").description("Disable privacy mode (sends full message content)").action(() => {
2843
+ if (!isTelemetryEnabled()) {
2844
+ console.log("Telemetry is currently disabled. Enable it first with: denchclaw telemetry enable");
2845
+ return;
2846
+ }
2847
+ writeTelemetryConfig({ privacyMode: false });
2848
+ console.log("Privacy mode disabled. Full message content and tool results will be captured.");
2849
+ console.log("Re-enable anytime with: denchclaw telemetry privacy on");
2850
+ });
2289
2851
  }
2290
2852
 
2291
2853
  //#endregion
2292
2854
  //#region src/cli/program/register.update.ts
2293
2855
  function registerUpdateCommand(program) {
2294
- program.command("update").description("Update Dench managed web runtime without onboarding").option("--profile <name>", "Compatibility flag; non-dench values are ignored with a warning").option("--web-port <port>", "Web runtime port override").option("--non-interactive", "Fail instead of prompting for major-gate approval", false).option("--yes", "Approve mandatory major-gate OpenClaw update", false).option("--json", "Output summary as JSON", false).action(async (opts) => {
2856
+ program.command("update").description("Update Dench managed web runtime without onboarding").option("--profile <name>", "Compatibility flag; non-dench values are ignored with a warning").option("--web-port <port>", "Web runtime port override").option("--non-interactive", "Fail instead of prompting for major-gate approval", false).option("--yes", "Approve mandatory major-gate OpenClaw update", false).option("--no-open", "Do not open the browser automatically").option("--json", "Output summary as JSON", false).action(async (opts) => {
2295
2857
  await runCommandWithRuntime(defaultRuntime, async () => {
2296
2858
  await updateWebRuntimeCommand({
2297
2859
  profile: opts.profile,
2298
2860
  webPort: opts.webPort,
2299
2861
  nonInteractive: Boolean(opts.nonInteractive),
2300
2862
  yes: Boolean(opts.yes),
2863
+ noOpen: Boolean(opts.open === false),
2301
2864
  json: Boolean(opts.json)
2302
2865
  });
2303
2866
  });
@@ -2352,7 +2915,7 @@ const CORE_CLI_ENTRIES = [
2352
2915
  ];
2353
2916
  const CORE_CLI_ENTRY_BY_NAME = new Map(CORE_CLI_ENTRIES.map((entry) => [entry.name, entry]));
2354
2917
  function getCoreCliCommandsWithSubcommands() {
2355
- return [];
2918
+ return ["telemetry"];
2356
2919
  }
2357
2920
  function registerCoreCliCommands(program, ctx, argv) {
2358
2921
  const primary = getPrimaryCommand(argv);