denchclaw 2.0.6 → 2.0.8

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 (463) 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 +233 -225
  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 +6 -6
  6. package/apps/web/.next/standalone/apps/web/.next/react-loadable-manifest.json +1 -1
  7. package/apps/web/.next/standalone/apps/web/.next/required-server-files.json +3 -3
  8. package/apps/web/.next/standalone/apps/web/.next/server/app/_not-found/page.js +2 -2
  9. package/apps/web/.next/standalone/apps/web/.next/server/app/_not-found/page.js.nft.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/_not-found.html +1 -1
  12. package/apps/web/.next/standalone/apps/web/.next/server/app/_not-found.rsc +2 -2
  13. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/active/route.js +1 -1
  14. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/active/route_client-reference-manifest.js +1 -1
  15. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/route.js +2 -2
  16. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/route_client-reference-manifest.js +1 -1
  17. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/stop/route.js +1 -1
  18. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/stop/route_client-reference-manifest.js +1 -1
  19. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/stream/route.js +2 -2
  20. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/stream/route_client-reference-manifest.js +1 -1
  21. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/subagents/route.js +1 -1
  22. package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/subagents/route_client-reference-manifest.js +1 -1
  23. package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/jobs/[jobId]/runs/route.js +1 -1
  24. package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/jobs/[jobId]/runs/route_client-reference-manifest.js +1 -1
  25. package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/jobs/route.js +1 -1
  26. package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/jobs/route_client-reference-manifest.js +1 -1
  27. package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/runs/[sessionId]/route.js +1 -1
  28. package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/runs/[sessionId]/route_client-reference-manifest.js +1 -1
  29. package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/runs/search-transcript/route.js +1 -1
  30. package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/runs/search-transcript/route_client-reference-manifest.js +1 -1
  31. package/apps/web/.next/standalone/apps/web/.next/server/app/api/feedback/route.js +1 -0
  32. package/apps/web/.next/standalone/apps/web/.next/server/app/api/feedback/route.js.nft.json +1 -0
  33. package/apps/web/.next/standalone/apps/web/.next/server/app/api/feedback/route_client-reference-manifest.js +1 -0
  34. package/apps/web/.next/standalone/apps/web/.next/server/app/api/memories/route.js +1 -1
  35. package/apps/web/.next/standalone/apps/web/.next/server/app/api/memories/route_client-reference-manifest.js +1 -1
  36. package/apps/web/.next/standalone/apps/web/.next/server/app/api/profiles/route.js +1 -1
  37. package/apps/web/.next/standalone/apps/web/.next/server/app/api/profiles/route_client-reference-manifest.js +1 -1
  38. package/apps/web/.next/standalone/apps/web/.next/server/app/api/profiles/switch/route.js +1 -1
  39. package/apps/web/.next/standalone/apps/web/.next/server/app/api/profiles/switch/route_client-reference-manifest.js +1 -1
  40. package/apps/web/.next/standalone/apps/web/.next/server/app/api/sessions/[sessionId]/route.js +1 -1
  41. package/apps/web/.next/standalone/apps/web/.next/server/app/api/sessions/[sessionId]/route_client-reference-manifest.js +1 -1
  42. package/apps/web/.next/standalone/apps/web/.next/server/app/api/sessions/route.js +1 -1
  43. package/apps/web/.next/standalone/apps/web/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  44. package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/route.js +1 -1
  45. package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  46. package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/[id]/messages/route.js +1 -1
  47. package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/[id]/messages/route_client-reference-manifest.js +1 -1
  48. package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/[id]/route.js +1 -1
  49. package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/[id]/route_client-reference-manifest.js +1 -1
  50. package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/route.js +1 -1
  51. package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/route_client-reference-manifest.js +1 -1
  52. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/assets/[...path]/route.js +1 -1
  53. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/assets/[...path]/route_client-reference-manifest.js +1 -1
  54. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/browse/route.js +1 -1
  55. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/browse/route_client-reference-manifest.js +1 -1
  56. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/browse-file/route.js +1 -1
  57. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/browse-file/route_client-reference-manifest.js +1 -1
  58. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/context/route.js +1 -1
  59. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/context/route_client-reference-manifest.js +1 -1
  60. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/copy/route.js +1 -1
  61. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/copy/route_client-reference-manifest.js +1 -1
  62. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/db/introspect/route.js +1 -1
  63. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/db/introspect/route_client-reference-manifest.js +1 -1
  64. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/db/query/route.js +1 -1
  65. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/db/query/route_client-reference-manifest.js +1 -1
  66. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/delete/route.js +1 -1
  67. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/delete/route_client-reference-manifest.js +1 -1
  68. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/file/route.js +1 -1
  69. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/file/route_client-reference-manifest.js +1 -1
  70. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/init/route.js +2 -2
  71. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/init/route_client-reference-manifest.js +1 -1
  72. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/list/route.js +1 -1
  73. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/list/route_client-reference-manifest.js +1 -1
  74. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/mkdir/route.js +1 -1
  75. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/mkdir/route_client-reference-manifest.js +1 -1
  76. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/move/route.js +1 -1
  77. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/move/route_client-reference-manifest.js +1 -1
  78. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/display-field/route.js +1 -1
  79. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/display-field/route_client-reference-manifest.js +1 -1
  80. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/[id]/route.js +2 -2
  81. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/[id]/route_client-reference-manifest.js +1 -1
  82. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/bulk-delete/route.js +1 -1
  83. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/bulk-delete/route_client-reference-manifest.js +1 -1
  84. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/options/route.js +2 -2
  85. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/options/route_client-reference-manifest.js +1 -1
  86. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/route.js +1 -1
  87. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/route_client-reference-manifest.js +1 -1
  88. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/fields/[fieldId]/enum-rename/route.js +1 -1
  89. 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
  90. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/fields/[fieldId]/route.js +1 -1
  91. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/fields/[fieldId]/route_client-reference-manifest.js +1 -1
  92. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/fields/reorder/route.js +1 -1
  93. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/fields/reorder/route_client-reference-manifest.js +1 -1
  94. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/route.js +2 -2
  95. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/route_client-reference-manifest.js +1 -1
  96. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/views/route.js +1 -1
  97. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/views/route_client-reference-manifest.js +1 -1
  98. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/open-file/route.js +1 -1
  99. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/open-file/route_client-reference-manifest.js +1 -1
  100. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/path-info/route.js +1 -1
  101. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/path-info/route_client-reference-manifest.js +1 -1
  102. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/query/route.js +1 -1
  103. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/query/route_client-reference-manifest.js +1 -1
  104. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/raw-file/route.js +1 -1
  105. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/raw-file/route_client-reference-manifest.js +1 -1
  106. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/rename/route.js +1 -1
  107. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/rename/route_client-reference-manifest.js +1 -1
  108. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/reports/execute/route.js +1 -1
  109. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/reports/execute/route_client-reference-manifest.js +1 -1
  110. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/search-index/route.js +2 -2
  111. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/search-index/route_client-reference-manifest.js +1 -1
  112. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/suggest-files/route.js +2 -2
  113. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/suggest-files/route_client-reference-manifest.js +1 -1
  114. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/switch/route.js +1 -1
  115. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/switch/route_client-reference-manifest.js +1 -1
  116. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/thumbnail/route.js +1 -1
  117. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/thumbnail/route_client-reference-manifest.js +1 -1
  118. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/tree/route.js +1 -1
  119. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/tree/route_client-reference-manifest.js +1 -1
  120. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/upload/route.js +1 -1
  121. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/upload/route_client-reference-manifest.js +1 -1
  122. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/virtual-file/route.js +1 -1
  123. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/virtual-file/route_client-reference-manifest.js +1 -1
  124. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/watch/route.js +2 -2
  125. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/watch/route_client-reference-manifest.js +1 -1
  126. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/write-binary/route.js +1 -1
  127. package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/write-binary/route_client-reference-manifest.js +1 -1
  128. package/apps/web/.next/standalone/apps/web/.next/server/app/index.html +1 -72
  129. package/apps/web/.next/standalone/apps/web/.next/server/app/index.rsc +3 -3
  130. package/apps/web/.next/standalone/apps/web/.next/server/app/page.js +3 -3
  131. package/apps/web/.next/standalone/apps/web/.next/server/app/page.js.nft.json +1 -1
  132. package/apps/web/.next/standalone/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
  133. package/apps/web/.next/standalone/apps/web/.next/server/app/workspace/page.js +14 -14
  134. package/apps/web/.next/standalone/apps/web/.next/server/app/workspace/page.js.nft.json +1 -1
  135. package/apps/web/.next/standalone/apps/web/.next/server/app/workspace/page_client-reference-manifest.js +1 -1
  136. package/apps/web/.next/standalone/apps/web/.next/server/app/workspace.html +1 -1
  137. package/apps/web/.next/standalone/apps/web/.next/server/app/workspace.rsc +3 -3
  138. package/apps/web/.next/standalone/apps/web/.next/server/app-paths-manifest.json +29 -28
  139. package/apps/web/.next/standalone/apps/web/.next/server/chunks/5334.js +9 -0
  140. package/apps/web/.next/standalone/apps/web/.next/server/functions-config-manifest.json +19 -18
  141. package/apps/web/.next/standalone/apps/web/.next/server/middleware-build-manifest.js +1 -1
  142. package/apps/web/.next/standalone/apps/web/.next/server/middleware-react-loadable-manifest.js +1 -1
  143. package/apps/web/.next/standalone/apps/web/.next/server/pages/404.html +1 -1
  144. package/apps/web/.next/standalone/apps/web/.next/server/pages/500.html +1 -1
  145. package/apps/web/.next/standalone/apps/web/.next/static/_8L73FbiTvTDeQfyyo9Kx/_buildManifest.js +1 -0
  146. package/apps/web/.next/standalone/apps/web/.next/static/chunks/{9978-a2bf90231d08284f.js → 4988-a31fb680255d2e53.js} +3 -3
  147. package/apps/web/.next/{static/chunks/7597.6cb599051f1a46f7.js → standalone/apps/web/.next/static/chunks/9978.7ad588863427f502.js} +1 -1
  148. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/_not-found/page-23e70510b8d52088.js +1 -0
  149. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/active/route-ff99b057da8a00ed.js +1 -0
  150. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/route-ff99b057da8a00ed.js +1 -0
  151. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/stop/route-ff99b057da8a00ed.js +1 -0
  152. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/stream/route-ff99b057da8a00ed.js +1 -0
  153. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/subagents/route-ff99b057da8a00ed.js +1 -0
  154. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/jobs/[jobId]/runs/route-ff99b057da8a00ed.js +1 -0
  155. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/jobs/route-ff99b057da8a00ed.js +1 -0
  156. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/runs/[sessionId]/route-ff99b057da8a00ed.js +1 -0
  157. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/runs/search-transcript/route-ff99b057da8a00ed.js +1 -0
  158. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/feedback/route-ff99b057da8a00ed.js +1 -0
  159. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/memories/route-ff99b057da8a00ed.js +1 -0
  160. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/profiles/route-ff99b057da8a00ed.js +1 -0
  161. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/profiles/switch/route-ff99b057da8a00ed.js +1 -0
  162. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/sessions/[sessionId]/route-ff99b057da8a00ed.js +1 -0
  163. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/sessions/route-ff99b057da8a00ed.js +1 -0
  164. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/skills/route-ff99b057da8a00ed.js +1 -0
  165. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/[id]/messages/route-ff99b057da8a00ed.js +1 -0
  166. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/[id]/route-ff99b057da8a00ed.js +1 -0
  167. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/route-ff99b057da8a00ed.js +1 -0
  168. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/assets/[...path]/route-ff99b057da8a00ed.js +1 -0
  169. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/browse/route-ff99b057da8a00ed.js +1 -0
  170. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/browse-file/route-ff99b057da8a00ed.js +1 -0
  171. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/context/route-ff99b057da8a00ed.js +1 -0
  172. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/copy/route-ff99b057da8a00ed.js +1 -0
  173. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/db/introspect/route-ff99b057da8a00ed.js +1 -0
  174. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/db/query/route-ff99b057da8a00ed.js +1 -0
  175. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/delete/route-ff99b057da8a00ed.js +1 -0
  176. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/file/route-ff99b057da8a00ed.js +1 -0
  177. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/init/route-ff99b057da8a00ed.js +1 -0
  178. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/list/route-ff99b057da8a00ed.js +1 -0
  179. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/mkdir/route-ff99b057da8a00ed.js +1 -0
  180. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/move/route-ff99b057da8a00ed.js +1 -0
  181. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/display-field/route-ff99b057da8a00ed.js +1 -0
  182. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/route-ff99b057da8a00ed.js +1 -0
  183. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/bulk-delete/route-ff99b057da8a00ed.js +1 -0
  184. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/options/route-ff99b057da8a00ed.js +1 -0
  185. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/route-ff99b057da8a00ed.js +1 -0
  186. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/enum-rename/route-ff99b057da8a00ed.js +1 -0
  187. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/route-ff99b057da8a00ed.js +1 -0
  188. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/reorder/route-ff99b057da8a00ed.js +1 -0
  189. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/route-ff99b057da8a00ed.js +1 -0
  190. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/views/route-ff99b057da8a00ed.js +1 -0
  191. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/open-file/route-ff99b057da8a00ed.js +1 -0
  192. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/path-info/route-ff99b057da8a00ed.js +1 -0
  193. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/query/route-ff99b057da8a00ed.js +1 -0
  194. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/raw-file/route-ff99b057da8a00ed.js +1 -0
  195. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/rename/route-ff99b057da8a00ed.js +1 -0
  196. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/reports/execute/route-ff99b057da8a00ed.js +1 -0
  197. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/search-index/route-ff99b057da8a00ed.js +1 -0
  198. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/suggest-files/route-ff99b057da8a00ed.js +1 -0
  199. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/switch/route-ff99b057da8a00ed.js +1 -0
  200. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/thumbnail/route-ff99b057da8a00ed.js +1 -0
  201. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/tree/route-ff99b057da8a00ed.js +1 -0
  202. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/upload/route-ff99b057da8a00ed.js +1 -0
  203. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/virtual-file/route-ff99b057da8a00ed.js +1 -0
  204. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/watch/route-ff99b057da8a00ed.js +1 -0
  205. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/write-binary/route-ff99b057da8a00ed.js +1 -0
  206. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/layout-4d0405acdb5ee8e5.js +1 -0
  207. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/page-b213929ad6255c65.js +1 -0
  208. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/workspace/{page-a9c68aaa3f71a7fe.js → page-ad24ce15d77e044d.js} +1 -1
  209. package/apps/web/.next/standalone/apps/web/.next/static/chunks/df90ee31-b8ee23eaa0135739.js +1 -0
  210. package/apps/web/.next/standalone/apps/web/.next/static/chunks/main-app-c71b105c32544ad9.js +1 -0
  211. package/apps/web/.next/standalone/apps/web/.next/static/chunks/{webpack-1032d39338965700.js → webpack-38d8ef58f812737b.js} +1 -1
  212. package/apps/web/.next/standalone/apps/web/public/fonts/Bookerly-Bold.ttf +0 -0
  213. package/apps/web/.next/standalone/apps/web/public/fonts/Bookerly-BoldItalic.ttf +0 -0
  214. package/apps/web/.next/standalone/apps/web/public/fonts/Bookerly-Regular.ttf +0 -0
  215. package/apps/web/.next/standalone/apps/web/public/fonts/Bookerly-RegularItalic.ttf +0 -0
  216. package/apps/web/.next/standalone/apps/web/server.js +1 -1
  217. package/apps/web/.next/standalone/package.json +2 -1
  218. package/apps/web/.next/static/_8L73FbiTvTDeQfyyo9Kx/_buildManifest.js +1 -0
  219. package/apps/web/.next/static/chunks/{9978-a2bf90231d08284f.js → 4988-a31fb680255d2e53.js} +3 -3
  220. package/apps/web/.next/{standalone/apps/web/.next/static/chunks/7597.6cb599051f1a46f7.js → static/chunks/9978.7ad588863427f502.js} +1 -1
  221. package/apps/web/.next/static/chunks/app/_not-found/page-23e70510b8d52088.js +1 -0
  222. package/apps/web/.next/static/chunks/app/api/chat/active/route-ff99b057da8a00ed.js +1 -0
  223. package/apps/web/.next/static/chunks/app/api/chat/route-ff99b057da8a00ed.js +1 -0
  224. package/apps/web/.next/static/chunks/app/api/chat/stop/route-ff99b057da8a00ed.js +1 -0
  225. package/apps/web/.next/static/chunks/app/api/chat/stream/route-ff99b057da8a00ed.js +1 -0
  226. package/apps/web/.next/static/chunks/app/api/chat/subagents/route-ff99b057da8a00ed.js +1 -0
  227. package/apps/web/.next/static/chunks/app/api/cron/jobs/[jobId]/runs/route-ff99b057da8a00ed.js +1 -0
  228. package/apps/web/.next/static/chunks/app/api/cron/jobs/route-ff99b057da8a00ed.js +1 -0
  229. package/apps/web/.next/static/chunks/app/api/cron/runs/[sessionId]/route-ff99b057da8a00ed.js +1 -0
  230. package/apps/web/.next/static/chunks/app/api/cron/runs/search-transcript/route-ff99b057da8a00ed.js +1 -0
  231. package/apps/web/.next/static/chunks/app/api/feedback/route-ff99b057da8a00ed.js +1 -0
  232. package/apps/web/.next/static/chunks/app/api/memories/route-ff99b057da8a00ed.js +1 -0
  233. package/apps/web/.next/static/chunks/app/api/profiles/route-ff99b057da8a00ed.js +1 -0
  234. package/apps/web/.next/static/chunks/app/api/profiles/switch/route-ff99b057da8a00ed.js +1 -0
  235. package/apps/web/.next/static/chunks/app/api/sessions/[sessionId]/route-ff99b057da8a00ed.js +1 -0
  236. package/apps/web/.next/static/chunks/app/api/sessions/route-ff99b057da8a00ed.js +1 -0
  237. package/apps/web/.next/static/chunks/app/api/skills/route-ff99b057da8a00ed.js +1 -0
  238. package/apps/web/.next/static/chunks/app/api/web-sessions/[id]/messages/route-ff99b057da8a00ed.js +1 -0
  239. package/apps/web/.next/static/chunks/app/api/web-sessions/[id]/route-ff99b057da8a00ed.js +1 -0
  240. package/apps/web/.next/static/chunks/app/api/web-sessions/route-ff99b057da8a00ed.js +1 -0
  241. package/apps/web/.next/static/chunks/app/api/workspace/assets/[...path]/route-ff99b057da8a00ed.js +1 -0
  242. package/apps/web/.next/static/chunks/app/api/workspace/browse/route-ff99b057da8a00ed.js +1 -0
  243. package/apps/web/.next/static/chunks/app/api/workspace/browse-file/route-ff99b057da8a00ed.js +1 -0
  244. package/apps/web/.next/static/chunks/app/api/workspace/context/route-ff99b057da8a00ed.js +1 -0
  245. package/apps/web/.next/static/chunks/app/api/workspace/copy/route-ff99b057da8a00ed.js +1 -0
  246. package/apps/web/.next/static/chunks/app/api/workspace/db/introspect/route-ff99b057da8a00ed.js +1 -0
  247. package/apps/web/.next/static/chunks/app/api/workspace/db/query/route-ff99b057da8a00ed.js +1 -0
  248. package/apps/web/.next/static/chunks/app/api/workspace/delete/route-ff99b057da8a00ed.js +1 -0
  249. package/apps/web/.next/static/chunks/app/api/workspace/file/route-ff99b057da8a00ed.js +1 -0
  250. package/apps/web/.next/static/chunks/app/api/workspace/init/route-ff99b057da8a00ed.js +1 -0
  251. package/apps/web/.next/static/chunks/app/api/workspace/list/route-ff99b057da8a00ed.js +1 -0
  252. package/apps/web/.next/static/chunks/app/api/workspace/mkdir/route-ff99b057da8a00ed.js +1 -0
  253. package/apps/web/.next/static/chunks/app/api/workspace/move/route-ff99b057da8a00ed.js +1 -0
  254. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/display-field/route-ff99b057da8a00ed.js +1 -0
  255. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/route-ff99b057da8a00ed.js +1 -0
  256. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/bulk-delete/route-ff99b057da8a00ed.js +1 -0
  257. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/options/route-ff99b057da8a00ed.js +1 -0
  258. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/route-ff99b057da8a00ed.js +1 -0
  259. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/enum-rename/route-ff99b057da8a00ed.js +1 -0
  260. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/route-ff99b057da8a00ed.js +1 -0
  261. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/reorder/route-ff99b057da8a00ed.js +1 -0
  262. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/route-ff99b057da8a00ed.js +1 -0
  263. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/views/route-ff99b057da8a00ed.js +1 -0
  264. package/apps/web/.next/static/chunks/app/api/workspace/open-file/route-ff99b057da8a00ed.js +1 -0
  265. package/apps/web/.next/static/chunks/app/api/workspace/path-info/route-ff99b057da8a00ed.js +1 -0
  266. package/apps/web/.next/static/chunks/app/api/workspace/query/route-ff99b057da8a00ed.js +1 -0
  267. package/apps/web/.next/static/chunks/app/api/workspace/raw-file/route-ff99b057da8a00ed.js +1 -0
  268. package/apps/web/.next/static/chunks/app/api/workspace/rename/route-ff99b057da8a00ed.js +1 -0
  269. package/apps/web/.next/static/chunks/app/api/workspace/reports/execute/route-ff99b057da8a00ed.js +1 -0
  270. package/apps/web/.next/static/chunks/app/api/workspace/search-index/route-ff99b057da8a00ed.js +1 -0
  271. package/apps/web/.next/static/chunks/app/api/workspace/suggest-files/route-ff99b057da8a00ed.js +1 -0
  272. package/apps/web/.next/static/chunks/app/api/workspace/switch/route-ff99b057da8a00ed.js +1 -0
  273. package/apps/web/.next/static/chunks/app/api/workspace/thumbnail/route-ff99b057da8a00ed.js +1 -0
  274. package/apps/web/.next/static/chunks/app/api/workspace/tree/route-ff99b057da8a00ed.js +1 -0
  275. package/apps/web/.next/static/chunks/app/api/workspace/upload/route-ff99b057da8a00ed.js +1 -0
  276. package/apps/web/.next/static/chunks/app/api/workspace/virtual-file/route-ff99b057da8a00ed.js +1 -0
  277. package/apps/web/.next/static/chunks/app/api/workspace/watch/route-ff99b057da8a00ed.js +1 -0
  278. package/apps/web/.next/static/chunks/app/api/workspace/write-binary/route-ff99b057da8a00ed.js +1 -0
  279. package/apps/web/.next/static/chunks/app/layout-4d0405acdb5ee8e5.js +1 -0
  280. package/apps/web/.next/static/chunks/app/page-b213929ad6255c65.js +1 -0
  281. package/apps/web/.next/static/chunks/app/workspace/{page-a9c68aaa3f71a7fe.js → page-ad24ce15d77e044d.js} +1 -1
  282. package/apps/web/.next/static/chunks/df90ee31-b8ee23eaa0135739.js +1 -0
  283. package/apps/web/.next/static/chunks/main-app-c71b105c32544ad9.js +1 -0
  284. package/apps/web/.next/static/chunks/{webpack-1032d39338965700.js → webpack-38d8ef58f812737b.js} +1 -1
  285. package/apps/web/public/fonts/Bookerly-Bold.ttf +0 -0
  286. package/apps/web/public/fonts/Bookerly-BoldItalic.ttf +0 -0
  287. package/apps/web/public/fonts/Bookerly-Regular.ttf +0 -0
  288. package/apps/web/public/fonts/Bookerly-RegularItalic.ttf +0 -0
  289. package/dist/{cli-name-yhDyCrts.js → cli-name-YmLsNGR6.js} +1 -1
  290. package/dist/entry.js +3 -2
  291. package/dist/{program-CVEqiDmd.js → program-BYwTE_Ot.js} +602 -26
  292. package/dist/{run-main-CBWtZaUl.js → run-main-CWe8UBRN.js} +4 -4
  293. package/dist/{telemetry-UyOfXAoS.js → telemetry-CwRnbZ2F.js} +3 -2
  294. package/extensions/bluebubbles/node_modules/.bin/ironclaw +21 -0
  295. package/extensions/copilot-proxy/node_modules/.bin/ironclaw +21 -0
  296. package/extensions/diagnostics-otel/node_modules/.bin/ironclaw +21 -0
  297. package/extensions/discord/node_modules/.bin/ironclaw +21 -0
  298. package/extensions/feishu/node_modules/.bin/ironclaw +21 -0
  299. package/extensions/google-antigravity-auth/node_modules/.bin/ironclaw +21 -0
  300. package/extensions/google-gemini-cli-auth/node_modules/.bin/ironclaw +21 -0
  301. package/extensions/googlechat/node_modules/.bin/ironclaw +21 -0
  302. package/extensions/imessage/node_modules/.bin/ironclaw +21 -0
  303. package/extensions/irc/node_modules/.bin/ironclaw +21 -0
  304. package/extensions/line/node_modules/.bin/ironclaw +21 -0
  305. package/extensions/llm-task/node_modules/.bin/ironclaw +21 -0
  306. package/extensions/lobster/node_modules/.bin/ironclaw +21 -0
  307. package/extensions/matrix/node_modules/.bin/ironclaw +21 -0
  308. package/extensions/matrix/node_modules/.bin/markdown-it +21 -0
  309. package/extensions/mattermost/node_modules/.bin/ironclaw +21 -0
  310. package/extensions/memory-core/node_modules/.bin/ironclaw +21 -0
  311. package/extensions/memory-lancedb/node_modules/.bin/ironclaw +21 -0
  312. package/extensions/memory-lancedb/node_modules/.bin/openai +21 -0
  313. package/extensions/minimax-portal-auth/node_modules/.bin/ironclaw +21 -0
  314. package/extensions/msteams/node_modules/.bin/ironclaw +21 -0
  315. package/extensions/nextcloud-talk/node_modules/.bin/ironclaw +21 -0
  316. package/extensions/nostr/node_modules/.bin/ironclaw +21 -0
  317. package/extensions/open-prose/node_modules/.bin/ironclaw +21 -0
  318. package/extensions/posthog-analytics/index.ts +162 -0
  319. package/extensions/posthog-analytics/lib/event-mappers.ts +391 -0
  320. package/extensions/posthog-analytics/lib/posthog-client.ts +81 -0
  321. package/extensions/posthog-analytics/lib/privacy.ts +218 -0
  322. package/extensions/posthog-analytics/lib/trace-context.ts +103 -0
  323. package/extensions/posthog-analytics/lib/types.ts +28 -0
  324. package/extensions/posthog-analytics/openclaw.plugin.json +22 -0
  325. package/extensions/posthog-analytics/package.json +8 -0
  326. package/extensions/signal/node_modules/.bin/ironclaw +21 -0
  327. package/extensions/slack/node_modules/.bin/ironclaw +21 -0
  328. package/extensions/synology-chat/node_modules/.bin/ironclaw +21 -0
  329. package/extensions/telegram/node_modules/.bin/ironclaw +21 -0
  330. package/extensions/tlon/node_modules/.bin/ironclaw +21 -0
  331. package/extensions/twitch/node_modules/.bin/ironclaw +21 -0
  332. package/extensions/voice-call/node_modules/.bin/ironclaw +21 -0
  333. package/extensions/whatsapp/node_modules/.bin/ironclaw +21 -0
  334. package/extensions/zalo/node_modules/.bin/ironclaw +21 -0
  335. package/extensions/zalouser/node_modules/.bin/ironclaw +21 -0
  336. package/package.json +2 -1
  337. package/apps/web/.next/standalone/apps/web/.next/server/chunks/3180.js +0 -9
  338. package/apps/web/.next/standalone/apps/web/.next/static/bfBSw7Zh4Df36UcKsQE27/_buildManifest.js +0 -1
  339. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/_not-found/page-6934a35b4d14cdab.js +0 -1
  340. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/active/route-5dc3b3b56eb45a36.js +0 -1
  341. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/route-5dc3b3b56eb45a36.js +0 -1
  342. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/stop/route-5dc3b3b56eb45a36.js +0 -1
  343. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/stream/route-5dc3b3b56eb45a36.js +0 -1
  344. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/subagents/route-5dc3b3b56eb45a36.js +0 -1
  345. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/jobs/[jobId]/runs/route-5dc3b3b56eb45a36.js +0 -1
  346. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/jobs/route-5dc3b3b56eb45a36.js +0 -1
  347. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/runs/[sessionId]/route-5dc3b3b56eb45a36.js +0 -1
  348. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/runs/search-transcript/route-5dc3b3b56eb45a36.js +0 -1
  349. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/memories/route-5dc3b3b56eb45a36.js +0 -1
  350. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/profiles/route-5dc3b3b56eb45a36.js +0 -1
  351. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/profiles/switch/route-5dc3b3b56eb45a36.js +0 -1
  352. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/sessions/[sessionId]/route-5dc3b3b56eb45a36.js +0 -1
  353. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/sessions/route-5dc3b3b56eb45a36.js +0 -1
  354. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/skills/route-5dc3b3b56eb45a36.js +0 -1
  355. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/[id]/messages/route-5dc3b3b56eb45a36.js +0 -1
  356. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/[id]/route-5dc3b3b56eb45a36.js +0 -1
  357. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/route-5dc3b3b56eb45a36.js +0 -1
  358. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/assets/[...path]/route-5dc3b3b56eb45a36.js +0 -1
  359. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/browse/route-5dc3b3b56eb45a36.js +0 -1
  360. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/browse-file/route-5dc3b3b56eb45a36.js +0 -1
  361. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/context/route-5dc3b3b56eb45a36.js +0 -1
  362. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/copy/route-5dc3b3b56eb45a36.js +0 -1
  363. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/db/introspect/route-5dc3b3b56eb45a36.js +0 -1
  364. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/db/query/route-5dc3b3b56eb45a36.js +0 -1
  365. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/delete/route-5dc3b3b56eb45a36.js +0 -1
  366. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/file/route-5dc3b3b56eb45a36.js +0 -1
  367. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/init/route-5dc3b3b56eb45a36.js +0 -1
  368. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/list/route-5dc3b3b56eb45a36.js +0 -1
  369. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/mkdir/route-5dc3b3b56eb45a36.js +0 -1
  370. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/move/route-5dc3b3b56eb45a36.js +0 -1
  371. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/display-field/route-5dc3b3b56eb45a36.js +0 -1
  372. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/route-5dc3b3b56eb45a36.js +0 -1
  373. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/bulk-delete/route-5dc3b3b56eb45a36.js +0 -1
  374. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/options/route-5dc3b3b56eb45a36.js +0 -1
  375. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/route-5dc3b3b56eb45a36.js +0 -1
  376. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/enum-rename/route-5dc3b3b56eb45a36.js +0 -1
  377. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/route-5dc3b3b56eb45a36.js +0 -1
  378. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/reorder/route-5dc3b3b56eb45a36.js +0 -1
  379. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/route-5dc3b3b56eb45a36.js +0 -1
  380. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/views/route-5dc3b3b56eb45a36.js +0 -1
  381. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/open-file/route-5dc3b3b56eb45a36.js +0 -1
  382. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/path-info/route-5dc3b3b56eb45a36.js +0 -1
  383. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/query/route-5dc3b3b56eb45a36.js +0 -1
  384. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/raw-file/route-5dc3b3b56eb45a36.js +0 -1
  385. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/rename/route-5dc3b3b56eb45a36.js +0 -1
  386. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/reports/execute/route-5dc3b3b56eb45a36.js +0 -1
  387. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/search-index/route-5dc3b3b56eb45a36.js +0 -1
  388. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/suggest-files/route-5dc3b3b56eb45a36.js +0 -1
  389. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/switch/route-5dc3b3b56eb45a36.js +0 -1
  390. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/thumbnail/route-5dc3b3b56eb45a36.js +0 -1
  391. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/tree/route-5dc3b3b56eb45a36.js +0 -1
  392. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/upload/route-5dc3b3b56eb45a36.js +0 -1
  393. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/virtual-file/route-5dc3b3b56eb45a36.js +0 -1
  394. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/watch/route-5dc3b3b56eb45a36.js +0 -1
  395. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/write-binary/route-5dc3b3b56eb45a36.js +0 -1
  396. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/layout-01f7966beacdd67b.js +0 -1
  397. package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/page-f365ecf6d5915738.js +0 -1
  398. package/apps/web/.next/standalone/apps/web/.next/static/chunks/df90ee31-33cbf7968acd3b6e.js +0 -1
  399. package/apps/web/.next/standalone/apps/web/.next/static/chunks/main-app-b49c23ad3d7c2890.js +0 -1
  400. package/apps/web/.next/static/bfBSw7Zh4Df36UcKsQE27/_buildManifest.js +0 -1
  401. package/apps/web/.next/static/chunks/app/_not-found/page-6934a35b4d14cdab.js +0 -1
  402. package/apps/web/.next/static/chunks/app/api/chat/active/route-5dc3b3b56eb45a36.js +0 -1
  403. package/apps/web/.next/static/chunks/app/api/chat/route-5dc3b3b56eb45a36.js +0 -1
  404. package/apps/web/.next/static/chunks/app/api/chat/stop/route-5dc3b3b56eb45a36.js +0 -1
  405. package/apps/web/.next/static/chunks/app/api/chat/stream/route-5dc3b3b56eb45a36.js +0 -1
  406. package/apps/web/.next/static/chunks/app/api/chat/subagents/route-5dc3b3b56eb45a36.js +0 -1
  407. package/apps/web/.next/static/chunks/app/api/cron/jobs/[jobId]/runs/route-5dc3b3b56eb45a36.js +0 -1
  408. package/apps/web/.next/static/chunks/app/api/cron/jobs/route-5dc3b3b56eb45a36.js +0 -1
  409. package/apps/web/.next/static/chunks/app/api/cron/runs/[sessionId]/route-5dc3b3b56eb45a36.js +0 -1
  410. package/apps/web/.next/static/chunks/app/api/cron/runs/search-transcript/route-5dc3b3b56eb45a36.js +0 -1
  411. package/apps/web/.next/static/chunks/app/api/memories/route-5dc3b3b56eb45a36.js +0 -1
  412. package/apps/web/.next/static/chunks/app/api/profiles/route-5dc3b3b56eb45a36.js +0 -1
  413. package/apps/web/.next/static/chunks/app/api/profiles/switch/route-5dc3b3b56eb45a36.js +0 -1
  414. package/apps/web/.next/static/chunks/app/api/sessions/[sessionId]/route-5dc3b3b56eb45a36.js +0 -1
  415. package/apps/web/.next/static/chunks/app/api/sessions/route-5dc3b3b56eb45a36.js +0 -1
  416. package/apps/web/.next/static/chunks/app/api/skills/route-5dc3b3b56eb45a36.js +0 -1
  417. package/apps/web/.next/static/chunks/app/api/web-sessions/[id]/messages/route-5dc3b3b56eb45a36.js +0 -1
  418. package/apps/web/.next/static/chunks/app/api/web-sessions/[id]/route-5dc3b3b56eb45a36.js +0 -1
  419. package/apps/web/.next/static/chunks/app/api/web-sessions/route-5dc3b3b56eb45a36.js +0 -1
  420. package/apps/web/.next/static/chunks/app/api/workspace/assets/[...path]/route-5dc3b3b56eb45a36.js +0 -1
  421. package/apps/web/.next/static/chunks/app/api/workspace/browse/route-5dc3b3b56eb45a36.js +0 -1
  422. package/apps/web/.next/static/chunks/app/api/workspace/browse-file/route-5dc3b3b56eb45a36.js +0 -1
  423. package/apps/web/.next/static/chunks/app/api/workspace/context/route-5dc3b3b56eb45a36.js +0 -1
  424. package/apps/web/.next/static/chunks/app/api/workspace/copy/route-5dc3b3b56eb45a36.js +0 -1
  425. package/apps/web/.next/static/chunks/app/api/workspace/db/introspect/route-5dc3b3b56eb45a36.js +0 -1
  426. package/apps/web/.next/static/chunks/app/api/workspace/db/query/route-5dc3b3b56eb45a36.js +0 -1
  427. package/apps/web/.next/static/chunks/app/api/workspace/delete/route-5dc3b3b56eb45a36.js +0 -1
  428. package/apps/web/.next/static/chunks/app/api/workspace/file/route-5dc3b3b56eb45a36.js +0 -1
  429. package/apps/web/.next/static/chunks/app/api/workspace/init/route-5dc3b3b56eb45a36.js +0 -1
  430. package/apps/web/.next/static/chunks/app/api/workspace/list/route-5dc3b3b56eb45a36.js +0 -1
  431. package/apps/web/.next/static/chunks/app/api/workspace/mkdir/route-5dc3b3b56eb45a36.js +0 -1
  432. package/apps/web/.next/static/chunks/app/api/workspace/move/route-5dc3b3b56eb45a36.js +0 -1
  433. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/display-field/route-5dc3b3b56eb45a36.js +0 -1
  434. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/route-5dc3b3b56eb45a36.js +0 -1
  435. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/bulk-delete/route-5dc3b3b56eb45a36.js +0 -1
  436. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/options/route-5dc3b3b56eb45a36.js +0 -1
  437. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/route-5dc3b3b56eb45a36.js +0 -1
  438. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/enum-rename/route-5dc3b3b56eb45a36.js +0 -1
  439. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/route-5dc3b3b56eb45a36.js +0 -1
  440. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/reorder/route-5dc3b3b56eb45a36.js +0 -1
  441. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/route-5dc3b3b56eb45a36.js +0 -1
  442. package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/views/route-5dc3b3b56eb45a36.js +0 -1
  443. package/apps/web/.next/static/chunks/app/api/workspace/open-file/route-5dc3b3b56eb45a36.js +0 -1
  444. package/apps/web/.next/static/chunks/app/api/workspace/path-info/route-5dc3b3b56eb45a36.js +0 -1
  445. package/apps/web/.next/static/chunks/app/api/workspace/query/route-5dc3b3b56eb45a36.js +0 -1
  446. package/apps/web/.next/static/chunks/app/api/workspace/raw-file/route-5dc3b3b56eb45a36.js +0 -1
  447. package/apps/web/.next/static/chunks/app/api/workspace/rename/route-5dc3b3b56eb45a36.js +0 -1
  448. package/apps/web/.next/static/chunks/app/api/workspace/reports/execute/route-5dc3b3b56eb45a36.js +0 -1
  449. package/apps/web/.next/static/chunks/app/api/workspace/search-index/route-5dc3b3b56eb45a36.js +0 -1
  450. package/apps/web/.next/static/chunks/app/api/workspace/suggest-files/route-5dc3b3b56eb45a36.js +0 -1
  451. package/apps/web/.next/static/chunks/app/api/workspace/switch/route-5dc3b3b56eb45a36.js +0 -1
  452. package/apps/web/.next/static/chunks/app/api/workspace/thumbnail/route-5dc3b3b56eb45a36.js +0 -1
  453. package/apps/web/.next/static/chunks/app/api/workspace/tree/route-5dc3b3b56eb45a36.js +0 -1
  454. package/apps/web/.next/static/chunks/app/api/workspace/upload/route-5dc3b3b56eb45a36.js +0 -1
  455. package/apps/web/.next/static/chunks/app/api/workspace/virtual-file/route-5dc3b3b56eb45a36.js +0 -1
  456. package/apps/web/.next/static/chunks/app/api/workspace/watch/route-5dc3b3b56eb45a36.js +0 -1
  457. package/apps/web/.next/static/chunks/app/api/workspace/write-binary/route-5dc3b3b56eb45a36.js +0 -1
  458. package/apps/web/.next/static/chunks/app/layout-01f7966beacdd67b.js +0 -1
  459. package/apps/web/.next/static/chunks/app/page-f365ecf6d5915738.js +0 -1
  460. package/apps/web/.next/static/chunks/df90ee31-33cbf7968acd3b6e.js +0 -1
  461. package/apps/web/.next/static/chunks/main-app-b49c23ad3d7c2890.js +0 -1
  462. /package/apps/web/.next/standalone/apps/web/.next/static/{bfBSw7Zh4Df36UcKsQE27 → _8L73FbiTvTDeQfyyo9Kx}/_ssgManifest.js +0 -0
  463. /package/apps/web/.next/static/{bfBSw7Zh4Df36UcKsQE27 → _8L73FbiTvTDeQfyyo9Kx}/_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,88 @@ 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
+ try {
1346
+ await runOpenClawOrThrow({
1347
+ openclawCommand: params.openclawCommand,
1348
+ args: [
1349
+ "--profile",
1350
+ params.profile,
1351
+ "gateway",
1352
+ "restart"
1353
+ ],
1354
+ timeoutMs: 6e4,
1355
+ errorMessage: "Failed to restart gateway after plugin install."
1356
+ });
1357
+ } catch {}
1358
+ return true;
1359
+ } catch {
1360
+ return false;
1361
+ }
1362
+ }
972
1363
  async function ensureGatewayModeLocal(openclawCommand, profile) {
973
1364
  if ((await runOpenClaw(openclawCommand, [
974
1365
  "--profile",
@@ -1536,7 +1927,7 @@ async function attemptGatewayAutoFix(params) {
1536
1927
  logExcerpts
1537
1928
  };
1538
1929
  }
1539
- async function openUrl(url) {
1930
+ async function openUrl$1(url) {
1540
1931
  const result = await runCommandWithTimeout(process$1.platform === "darwin" ? ["open", url] : process$1.platform === "win32" ? [
1541
1932
  "cmd",
1542
1933
  "/c",
@@ -1668,6 +2059,7 @@ function buildBootstrapDiagnostics(params) {
1668
2059
  const enforceCutoverGates = isTruthyEnvValue(env.DENCHCLAW_BOOTSTRAP_ENFORCE_SAFETY_GATES);
1669
2060
  const cutoverGatePassed = migrationSuiteOk && onboardingE2EOk;
1670
2061
  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."));
2062
+ 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
2063
  return {
1672
2064
  rolloutStage: params.rolloutStage,
1673
2065
  legacyFallbackEnabled: params.legacyFallbackEnabled,
@@ -1748,15 +2140,26 @@ async function bootstrapCommand(opts, runtime = defaultRuntime) {
1748
2140
  let gatewayPort;
1749
2141
  let portAutoAssigned = false;
1750
2142
  if (explicitPort) gatewayPort = explicitPort;
1751
- else if (await isPortAvailable(DEFAULT_GATEWAY_PORT)) gatewayPort = DEFAULT_GATEWAY_PORT;
1752
2143
  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;
2144
+ const existingPort = readExistingGatewayPort(stateDir);
2145
+ if (isPersistedPortAcceptable(existingPort) && await isPortAvailable(existingPort)) gatewayPort = existingPort;
2146
+ else if (await isPortAvailable(DENCHCLAW_GATEWAY_PORT_START)) gatewayPort = DENCHCLAW_GATEWAY_PORT_START;
2147
+ else {
2148
+ const availablePort = await findAvailablePort(DENCHCLAW_GATEWAY_PORT_START + 1, MAX_PORT_SCAN_ATTEMPTS);
2149
+ 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.`);
2150
+ gatewayPort = availablePort;
2151
+ portAutoAssigned = true;
2152
+ }
1757
2153
  }
1758
- if (portAutoAssigned && !opts.json) runtime.log(theme.muted(`Default gateway port ${DEFAULT_GATEWAY_PORT} is in use. Using auto-assigned port ${gatewayPort}.`));
2154
+ if (portAutoAssigned && !opts.json) runtime.log(theme.muted(`Default gateway port ${DENCHCLAW_GATEWAY_PORT_START} is in use. Using auto-assigned port ${gatewayPort}.`));
1759
2155
  await ensureDefaultWorkspacePath(openclawCommand, profile, workspaceDir);
2156
+ const packageRoot = resolveCliPackageRoot();
2157
+ const posthogPluginInstalled = await installBundledPlugins({
2158
+ openclawCommand,
2159
+ profile,
2160
+ stateDir,
2161
+ posthogKey: process$1.env.POSTHOG_KEY || ""
2162
+ });
1760
2163
  const onboardArgv = [
1761
2164
  "--profile",
1762
2165
  profile,
@@ -1782,7 +2185,6 @@ async function bootstrapCommand(opts, runtime = defaultRuntime) {
1782
2185
  timeoutMs: 12 * 6e4,
1783
2186
  errorMessage: "OpenClaw onboarding failed."
1784
2187
  });
1785
- const packageRoot = resolveCliPackageRoot();
1786
2188
  const workspaceSeed = seedWorkspaceFromAssets({
1787
2189
  workspaceDir,
1788
2190
  packageRoot
@@ -1837,10 +2239,24 @@ async function bootstrapCommand(opts, runtime = defaultRuntime) {
1837
2239
  webReachable,
1838
2240
  rolloutStage,
1839
2241
  legacyFallbackEnabled,
1840
- stateDir
2242
+ stateDir,
2243
+ posthogPluginInstalled
1841
2244
  });
1842
- const shouldOpen = !opts.noOpen && !opts.json;
1843
- const opened = shouldOpen ? await openUrl(webUrl) : false;
2245
+ let opened = false;
2246
+ let openAttempted = false;
2247
+ if (!opts.noOpen && !opts.json && webReachable) if (nonInteractive) {
2248
+ openAttempted = true;
2249
+ opened = await openUrl$1(webUrl);
2250
+ } else {
2251
+ const wantOpen = await confirm({
2252
+ message: stylePromptMessage(`Open ${webUrl} in your browser?`),
2253
+ initialValue: true
2254
+ });
2255
+ if (!isCancel(wantOpen) && wantOpen) {
2256
+ openAttempted = true;
2257
+ opened = await openUrl$1(webUrl);
2258
+ }
2259
+ }
1844
2260
  if (!opts.json) {
1845
2261
  if (!webRuntimeStatus.ready) runtime.log(theme.warn(`Managed web runtime check failed: ${webRuntimeStatus.reason}`));
1846
2262
  if (installResult.installed) runtime.log(theme.muted("Installed global OpenClaw CLI via npm."));
@@ -1872,7 +2288,7 @@ async function bootstrapCommand(opts, runtime = defaultRuntime) {
1872
2288
  runtime.log(`Gateway: ${gatewayProbe.ok ? "reachable" : "check failed"}`);
1873
2289
  runtime.log(`Web UI: ${webUrl}`);
1874
2290
  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."));
2291
+ if (!opened && openAttempted) runtime.log(theme.muted("Browser open failed; copy/paste the URL above."));
1876
2292
  if (diagnostics.hasFailures) runtime.log(theme.warn("Bootstrap completed with failing checks. Address remediation items above before full cutover."));
1877
2293
  }
1878
2294
  const summary = {
@@ -1958,7 +2374,7 @@ async function runCommandWithRuntime(runtime, action, onError) {
1958
2374
  //#endregion
1959
2375
  //#region src/cli/program/register.bootstrap.ts
1960
2376
  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) => {
2377
+ 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
2378
  await runCommandWithRuntime(defaultRuntime, async () => {
1963
2379
  await bootstrapCommand({
1964
2380
  profile: opts.profile,
@@ -1990,6 +2406,41 @@ function firstNonEmptyLine(...values) {
1990
2406
  if (first) return first;
1991
2407
  }
1992
2408
  }
2409
+ async function openUrl(url) {
2410
+ const [cmd, ...args] = process$1.platform === "darwin" ? ["open", url] : process$1.platform === "win32" ? [
2411
+ "cmd",
2412
+ "/c",
2413
+ "start",
2414
+ "",
2415
+ url
2416
+ ] : ["xdg-open", url];
2417
+ if (!cmd) return false;
2418
+ return new Promise((resolve) => {
2419
+ const child = spawn(cmd, args, { stdio: "ignore" });
2420
+ const timer = setTimeout(() => {
2421
+ child.kill();
2422
+ resolve(false);
2423
+ }, 5e3);
2424
+ child.once("close", (code) => {
2425
+ clearTimeout(timer);
2426
+ resolve(code === 0);
2427
+ });
2428
+ child.once("error", () => {
2429
+ clearTimeout(timer);
2430
+ resolve(false);
2431
+ });
2432
+ });
2433
+ }
2434
+ async function promptAndOpenWebUi(params) {
2435
+ if (params.noOpen || params.json || !process$1.stdin.isTTY) return;
2436
+ const webUrl = `http://localhost:${params.webPort}`;
2437
+ const wantOpen = await confirm({
2438
+ message: stylePromptMessage(`Open ${webUrl} in your browser?`),
2439
+ initialValue: true
2440
+ });
2441
+ if (isCancel(wantOpen) || !wantOpen) return;
2442
+ if (!await openUrl(webUrl)) params.runtime.log(theme.muted("Browser open failed; copy/paste the URL above."));
2443
+ }
1993
2444
  async function runOpenClawUpdateWithProgress(openclawCommand) {
1994
2445
  const s = spinner();
1995
2446
  s.start("Updating OpenClaw (required for this major Dench upgrade)...");
@@ -2070,7 +2521,7 @@ function resolveGatewayPort(stateDir) {
2070
2521
  const port = readConfigGatewayPort(path.join(stateDir, name));
2071
2522
  if (typeof port === "number") return port;
2072
2523
  }
2073
- return 18789;
2524
+ return DENCHCLAW_DEFAULT_GATEWAY_PORT;
2074
2525
  }
2075
2526
  function readConfigGatewayPort(configPath) {
2076
2527
  try {
@@ -2082,6 +2533,78 @@ function readConfigGatewayPort(configPath) {
2082
2533
  return;
2083
2534
  }
2084
2535
  }
2536
+ async function restartGatewayDaemon(params) {
2537
+ let openclawCommand;
2538
+ try {
2539
+ openclawCommand = resolveOpenClawCommandOrThrow();
2540
+ } catch {
2541
+ return {
2542
+ restarted: false,
2543
+ error: "openclaw CLI not found on PATH"
2544
+ };
2545
+ }
2546
+ const s = !params.json ? spinner() : null;
2547
+ s?.start("Stopping gateway daemon…");
2548
+ await runOpenClawCommand({
2549
+ openclawCommand,
2550
+ args: [
2551
+ "--profile",
2552
+ params.profile,
2553
+ "gateway",
2554
+ "stop"
2555
+ ],
2556
+ timeoutMs: 9e4
2557
+ }).catch(() => ({
2558
+ code: 1,
2559
+ stdout: "",
2560
+ stderr: "stop timed out"
2561
+ }));
2562
+ s?.message("Installing gateway daemon…");
2563
+ await runOpenClawCommand({
2564
+ openclawCommand,
2565
+ args: [
2566
+ "--profile",
2567
+ params.profile,
2568
+ "gateway",
2569
+ "install",
2570
+ "--force",
2571
+ "--port",
2572
+ String(params.gatewayPort)
2573
+ ],
2574
+ timeoutMs: 2 * 6e4
2575
+ }).catch(() => ({
2576
+ code: 1,
2577
+ stdout: "",
2578
+ stderr: "install failed"
2579
+ }));
2580
+ s?.message("Starting gateway daemon…");
2581
+ const startResult = await runOpenClawCommand({
2582
+ openclawCommand,
2583
+ args: [
2584
+ "--profile",
2585
+ params.profile,
2586
+ "gateway",
2587
+ "start",
2588
+ "--port",
2589
+ String(params.gatewayPort)
2590
+ ],
2591
+ timeoutMs: 2 * 6e4
2592
+ }).catch(() => ({
2593
+ code: 1,
2594
+ stdout: "",
2595
+ stderr: "start failed"
2596
+ }));
2597
+ if (startResult.code !== 0) {
2598
+ const detail = firstNonEmptyLine(startResult.stderr, startResult.stdout);
2599
+ s?.stop(detail ? `Gateway restart failed: ${detail}` : "Gateway restart failed.");
2600
+ return {
2601
+ restarted: false,
2602
+ error: detail ?? "gateway start failed"
2603
+ };
2604
+ }
2605
+ s?.stop("Gateway daemon restarted.");
2606
+ return { restarted: true };
2607
+ }
2085
2608
  async function updateWebRuntimeCommand(opts, runtime = defaultRuntime) {
2086
2609
  const appliedProfile = applyCliProfileEnv({ profile: opts.profile });
2087
2610
  const profile = appliedProfile.effectiveProfile;
@@ -2110,6 +2633,11 @@ async function updateWebRuntimeCommand(opts, runtime = defaultRuntime) {
2110
2633
  port: selectedPort,
2111
2634
  includeLegacyStandalone: true
2112
2635
  });
2636
+ const gatewayResult = await restartGatewayDaemon({
2637
+ profile,
2638
+ gatewayPort,
2639
+ json: Boolean(opts.json)
2640
+ });
2113
2641
  const ensureResult = await ensureManagedWebRuntime({
2114
2642
  stateDir,
2115
2643
  packageRoot,
@@ -2129,7 +2657,9 @@ async function updateWebRuntimeCommand(opts, runtime = defaultRuntime) {
2129
2657
  stoppedPids: stopResult.stoppedPids,
2130
2658
  skippedForeignPids: stopResult.skippedForeignPids,
2131
2659
  ready: ensureResult.ready,
2132
- reason: ensureResult.reason
2660
+ reason: ensureResult.reason,
2661
+ gatewayRestarted: gatewayResult.restarted,
2662
+ gatewayError: gatewayResult.error
2133
2663
  };
2134
2664
  if (!opts.json) {
2135
2665
  runtime.log("");
@@ -2137,12 +2667,20 @@ async function updateWebRuntimeCommand(opts, runtime = defaultRuntime) {
2137
2667
  runtime.log(`Profile: ${profile}`);
2138
2668
  runtime.log(`Version: ${VERSION}`);
2139
2669
  runtime.log(`Web port: ${selectedPort}`);
2670
+ runtime.log(`Gateway: ${summary.gatewayRestarted ? "restarted" : "restart failed"}`);
2671
+ if (summary.gatewayError) runtime.log(theme.warn(`Gateway error: ${summary.gatewayError}`));
2140
2672
  runtime.log(`Stopped web processes: ${summary.stoppedPids.length}`);
2141
2673
  if (summary.skippedForeignPids.length > 0) runtime.log(theme.warn(`Skipped non-Dench listeners on ${selectedPort}: ${summary.skippedForeignPids.join(", ")}`));
2142
2674
  runtime.log(`Web runtime: ${summary.ready ? "ready" : "not ready"}`);
2143
2675
  if (!summary.ready) runtime.log(theme.warn(summary.reason));
2144
2676
  }
2145
2677
  if (!summary.ready) throw new Error(`Web runtime update failed: ${summary.reason}`);
2678
+ await promptAndOpenWebUi({
2679
+ webPort: selectedPort,
2680
+ json: opts.json,
2681
+ noOpen: opts.noOpen,
2682
+ runtime
2683
+ });
2146
2684
  if (opts.json) runtime.log(JSON.stringify(summary, null, 2));
2147
2685
  return summary;
2148
2686
  }
@@ -2191,6 +2729,11 @@ async function startWebRuntimeCommand(opts, runtime = defaultRuntime, label = "s
2191
2729
  includeLegacyStandalone: true
2192
2730
  });
2193
2731
  if (stopResult.skippedForeignPids.length > 0) throw new Error(`Cannot start on ${selectedPort}; non-Dench listener(s) still own the port: ${stopResult.skippedForeignPids.join(", ")}`);
2732
+ const gatewayResult = await restartGatewayDaemon({
2733
+ profile,
2734
+ gatewayPort,
2735
+ json: Boolean(opts.json)
2736
+ });
2194
2737
  if (!startManagedWebRuntime({
2195
2738
  stateDir,
2196
2739
  port: selectedPort,
@@ -2206,7 +2749,9 @@ async function startWebRuntimeCommand(opts, runtime = defaultRuntime, label = "s
2206
2749
  stoppedPids: stopResult.stoppedPids,
2207
2750
  skippedForeignPids: stopResult.skippedForeignPids,
2208
2751
  started: probe.ok,
2209
- reason: probe.reason
2752
+ reason: probe.reason,
2753
+ gatewayRestarted: gatewayResult.restarted,
2754
+ gatewayError: gatewayResult.error
2210
2755
  };
2211
2756
  if (opts.json) {
2212
2757
  runtime.log(JSON.stringify(summary, null, 2));
@@ -2216,20 +2761,29 @@ async function startWebRuntimeCommand(opts, runtime = defaultRuntime, label = "s
2216
2761
  runtime.log(theme.heading(`Dench web ${label}`));
2217
2762
  runtime.log(`Profile: ${profile}`);
2218
2763
  runtime.log(`Web port: ${selectedPort}`);
2764
+ runtime.log(`Gateway: ${summary.gatewayRestarted ? "restarted" : "restart failed"}`);
2765
+ if (summary.gatewayError) runtime.log(theme.warn(`Gateway error: ${summary.gatewayError}`));
2219
2766
  runtime.log(`Restarted managed web runtime: ${summary.started ? "yes" : "no"}`);
2220
2767
  if (!summary.started) runtime.log(theme.warn(summary.reason));
2221
2768
  if (!summary.started) throw new Error(`Web runtime failed readiness probe: ${summary.reason}`);
2769
+ await promptAndOpenWebUi({
2770
+ webPort: selectedPort,
2771
+ json: opts.json,
2772
+ noOpen: opts.noOpen,
2773
+ runtime
2774
+ });
2222
2775
  return summary;
2223
2776
  }
2224
2777
 
2225
2778
  //#endregion
2226
2779
  //#region src/cli/program/register.restart.ts
2227
2780
  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) => {
2781
+ 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
2782
  await runCommandWithRuntime(defaultRuntime, async () => {
2230
2783
  await restartWebRuntimeCommand({
2231
2784
  profile: opts.profile,
2232
2785
  webPort: opts.webPort,
2786
+ noOpen: Boolean(opts.open === false),
2233
2787
  json: Boolean(opts.json)
2234
2788
  });
2235
2789
  });
@@ -2239,11 +2793,12 @@ function registerRestartCommand(program) {
2239
2793
  //#endregion
2240
2794
  //#region src/cli/program/register.start.ts
2241
2795
  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) => {
2796
+ 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
2797
  await runCommandWithRuntime(defaultRuntime, async () => {
2244
2798
  await startWebRuntimeCommand({
2245
2799
  profile: opts.profile,
2246
2800
  webPort: opts.webPort,
2801
+ noOpen: Boolean(opts.open === false),
2247
2802
  json: Boolean(opts.json)
2248
2803
  });
2249
2804
  });
@@ -2272,32 +2827,53 @@ function registerTelemetryCommand(program) {
2272
2827
  const config = readTelemetryConfig();
2273
2828
  const envDisabled = process.env.DO_NOT_TRACK === "1" || process.env.DENCHCLAW_TELEMETRY_DISABLED === "1" || Boolean(process.env.CI);
2274
2829
  const effective = isTelemetryEnabled();
2830
+ const privacyOn = config.privacyMode !== false;
2275
2831
  console.log(`Telemetry config: ${config.enabled ? "enabled" : "disabled"}`);
2276
2832
  if (envDisabled) console.log("Environment override: disabled (DO_NOT_TRACK, DENCHCLAW_TELEMETRY_DISABLED, or CI)");
2277
2833
  console.log(`Effective status: ${effective ? "enabled" : "disabled"}`);
2834
+ console.log(`Privacy mode: ${privacyOn ? "on (message content is redacted)" : "off (full content is captured)"}`);
2278
2835
  console.log("\nLearn more: https://github.com/openclaw/openclaw/blob/main/TELEMETRY.md");
2279
2836
  });
2280
2837
  cmd.command("disable").description("Disable anonymous telemetry").action(() => {
2281
2838
  writeTelemetryConfig({ enabled: false });
2282
2839
  console.log("Telemetry has been disabled.");
2283
- console.log("You can re-enable it anytime with: denchclaw telemetry enable");
2840
+ console.log("You can re-enable it anytime with: npx denchclaw telemetry enable");
2284
2841
  });
2285
2842
  cmd.command("enable").description("Enable anonymous telemetry").action(() => {
2286
2843
  writeTelemetryConfig({ enabled: true });
2287
2844
  console.log("Telemetry has been enabled. Thank you for helping improve DenchClaw!");
2288
2845
  });
2846
+ const privacyCmd = cmd.command("privacy").description("Control whether message content is included in telemetry");
2847
+ privacyCmd.command("on").description("Enable privacy mode (redacts message content, default)").action(() => {
2848
+ if (!isTelemetryEnabled()) {
2849
+ console.log("Telemetry is currently disabled. Enable it first with: npx denchclaw telemetry enable");
2850
+ return;
2851
+ }
2852
+ writeTelemetryConfig({ privacyMode: true });
2853
+ console.log("Privacy mode enabled. Message content and tool results will be redacted.");
2854
+ });
2855
+ privacyCmd.command("off").description("Disable privacy mode (sends full message content)").action(() => {
2856
+ if (!isTelemetryEnabled()) {
2857
+ console.log("Telemetry is currently disabled. Enable it first with: npx denchclaw telemetry enable");
2858
+ return;
2859
+ }
2860
+ writeTelemetryConfig({ privacyMode: false });
2861
+ console.log("Privacy mode disabled. Full message content and tool results will be captured.");
2862
+ console.log("Re-enable anytime with: npx denchclaw telemetry privacy on");
2863
+ });
2289
2864
  }
2290
2865
 
2291
2866
  //#endregion
2292
2867
  //#region src/cli/program/register.update.ts
2293
2868
  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) => {
2869
+ 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
2870
  await runCommandWithRuntime(defaultRuntime, async () => {
2296
2871
  await updateWebRuntimeCommand({
2297
2872
  profile: opts.profile,
2298
2873
  webPort: opts.webPort,
2299
2874
  nonInteractive: Boolean(opts.nonInteractive),
2300
2875
  yes: Boolean(opts.yes),
2876
+ noOpen: Boolean(opts.open === false),
2301
2877
  json: Boolean(opts.json)
2302
2878
  });
2303
2879
  });
@@ -2352,7 +2928,7 @@ const CORE_CLI_ENTRIES = [
2352
2928
  ];
2353
2929
  const CORE_CLI_ENTRY_BY_NAME = new Map(CORE_CLI_ENTRIES.map((entry) => [entry.name, entry]));
2354
2930
  function getCoreCliCommandsWithSubcommands() {
2355
- return [];
2931
+ return ["telemetry"];
2356
2932
  }
2357
2933
  function registerCoreCliCommands(program, ctx, argv) {
2358
2934
  const primary = getPrimaryCommand(argv);