@alook/app 0.0.68 → 0.0.69
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/bundled/email-worker/index.js +9 -1
- package/bundled/web/.open-next/.build/durable-objects/queue.js +5 -5
- package/bundled/web/.open-next/assets/BUILD_ID +1 -1
- package/bundled/web/.open-next/assets/_next/static/chunks/0.vi-1cgnne0e.css +1 -0
- package/bundled/web/.open-next/assets/_next/static/chunks/{0vob59t.w8yuf.js → 060hy1yx9.8u4.js} +2 -2
- package/bundled/web/.open-next/assets/_next/static/chunks/08u3p1v8e1gxg.js +63 -0
- package/bundled/web/.open-next/assets/_next/static/chunks/{13fkss9rmgdqw.js → 0fmcohc0raah~.js} +22 -22
- package/bundled/web/.open-next/assets/_next/static/chunks/0or01.vb5l38_.js +3 -0
- package/bundled/web/.open-next/assets/_next/static/chunks/0vb-n1ns9b-93.js +1 -0
- package/bundled/web/.open-next/assets/_next/static/chunks/0ymb~iviyjlb_.js +3 -0
- package/bundled/web/.open-next/assets/_next/static/chunks/13lom177x6744.js +1 -0
- package/bundled/web/.open-next/cache/{d6FEqIY-HdfUib-E9v9dt → -lo-xBQBmp_D6Nf6J9S7y}/_global-error.cache +1 -1
- package/bundled/web/.open-next/cache/{d6FEqIY-HdfUib-E9v9dt → -lo-xBQBmp_D6Nf6J9S7y}/_not-found.cache +1 -1
- package/bundled/web/.open-next/cache/{d6FEqIY-HdfUib-E9v9dt → -lo-xBQBmp_D6Nf6J9S7y}/sitemap.xml.cache +1 -1
- package/bundled/web/.open-next/cloudflare/cache-assets-manifest.sql +1 -1
- package/bundled/web/.open-next/cloudflare/init.js +1 -1
- package/bundled/web/.open-next/dynamodb-provider/dynamodb-cache.json +1 -1
- package/bundled/web/.open-next/middleware/handler.mjs +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/BUILD_ID +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/build-manifest.json +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/prerender-manifest.json +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/invite/[token]/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/studio/new/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/activity/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/chat/[convId]/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/chat/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/email/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/files/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/meetings/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/new/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/calendar/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/flags/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/help/email-setup/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/home/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/issues/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/runtimes/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/settings/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/threads/[traceId]/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/threads/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/unread/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/workspaces/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(auth)/sign-in/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agent-links/[id]/route.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agent-links/route.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/[id]/access/[userId]/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/[id]/access/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/[id]/active-tasks/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/[id]/activity/route.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/[id]/chat-init/route.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/[id]/conversation/route.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/[id]/conversations/route.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/[id]/email-accounts/[accountId]/route.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/[id]/email-accounts/[accountId]/sync/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/[id]/email-accounts/[accountId]/test/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/[id]/email-accounts/route.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/[id]/meetings/[meetingId]/approve/route.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/[id]/meetings/[meetingId]/route.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/[id]/meetings/[meetingId]/stop/route.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/[id]/meetings/route.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/[id]/pin/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/[id]/route.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/[id]/whitelist/[whitelistId]/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/[id]/whitelist/route.js +4 -4
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/[id]/workspace/browse/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/active-task-counts/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/active-tasks/route.js +6 -6
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/pins/reorder/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/pins/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/route.js +6 -6
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/agents/sidebar/reorder/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/artifacts/[id]/content/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/artifacts/[id]/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/artifacts/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/artifacts/upload/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/calendar/[id]/route.js +4 -4
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/calendar/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/channels/[id]/route.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/channels/reorder/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/channels/route.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/config/min-version/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/config/model-options/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/conversations/[id]/active-task/route.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/conversations/[id]/buffered-messages/[messageId]/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/conversations/[id]/buffered-messages/route.js +4 -4
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/conversations/[id]/messages/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/conversations/[id]/route.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/conversations/route.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/deregister/route.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/register/route.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/tasks/[taskId]/complete/route.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/tasks/[taskId]/fail/route.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/tasks/[taskId]/messages/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/tasks/[taskId]/progress/route.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/tasks/[taskId]/start/route.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/tasks/[taskId]/status/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/tasks/[taskId]/supersede/route.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/tasks/poll/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/daemon/workspace/report/route.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/email/[id]/attachment/[index]/route.js +4 -4
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/email/[id]/body/route.js +4 -4
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/email/[id]/raw/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/email/[id]/route.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/email/[id]/thread/route.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/email/notify/route.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/email/route.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/email/send/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/email/upload/route.js +4 -4
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/flags/[messageId]/route.js +4 -4
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/flags/count/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/flags/route.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/inbox/count/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/inbox/read/route.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/inbox/read-all/route.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/inbox/route.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/invite/[token]/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/issues/[id]/comments/route.js +4 -4
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/issues/[id]/route.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/issues/route.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/machine-tokens/[id]/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/machine-tokens/activate/route.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/machine-tokens/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/me/route.js +5 -5
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/meeting/callback/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/members/me/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/runtimes/[runtimeId]/rescan/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/runtimes/[runtimeId]/update/route.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/runtimes/machine/route.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/runtimes/route.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/studios/check-handles/route.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/studios/check-name/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/studios/route.js +4 -4
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/tasks/[id]/messages/route.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/tasks/[id]/retry/route.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/tasks/[id]/route.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/tasks/step-counts/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/traces/[traceId]/route.js +6 -6
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/traces/route.js +6 -6
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/workspaces/[id]/invites/[inviteId]/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/workspaces/[id]/invites/route.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/workspaces/[id]/members/[memberId]/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/workspaces/[id]/members/route.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/workspaces/[id]/overview/route.js +6 -6
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/workspaces/[id]/route.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/api/workspaces/route.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/templates/[id]/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/templates/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0.1vmoe._.js +85 -0
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__009_wu3._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__01crkpf._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__01~--ue._.js +3 -0
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/{[root-of-the-server]__0~4t--s._.js → [root-of-the-server]__027mioa._.js} +8 -8
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__09cer93._.js +3 -0
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0dy~25_._.js +3 -0
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0faxj6t._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0k4l9.h._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0m5a1_f._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0m_ya4f._.js +3 -0
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0niqi98._.js +85 -0
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0ntc1ld._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0ud56v.._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[turbopack]_runtime.js +16 -16
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0266t8u._.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_02t7kem._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_06imn.m._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_07-798_._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_08xh_f8._.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_09j_99x._.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0c9~wb-._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0exm5_w._.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0gqpz7w._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0j1t6f2._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0k3wl-3._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0l1m9wf._.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0lmedw9._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0ow_nxn._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0piy2kq._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0r0h9so._.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0s4qnoj._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0sj8mn_._.js +3 -0
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0s~hhx-._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0tarogd._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0tcd35h._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0u3tu2x._.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0w6dw.t._.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0y3~9l1._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0z.s70x._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_122y7jv._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/src_0q3gvkd._.js +3 -0
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{[root-of-the-server]__0ppv-5d._.js → [root-of-the-server]__099etsu._.js} +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/[root-of-the-server]__0r2s1aj._.js +3 -0
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/[root-of-the-server]__0xzp3_y._.js +3 -0
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/[turbopack]_runtime.js +16 -16
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_063q-hj._.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{_0gm0lpi._.js → _091qk6t._.js} +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_09b8fgg._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/{_0e7_cpm._.js → _0xcw94t._.js} +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_11~t2ti._.js +3 -0
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_12e18r-._.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_13__3im._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_13cbsrm._.js +65 -0
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web_src_0~23g-y._.js +2 -2
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web_src_app_(app)_w_[slug]_home_page_tsx_0lkx78f._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/middleware-build-manifest.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/middleware-manifest.json +5 -5
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/server-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/server-reference-manifest.json +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/handler.mjs +68 -150
- package/bundled/web/.open-next/server-functions/default/src/web/handler.mjs.meta.json +302 -338
- package/bundled/web/.open-next/server-functions/default/src/web/index.mjs +3 -3
- package/bundled/web/wrangler.toml +1 -1
- package/bundled/ws-do/index.js +9 -1
- package/dist/cli/index.js +2424 -426
- package/dist/cli/session-runner.js +183 -33
- package/package.json +1 -1
- package/bundled/web/.open-next/assets/_next/static/chunks/02xsv1h-9twmr.js +0 -3
- package/bundled/web/.open-next/assets/_next/static/chunks/085gv~jsjhgvo.js +0 -3
- package/bundled/web/.open-next/assets/_next/static/chunks/0csp6ncjhvojv.js +0 -63
- package/bundled/web/.open-next/assets/_next/static/chunks/0lf.3fdr8qzrz.css +0 -1
- package/bundled/web/.open-next/assets/_next/static/chunks/0u1.3sr-iag4j.js +0 -1
- package/bundled/web/.open-next/assets/_next/static/chunks/0v0kh80r40w4f.js +0 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0axs-gp._.js +0 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0kvsfuj._.js +0 -85
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0l3u9pl._.js +0 -85
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0lvfzvr._.js +0 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0n_hjiv._.js +0 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0ug4a08._.js +0 -85
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/[root-of-the-server]__0~jiu74._.js +0 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/_0jx_8bw._.js +0 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/src_0-jf-76._.js +0 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/[root-of-the-server]__0-uhgif._.js +0 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/[root-of-the-server]__0oe.0yf._.js +0 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0ohl~vp._.js +0 -65
- /package/bundled/web/.open-next/assets/_next/static/{d6FEqIY-HdfUib-E9v9dt → -lo-xBQBmp_D6Nf6J9S7y}/_buildManifest.js +0 -0
- /package/bundled/web/.open-next/assets/_next/static/{d6FEqIY-HdfUib-E9v9dt → -lo-xBQBmp_D6Nf6J9S7y}/_clientMiddlewareManifest.js +0 -0
- /package/bundled/web/.open-next/assets/_next/static/{d6FEqIY-HdfUib-E9v9dt → -lo-xBQBmp_D6Nf6J9S7y}/_ssgManifest.js +0 -0
- /package/bundled/web/.open-next/cache/{d6FEqIY-HdfUib-E9v9dt → -lo-xBQBmp_D6Nf6J9S7y}/robots.txt.cache +0 -0
|
@@ -15,6 +15,7 @@ var __export = (target, all) => {
|
|
|
15
15
|
|
|
16
16
|
// daemon/session-runner.ts
|
|
17
17
|
import { mkdir, writeFile, rm, rename } from "fs/promises";
|
|
18
|
+
import { mkdirSync as mkdirSync4 } from "fs";
|
|
18
19
|
import path from "path";
|
|
19
20
|
|
|
20
21
|
// ../shared/src/constants.ts
|
|
@@ -16854,6 +16855,16 @@ class ClaudeBackend {
|
|
|
16854
16855
|
stdio: ["pipe", "pipe", "pipe"],
|
|
16855
16856
|
env: { ...process.env, ...options.env }
|
|
16856
16857
|
});
|
|
16858
|
+
if (!proc.pid) {
|
|
16859
|
+
const error51 = `Failed to start ${this.cliPath}: binary not found or not executable. Is 'claude' installed and on PATH?`;
|
|
16860
|
+
const failedResult = { status: "failed", output: "", error: error51, durationMs: 0, sessionId: "" };
|
|
16861
|
+
const emptyMessages = { [Symbol.asyncIterator]() {
|
|
16862
|
+
return { async next() {
|
|
16863
|
+
return { value: undefined, done: true };
|
|
16864
|
+
} };
|
|
16865
|
+
} };
|
|
16866
|
+
return { pid: undefined, messages: emptyMessages, sessionId: Promise.resolve(""), result: Promise.resolve(failedResult) };
|
|
16867
|
+
}
|
|
16857
16868
|
let timedOut = false;
|
|
16858
16869
|
let timeoutTimer;
|
|
16859
16870
|
if (options.timeout) {
|
|
@@ -16972,6 +16983,24 @@ class ClaudeBackend {
|
|
|
16972
16983
|
}
|
|
16973
16984
|
}
|
|
16974
16985
|
});
|
|
16986
|
+
proc.on("error", (err) => {
|
|
16987
|
+
resultStatus = "failed";
|
|
16988
|
+
lastError = `spawn error: ${err.message}`;
|
|
16989
|
+
resolveSessionId(lastSessionId);
|
|
16990
|
+
messageDone = true;
|
|
16991
|
+
if (messageResolve) {
|
|
16992
|
+
const r = messageResolve;
|
|
16993
|
+
messageResolve = null;
|
|
16994
|
+
r();
|
|
16995
|
+
}
|
|
16996
|
+
resolve({
|
|
16997
|
+
status: "failed",
|
|
16998
|
+
output: "",
|
|
16999
|
+
error: lastError,
|
|
17000
|
+
durationMs: Date.now() - startTime,
|
|
17001
|
+
sessionId: lastSessionId
|
|
17002
|
+
});
|
|
17003
|
+
});
|
|
16975
17004
|
proc.on("close", (code) => {
|
|
16976
17005
|
if (timeoutTimer)
|
|
16977
17006
|
clearTimeout(timeoutTimer);
|
|
@@ -17093,6 +17122,16 @@ class CodexBackend {
|
|
|
17093
17122
|
stdio: ["pipe", "pipe", "pipe"],
|
|
17094
17123
|
env: { ...process.env, ...options.env }
|
|
17095
17124
|
});
|
|
17125
|
+
if (!proc.pid) {
|
|
17126
|
+
const error51 = `Failed to start ${this.cliPath}: binary not found or not executable. Is 'codex' installed and on PATH?`;
|
|
17127
|
+
const failedResult = { status: "failed", output: "", error: error51, durationMs: 0, sessionId: "" };
|
|
17128
|
+
const emptyMessages = { [Symbol.asyncIterator]() {
|
|
17129
|
+
return { async next() {
|
|
17130
|
+
return { value: undefined, done: true };
|
|
17131
|
+
} };
|
|
17132
|
+
} };
|
|
17133
|
+
return { pid: undefined, messages: emptyMessages, sessionId: Promise.resolve(""), result: Promise.resolve(failedResult) };
|
|
17134
|
+
}
|
|
17096
17135
|
let timedOut = false;
|
|
17097
17136
|
let timeoutTimer;
|
|
17098
17137
|
if (options.timeout) {
|
|
@@ -17472,6 +17511,25 @@ class CodexBackend {
|
|
|
17472
17511
|
}
|
|
17473
17512
|
};
|
|
17474
17513
|
startHandshake();
|
|
17514
|
+
proc.on("error", (err) => {
|
|
17515
|
+
resultStatus = "failed";
|
|
17516
|
+
lastError = `spawn error: ${err.message}`;
|
|
17517
|
+
closeAllPending("spawn error");
|
|
17518
|
+
resolveSessionId(sessionId);
|
|
17519
|
+
messageDone = true;
|
|
17520
|
+
if (messageResolve) {
|
|
17521
|
+
const r = messageResolve;
|
|
17522
|
+
messageResolve = null;
|
|
17523
|
+
r();
|
|
17524
|
+
}
|
|
17525
|
+
resolve({
|
|
17526
|
+
status: "failed",
|
|
17527
|
+
output: "",
|
|
17528
|
+
error: lastError,
|
|
17529
|
+
durationMs: Date.now() - startTime,
|
|
17530
|
+
sessionId
|
|
17531
|
+
});
|
|
17532
|
+
});
|
|
17475
17533
|
proc.on("close", (code) => {
|
|
17476
17534
|
if (timeoutTimer)
|
|
17477
17535
|
clearTimeout(timeoutTimer);
|
|
@@ -17552,6 +17610,16 @@ class OpenCodeBackend {
|
|
|
17552
17610
|
stdio: ["ignore", "pipe", "pipe"],
|
|
17553
17611
|
env: { ...process.env, ...options.env, OPENCODE_PERMISSION: '{"*":"allow"}' }
|
|
17554
17612
|
});
|
|
17613
|
+
if (!proc.pid) {
|
|
17614
|
+
const error51 = `Failed to start ${this.cliPath}: binary not found or not executable. Is 'opencode' installed and on PATH?`;
|
|
17615
|
+
const failedResult = { status: "failed", output: "", error: error51, durationMs: 0, sessionId: "" };
|
|
17616
|
+
const emptyMessages = { [Symbol.asyncIterator]() {
|
|
17617
|
+
return { async next() {
|
|
17618
|
+
return { value: undefined, done: true };
|
|
17619
|
+
} };
|
|
17620
|
+
} };
|
|
17621
|
+
return { pid: undefined, messages: emptyMessages, sessionId: Promise.resolve(""), result: Promise.resolve(failedResult) };
|
|
17622
|
+
}
|
|
17555
17623
|
let timedOut = false;
|
|
17556
17624
|
let timeoutTimer;
|
|
17557
17625
|
if (options.timeout) {
|
|
@@ -17703,6 +17771,24 @@ class OpenCodeBackend {
|
|
|
17703
17771
|
}
|
|
17704
17772
|
}
|
|
17705
17773
|
});
|
|
17774
|
+
proc.on("error", (err) => {
|
|
17775
|
+
resultStatus = "failed";
|
|
17776
|
+
lastError = `spawn error: ${err.message}`;
|
|
17777
|
+
resolveSessionId(lastSessionId);
|
|
17778
|
+
messageDone = true;
|
|
17779
|
+
if (messageResolve) {
|
|
17780
|
+
const r = messageResolve;
|
|
17781
|
+
messageResolve = null;
|
|
17782
|
+
r();
|
|
17783
|
+
}
|
|
17784
|
+
resolve({
|
|
17785
|
+
status: "failed",
|
|
17786
|
+
output: "",
|
|
17787
|
+
error: lastError,
|
|
17788
|
+
durationMs: Date.now() - startTime,
|
|
17789
|
+
sessionId: lastSessionId
|
|
17790
|
+
});
|
|
17791
|
+
});
|
|
17706
17792
|
proc.on("close", (code) => {
|
|
17707
17793
|
if (timeoutTimer)
|
|
17708
17794
|
clearTimeout(timeoutTimer);
|
|
@@ -17799,7 +17885,8 @@ import {
|
|
|
17799
17885
|
symlinkSync,
|
|
17800
17886
|
unlinkSync,
|
|
17801
17887
|
existsSync,
|
|
17802
|
-
readlinkSync
|
|
17888
|
+
readlinkSync,
|
|
17889
|
+
copyFileSync
|
|
17803
17890
|
} from "fs";
|
|
17804
17891
|
import { join as join2 } from "path";
|
|
17805
17892
|
var CANONICAL_FILE = "AGENTS.md";
|
|
@@ -17917,7 +18004,7 @@ ${task.agent.instructions}
|
|
|
17917
18004
|
content += `
|
|
17918
18005
|
## Alook CLI Tools
|
|
17919
18006
|
You can communicate with the world through Alook CLI.
|
|
17920
|
-
|
|
18007
|
+
The CLI auto-detects your identity from the environment. No need to pass \`--agent_id\`.
|
|
17921
18008
|
`;
|
|
17922
18009
|
if (alookAddr || customAddrs.length > 0) {
|
|
17923
18010
|
const lines = [];
|
|
@@ -17933,12 +18020,12 @@ ${lines.join(`
|
|
|
17933
18020
|
|
|
17934
18021
|
### Emails
|
|
17935
18022
|
---
|
|
17936
|
-
Run '${cmdPrefix()} email pull --
|
|
18023
|
+
Run '${cmdPrefix()} email pull --status unread' to download unread emails from inbox to '${tempDir("alook-emails")}/${task.workspaceId}/${task.agentId}/'.
|
|
17937
18024
|
---
|
|
17938
|
-
To download sent emails, add '--folder sent': '${cmdPrefix()} email pull --
|
|
18025
|
+
To download sent emails, add '--folder sent': '${cmdPrefix()} email pull --folder sent'
|
|
17939
18026
|
Valid folders: inbox (default), sent, untrust.
|
|
17940
18027
|
To limit the number of emails downloaded, add '--limit <N>' (e.g. '--limit 20'). Use '--offset <N>' to skip emails for pagination.
|
|
17941
|
-
Example: '${cmdPrefix()} email pull --
|
|
18028
|
+
Example: '${cmdPrefix()} email pull --status unread --limit 20 --offset 0'
|
|
17942
18029
|
---
|
|
17943
18030
|
Each email is saved to '${tempDir("alook-emails")}/${task.workspaceId}/${task.agentId}/<emailId>/' with:
|
|
17944
18031
|
- 'metadata.json' — sender, recipient, subject, date, status, message_id, in_reply_to, references
|
|
@@ -17947,40 +18034,40 @@ Each email is saved to '${tempDir("alook-emails")}/${task.workspaceId}/${task.ag
|
|
|
17947
18034
|
- 'attachments/' — extracted attachment files (if any)
|
|
17948
18035
|
---
|
|
17949
18036
|
Before starting to process an INBOX email, mark it as read:
|
|
17950
|
-
- Run '${cmdPrefix()} email set --
|
|
18037
|
+
- Run '${cmdPrefix()} email set --email_id <EMAIL_ID> --status read'
|
|
17951
18038
|
---
|
|
17952
18039
|
|
|
17953
18040
|
#### Sending a new email
|
|
17954
18041
|
Write the HTML body to a file first, then send it. The body is forwarded as-is (HTML).
|
|
17955
|
-
- Run '${cmdPrefix()} email send --
|
|
18042
|
+
- Run '${cmdPrefix()} email send --to <ADDRESS> --subject "<SUBJECT>" --body-file <PATH_TO_HTML>'
|
|
17956
18043
|
- To send from a specific mailbox, add '--from <YOUR_EMAIL_ADDRESS>'. Without '--from', the default Alook address is used.
|
|
17957
18044
|
- Attach files with '--attachment <PATH>' — repeat the flag for multiple attachments. Each file is uploaded before sending.
|
|
17958
|
-
- Example: '${cmdPrefix()} email send --
|
|
18045
|
+
- Example: '${cmdPrefix()} email send --to foo@bar.com --subject "Weekly report" --body-file /tmp/body.html --from alice@company.com --attachment /tmp/report.pdf'
|
|
17959
18046
|
|
|
17960
18047
|
#### Replying to an email
|
|
17961
18048
|
To reply to an email, add '--in-reply-to <EMAIL_ID>' to the send command. This sets the correct email threading headers so the recipient's email client groups the reply into the same conversation thread.
|
|
17962
18049
|
- Use 'Re: <original subject>' as the subject.
|
|
17963
18050
|
- Quote the original email body in your reply (wrap it in a blockquote).
|
|
17964
18051
|
- The <EMAIL_ID> is the Alook email id from metadata.json (not the message_id header).
|
|
17965
|
-
- Example: '${cmdPrefix()} email send --
|
|
18052
|
+
- Example: '${cmdPrefix()} email send --to sender@example.com --subject "Re: Bug report" --body-file /tmp/reply.html --in-reply-to <EMAIL_ID>'
|
|
17966
18053
|
Tips:
|
|
17967
18054
|
- If you think the task will take a while, consider sending a short "I'm on it" style email reply first to reassure the sender.
|
|
17968
18055
|
---
|
|
17969
18056
|
|
|
17970
18057
|
#### Forwarding an email
|
|
17971
18058
|
Forward any email to a new recipient, with an optional note prepended above the original content. All original attachments are re-attached automatically.
|
|
17972
|
-
- Run '${cmdPrefix()} email forward --
|
|
18059
|
+
- Run '${cmdPrefix()} email forward --email_id <EMAIL_ID> --to <RECIPIENT>'
|
|
17973
18060
|
- Add '--note "FYI, see the request below."' to prepend a note above the forwarded body.
|
|
17974
18061
|
- Add '--from <YOUR_EMAIL_ADDRESS>' to send from a specific mailbox.
|
|
17975
18062
|
- Add '--attachment <PATH>' to attach extra files (repeatable).
|
|
17976
|
-
- Example: '${cmdPrefix()} email forward --
|
|
18063
|
+
- Example: '${cmdPrefix()} email forward --email_id em_abc --to boss@company.com --note "FYI" --attachment /tmp/summary.pdf'
|
|
17977
18064
|
---
|
|
17978
18065
|
|
|
17979
18066
|
#### Email Whitelist (Allowed Senders)
|
|
17980
18067
|
Manage which email addresses are allowed to send you emails.
|
|
17981
|
-
- List: '${cmdPrefix()} email whitelist list
|
|
17982
|
-
- Add: '${cmdPrefix()} email whitelist add
|
|
17983
|
-
- Remove: '${cmdPrefix()} email whitelist delete
|
|
18068
|
+
- List: '${cmdPrefix()} email whitelist list' (add '--json' for machine-readable output)
|
|
18069
|
+
- Add: '${cmdPrefix()} email whitelist add <EMAIL_ADDRESS>'
|
|
18070
|
+
- Remove: '${cmdPrefix()} email whitelist delete <EMAIL_ADDRESS>'
|
|
17984
18071
|
---
|
|
17985
18072
|
`;
|
|
17986
18073
|
}
|
|
@@ -17988,7 +18075,7 @@ Manage which email addresses are allowed to send you emails.
|
|
|
17988
18075
|
### Artifacts
|
|
17989
18076
|
Upload files for your owner to review in the app.
|
|
17990
18077
|
- Your current conversation id is available via env var: $ALOOK_CONVERSATION_ID
|
|
17991
|
-
- Run '${cmdPrefix()} sync upload-artifact --
|
|
18078
|
+
- Run '${cmdPrefix()} sync upload-artifact --conversation_id $ALOOK_CONVERSATION_ID --file <PATH>'
|
|
17992
18079
|
- Use this after generating plans, reports, or any file the owner should review.
|
|
17993
18080
|
- You response will be rendered in remote server, so don't output link format with local path in your response (cause user can click it and jump to nowheres)
|
|
17994
18081
|
- If you think user may need to know any file detail, use upload-artifact tool to send the file to user.
|
|
@@ -18010,26 +18097,26 @@ Schedule future tasks for yourself. At the scheduled time, a new task is dispatc
|
|
|
18010
18097
|
Keep the event title informative and concise, less than 20 words.
|
|
18011
18098
|
Place the event details in description.
|
|
18012
18099
|
Create a one-off event:
|
|
18013
|
-
- Run '${cmdPrefix()} calendar set --
|
|
18100
|
+
- Run '${cmdPrefix()} calendar set --event_title "<TASK_TITLE>" --description "<TASK_BODY>" --datetime <YYYY-MM-DDTHH:MM>'
|
|
18014
18101
|
- '--datetime' is LOCAL time, format 'YYYY-MM-DDTHH:MM' (e.g. '2026-04-17T09:30'). Do NOT pass UTC / ISO strings with 'Z'.
|
|
18015
18102
|
- '--event_title' becomes the task prompt when the event fires — write it as the instruction you want future-you to receive.
|
|
18016
18103
|
|
|
18017
18104
|
Create a repeating event:
|
|
18018
18105
|
- Add '--repeat <interval>' where interval is like '1day', '2hour', '1week', '1month'.
|
|
18019
18106
|
- Optionally add '--repeat_stop_date <YYYY-MM-DD>' to stop the recurrence (local date).
|
|
18020
|
-
- Example: '${cmdPrefix()} calendar set --
|
|
18107
|
+
- Example: '${cmdPrefix()} calendar set --event_title "<REPEAT_TASK_TITLE>" --description "<REPEAT_TASK_BODY>" --datetime 2026-04-18T09:00 --repeat 1day --repeat_stop_date 2026-05-18'
|
|
18021
18108
|
---
|
|
18022
18109
|
List upcoming events:
|
|
18023
|
-
- Run '${cmdPrefix()} calendar list
|
|
18110
|
+
- Run '${cmdPrefix()} calendar list' (defaults: next 30 days, past 0 days).
|
|
18024
18111
|
- Tune the window with '--future_days <N>' and '--past_days <N>'. Add '--json' for machine-readable output.
|
|
18025
18112
|
- 'list' shows a '[has description]' badge instead of the full description — use 'show' (below) to read it.
|
|
18026
18113
|
|
|
18027
18114
|
Show full detail of one event (use this to read the description):
|
|
18028
|
-
- Run '${cmdPrefix()} calendar show --
|
|
18115
|
+
- Run '${cmdPrefix()} calendar show --event_id <EVENT_ID>'
|
|
18029
18116
|
- Add '--json' for machine-readable output.
|
|
18030
18117
|
|
|
18031
18118
|
Edit an existing event (preserves event id and recurring state):
|
|
18032
|
-
- Run '${cmdPrefix()} calendar update --
|
|
18119
|
+
- Run '${cmdPrefix()} calendar update --event_id <EVENT_ID> [flags]'
|
|
18033
18120
|
- Supply only the fields you want to change. Available flags:
|
|
18034
18121
|
- '--event_title "<t>"' — rename the event / change the fire-time prompt
|
|
18035
18122
|
- '--description "<d>"' to set, or '--clear_description' to remove
|
|
@@ -18039,7 +18126,7 @@ Edit an existing event (preserves event id and recurring state):
|
|
|
18039
18126
|
- Passing no mutating flag is an error. Do NOT use 'delete' + 'set' to edit — that loses the event id and the recurring 'last fired' state.
|
|
18040
18127
|
|
|
18041
18128
|
Delete an event:
|
|
18042
|
-
- Run '${cmdPrefix()} calendar delete --
|
|
18129
|
+
- Run '${cmdPrefix()} calendar delete --event_id <EVENT_ID>'
|
|
18043
18130
|
---
|
|
18044
18131
|
`;
|
|
18045
18132
|
return content;
|
|
@@ -18073,13 +18160,26 @@ function ensureSymlinks(workDir) {
|
|
|
18073
18160
|
continue;
|
|
18074
18161
|
unlinkSync(aliasPath);
|
|
18075
18162
|
} else {
|
|
18163
|
+
const aliasContent = readFileSync(aliasPath, "utf-8");
|
|
18164
|
+
const canonicalContent = readFileSync(canonicalPath, "utf-8");
|
|
18165
|
+
if (aliasContent === canonicalContent)
|
|
18166
|
+
continue;
|
|
18076
18167
|
unlinkSync(aliasPath);
|
|
18077
18168
|
}
|
|
18078
18169
|
} catch (err) {
|
|
18079
18170
|
if (err?.code !== "ENOENT")
|
|
18080
18171
|
throw err;
|
|
18081
18172
|
}
|
|
18082
|
-
|
|
18173
|
+
try {
|
|
18174
|
+
symlinkSync(CANONICAL_FILE, aliasPath);
|
|
18175
|
+
} catch (err) {
|
|
18176
|
+
const code = err?.code;
|
|
18177
|
+
if (code === "EPERM" || code === "EACCES") {
|
|
18178
|
+
copyFileSync(canonicalPath, aliasPath);
|
|
18179
|
+
} else {
|
|
18180
|
+
throw err;
|
|
18181
|
+
}
|
|
18182
|
+
}
|
|
18083
18183
|
}
|
|
18084
18184
|
}
|
|
18085
18185
|
function writeInstructionFileIfChanged(workDir, task) {
|
|
@@ -18462,7 +18562,7 @@ function clearKillIntent(baseDir, taskId) {
|
|
|
18462
18562
|
// daemon/prompt.ts
|
|
18463
18563
|
var DM_RESPONSE_NOTICE = "IMPORTANT: Only your final text response is visible to the user." + " Tool calls, intermediate reasoning, and mid-process outputs are NOT displayed." + " Put all key information, answers, and conclusions in your final response — that is the only thing the user will read.";
|
|
18464
18564
|
var EMAIL_NOTICE = "This task was triggered automatically by an incoming email. There is no human in this session." + " If you need to communicate with a human, you MUST send an email using the email sending tool." + " If you need more information or confirmation from the human, send them an email asking for it and then exit." + " Do not wait — when the human replies, a new task will be triggered automatically and you will be woken up with their response.";
|
|
18465
|
-
var ISSUE_NOTICE = "This task was triggered by an assigned issue. The issue_id is provided in this message." + " Use `alook issue show --
|
|
18565
|
+
var ISSUE_NOTICE = "This task was triggered by an assigned issue. The issue_id is provided in this message." + " Use `alook issue show --issue_id <issue_id>` to read full context." + " Use `alook issue update --issue_id <issue_id> --status <status>` to change status." + " Use `alook issue comment --issue_id <issue_id> --body <text>` to leave a comment." + " CRITICAL — You MUST manage the issue status correctly. This is NOT optional:" + " 1. Set status to 'in_progress' when you start working." + " 2. If you complete the work yourself: leave a summary comment, then set status to 'review' as your last action. 'review' means there is actual completed work (code, artifact, result) ready for the owner to look at." + " 3. If you delegated work to colleagues and are waiting for their response: KEEP status as 'in_progress' and exit. This is expected — you will be woken up when they reply. Set 'review' only after all delegated work is confirmed complete." + " 4. NEVER set 'review' unless there is concrete completed work for the owner to review. Sending a plan to a colleague is NOT completed work." + " NEVER exit without doing at least one of: updating the status, or leaving a comment explaining what you did and what you're waiting for.";
|
|
18466
18566
|
function buildDmNotice(name, email3) {
|
|
18467
18567
|
return `This task was triggered by an incoming email on a conversation with ${name} (${email3}).` + ` ${name} is present in this session — reply to them directly.` + ` If you need to communicate with anyone else, use the email sending tool.`;
|
|
18468
18568
|
}
|
|
@@ -18515,17 +18615,59 @@ async function writeMarkerFile(workspacesRoot, marker) {
|
|
|
18515
18615
|
await writeFile(tmpPath, JSON.stringify(marker), { mode: 384 });
|
|
18516
18616
|
await rename(tmpPath, finalPath);
|
|
18517
18617
|
}
|
|
18618
|
+
function isRetryableError(e) {
|
|
18619
|
+
if (!(e instanceof Error))
|
|
18620
|
+
return true;
|
|
18621
|
+
const msg = e.message;
|
|
18622
|
+
if (/ECONNREFUSED|ECONNRESET|ETIMEDOUT|ENETUNREACH|EHOSTUNREACH|EAI_AGAIN/.test(msg))
|
|
18623
|
+
return true;
|
|
18624
|
+
const httpMatch = msg.match(/^HTTP (\d+):/);
|
|
18625
|
+
if (httpMatch) {
|
|
18626
|
+
const status = Number(httpMatch[1]);
|
|
18627
|
+
if (status >= 500)
|
|
18628
|
+
return true;
|
|
18629
|
+
if (status === 408 || status === 429)
|
|
18630
|
+
return true;
|
|
18631
|
+
return false;
|
|
18632
|
+
}
|
|
18633
|
+
return true;
|
|
18634
|
+
}
|
|
18635
|
+
function isClientError(e) {
|
|
18636
|
+
if (!(e instanceof Error))
|
|
18637
|
+
return false;
|
|
18638
|
+
const match = e.message.match(/^HTTP (\d+):/);
|
|
18639
|
+
if (!match)
|
|
18640
|
+
return false;
|
|
18641
|
+
const status = Number(match[1]);
|
|
18642
|
+
if (status === 408 || status === 429)
|
|
18643
|
+
return false;
|
|
18644
|
+
return status >= 400 && status < 500;
|
|
18645
|
+
}
|
|
18518
18646
|
async function reportToServer(fn, markerData, workspacesRoot) {
|
|
18519
|
-
|
|
18520
|
-
|
|
18521
|
-
|
|
18522
|
-
log4.warn(`server report failed for task ${markerData.taskId}, writing marker: ${e}`);
|
|
18647
|
+
const RETRY_DELAYS = [1000, 3000, 9000];
|
|
18648
|
+
let lastErr;
|
|
18649
|
+
for (let attempt = 0;attempt <= RETRY_DELAYS.length; attempt++) {
|
|
18523
18650
|
try {
|
|
18524
|
-
await
|
|
18525
|
-
|
|
18526
|
-
|
|
18651
|
+
await fn();
|
|
18652
|
+
return;
|
|
18653
|
+
} catch (e) {
|
|
18654
|
+
lastErr = e;
|
|
18655
|
+
if (isClientError(e)) {
|
|
18656
|
+
log4.info(`server report for task ${markerData.taskId}: task already in terminal state (${e})`);
|
|
18657
|
+
return;
|
|
18658
|
+
}
|
|
18659
|
+
if (attempt < RETRY_DELAYS.length && isRetryableError(e)) {
|
|
18660
|
+
log4.debug(`server report attempt ${attempt + 1} failed for task ${markerData.taskId}, retrying in ${RETRY_DELAYS[attempt]}ms`);
|
|
18661
|
+
await new Promise((r) => setTimeout(r, RETRY_DELAYS[attempt]));
|
|
18662
|
+
}
|
|
18527
18663
|
}
|
|
18528
18664
|
}
|
|
18665
|
+
log4.warn(`server report failed for task ${markerData.taskId} after retries, writing marker: ${lastErr}`);
|
|
18666
|
+
try {
|
|
18667
|
+
await writeMarkerFile(workspacesRoot, markerData);
|
|
18668
|
+
} catch (writeErr) {
|
|
18669
|
+
log4.error(`marker write also failed for task ${markerData.taskId}: ${writeErr}`);
|
|
18670
|
+
}
|
|
18529
18671
|
}
|
|
18530
18672
|
function sanitizeFilename(name) {
|
|
18531
18673
|
return path.basename(name).replace(/[/\\]/g, "_").replace(/\.\./g, "_").slice(0, 255) || "file";
|
|
@@ -18558,9 +18700,11 @@ async function runSession(input) {
|
|
|
18558
18700
|
log4.info(`starting (task=${task.id}, type=${task.type}, agent=${task.agentId}, provider=${provider}, model=${model || "default"})`);
|
|
18559
18701
|
const client = new DaemonClient(serverURL);
|
|
18560
18702
|
const backend = createBackend(provider, cliPath);
|
|
18561
|
-
const
|
|
18562
|
-
const
|
|
18703
|
+
const agentBaseDir = path.join(workspacesRoot, task.workspaceId, task.agentId, "workdir");
|
|
18704
|
+
const timelineDir = path.join(agentBaseDir, ".context_timeline").replace(/\\/g, "/");
|
|
18705
|
+
mkdirSync4(timelineDir, { recursive: true });
|
|
18563
18706
|
await initEntryAsync(timelineDir, createTimelineEntry(task.id, task.prompt, task.type, undefined, process.pid, provider, task.contextKey, input.logFilePath));
|
|
18707
|
+
const { workDir, env } = prepare({ workspacesRoot }, task);
|
|
18564
18708
|
let killed = false;
|
|
18565
18709
|
const earlyOnKill = async () => {
|
|
18566
18710
|
if (killed)
|
|
@@ -18615,7 +18759,7 @@ async function runSession(input) {
|
|
|
18615
18759
|
entry.status = "failed";
|
|
18616
18760
|
entry.errmsg = errMsg;
|
|
18617
18761
|
});
|
|
18618
|
-
await client.failTask(token, task.id, errMsg);
|
|
18762
|
+
await reportToServer(() => client.failTask(token, task.id, errMsg), { taskId: task.id, type: "fail", payload: { error: errMsg }, token, serverURL, createdAt: new Date().toISOString() }, workspacesRoot);
|
|
18619
18763
|
process.removeListener("SIGTERM", earlyOnKill);
|
|
18620
18764
|
process.removeListener("SIGINT", earlyOnKill);
|
|
18621
18765
|
return;
|
|
@@ -18828,6 +18972,12 @@ async function main() {
|
|
|
18828
18972
|
} catch (e) {
|
|
18829
18973
|
log4.error(`session-runner: unhandled error for task ${input.task.id}`, e);
|
|
18830
18974
|
await cleanupAttachments(input.task.id);
|
|
18975
|
+
const timelineDir = path.join(input.workspacesRoot, input.task.workspaceId, input.task.agentId, "workdir", ".context_timeline").replace(/\\/g, "/");
|
|
18976
|
+
updateEntry(timelineDir, input.task.id, (entry) => {
|
|
18977
|
+
entry.pid = null;
|
|
18978
|
+
entry.status = "failed";
|
|
18979
|
+
entry.errmsg = `session-runner crash: ${e}`;
|
|
18980
|
+
});
|
|
18831
18981
|
const errorMsg = `session-runner crash: ${e}`;
|
|
18832
18982
|
await reportToServer(() => client.failTask(input.token, input.task.id, errorMsg), { taskId: input.task.id, type: "fail", payload: { error: errorMsg }, token: input.token, serverURL: input.serverURL, createdAt: new Date().toISOString() }, input.workspacesRoot);
|
|
18833
18983
|
process.exit(1);
|
package/package.json
CHANGED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,949035,e=>{"use strict";let t=(0,e.i(406963).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);e.s(["Plus",0,t],949035)},208020,(e,t,r)=>{t.exports=e.r(170928)},406963,e=>{"use strict";var t=e.i(298699);let r=(...e)=>e.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim(),i=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,r)=>r?r.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var n={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let a=(0,t.createContext)({}),s=(0,t.forwardRef)(({color:e,size:i,strokeWidth:s,absoluteStrokeWidth:o,className:l="",children:d,iconNode:u,...c},f)=>{let{size:p=24,strokeWidth:g=2,absoluteStrokeWidth:m=!1,color:h="currentColor",className:v=""}=(0,t.useContext)(a)??{},b=o??m?24*Number(s??g)/Number(i??p):s??g;return(0,t.createElement)("svg",{ref:f,...n,width:i??p??n.width,height:i??p??n.height,stroke:e??h,strokeWidth:b,className:r("lucide",v,l),...!d&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(c)&&{"aria-hidden":"true"},...c},[...u.map(([e,r])=>(0,t.createElement)(e,r)),...Array.isArray(d)?d:[d]])});e.s(["default",0,(e,n)=>{let a=(0,t.forwardRef)(({className:a,...o},l)=>(0,t.createElement)(s,{ref:l,iconNode:n,className:r(`lucide-${i(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,a),...o}));return a.displayName=i(e),a}],406963)},616117,484665,e=>{"use strict";e.i(459119);var t=e.i(298699),r=e.i(92615),i=e.i(773825),n=e.i(389068),a=e.i(943891),s=e.i(398258);let o=t.createContext(void 0);function l(e=!1){let r=t.useContext(o);if(void 0===r&&!e)throw Error((0,s.default)(16));return r}function d(e){return(0,r.isHTMLElement)(e)&&"BUTTON"===e.tagName}e.s(["CompositeRootContext",0,o,"useCompositeRootContext",0,l],484665),e.s(["useButton",0,function(e={}){let{disabled:r=!1,focusableWhenDisabled:s,tabIndex:o=0,native:u=!0,composite:c}=e,f=t.useRef(null),p=l(!0),g=c??void 0!==p,{props:m}=function(e){let{focusableWhenDisabled:r,disabled:i,composite:n=!1,tabIndex:a=0,isNativeButton:s}=e,o=n&&!1!==r,l=n&&!1===r;return{props:t.useMemo(()=>{let e={onKeyDown(e){i&&r&&"Tab"!==e.key&&e.preventDefault()}};return n||(e.tabIndex=a,!s&&i&&(e.tabIndex=r?a:-1)),(s&&(r||o)||!s&&i)&&(e["aria-disabled"]=i),s&&(!r||l)&&(e.disabled=i),e},[n,i,r,o,l,s,a])}}({focusableWhenDisabled:s,disabled:r,composite:g,tabIndex:o,isNativeButton:u}),h=t.useCallback(()=>{let e=f.current;d(e)&&g&&r&&void 0===m.disabled&&e.disabled&&(e.disabled=!1)},[r,m.disabled,g]);return(0,n.useIsoLayoutEffect)(h,[h]),{getButtonProps:t.useCallback((e={})=>{let{onClick:t,onMouseDown:i,onKeyUp:n,onKeyDown:s,onPointerDown:o,...l}=e,c=u?"button":void 0;return(0,a.mergeProps)({type:c,onClick(e){r?e.preventDefault():t?.(e)},onMouseDown(e){r||i?.(e)},onKeyDown(e){var i;if(r||((0,a.makeEventPreventable)(e),s?.(e),e.baseUIHandlerPrevented))return;let n=e.target===e.currentTarget,o=e.currentTarget,l=d(o),c=!u&&(i=o,!!(i?.tagName==="A"&&i?.href)),f=n&&(u?l:!c),p="Enter"===e.key,m=" "===e.key,h=o.getAttribute("role"),v=h?.startsWith("menuitem")||"option"===h||"gridcell"===h;if(n&&g&&m){if(e.defaultPrevented&&v)return;e.preventDefault(),c||u&&l?(o.click(),e.preventBaseUIHandler()):f&&(t?.(e),e.preventBaseUIHandler());return}f&&(!u&&(m||p)&&e.preventDefault(),!u&&p&&t?.(e))},onKeyUp(e){r||(((0,a.makeEventPreventable)(e),n?.(e),e.target===e.currentTarget&&u&&g&&d(e.currentTarget)&&" "===e.key)?e.preventDefault():!e.baseUIHandlerPrevented&&(e.target!==e.currentTarget||u||g||" "!==e.key||t?.(e)))},onPointerDown(e){r?e.preventDefault():o?.(e)}},u?void 0:{role:"button"},m,l)},[r,m,g,u]),buttonRef:(0,i.useStableCallback)(e=>{f.current=e,h()})}}],616117)},294237,e=>{"use strict";var t=e.i(7284);let r=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,i=t.clsx;e.s(["cva",0,(e,t)=>n=>{var a;if((null==t?void 0:t.variants)==null)return i(e,null==n?void 0:n.class,null==n?void 0:n.className);let{variants:s,defaultVariants:o}=t,l=Object.keys(s).map(e=>{let t=null==n?void 0:n[e],i=null==o?void 0:o[e];if(null===t)return null;let a=r(t)||r(i);return s[e][a]}),d=n&&Object.entries(n).reduce((e,t)=>{let[r,i]=t;return void 0===i||(e[r]=i),e},{});return i(e,l,null==t||null==(a=t.compoundVariants)?void 0:a.reduce((e,t)=>{let{class:r,className:i,...n}=t;return Object.entries(n).every(e=>{let[t,r]=e;return Array.isArray(r)?r.includes({...o,...d}[t]):({...o,...d})[t]===r})?[...e,r,i]:e},[]),null==n?void 0:n.class,null==n?void 0:n.className)}])},186339,e=>{"use strict";var t=e.i(368075);e.i(459119);var r=e.i(298699),i=e.i(616117),n=e.i(597849);let a=r.forwardRef(function(e,t){let{render:r,className:a,disabled:s=!1,focusableWhenDisabled:o=!1,nativeButton:l=!0,style:d,...u}=e,{getButtonProps:c,buttonRef:f}=(0,i.useButton)({disabled:s,focusableWhenDisabled:o,native:l});return(0,n.useRenderElement)("button",e,{state:{disabled:s},ref:[t,f],props:[u,c]})});var s=e.i(294237),o=e.i(613349);let l=(0,s.cva)("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});e.s(["Button",0,function({className:e,variant:r="default",size:i="default",...n}){return(0,t.jsx)(a,{"data-slot":"button",className:(0,o.cn)(l({variant:r,size:i,className:e})),...n})},"buttonVariants",0,l],186339)},70738,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return n}});let i=e.r(298699);function n(e,t){let r=(0,i.useRef)(null),n=(0,i.useRef)(null);return(0,i.useCallback)(i=>{if(null===i){let e=r.current;e&&(r.current=null,e());let t=n.current;t&&(n.current=null,t())}else e&&(r.current=a(e,i)),t&&(n.current=a(t,i))},[e,t])}function a(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},934351,e=>{"use strict";var t=e.i(368075),r=e.i(613349);e.s(["Card",0,function({className:e,size:i="default",...n}){return(0,t.jsx)("div",{"data-slot":"card","data-size":i,className:(0,r.cn)("group/card flex flex-col gap-4 overflow-hidden rounded-xl bg-card py-4 text-sm text-card-foreground ring-1 ring-foreground/10 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",e),...n})},"CardAction",0,function({className:e,...i}){return(0,t.jsx)("div",{"data-slot":"card-action",className:(0,r.cn)("col-start-2 row-span-2 row-start-1 self-start justify-self-end",e),...i})},"CardContent",0,function({className:e,...i}){return(0,t.jsx)("div",{"data-slot":"card-content",className:(0,r.cn)("px-4 group-data-[size=sm]/card:px-3",e),...i})},"CardHeader",0,function({className:e,...i}){return(0,t.jsx)("div",{"data-slot":"card-header",className:(0,r.cn)("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3",e),...i})},"CardTitle",0,function({className:e,...i}){return(0,t.jsx)("div",{"data-slot":"card-title",className:(0,r.cn)("font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",e),...i})}])},821752,(e,t,r)=>{"use strict";function i({widthInt:e,heightInt:t,blurWidth:r,blurHeight:n,blurDataURL:a,objectFit:s}){let o=r?40*r:e,l=n?40*n:t,d=o&&l?`viewBox='0 0 ${o} ${l}'`:"";return`%3Csvg xmlns='http://www.w3.org/2000/svg' ${d}%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='${d?"none":"contain"===s?"xMidYMid":"cover"===s?"xMidYMid slice":"none"}' style='filter: url(%23b);' href='${a}'/%3E%3C/svg%3E`}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getImageBlurSvg",{enumerable:!0,get:function(){return i}})},498074,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var i={VALID_LOADERS:function(){return a},imageConfigDefault:function(){return s}};for(var n in i)Object.defineProperty(r,n,{enumerable:!0,get:i[n]});let a=["default","imgix","cloudinary","akamai","custom"],s={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:14400,formats:["image/webp"],maximumDiskCacheSize:void 0,maximumRedirects:3,maximumResponseBody:5e7,dangerouslyAllowLocalIP:!1,dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"attachment",localPatterns:void 0,remotePatterns:[],qualities:[75],unoptimized:!1,customCacheHandler:!1}},355477,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getImgProps",{enumerable:!0,get:function(){return d}}),e.r(611134);let i=e.r(641894),n=e.r(821752),a=e.r(498074),s=["-moz-initial","fill","none","scale-down",void 0];function o(e){return void 0!==e.default}function l(e){return void 0===e?e:"number"==typeof e?Number.isFinite(e)?e:NaN:"string"==typeof e&&/^[0-9]+$/.test(e)?parseInt(e,10):NaN}function d({src:e,sizes:t,unoptimized:r=!1,priority:u=!1,preload:c=!1,loading:f,className:p,quality:g,width:m,height:h,fill:v=!1,style:b,overrideSrc:x,onLoad:y,onLoadingComplete:w,placeholder:j="empty",blurDataURL:_,fetchPriority:C,decoding:k="async",layout:P,objectFit:O,objectPosition:z,lazyBoundary:E,lazyRoot:S,...R},N){var M;let I,D,A,{imgConf:T,showAltText:$,blurComplete:L,defaultLoader:U}=N,B=T||a.imageConfigDefault;if("allSizes"in B)I=B;else{let e=[...B.deviceSizes,...B.imageSizes].sort((e,t)=>e-t),t=B.deviceSizes.sort((e,t)=>e-t),r=B.qualities?.sort((e,t)=>e-t);I={...B,allSizes:e,deviceSizes:t,qualities:r}}if(void 0===U)throw Object.defineProperty(Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"),"__NEXT_ERROR_CODE",{value:"E163",enumerable:!1,configurable:!0});let W=R.loader||U;delete R.loader,delete R.srcSet;let q="__next_img_default"in W;if(q){if("custom"===I.loader)throw Object.defineProperty(Error(`Image with src "${e}" is missing "loader" prop.
|
|
2
|
-
Read more: https://nextjs.org/docs/messages/next-image-missing-loader`),"__NEXT_ERROR_CODE",{value:"E252",enumerable:!1,configurable:!0})}else{let e=W;W=t=>{let{config:r,...i}=t;return e(i)}}if(P){"fill"===P&&(v=!0);let e={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[P];e&&(b={...b,...e});let r={responsive:"100vw",fill:"100vw"}[P];r&&!t&&(t=r)}let F="",H=l(m),G=l(h);if((M=e)&&"object"==typeof M&&(o(M)||void 0!==M.src)){let t=o(e)?e.default:e;if(!t.src)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E460",enumerable:!1,configurable:!0});if(!t.height||!t.width)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E48",enumerable:!1,configurable:!0});if(D=t.blurWidth,A=t.blurHeight,_=_||t.blurDataURL,F=t.src,!v)if(H||G){if(H&&!G){let e=H/t.width;G=Math.round(t.height*e)}else if(!H&&G){let e=G/t.height;H=Math.round(t.width*e)}}else H=t.width,G=t.height}let V=!u&&!c&&("lazy"===f||void 0===f);(!(e="string"==typeof e?e:F)||e.startsWith("data:")||e.startsWith("blob:"))&&(r=!0,V=!1),I.unoptimized&&(r=!0),q&&!I.dangerouslyAllowSVG&&e.split("?",1)[0].endsWith(".svg")&&(r=!0);let K=l(g),X=Object.assign(v?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:O,objectPosition:z}:{},$?{}:{color:"transparent"},b),J=L||"empty"===j?null:"blur"===j?`url("data:image/svg+xml;charset=utf-8,${(0,n.getImageBlurSvg)({widthInt:H,heightInt:G,blurWidth:D,blurHeight:A,blurDataURL:_||"",objectFit:X.objectFit})}")`:`url("${j}")`,Q=s.includes(X.objectFit)?"fill"===X.objectFit?"100% 100%":"cover":X.objectFit,Y=J?{backgroundSize:Q,backgroundPosition:X.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:J}:{},Z=function({config:e,src:t,unoptimized:r,width:n,quality:a,sizes:s,loader:o}){if(r){if(t.startsWith("/")&&!t.startsWith("//")){let e=(0,i.getDeploymentId)();if(e){let r=t.indexOf("?");if(-1!==r){let i=new URLSearchParams(t.slice(r+1));i.get("dpl")||(i.append("dpl",e),t=t.slice(0,r)+"?"+i.toString())}else t+=`?dpl=${e}`}}return{src:t,srcSet:void 0,sizes:void 0}}let{widths:l,kind:d}=function({deviceSizes:e,allSizes:t},r,i){if(i){let r=/(^|\s)(1?\d?\d)vw/g,n=[];for(let e;e=r.exec(i);)n.push(parseInt(e[2]));if(n.length){let r=.01*Math.min(...n);return{widths:t.filter(t=>t>=e[0]*r),kind:"w"}}return{widths:t,kind:"w"}}return"number"!=typeof r?{widths:e,kind:"w"}:{widths:[...new Set([r,2*r].map(e=>t.find(t=>t>=e)||t[t.length-1]))],kind:"x"}}(e,n,s),u=l.length-1;return{sizes:s||"w"!==d?s:"100vw",srcSet:l.map((r,i)=>`${o({config:e,src:t,quality:a,width:r})} ${"w"===d?r:i+1}${d}`).join(", "),src:o({config:e,src:t,quality:a,width:l[u]})}}({config:I,src:e,unoptimized:r,width:H,quality:K,sizes:t,loader:W}),ee=V?"lazy":f;return{props:{...R,loading:ee,fetchPriority:C,width:H,height:G,decoding:k,className:p,style:{...X,...Y},sizes:Z.sizes,srcSet:Z.srcSet,src:x||Z.src},meta:{unoptimized:r,preload:c||u,placeholder:j,fill:v}}}},477847,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return o}});let i=e.r(298699),n="u"<typeof window,a=n?()=>{}:i.useLayoutEffect,s=n?()=>{}:i.useEffect;function o(e){let{headManager:t,reduceComponentsToState:r}=e;function o(){if(t&&t.mountedInstances){let e=i.Children.toArray(Array.from(t.mountedInstances).filter(Boolean));t.updateHead(r(e))}}return n&&(t?.mountedInstances?.add(e.children),o()),a(()=>(t?.mountedInstances?.add(e.children),()=>{t?.mountedInstances?.delete(e.children)})),a(()=>(t&&(t._pendingUpdate=o),()=>{t&&(t._pendingUpdate=o)})),s(()=>(t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null),()=>{t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null)})),null}},769049,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var i={default:function(){return m},defaultHead:function(){return c}};for(var n in i)Object.defineProperty(r,n,{enumerable:!0,get:i[n]});let a=e.r(481258),s=e.r(744066),o=e.r(368075),l=s._(e.r(298699)),d=a._(e.r(477847)),u=e.r(951024);function c(){return[(0,o.jsx)("meta",{charSet:"utf-8"},"charset"),(0,o.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")]}function f(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===l.default.Fragment?e.concat(l.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}e.r(611134);let p=["name","httpEquiv","charSet","itemProp"];function g(e){let t,r,i,n;return e.reduce(f,[]).reverse().concat(c().reverse()).filter((t=new Set,r=new Set,i=new Set,n={},e=>{let a=!0,s=!1;if(e.key&&"number"!=typeof e.key&&e.key.indexOf("$")>0){s=!0;let r=e.key.slice(e.key.indexOf("$")+1);t.has(r)?a=!1:t.add(r)}switch(e.type){case"title":case"base":r.has(e.type)?a=!1:r.add(e.type);break;case"meta":for(let t=0,r=p.length;t<r;t++){let r=p[t];if(e.props.hasOwnProperty(r))if("charSet"===r)i.has(r)?a=!1:i.add(r);else{let t=e.props[r],i=n[r]||new Set;("name"!==r||!s)&&i.has(t)?a=!1:(i.add(t),n[r]=i)}}}return a})).reverse().map((e,t)=>{let r=e.key||t;return l.default.cloneElement(e,{key:r})})}let m=function({children:e}){let t=(0,l.useContext)(u.HeadManagerContext);return(0,o.jsx)(d.default,{reduceComponentsToState:g,headManager:t,children:e})};("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},703694,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ImageConfigContext",{enumerable:!0,get:function(){return a}});let i=e.r(481258)._(e.r(298699)),n=e.r(498074),a=i.default.createContext(n.imageConfigDefault)},507585,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"RouterContext",{enumerable:!0,get:function(){return i}});let i=e.r(481258)._(e.r(298699)).default.createContext(null)},246955,(e,t,r)=>{"use strict";function i(e,t){let r=e||75;return t?.qualities?.length?t.qualities.reduce((e,t)=>Math.abs(t-r)<Math.abs(e-r)?t:e,t.qualities[0]):r}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"findClosestQuality",{enumerable:!0,get:function(){return i}})},107475,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return s}});let i=e.r(246955),n=e.r(641894);function a({config:e,src:t,width:r,quality:s}){let o=(0,n.getDeploymentId)();if(t.startsWith("/")&&!t.startsWith("//")){let e=t.indexOf("?");if(-1!==e){let r=new URLSearchParams(t.slice(e+1)),i=r.get("dpl");if(i){o=i,r.delete("dpl");let n=r.toString();t=t.slice(0,e)+(n?"?"+n:"")}}}if(t.startsWith("/")&&t.includes("?")&&e.localPatterns?.length===1&&"**"===e.localPatterns[0].pathname&&""===e.localPatterns[0].search)throw Object.defineProperty(Error(`Image with src "${t}" is using a query string which is not configured in images.localPatterns.
|
|
3
|
-
Read more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`),"__NEXT_ERROR_CODE",{value:"E871",enumerable:!1,configurable:!0});let l=(0,i.findClosestQuality)(s,e);return`${e.path}?url=${encodeURIComponent(t)}&w=${r}&q=${l}${t.startsWith("/")&&o?`&dpl=${o}`:""}`}a.__next_img_default=!0;let s=a},730145,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"Image",{enumerable:!0,get:function(){return y}});let i=e.r(481258),n=e.r(744066),a=e.r(368075),s=n._(e.r(298699)),o=i._(e.r(550008)),l=i._(e.r(769049)),d=e.r(355477),u=e.r(498074),c=e.r(703694);e.r(611134);let f=e.r(507585),p=i._(e.r(107475)),g=e.r(70738),m={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1};function h(e,t,r,i,n,a,s){let o=e?.src;e&&e["data-loaded-src"]!==o&&(e["data-loaded-src"]=o,("decode"in e?e.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(e.parentElement&&e.isConnected){if("empty"!==t&&n(!0),r?.current){let t=new Event("load");Object.defineProperty(t,"target",{writable:!1,value:e});let i=!1,n=!1;r.current({...t,nativeEvent:t,currentTarget:e,target:e,isDefaultPrevented:()=>i,isPropagationStopped:()=>n,persist:()=>{},preventDefault:()=>{i=!0,t.preventDefault()},stopPropagation:()=>{n=!0,t.stopPropagation()}})}i?.current&&i.current(e)}}))}function v(e){return s.use?{fetchPriority:e}:{fetchpriority:e}}"u"<typeof window&&(globalThis.__NEXT_IMAGE_IMPORTED=!0);let b=(0,s.forwardRef)(({src:e,srcSet:t,sizes:r,height:i,width:n,decoding:o,className:l,style:d,fetchPriority:u,placeholder:c,loading:f,unoptimized:p,fill:m,onLoadRef:b,onLoadingCompleteRef:x,setBlurComplete:y,setShowAltText:w,sizesInput:j,onLoad:_,onError:C,...k},P)=>{let O=(0,s.useCallback)(e=>{e&&(C&&(e.src=e.src),e.complete&&h(e,c,b,x,y,p,j))},[e,c,b,x,y,C,p,j]),z=(0,g.useMergedRef)(P,O);return(0,a.jsx)("img",{...k,...v(u),loading:f,width:n,height:i,decoding:o,"data-nimg":m?"fill":"1",className:l,style:d,sizes:r,srcSet:t,src:e,ref:z,onLoad:e=>{h(e.currentTarget,c,b,x,y,p,j)},onError:e=>{w(!0),"empty"!==c&&y(!0),C&&C(e)}})});function x({isAppRouter:e,imgAttributes:t}){let r={as:"image",imageSrcSet:t.srcSet,imageSizes:t.sizes,crossOrigin:t.crossOrigin,referrerPolicy:t.referrerPolicy,...v(t.fetchPriority)};return e&&o.default.preload?(o.default.preload(t.src,r),null):(0,a.jsx)(l.default,{children:(0,a.jsx)("link",{rel:"preload",href:t.srcSet?void 0:t.src,...r},"__nimg-"+t.src+t.srcSet+t.sizes)})}let y=(0,s.forwardRef)((e,t)=>{let r=(0,s.useContext)(f.RouterContext),i=(0,s.useContext)(c.ImageConfigContext),n=(0,s.useMemo)(()=>{let e=m||i||u.imageConfigDefault,t=[...e.deviceSizes,...e.imageSizes].sort((e,t)=>e-t),r=e.deviceSizes.sort((e,t)=>e-t),n=e.qualities?.sort((e,t)=>e-t);return{...e,allSizes:t,deviceSizes:r,qualities:n,localPatterns:"u"<typeof window?i?.localPatterns:e.localPatterns}},[i]),{onLoad:o,onLoadingComplete:l}=e,g=(0,s.useRef)(o);(0,s.useEffect)(()=>{g.current=o},[o]);let h=(0,s.useRef)(l);(0,s.useEffect)(()=>{h.current=l},[l]);let[v,y]=(0,s.useState)(!1),[w,j]=(0,s.useState)(!1),{props:_,meta:C}=(0,d.getImgProps)(e,{defaultLoader:p.default,imgConf:n,blurComplete:v,showAltText:w});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(b,{..._,unoptimized:C.unoptimized,placeholder:C.placeholder,fill:C.fill,onLoadRef:g,onLoadingCompleteRef:h,setBlurComplete:y,setShowAltText:j,sizesInput:e.sizes,ref:t}),C.preload?(0,a.jsx)(x,{isAppRouter:!r,imgAttributes:_}):null]})});("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},851287,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var i={default:function(){return u},getImageProps:function(){return d}};for(var n in i)Object.defineProperty(r,n,{enumerable:!0,get:i[n]});let a=e.r(481258),s=e.r(355477),o=e.r(730145),l=a._(e.r(107475));function d(e){let{props:t}=(0,s.getImgProps)(e,{defaultLoader:l.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1}});for(let[e,r]of Object.entries(t))void 0===r&&delete t[e];return{props:t}}let u=o.Image},736956,(e,t,r)=>{t.exports=e.r(851287)},866519,e=>{"use strict";let t=(0,e.i(406963).default)("log-out",[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]]);e.s(["LogOut",0,t],866519)},898707,e=>{"use strict";var t=e.i(368075);e.s(["GradientBackground",0,function(){return(0,t.jsx)("div",{"aria-hidden":!0,className:"pointer-events-none fixed inset-0 -z-10 overflow-hidden bg-[oklch(0.93_0.015_80)] dark:bg-transparent"})}])},643486,e=>{"use strict";var t=e.i(368075),r=e.i(298699),i=e.i(635790),n=e.i(736956),a=e.i(613349);let s={sm:{icon:28,text:"text-2xl"},lg:{icon:36,text:"text-4xl"}};e.s(["Logo",0,function({size:e="sm",className:o,iconOnly:l=!1}){let{icon:d,text:u}=s[e],{resolvedTheme:c,setTheme:f}=(0,i.useTheme)(),[p,g]=(0,r.useState)(!1),m=(0,r.useRef)(g);return(0,r.useEffect)(()=>{m.current(!0)},[]),(0,t.jsxs)("button",{type:"button",onClick:()=>{f("dark"===c?"light":"dark")},"aria-label":"Toggle theme",className:(0,a.cn)("flex items-center gap-1.5 cursor-pointer select-none transition-opacity hover:opacity-70",o),children:[p?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.default,{src:"/alook.svg",alt:"Alook",width:d,height:d,className:"dark:hidden"}),(0,t.jsx)(n.default,{src:"/alook-dark.svg",alt:"Alook",width:d,height:d,className:"hidden dark:block"})]}):(0,t.jsx)("span",{style:{width:d,height:d}}),!l&&(0,t.jsx)("span",{className:(0,a.cn)(u,"font-black tracking-tight"),style:{fontFamily:"var(--font-brand)"},children:"Alook"})]})}])},12338,e=>{"use strict";var t=e.i(368075),r=e.i(208020),i=e.i(186339),n=e.i(934351),a=e.i(898707),s=e.i(643486),o=e.i(949035);let l=(0,e.i(406963).default)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);var d=e.i(866519),u=e.i(23055);e.s(["WorkspaceListClient",0,function({workspaces:e}){let c=(0,r.useRouter)();return(0,t.jsxs)("div",{className:"relative flex min-h-dvh flex-col items-center justify-center p-6",children:[(0,t.jsx)(a.GradientBackground,{}),(0,t.jsxs)(i.Button,{variant:"ghost",size:"sm",className:"absolute top-4 right-4 text-muted-foreground",onClick:async()=>{await (0,u.signOut)(),c.push("/sign-in")},children:[(0,t.jsx)(d.LogOut,{className:"size-4"}),"Log out"]}),(0,t.jsxs)("div",{className:"w-full max-w-md space-y-8",children:[(0,t.jsxs)("div",{className:"flex flex-col items-center gap-3",children:[(0,t.jsx)(s.Logo,{size:"lg"}),(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Choose a workspace to continue."})]}),(0,t.jsx)("div",{className:"space-y-3",children:e.map(e=>(0,t.jsx)(n.Card,{className:"cursor-pointer transition-colors duration-200 hover:bg-accent/50",onClick:()=>c.push(`/w/${e.slug}/home`),children:(0,t.jsxs)(n.CardContent,{className:"flex items-center justify-between px-3 py-1.5",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,t.jsx)("p",{className:"text-sm font-medium truncate",children:e.name}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:e.slug})]}),(0,t.jsx)(l,{className:"size-3.5 text-muted-foreground shrink-0"})]})},e.id))}),(0,t.jsxs)(i.Button,{variant:"outline",className:"w-full",onClick:()=>c.push("/studio/new"),children:[(0,t.jsx)(o.Plus,{className:"size-4"}),"New workspace"]})]})]})}],12338)}]);
|