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.
- 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 +233 -225
- 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 +6 -6
- package/apps/web/.next/standalone/apps/web/.next/react-loadable-manifest.json +1 -1
- 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 +1 -72
- 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/5334.js +9 -0
- package/apps/web/.next/standalone/apps/web/.next/server/functions-config-manifest.json +19 -18
- package/apps/web/.next/standalone/apps/web/.next/server/middleware-build-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/middleware-react-loadable-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/_8L73FbiTvTDeQfyyo9Kx/_buildManifest.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/{9978-a2bf90231d08284f.js → 4988-a31fb680255d2e53.js} +3 -3
- package/apps/web/.next/{static/chunks/7597.6cb599051f1a46f7.js → standalone/apps/web/.next/static/chunks/9978.7ad588863427f502.js} +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-4d0405acdb5ee8e5.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-ad24ce15d77e044d.js} +1 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/df90ee31-b8ee23eaa0135739.js +1 -0
- 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/chunks/{webpack-1032d39338965700.js → webpack-38d8ef58f812737b.js} +1 -1
- package/apps/web/.next/standalone/apps/web/public/fonts/Bookerly-Bold.ttf +0 -0
- package/apps/web/.next/standalone/apps/web/public/fonts/Bookerly-BoldItalic.ttf +0 -0
- package/apps/web/.next/standalone/apps/web/public/fonts/Bookerly-Regular.ttf +0 -0
- package/apps/web/.next/standalone/apps/web/public/fonts/Bookerly-RegularItalic.ttf +0 -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/_8L73FbiTvTDeQfyyo9Kx/_buildManifest.js +1 -0
- package/apps/web/.next/static/chunks/{9978-a2bf90231d08284f.js → 4988-a31fb680255d2e53.js} +3 -3
- package/apps/web/.next/{standalone/apps/web/.next/static/chunks/7597.6cb599051f1a46f7.js → static/chunks/9978.7ad588863427f502.js} +1 -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-4d0405acdb5ee8e5.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-ad24ce15d77e044d.js} +1 -1
- package/apps/web/.next/static/chunks/df90ee31-b8ee23eaa0135739.js +1 -0
- package/apps/web/.next/static/chunks/main-app-c71b105c32544ad9.js +1 -0
- package/apps/web/.next/static/chunks/{webpack-1032d39338965700.js → webpack-38d8ef58f812737b.js} +1 -1
- package/apps/web/public/fonts/Bookerly-Bold.ttf +0 -0
- package/apps/web/public/fonts/Bookerly-BoldItalic.ttf +0 -0
- package/apps/web/public/fonts/Bookerly-Regular.ttf +0 -0
- package/apps/web/public/fonts/Bookerly-RegularItalic.ttf +0 -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-BYwTE_Ot.js} +602 -26
- package/dist/{run-main-CBWtZaUl.js → run-main-CWe8UBRN.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 +391 -0
- package/extensions/posthog-analytics/lib/posthog-client.ts +81 -0
- package/extensions/posthog-analytics/lib/privacy.ts +218 -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/server/chunks/3180.js +0 -9
- 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/df90ee31-33cbf7968acd3b6e.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/df90ee31-33cbf7968acd3b6e.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 → _8L73FbiTvTDeQfyyo9Kx}/_ssgManifest.js +0 -0
- /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-
|
|
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,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
|
|
1754
|
-
if (
|
|
1755
|
-
gatewayPort =
|
|
1756
|
-
|
|
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 ${
|
|
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
|
-
|
|
1843
|
-
|
|
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 &&
|
|
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"
|
|
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
|
|
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);
|