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.
- package/README.md +9 -3
- package/apps/web/.next/standalone/apps/web/.next/BUILD_ID +1 -1
- package/apps/web/.next/standalone/apps/web/.next/app-build-manifest.json +172 -165
- package/apps/web/.next/standalone/apps/web/.next/app-path-routes-manifest.json +29 -28
- package/apps/web/.next/standalone/apps/web/.next/build-manifest.json +3 -3
- package/apps/web/.next/standalone/apps/web/.next/required-server-files.json +3 -3
- package/apps/web/.next/standalone/apps/web/.next/server/app/_not-found/page.js +2 -2
- package/apps/web/.next/standalone/apps/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/_not-found.html +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/_not-found.rsc +2 -2
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/active/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/active/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/route.js +2 -2
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/stop/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/stop/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/stream/route.js +2 -2
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/stream/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/subagents/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/subagents/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/jobs/[jobId]/runs/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/jobs/[jobId]/runs/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/jobs/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/jobs/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/runs/[sessionId]/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/runs/[sessionId]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/runs/search-transcript/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/runs/search-transcript/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/feedback/route.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/feedback/route.js.nft.json +1 -0
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/feedback/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/memories/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/memories/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/profiles/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/profiles/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/profiles/switch/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/profiles/switch/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/sessions/[sessionId]/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/sessions/[sessionId]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/sessions/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/[id]/messages/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/[id]/messages/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/[id]/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/[id]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/assets/[...path]/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/assets/[...path]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/browse/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/browse/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/browse-file/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/browse-file/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/context/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/context/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/copy/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/copy/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/db/introspect/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/db/introspect/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/db/query/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/db/query/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/delete/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/delete/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/file/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/file/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/init/route.js +2 -2
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/init/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/list/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/list/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/mkdir/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/mkdir/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/move/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/move/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/display-field/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/display-field/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/[id]/route.js +2 -2
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/[id]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/bulk-delete/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/bulk-delete/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/options/route.js +2 -2
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/options/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/fields/[fieldId]/enum-rename/route.js +1 -1
- 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
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/fields/[fieldId]/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/fields/[fieldId]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/fields/reorder/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/fields/reorder/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/route.js +2 -2
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/views/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/views/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/open-file/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/open-file/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/path-info/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/path-info/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/query/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/query/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/raw-file/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/raw-file/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/rename/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/rename/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/reports/execute/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/reports/execute/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/search-index/route.js +2 -2
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/search-index/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/suggest-files/route.js +2 -2
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/suggest-files/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/switch/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/switch/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/thumbnail/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/thumbnail/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/tree/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/tree/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/upload/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/upload/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/virtual-file/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/virtual-file/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/watch/route.js +2 -2
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/watch/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/write-binary/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/write-binary/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/index.html +2 -2
- package/apps/web/.next/standalone/apps/web/.next/server/app/index.rsc +3 -3
- package/apps/web/.next/standalone/apps/web/.next/server/app/page.js +3 -3
- package/apps/web/.next/standalone/apps/web/.next/server/app/page.js.nft.json +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/workspace/page.js +14 -14
- package/apps/web/.next/standalone/apps/web/.next/server/app/workspace/page.js.nft.json +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/workspace/page_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/workspace.html +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/workspace.rsc +3 -3
- package/apps/web/.next/standalone/apps/web/.next/server/app-paths-manifest.json +29 -28
- package/apps/web/.next/standalone/apps/web/.next/server/chunks/3180.js +3 -3
- package/apps/web/.next/standalone/apps/web/.next/server/functions-config-manifest.json +3 -3
- package/apps/web/.next/standalone/apps/web/.next/server/middleware-build-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/pages/404.html +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/pages/500.html +1 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/_not-found/page-23e70510b8d52088.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/active/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/stop/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/stream/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/subagents/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/jobs/[jobId]/runs/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/jobs/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/runs/[sessionId]/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/runs/search-transcript/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/feedback/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/memories/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/profiles/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/profiles/switch/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/sessions/[sessionId]/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/sessions/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/skills/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/[id]/messages/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/[id]/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/assets/[...path]/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/browse/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/browse-file/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/context/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/copy/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/db/introspect/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/db/query/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/delete/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/file/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/init/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/list/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/mkdir/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/move/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/display-field/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/bulk-delete/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/options/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/enum-rename/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/reorder/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/views/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/open-file/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/path-info/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/query/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/raw-file/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/rename/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/reports/execute/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/search-index/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/suggest-files/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/switch/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/thumbnail/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/tree/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/upload/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/virtual-file/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/watch/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/write-binary/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/layout-af0e9292b7fe2ec1.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/page-b213929ad6255c65.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/workspace/{page-a9c68aaa3f71a7fe.js → page-fe39ceef01137175.js} +1 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/main-app-c71b105c32544ad9.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/ezaYRoo0uHfvCgSL72gWA/_buildManifest.js +1 -0
- package/apps/web/.next/standalone/apps/web/server.js +1 -1
- package/apps/web/.next/standalone/package.json +2 -1
- package/apps/web/.next/static/chunks/app/_not-found/page-23e70510b8d52088.js +1 -0
- package/apps/web/.next/static/chunks/app/api/chat/active/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/chat/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/chat/stop/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/chat/stream/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/chat/subagents/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/cron/jobs/[jobId]/runs/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/cron/jobs/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/cron/runs/[sessionId]/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/cron/runs/search-transcript/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/feedback/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/memories/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/profiles/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/profiles/switch/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/sessions/[sessionId]/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/sessions/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/skills/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/web-sessions/[id]/messages/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/web-sessions/[id]/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/web-sessions/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/assets/[...path]/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/browse/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/browse-file/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/context/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/copy/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/db/introspect/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/db/query/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/delete/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/file/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/init/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/list/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/mkdir/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/move/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/display-field/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/bulk-delete/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/options/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/enum-rename/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/reorder/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/views/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/open-file/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/path-info/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/query/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/raw-file/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/rename/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/reports/execute/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/search-index/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/suggest-files/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/switch/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/thumbnail/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/tree/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/upload/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/virtual-file/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/watch/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/write-binary/route-ff99b057da8a00ed.js +1 -0
- package/apps/web/.next/static/chunks/app/layout-af0e9292b7fe2ec1.js +1 -0
- package/apps/web/.next/static/chunks/app/page-b213929ad6255c65.js +1 -0
- package/apps/web/.next/static/chunks/app/workspace/{page-a9c68aaa3f71a7fe.js → page-fe39ceef01137175.js} +1 -1
- package/apps/web/.next/static/chunks/main-app-c71b105c32544ad9.js +1 -0
- package/apps/web/.next/static/ezaYRoo0uHfvCgSL72gWA/_buildManifest.js +1 -0
- package/dist/{cli-name-yhDyCrts.js → cli-name-YmLsNGR6.js} +1 -1
- package/dist/entry.js +3 -2
- package/dist/{program-CVEqiDmd.js → program-CfNvnqVx.js} +588 -25
- package/dist/{run-main-CBWtZaUl.js → run-main-BWHpVYis.js} +4 -4
- package/dist/{telemetry-UyOfXAoS.js → telemetry-CwRnbZ2F.js} +3 -2
- package/extensions/bluebubbles/node_modules/.bin/ironclaw +21 -0
- package/extensions/copilot-proxy/node_modules/.bin/ironclaw +21 -0
- package/extensions/diagnostics-otel/node_modules/.bin/ironclaw +21 -0
- package/extensions/discord/node_modules/.bin/ironclaw +21 -0
- package/extensions/feishu/node_modules/.bin/ironclaw +21 -0
- package/extensions/google-antigravity-auth/node_modules/.bin/ironclaw +21 -0
- package/extensions/google-gemini-cli-auth/node_modules/.bin/ironclaw +21 -0
- package/extensions/googlechat/node_modules/.bin/ironclaw +21 -0
- package/extensions/imessage/node_modules/.bin/ironclaw +21 -0
- package/extensions/irc/node_modules/.bin/ironclaw +21 -0
- package/extensions/line/node_modules/.bin/ironclaw +21 -0
- package/extensions/llm-task/node_modules/.bin/ironclaw +21 -0
- package/extensions/lobster/node_modules/.bin/ironclaw +21 -0
- package/extensions/matrix/node_modules/.bin/ironclaw +21 -0
- package/extensions/matrix/node_modules/.bin/markdown-it +21 -0
- package/extensions/mattermost/node_modules/.bin/ironclaw +21 -0
- package/extensions/memory-core/node_modules/.bin/ironclaw +21 -0
- package/extensions/memory-lancedb/node_modules/.bin/ironclaw +21 -0
- package/extensions/memory-lancedb/node_modules/.bin/openai +21 -0
- package/extensions/minimax-portal-auth/node_modules/.bin/ironclaw +21 -0
- package/extensions/msteams/node_modules/.bin/ironclaw +21 -0
- package/extensions/nextcloud-talk/node_modules/.bin/ironclaw +21 -0
- package/extensions/nostr/node_modules/.bin/ironclaw +21 -0
- package/extensions/open-prose/node_modules/.bin/ironclaw +21 -0
- package/extensions/posthog-analytics/index.ts +162 -0
- package/extensions/posthog-analytics/lib/event-mappers.ts +312 -0
- package/extensions/posthog-analytics/lib/posthog-client.ts +81 -0
- package/extensions/posthog-analytics/lib/privacy.ts +83 -0
- package/extensions/posthog-analytics/lib/trace-context.ts +103 -0
- package/extensions/posthog-analytics/lib/types.ts +28 -0
- package/extensions/posthog-analytics/openclaw.plugin.json +22 -0
- package/extensions/posthog-analytics/package.json +8 -0
- package/extensions/signal/node_modules/.bin/ironclaw +21 -0
- package/extensions/slack/node_modules/.bin/ironclaw +21 -0
- package/extensions/synology-chat/node_modules/.bin/ironclaw +21 -0
- package/extensions/telegram/node_modules/.bin/ironclaw +21 -0
- package/extensions/tlon/node_modules/.bin/ironclaw +21 -0
- package/extensions/twitch/node_modules/.bin/ironclaw +21 -0
- package/extensions/voice-call/node_modules/.bin/ironclaw +21 -0
- package/extensions/whatsapp/node_modules/.bin/ironclaw +21 -0
- package/extensions/zalo/node_modules/.bin/ironclaw +21 -0
- package/extensions/zalouser/node_modules/.bin/ironclaw +21 -0
- package/package.json +2 -1
- package/apps/web/.next/standalone/apps/web/.next/static/bfBSw7Zh4Df36UcKsQE27/_buildManifest.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/_not-found/page-6934a35b4d14cdab.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/active/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/stop/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/stream/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/subagents/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/jobs/[jobId]/runs/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/jobs/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/runs/[sessionId]/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/runs/search-transcript/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/memories/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/profiles/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/profiles/switch/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/sessions/[sessionId]/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/sessions/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/skills/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/[id]/messages/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/[id]/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/assets/[...path]/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/browse/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/browse-file/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/context/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/copy/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/db/introspect/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/db/query/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/delete/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/file/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/init/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/list/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/mkdir/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/move/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/display-field/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/bulk-delete/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/options/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/enum-rename/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/reorder/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/views/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/open-file/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/path-info/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/query/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/raw-file/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/rename/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/reports/execute/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/search-index/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/suggest-files/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/switch/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/thumbnail/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/tree/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/upload/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/virtual-file/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/watch/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/write-binary/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/layout-01f7966beacdd67b.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/page-f365ecf6d5915738.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/main-app-b49c23ad3d7c2890.js +0 -1
- package/apps/web/.next/static/bfBSw7Zh4Df36UcKsQE27/_buildManifest.js +0 -1
- package/apps/web/.next/static/chunks/app/_not-found/page-6934a35b4d14cdab.js +0 -1
- package/apps/web/.next/static/chunks/app/api/chat/active/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/chat/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/chat/stop/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/chat/stream/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/chat/subagents/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/cron/jobs/[jobId]/runs/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/cron/jobs/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/cron/runs/[sessionId]/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/cron/runs/search-transcript/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/memories/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/profiles/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/profiles/switch/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/sessions/[sessionId]/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/sessions/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/skills/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/web-sessions/[id]/messages/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/web-sessions/[id]/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/web-sessions/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/assets/[...path]/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/browse/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/browse-file/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/context/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/copy/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/db/introspect/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/db/query/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/delete/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/file/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/init/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/list/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/mkdir/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/move/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/display-field/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/bulk-delete/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/options/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/enum-rename/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/reorder/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/views/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/open-file/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/path-info/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/query/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/raw-file/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/rename/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/reports/execute/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/search-index/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/suggest-files/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/switch/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/thumbnail/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/tree/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/upload/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/virtual-file/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/watch/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/write-binary/route-5dc3b3b56eb45a36.js +0 -1
- package/apps/web/.next/static/chunks/app/layout-01f7966beacdd67b.js +0 -1
- package/apps/web/.next/static/chunks/app/page-f365ecf6d5915738.js +0 -1
- package/apps/web/.next/static/chunks/main-app-b49c23ad3d7c2890.js +0 -1
- /package/apps/web/.next/standalone/apps/web/.next/static/{bfBSw7Zh4Df36UcKsQE27 → ezaYRoo0uHfvCgSL72gWA}/_ssgManifest.js +0 -0
- /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-
|
|
2
|
-
import {
|
|
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-
|
|
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
|
|
1754
|
-
if (
|
|
1755
|
-
gatewayPort =
|
|
1756
|
-
|
|
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 ${
|
|
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
|
-
|
|
1843
|
-
|
|
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 &&
|
|
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"
|
|
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
|
|
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);
|