@mndrk/agx 2.0.55 → 2.0.56
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 +5 -0
- package/cloud-runtime/standalone/apps/local/.next/BUILD_ID +1 -1
- package/cloud-runtime/standalone/apps/local/.next/app-path-routes-manifest.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/prerender-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/required-server-files.json +5 -0
- package/cloud-runtime/standalone/apps/local/.next/routes-manifest.json +8 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.html +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/agent-specs/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/export/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/automations/create/route.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/automations/create/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/daemon/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/file-search/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/graphs/[graphId]/nodes/[nodeId]/route.js +3 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/graphs/[graphId]/nodes/[nodeId]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/scripted/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/status/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/participants/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.js +17 -7
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/search/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js +13 -13
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/check/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/debug/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/poll/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/route.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/assign/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/available/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/detail/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/history/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/learn/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/unlearn/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/status/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/summarize/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/extract/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/knowledge/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page/react-loadable-manifest.json +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.rsc +5 -5
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_full.segment.rsc +5 -5
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_tree.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/automations/__PAGE__.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/automations.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/board/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/board/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/board.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/execution-graph/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/execution-graph.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/folders/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/folders.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page/react-loadable-manifest.json +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/build-manifest.json +18 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/next-font-manifest.json +11 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/react-loadable-manifest.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/server-reference-manifest.json +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js +14 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js.map +5 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page_client-reference-manifest.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page/react-loadable-manifest.json +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects/orphans/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects/orphans.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/settings.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/skills.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/status/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/status/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/thread/[id]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/thread/[id]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app-paths-manifest.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__09joc_o._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0g50c6p._.js +237 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0o315az._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0t2jk2r._.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0tdixb0._.js +49 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0gvjvx7._.js → [root-of-the-server]__0xdp_8-._.js} +25 -25
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0y42h_~._.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0~fjhfa._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/_12yasaj._.js +9 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_processor_ts_022nz2u._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_processor_ts_0i1av_r._.js +11 -10
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0yvelwy.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/02dz_local__next-internal_server_app_projects_[slug]_folders_page_actions_03fg4j9.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_0qzjdog._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_icons_0a-mbbj._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_icons_0e2_v_.._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_icons_0w3hl3p._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__07johgg._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__08d5c~o._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0_n~ybp._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0fl7_-o._.js +18 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0h~rb5r._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0r3w68h._.js +18 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0x7k~pk._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{[root-of-the-server]__0hd2vo4._.js → [root-of-the-server]__0y8j6el._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0yme9fy._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0~7q5sw._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__13eqcxp._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{_0s~0ump._.js → _064h43p._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0742x_.._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{_09b42z9._.js → _09~glsn._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ejzn1e._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0fwy5tm._.js +7 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ndrb_0._.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0sjchy6._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ufdu.z._.js +7 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{_03rf_sb._.js → _0wk3skw._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0yffwm4._.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_03z24q2._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_04hvzn_._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0_4hk8x._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0_ac-.f._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0a-8i4p._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0h3mfm7._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0nvzo3y._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_11k_-8~._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_execution-graph_page_tsx_0tn2sx9._.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_folders_page_tsx_0ju618z._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_graph_[taskId]_page_tsx_0bctfd-._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_layout_tsx_0aaa3~t._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_linear_page_tsx_0a~n5y8._.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_page_tsx_0kcaeqi._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_page_tsx_06czvz-._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_terminal_page_tsx_01n9qk.._.js +12 -12
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_orphans_page_tsx_0sdv.11._.js +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_TaskCard_tsx_0e35_z5._.js +6 -6
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_chat-ui_ChatContainer_tsx_0c9fjtl._.js +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_projects_ProjectObjectivesWorkspace_tsx_0k4tfip._.js +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_thread_WorkspaceSidebar_tsx_0unv2xp._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0mk0s0o.js +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/middleware-build-manifest.js +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/middleware-manifest.json +5 -5
- package/cloud-runtime/standalone/apps/local/.next/server/next-font-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/next-font-manifest.json +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/pages/404.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/pages/500.html +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0-_ukhpeg429c.js +16 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0-olq~7zw3wjy.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0142ce0jj3j7r.js → 0-vo_x2cxmjm3.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0.4d8rshxivwh.js +20 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{1011~1x9nj4ny.js → 00lise4d-u8d1.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0~apd0q5_i88z.js → 02p3n7faotpr9.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/02zcxdul-1jaf.js +28 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/055bzj5jfgzr0.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/05c-~4v_jrblf.css +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/07646a0h94826.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/08~pgzjb13k_v.js +5 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/09wzd7y~tk-3~.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0px65ynyk3t1d.js → 0bchtyu6m.2yv.js} +7 -7
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0brmd4~76pthy.js +20 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0f7i3ae1ynhf3.css +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0.a4-dh~x9sa3.js → 0hudzktaaxr4g.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{09-_2lcshmjl5.js → 0hzq698w6f4m6.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0i.su2yr26wb6.js +37 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0jonp-o8lh-4j.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0jsbvcyub73d9.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0l2pt2td_87wr.js +5 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0l3v45kd.9is_.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0lgb.0~i1xvv-.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0lkal3uvr6_~2.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0mvqoz13v0o2a.js +5 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0o9cxba_5mv2c.js +5 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0p7s38p3bcffh.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0q2dgbluvgxf2.js +16 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0r0c9y6.8.m5p.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0h_bwlg~kk8lz.js → 0rey9zfvm3yhd.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ucg8e2wkd8gf.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0uve8xrt~0a2e.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0x_pewz9npq~q.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0xwny92a.ad_i.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0ov5lu0tz2o2e.js → 104xjvrf6y-zq.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0rm7v.1y6qcni.js → 11-u35xqxu~i-.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/14v~9vx3tdv85.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0826uh6nmsi5l.js → 1503vb7lb6.g1.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0o0hwfzwwty4b.js → 15jlly_p-g4c8.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/16nozeadjid9-.js +5 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/177-q0wwdi0qe.js +1 -0
- package/cloud-runtime/standalone/apps/local/agx-server.js +4055 -0
- package/cloud-runtime/standalone/apps/local/app/api/automations/route.ts +10 -2
- package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.ts +16 -0
- package/cloud-runtime/standalone/apps/local/app/api/prompt-jobs/route.ts +8 -1
- package/cloud-runtime/standalone/apps/local/app/globals.css +67 -5
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/folders/page.tsx +25 -0
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/layout.tsx +19 -5
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/objectives/[objectiveId]/page.tsx +7 -2
- package/cloud-runtime/standalone/apps/local/bundled-server.ts +45 -0
- package/cloud-runtime/standalone/apps/local/components/ActionToolbar.tsx +5 -2
- package/cloud-runtime/standalone/apps/local/components/AutomationsBoard.tsx +35 -3
- package/cloud-runtime/standalone/apps/local/components/ContextMenu.tsx +2 -2
- package/cloud-runtime/standalone/apps/local/components/FloatingPanel.tsx +36 -14
- package/cloud-runtime/standalone/apps/local/components/IconButton.tsx +10 -2
- package/cloud-runtime/standalone/apps/local/components/KanbanBoard.tsx +84 -3
- package/cloud-runtime/standalone/apps/local/components/LinearBoard.tsx +382 -13
- package/cloud-runtime/standalone/apps/local/components/LogTimeline.tsx +4 -1
- package/cloud-runtime/standalone/apps/local/components/NowRunningPanel.tsx +3 -1
- package/cloud-runtime/standalone/apps/local/components/PromptJobBoard.tsx +46 -6
- package/cloud-runtime/standalone/apps/local/components/SearchCombo.tsx +3 -3
- package/cloud-runtime/standalone/apps/local/components/SortableTaskCard.tsx +21 -3
- package/cloud-runtime/standalone/apps/local/components/StatusCircle.tsx +3 -3
- package/cloud-runtime/standalone/apps/local/components/TaskCard.tsx +51 -1
- package/cloud-runtime/standalone/apps/local/components/chat-ui/ChatContainer.tsx +15 -2
- package/cloud-runtime/standalone/apps/local/components/chat-ui/Composer.tsx +3 -3
- package/cloud-runtime/standalone/apps/local/components/chat-ui/ParticipantBar.tsx +76 -9
- package/cloud-runtime/standalone/apps/local/components/graph/ExecutionGraphPanel.tsx +4 -1
- package/cloud-runtime/standalone/apps/local/components/graph/GraphFirstView.tsx +6 -2
- package/cloud-runtime/standalone/apps/local/components/graph/NodeDetailPanel.tsx +29 -14
- package/cloud-runtime/standalone/apps/local/components/graph/NodeInspector.tsx +9 -6
- package/cloud-runtime/standalone/apps/local/components/projects/FoldersSummaryCard.tsx +16 -16
- package/cloud-runtime/standalone/apps/local/components/projects/FoldersView.tsx +856 -0
- package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveActivityTimeline.tsx +40 -32
- package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveScheduledTasksPanel.tsx +172 -49
- package/cloud-runtime/standalone/apps/local/components/projects/ProjectHome.tsx +4 -4
- package/cloud-runtime/standalone/apps/local/components/projects/ProjectObjectivesWorkspace.tsx +347 -168
- package/cloud-runtime/standalone/apps/local/components/projects/ProjectSearchBar.tsx +4 -2
- package/cloud-runtime/standalone/apps/local/components/projects/ScheduledTasksSummaryCard.tsx +19 -19
- package/cloud-runtime/standalone/apps/local/components/projects/TeamsSummaryCard.tsx +10 -10
- package/cloud-runtime/standalone/apps/local/components/projects/TeamsView.tsx +50 -50
- package/cloud-runtime/standalone/apps/local/components/projects/WorkingNowCard.tsx +12 -12
- package/cloud-runtime/standalone/apps/local/components/projects/home/ObjectiveCard.tsx +13 -10
- package/cloud-runtime/standalone/apps/local/components/projects/home/ObjectivesSection.tsx +7 -7
- package/cloud-runtime/standalone/apps/local/components/projects/home/ToolPathCard.tsx +2 -2
- package/cloud-runtime/standalone/apps/local/components/projects/home/ToolPathsSection.tsx +9 -9
- package/cloud-runtime/standalone/apps/local/components/scheduling/ScheduleConditionPicker.tsx +3 -3
- package/cloud-runtime/standalone/apps/local/components/terminal/ProjectTerminal.tsx +211 -77
- package/cloud-runtime/standalone/apps/local/components/terminal/TerminalSessionList.tsx +3 -1
- package/cloud-runtime/standalone/apps/local/components/thread/WorkspaceSidebar.tsx +72 -21
- package/cloud-runtime/standalone/apps/local/hooks/useInputCapabilities.ts +74 -0
- package/cloud-runtime/standalone/apps/local/lib/app-config.ts +35 -0
- package/cloud-runtime/standalone/apps/local/lib/pty-manager.ts +5 -1
- package/cloud-runtime/standalone/apps/local/lib/terminal-server.ts +182 -0
- package/cloud-runtime/standalone/apps/local/next.config.ts +2 -1
- package/cloud-runtime/standalone/apps/local/package.json +2 -2
- package/cloud-runtime/standalone/apps/local/playwright.config.ts +8 -0
- package/cloud-runtime/standalone/apps/local/server.js +1 -1
- package/cloud-runtime/standalone/apps/local/server.ts +14 -158
- package/cloud-runtime/standalone/apps/local/src/graph/types.ts +2 -0
- package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/cron.ts +11 -0
- package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/processor.ts +325 -88
- package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/types.ts +20 -0
- package/cloud-runtime/standalone/apps/local/state/windowState.ts +11 -0
- package/cloud-runtime/standalone/apps/local/styles/workspaceSidebar.css +65 -0
- package/cloud-runtime/standalone/apps/local/worker/index.js +0 -4
- package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/darwin-arm64/pty.node +0 -0
- package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/darwin-arm64/spawn-helper +0 -0
- package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/darwin-x64/pty.node +0 -0
- package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/darwin-x64/spawn-helper +0 -0
- package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty/OpenConsole.exe +0 -0
- package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty/conpty.dll +0 -0
- package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty.node +0 -0
- package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty.pdb +0 -0
- package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.node +0 -0
- package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.pdb +0 -0
- package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/pty.node +0 -0
- package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/pty.pdb +0 -0
- package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/winpty-agent.exe +0 -0
- package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/winpty-agent.pdb +0 -0
- package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/winpty.dll +0 -0
- package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-arm64/winpty.pdb +0 -0
- package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
- package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty/conpty.dll +0 -0
- package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty.node +0 -0
- package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty.pdb +0 -0
- package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
- package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.pdb +0 -0
- package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/pty.node +0 -0
- package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/pty.pdb +0 -0
- package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/winpty-agent.exe +0 -0
- package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/winpty-agent.pdb +0 -0
- package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/winpty.dll +0 -0
- package/cloud-runtime/standalone/node_modules/node-pty/prebuilds/win32-x64/winpty.pdb +0 -0
- package/lib/cli/daemon.js +13 -2
- package/lib/cli/onboarding.js +5 -6
- package/lib/cli/runCli.js +1 -1
- package/lib/cloud/client.js +1 -1
- package/lib/commands/chat.js +37 -11
- package/lib/commands/daemonBoard.js +19 -13
- package/lib/config/cloudConfig.js +1 -1
- package/lib/orchestrator/httpClient.js +1 -1
- package/lib/prompts/templates.js +8 -9
- package/package.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__01ol22y._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__088h0r2._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__094z9yf._.js +0 -9
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0avz575._.js +0 -49
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0xxf2a0.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_0xd_mxu._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__044xm0q._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__066ay_e._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__09smg3p._.js +0 -18
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0iix1sf._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0r54zr9._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0s8z2_c._.js +0 -18
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0w1mm2j._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0wq3ukc._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__13h-0om._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_03-mlx0._.js +0 -7
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ag3.tl._.js +0 -7
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0dh_hx0._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0h8cbsi._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0i1ffhz._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0nlki7b._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0_q01av._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0eh.4j7._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0qaowqy._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0s0iy2_._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0zr-_na._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_10qsqky._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0.bv3h68wo33z.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/016.x9zt9~rsh.js +0 -16
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/027-6dwgpb0cy.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/031720jijg_th.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/03m1xs0rztynh.js +0 -16
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/07o~9mm~xds_b.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/08zgoptetnxjj.css +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/09_yj-9nfh48m.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/09c7ssmgohk7l.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0awbe2r3qazge.css +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0dro-bz6f72z0.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0gbunx8z.~i4x.js +0 -5
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ge81r~ap.u7n.js +0 -28
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ghg5160qeazw.js +0 -5
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0gl_8hdxl5qnd.js +0 -37
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0g~v8p6_pc46-.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0jb4f8425s.-2.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0kukkarp4un0o.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0m.2b-cekea8b.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0pt8_y9asrg~7.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0wyg4lymaq0hg.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0xl~1ux2f~rcu.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0y7-eze-w7~b4.js +0 -5
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0y8e--tok1214.js +0 -5
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0yy~0bgsz~o6-.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/100xrwo-45nrg.js +0 -20
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/14h3qxwuo~1q9.js +0 -20
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/17oesq5eds3xi.js +0 -1
- /package/cloud-runtime/standalone/apps/local/.next/static/{z8XjY2Aj-ox_Dro192i4I → fPVnk_kTRzrxXr7U3TRFW}/_buildManifest.js +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/static/{z8XjY2Aj-ox_Dro192i4I → fPVnk_kTRzrxXr7U3TRFW}/_clientMiddlewareManifest.js +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/static/{z8XjY2Aj-ox_Dro192i4I → fPVnk_kTRzrxXr7U3TRFW}/_ssgManifest.js +0 -0
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
} from '@/src/automations';
|
|
9
9
|
import type { GraphSchedule } from '@/src/graph/types';
|
|
10
10
|
import { resolveAutomationTitle } from '@/lib/project-overview-titles';
|
|
11
|
+
import { computePrevRun } from '@/src/prompt-scheduler/cron';
|
|
11
12
|
|
|
12
13
|
export const runtime = 'nodejs';
|
|
13
14
|
export const dynamic = 'force-dynamic';
|
|
@@ -35,6 +36,13 @@ export interface AutomationItem {
|
|
|
35
36
|
updatedAt: string;
|
|
36
37
|
}
|
|
37
38
|
|
|
39
|
+
function enrichPrevScheduledAt(item: AutomationItem): AutomationItem {
|
|
40
|
+
const cronExpr = item.schedule.cronExpr ?? item.schedule.cadence;
|
|
41
|
+
if (!cronExpr) return item;
|
|
42
|
+
const prevScheduledAt = computePrevRun(cronExpr) ?? undefined;
|
|
43
|
+
return { ...item, schedule: { ...item.schedule, prevScheduledAt } };
|
|
44
|
+
}
|
|
45
|
+
|
|
38
46
|
/**
|
|
39
47
|
* GET /api/automations
|
|
40
48
|
* Lists all graphs that have schedules (active, paused, or stopped).
|
|
@@ -107,7 +115,7 @@ export async function GET(request: NextRequest) {
|
|
|
107
115
|
));
|
|
108
116
|
return NextResponse.json({
|
|
109
117
|
count: automations.length,
|
|
110
|
-
automations,
|
|
118
|
+
automations: automations.map(enrichPrevScheduledAt),
|
|
111
119
|
});
|
|
112
120
|
}
|
|
113
121
|
}
|
|
@@ -150,7 +158,7 @@ export async function GET(request: NextRequest) {
|
|
|
150
158
|
|
|
151
159
|
return NextResponse.json({
|
|
152
160
|
count: automations.length,
|
|
153
|
-
automations,
|
|
161
|
+
automations: automations.map(enrichPrevScheduledAt),
|
|
154
162
|
});
|
|
155
163
|
} catch (error) {
|
|
156
164
|
console.error('Failed to list automations:', error);
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
readNullableString,
|
|
13
13
|
readOptionalString,
|
|
14
14
|
} from "../../_shared";
|
|
15
|
+
import { requestPromptJobPump } from "@/src/prompt-scheduler/processor";
|
|
15
16
|
|
|
16
17
|
export const runtime = "nodejs";
|
|
17
18
|
export const dynamic = "force-dynamic";
|
|
@@ -120,6 +121,16 @@ export async function POST(request: NextRequest, context: RouteContext) {
|
|
|
120
121
|
);
|
|
121
122
|
}
|
|
122
123
|
|
|
124
|
+
if (!objectiveContext.objective.teamId) {
|
|
125
|
+
return NextResponse.json(
|
|
126
|
+
{
|
|
127
|
+
error:
|
|
128
|
+
"Assign a team to this objective before creating scheduled tasks.",
|
|
129
|
+
},
|
|
130
|
+
{ status: 400 }
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
|
|
123
134
|
const store = getPromptJobStore();
|
|
124
135
|
const job = store.createJob({
|
|
125
136
|
name: title,
|
|
@@ -173,6 +184,11 @@ export async function POST(request: NextRequest, context: RouteContext) {
|
|
|
173
184
|
return NextResponse.json({ error: "Project not found" }, { status: 404 });
|
|
174
185
|
}
|
|
175
186
|
|
|
187
|
+
// Kick off the first run immediately so the user doesn't have to wait
|
|
188
|
+
// for the next cron tick.
|
|
189
|
+
store.createRun(job.id);
|
|
190
|
+
requestPromptJobPump();
|
|
191
|
+
|
|
176
192
|
return NextResponse.json({ job, objective: nextObjective }, { status: 201 });
|
|
177
193
|
} catch (error) {
|
|
178
194
|
console.error("Failed to create objective scheduled task:", error);
|
|
@@ -2,6 +2,7 @@ import { NextRequest, NextResponse } from 'next/server';
|
|
|
2
2
|
import { getPromptJobStore } from '@/src/prompt-scheduler/get-store';
|
|
3
3
|
import {
|
|
4
4
|
computeNextRun,
|
|
5
|
+
computePrevRun,
|
|
5
6
|
normalizeLegacyConditionSchedule,
|
|
6
7
|
parseCadence,
|
|
7
8
|
} from '@/src/prompt-scheduler/cron';
|
|
@@ -78,7 +79,13 @@ export async function GET(req: NextRequest) {
|
|
|
78
79
|
}
|
|
79
80
|
}
|
|
80
81
|
|
|
81
|
-
|
|
82
|
+
const enriched = jobs.map((job) => {
|
|
83
|
+
const cronExpr = job.cronExpr || job.cadence;
|
|
84
|
+
const prevScheduledAt = cronExpr ? computePrevRun(cronExpr) : null;
|
|
85
|
+
return { ...job, prevScheduledAt };
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
return NextResponse.json({ count: enriched.length, jobs: enriched });
|
|
82
89
|
} catch (error) {
|
|
83
90
|
console.error('Failed to list prompt jobs:', error);
|
|
84
91
|
return NextResponse.json(
|
|
@@ -109,6 +109,20 @@
|
|
|
109
109
|
--app-shell-border-strong: rgba(0, 0, 0, 0.1); /* black/10 */
|
|
110
110
|
--app-shell-muted: #64748b; /* slate-500 */
|
|
111
111
|
--app-shell-soft-text: #94a3b8; /* slate-400 */
|
|
112
|
+
|
|
113
|
+
/* Overlay/tinted surfaces */
|
|
114
|
+
--overlay-panel: rgba(255, 255, 255, 0.82);
|
|
115
|
+
--overlay-panel-strong: rgba(255, 255, 255, 0.96);
|
|
116
|
+
--overlay-panel-soft: rgba(248, 250, 252, 0.88);
|
|
117
|
+
--overlay-panel-muted: rgba(241, 245, 249, 0.88);
|
|
118
|
+
|
|
119
|
+
/* Neutral chips and timeline */
|
|
120
|
+
--tone-neutral: #64748b;
|
|
121
|
+
--tone-neutral-border: rgba(148, 163, 184, 0.28);
|
|
122
|
+
--tone-neutral-bg: rgba(148, 163, 184, 0.14);
|
|
123
|
+
--timeline-track: rgba(148, 163, 184, 0.3);
|
|
124
|
+
--timeline-node-border: rgba(148, 163, 184, 0.42);
|
|
125
|
+
--timeline-node-bg: #ffffff;
|
|
112
126
|
}
|
|
113
127
|
|
|
114
128
|
.dark {
|
|
@@ -178,6 +192,20 @@
|
|
|
178
192
|
--app-shell-border-strong: #4f4f4f;
|
|
179
193
|
--app-shell-muted: #858585;
|
|
180
194
|
--app-shell-soft-text: #6e6e6e;
|
|
195
|
+
|
|
196
|
+
/* Overlay/tinted surfaces */
|
|
197
|
+
--overlay-panel: rgba(8, 12, 18, 0.72);
|
|
198
|
+
--overlay-panel-strong: rgba(6, 10, 16, 0.96);
|
|
199
|
+
--overlay-panel-soft: rgba(15, 23, 42, 0.55);
|
|
200
|
+
--overlay-panel-muted: rgba(15, 23, 42, 0.32);
|
|
201
|
+
|
|
202
|
+
/* Neutral chips and timeline */
|
|
203
|
+
--tone-neutral: #a1a1aa;
|
|
204
|
+
--tone-neutral-border: rgba(113, 113, 122, 0.8);
|
|
205
|
+
--tone-neutral-bg: rgba(82, 82, 91, 0.55);
|
|
206
|
+
--timeline-track: rgba(39, 39, 42, 0.9);
|
|
207
|
+
--timeline-node-border: rgba(82, 82, 91, 0.9);
|
|
208
|
+
--timeline-node-bg: #131315;
|
|
181
209
|
}
|
|
182
210
|
|
|
183
211
|
body {
|
|
@@ -649,15 +677,15 @@ select:focus-visible {
|
|
|
649
677
|
/* ========================================
|
|
650
678
|
Responsive Utilities
|
|
651
679
|
======================================== */
|
|
680
|
+
.touch-target {
|
|
681
|
+
min-height: 44px;
|
|
682
|
+
min-width: 44px;
|
|
683
|
+
}
|
|
684
|
+
|
|
652
685
|
@media (max-width: 768px) {
|
|
653
686
|
.hide-mobile {
|
|
654
687
|
display: none;
|
|
655
688
|
}
|
|
656
|
-
|
|
657
|
-
.touch-target {
|
|
658
|
-
min-height: 44px;
|
|
659
|
-
min-width: 44px;
|
|
660
|
-
}
|
|
661
689
|
}
|
|
662
690
|
|
|
663
691
|
@media (min-width: 769px) {
|
|
@@ -1184,6 +1212,10 @@ select:focus-visible {
|
|
|
1184
1212
|
width: 360px;
|
|
1185
1213
|
}
|
|
1186
1214
|
|
|
1215
|
+
.node-inspector--touch {
|
|
1216
|
+
width: 100%;
|
|
1217
|
+
}
|
|
1218
|
+
|
|
1187
1219
|
.node-inspector__resize-handle {
|
|
1188
1220
|
position: absolute;
|
|
1189
1221
|
top: 0;
|
|
@@ -1681,6 +1713,12 @@ select:focus-visible {
|
|
|
1681
1713
|
gap: 1rem;
|
|
1682
1714
|
}
|
|
1683
1715
|
|
|
1716
|
+
.execution-graph-panel__controls--touch .react-flow__controls-button {
|
|
1717
|
+
width: 2.75rem;
|
|
1718
|
+
height: 2.75rem;
|
|
1719
|
+
font-size: 0.9rem;
|
|
1720
|
+
}
|
|
1721
|
+
|
|
1684
1722
|
.graph-sidebar-section__toggle {
|
|
1685
1723
|
display: flex;
|
|
1686
1724
|
align-items: center;
|
|
@@ -2106,6 +2144,13 @@ select:focus-visible {
|
|
|
2106
2144
|
transform: translateX(0);
|
|
2107
2145
|
}
|
|
2108
2146
|
|
|
2147
|
+
.node-detail-panel--touch {
|
|
2148
|
+
left: 0;
|
|
2149
|
+
width: 100%;
|
|
2150
|
+
max-width: 100%;
|
|
2151
|
+
border-left: 0;
|
|
2152
|
+
}
|
|
2153
|
+
|
|
2109
2154
|
.node-detail-panel__resize-handle {
|
|
2110
2155
|
position: absolute;
|
|
2111
2156
|
top: 0;
|
|
@@ -2636,6 +2681,23 @@ select:focus-visible {
|
|
|
2636
2681
|
}
|
|
2637
2682
|
}
|
|
2638
2683
|
|
|
2684
|
+
@media (hover: none), (pointer: coarse) {
|
|
2685
|
+
[data-touch-target="true"] {
|
|
2686
|
+
min-width: 44px;
|
|
2687
|
+
min-height: 44px;
|
|
2688
|
+
}
|
|
2689
|
+
|
|
2690
|
+
.execution-graph-panel__controls .react-flow__controls-button {
|
|
2691
|
+
width: 2.75rem;
|
|
2692
|
+
height: 2.75rem;
|
|
2693
|
+
}
|
|
2694
|
+
|
|
2695
|
+
.node-detail-panel__resize-handle,
|
|
2696
|
+
.node-inspector__resize-handle {
|
|
2697
|
+
display: none;
|
|
2698
|
+
}
|
|
2699
|
+
}
|
|
2700
|
+
|
|
2639
2701
|
/* ========================================
|
|
2640
2702
|
Terminal/Code Display
|
|
2641
2703
|
======================================== */
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { use } from "react";
|
|
4
|
+
import { FoldersView } from "@/components/projects/FoldersView";
|
|
5
|
+
import { useProjectsWithAgents } from "@/hooks/useProjects";
|
|
6
|
+
|
|
7
|
+
export default function FoldersPage({
|
|
8
|
+
params,
|
|
9
|
+
}: {
|
|
10
|
+
params: Promise<{ slug: string }>;
|
|
11
|
+
}) {
|
|
12
|
+
const { slug } = use(params);
|
|
13
|
+
const { projects } = useProjectsWithAgents();
|
|
14
|
+
const project = projects.find((p) => p.slug === slug);
|
|
15
|
+
|
|
16
|
+
if (!project) {
|
|
17
|
+
return (
|
|
18
|
+
<div className="flex items-center justify-center h-full text-sm text-zinc-500">
|
|
19
|
+
Loading...
|
|
20
|
+
</div>
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return <FoldersView projectId={project.id} />;
|
|
25
|
+
}
|
|
@@ -3,10 +3,11 @@
|
|
|
3
3
|
import { Suspense, use, useCallback, useEffect, useMemo, useState } from "react";
|
|
4
4
|
import { usePathname } from "next/navigation";
|
|
5
5
|
import { useRouter } from "next/navigation";
|
|
6
|
-
import { ArrowLeft, Sun, Moon } from "lucide-react";
|
|
6
|
+
import { ArrowLeft, PanelLeftOpen, Sun, Moon } from "lucide-react";
|
|
7
7
|
import { StatusIndicator } from "@/components/chat-ui/StatusIndicator";
|
|
8
8
|
import { ProjectSearchBar } from "@/components/projects/ProjectSearchBar";
|
|
9
9
|
import { WorkspaceSidebar } from "@/components/thread/WorkspaceSidebar";
|
|
10
|
+
import { useInputCapabilities } from "@/hooks/useInputCapabilities";
|
|
10
11
|
import { useProjectsWithAgents } from "@/hooks/useProjects";
|
|
11
12
|
import { useThreadState } from "@/hooks/useThreadState";
|
|
12
13
|
import type { Participant } from "@/lib/types";
|
|
@@ -27,6 +28,7 @@ function ProjectLayoutContent({
|
|
|
27
28
|
params: Promise<{ slug: string }>;
|
|
28
29
|
}) {
|
|
29
30
|
const { slug } = use(params);
|
|
31
|
+
const { isTouchLayout } = useInputCapabilities();
|
|
30
32
|
const router = useRouter();
|
|
31
33
|
const pathname = usePathname();
|
|
32
34
|
const {
|
|
@@ -87,7 +89,7 @@ function ProjectLayoutContent({
|
|
|
87
89
|
const match = pathname.match(/\/projects\/[^/]+\/thread\/([^/]+)/);
|
|
88
90
|
return match?.[1] ? decodeURIComponent(match[1]) : currentProject?.thread_ids[0] ?? null;
|
|
89
91
|
}, [currentProject?.thread_ids, pathname]);
|
|
90
|
-
const activeProjectView = useMemo<"home" | "objectives" | "teams" | "thread" | "knowledge" | "automations" | "linear" | "terminal" | "settings" | "env-vars">(
|
|
92
|
+
const activeProjectView = useMemo<"home" | "objectives" | "teams" | "thread" | "knowledge" | "automations" | "linear" | "terminal" | "settings" | "env-vars" | "folders">(
|
|
91
93
|
() => {
|
|
92
94
|
if (pathname.includes("/linear")) return "linear";
|
|
93
95
|
if (pathname.includes("/automations")) return "automations";
|
|
@@ -95,6 +97,7 @@ function ProjectLayoutContent({
|
|
|
95
97
|
if (pathname.includes("/knowledge")) return "knowledge";
|
|
96
98
|
if (pathname.includes("/objectives")) return "objectives";
|
|
97
99
|
if (pathname.includes("/teams")) return "teams";
|
|
100
|
+
if (pathname.includes("/folders")) return "folders";
|
|
98
101
|
if (pathname.includes("/env-vars")) return "env-vars";
|
|
99
102
|
if (pathname.includes("/terminal")) return "terminal";
|
|
100
103
|
if (pathname.includes("/settings")) return "settings";
|
|
@@ -189,6 +192,17 @@ function ProjectLayoutContent({
|
|
|
189
192
|
<div className="flex items-center px-4 py-2 border-b border-[var(--app-shell-border)] bg-[var(--background)] shrink-0">
|
|
190
193
|
{/* Left: back + breadcrumb */}
|
|
191
194
|
<div className="flex items-center gap-1.5 min-w-0 flex-shrink-0">
|
|
195
|
+
{!sidebarVisible && (
|
|
196
|
+
<button
|
|
197
|
+
type="button"
|
|
198
|
+
onClick={toggleSidebar}
|
|
199
|
+
className="inline-flex h-9 w-9 items-center justify-center rounded-xl border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] text-[var(--muted-foreground)] transition-colors hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)]"
|
|
200
|
+
title="Show sidebar"
|
|
201
|
+
aria-label="Show sidebar"
|
|
202
|
+
>
|
|
203
|
+
<PanelLeftOpen className="h-4 w-4" />
|
|
204
|
+
</button>
|
|
205
|
+
)}
|
|
192
206
|
{pathname !== `/projects/${slug}` && (
|
|
193
207
|
<button
|
|
194
208
|
type="button"
|
|
@@ -213,7 +227,7 @@ function ProjectLayoutContent({
|
|
|
213
227
|
onClick={() => router.push(`/projects/${slug}/${activeProjectView === "thread" ? "" : activeProjectView}`)}
|
|
214
228
|
className="text-xs text-[var(--foreground)] hover:text-[var(--muted-foreground)] transition-colors"
|
|
215
229
|
>
|
|
216
|
-
{{ objectives: "Objectives", teams: "Teams", "env-vars": "Environment Variables", linear: "Linear", automations: "Scheduled Tasks", thread: "Chat", knowledge: "Knowledge", terminal: "Terminal", settings: "Settings" }[activeProjectView] ?? activeProjectView}
|
|
230
|
+
{{ objectives: "Objectives", teams: "Teams", folders: "Folders", "env-vars": "Environment Variables", linear: "Linear", automations: "Scheduled Tasks", thread: "Chat", knowledge: "Knowledge", terminal: "Terminal", settings: "Settings" }[activeProjectView] ?? activeProjectView}
|
|
217
231
|
</button>
|
|
218
232
|
<span id="topbar-breadcrumb" className="contents" />
|
|
219
233
|
</>
|
|
@@ -233,9 +247,9 @@ function ProjectLayoutContent({
|
|
|
233
247
|
onClick={() => setTheme((t) => (t === "dark" ? "light" : "dark"))}
|
|
234
248
|
aria-label={theme === "dark" ? "Switch to light theme" : "Switch to dark theme"}
|
|
235
249
|
title={theme === "dark" ? "Switch to light theme" : "Switch to dark theme"}
|
|
236
|
-
className=
|
|
250
|
+
className={`inline-flex items-center justify-center rounded-lg text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)] ${isTouchLayout ? "h-9 w-9" : "h-7 w-7"}`}
|
|
237
251
|
>
|
|
238
|
-
{theme === "dark" ? <Sun className="h-3.5 w-3.5" /> : <Moon className="h-3.5 w-3.5" />}
|
|
252
|
+
{theme === "dark" ? <Sun className={isTouchLayout ? "h-4 w-4" : "h-3.5 w-3.5"} /> : <Moon className={isTouchLayout ? "h-4 w-4" : "h-3.5 w-3.5"} />}
|
|
239
253
|
</button>
|
|
240
254
|
</div>
|
|
241
255
|
</div>
|
package/cloud-runtime/standalone/apps/local/app/projects/[slug]/objectives/[objectiveId]/page.tsx
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import { use } from "react";
|
|
4
|
-
import {
|
|
4
|
+
import { ProjectObjectivesOverview } from "@/components/projects/ProjectObjectivesWorkspace";
|
|
5
5
|
|
|
6
6
|
export default function ProjectObjectiveDetailPage({
|
|
7
7
|
params,
|
|
@@ -10,5 +10,10 @@ export default function ProjectObjectiveDetailPage({
|
|
|
10
10
|
}) {
|
|
11
11
|
const { slug, objectiveId } = use(params);
|
|
12
12
|
|
|
13
|
-
return
|
|
13
|
+
return (
|
|
14
|
+
<ProjectObjectivesOverview
|
|
15
|
+
projectSlug={slug}
|
|
16
|
+
initialObjectiveId={objectiveId}
|
|
17
|
+
/>
|
|
18
|
+
);
|
|
14
19
|
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import http from "http";
|
|
2
|
+
import https from "https";
|
|
3
|
+
import path from "path";
|
|
4
|
+
import type { IncomingMessage, Server as HttpServer } from "http";
|
|
5
|
+
import type { Duplex } from "stream";
|
|
6
|
+
import { createTerminalServerBridge } from "./lib/terminal-server";
|
|
7
|
+
|
|
8
|
+
const PATCHED_SERVER = Symbol.for("agx.terminalBridgePatched");
|
|
9
|
+
|
|
10
|
+
type PatchedServer = HttpServer & {
|
|
11
|
+
emit: HttpServer["emit"];
|
|
12
|
+
[PATCHED_SERVER]?: boolean;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
function installTerminalBridge(server: PatchedServer): PatchedServer {
|
|
16
|
+
if (server[PATCHED_SERVER]) {
|
|
17
|
+
return server;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
server[PATCHED_SERVER] = true;
|
|
21
|
+
const terminalBridge = createTerminalServerBridge(server);
|
|
22
|
+
const originalEmit = server.emit.bind(server);
|
|
23
|
+
|
|
24
|
+
server.emit = ((event: string, ...args: unknown[]) => {
|
|
25
|
+
if (event === "upgrade") {
|
|
26
|
+
const [req, socket, head] = args as [IncomingMessage, Duplex, Buffer];
|
|
27
|
+
if (terminalBridge.handleUpgrade(req, socket, head)) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return originalEmit(event, ...args);
|
|
32
|
+
}) as HttpServer["emit"];
|
|
33
|
+
|
|
34
|
+
return server;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const originalHttpCreateServer = http.createServer.bind(http);
|
|
38
|
+
http.createServer = ((...args: Parameters<typeof http.createServer>) =>
|
|
39
|
+
installTerminalBridge(originalHttpCreateServer(...args) as PatchedServer)) as typeof http.createServer;
|
|
40
|
+
|
|
41
|
+
const originalHttpsCreateServer = https.createServer.bind(https);
|
|
42
|
+
https.createServer = ((...args: Parameters<typeof https.createServer>) =>
|
|
43
|
+
installTerminalBridge(originalHttpsCreateServer(...args) as PatchedServer)) as typeof https.createServer;
|
|
44
|
+
|
|
45
|
+
require(path.join(__dirname, "server.js"));
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React, { forwardRef } from 'react';
|
|
2
|
+
import { useInputCapabilities } from "@/hooks/useInputCapabilities";
|
|
2
3
|
|
|
3
4
|
export interface ActionToolbarProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
4
5
|
// A wrapper for group-hover revealed actions
|
|
@@ -6,12 +7,14 @@ export interface ActionToolbarProps extends React.HTMLAttributes<HTMLDivElement>
|
|
|
6
7
|
|
|
7
8
|
export const ActionToolbar = forwardRef<HTMLDivElement, ActionToolbarProps>(
|
|
8
9
|
({ children, className = '', ...props }, ref) => {
|
|
9
|
-
const
|
|
10
|
+
const { isTouchLayout } = useInputCapabilities();
|
|
11
|
+
const visibilityClasses = isTouchLayout ? "opacity-100" : "opacity-0 group-hover:opacity-100";
|
|
12
|
+
const baseClasses = `absolute top-4 right-4 flex items-center gap-1 ${visibilityClasses} transition-opacity duration-200 bg-[var(--app-shell-elevated)] border border-[var(--app-shell-border)] shadow-md rounded-lg p-1 z-10 backdrop-blur-sm`;
|
|
10
13
|
|
|
11
14
|
const classes = `${baseClasses} ${className}`.trim();
|
|
12
15
|
|
|
13
16
|
return (
|
|
14
|
-
<div ref={ref} className={classes} {...props}>
|
|
17
|
+
<div ref={ref} className={classes} data-touch-visible={isTouchLayout ? "true" : undefined} {...props}>
|
|
15
18
|
{children}
|
|
16
19
|
</div>
|
|
17
20
|
);
|
|
@@ -32,6 +32,25 @@ function formatCadence(schedule: GraphSchedule): string {
|
|
|
32
32
|
return `Every ${Math.round(ms / 86_400_000)}d`;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
+
function isScheduleOverdue(schedule: GraphSchedule): boolean {
|
|
36
|
+
if (schedule.state !== "active" || schedule.tickInProgress) return false;
|
|
37
|
+
// Case 1: next tick is in the past and hasn't run yet
|
|
38
|
+
if (schedule.nextTickAt) {
|
|
39
|
+
if (schedule.nextTickAt - Date.now() >= 0) return false;
|
|
40
|
+
if (schedule.lastTickAt && schedule.lastTickAt >= schedule.nextTickAt) {
|
|
41
|
+
// Task ran, but check if it ran late vs previous scheduled time
|
|
42
|
+
if (schedule.prevScheduledAt && schedule.lastTickAt > schedule.prevScheduledAt + 5 * 60_000) {
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
// Case 2: interval-based — check if overdue
|
|
50
|
+
if (schedule.lastTickAt) return schedule.lastTickAt + schedule.intervalMs - Date.now() < 0;
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
|
|
35
54
|
function formatNextRun(schedule: GraphSchedule): string {
|
|
36
55
|
if (schedule.state === "paused") return "Paused";
|
|
37
56
|
if (schedule.state === "stopped") return "Stopped";
|
|
@@ -262,6 +281,7 @@ export default function AutomationsBoard() {
|
|
|
262
281
|
const isSelected = selectedId === item.taskId;
|
|
263
282
|
const hasFails =
|
|
264
283
|
(item.schedule.consecutiveFailures ?? 0) > 0;
|
|
284
|
+
const overdue = isScheduleOverdue(item.schedule);
|
|
265
285
|
const isRunning = busy[item.taskId];
|
|
266
286
|
|
|
267
287
|
return (
|
|
@@ -273,6 +293,8 @@ export default function AutomationsBoard() {
|
|
|
273
293
|
? "border-[var(--foreground)] shadow-sm"
|
|
274
294
|
: hasFails
|
|
275
295
|
? "border-red-200 bg-red-50/30 hover:border-red-300"
|
|
296
|
+
: overdue
|
|
297
|
+
? "border-amber-500/40 bg-amber-500/5 hover:border-amber-500/60"
|
|
276
298
|
: "border-[var(--card-border)] bg-[var(--card-bg)] hover:border-[var(--card-hover-border)]"
|
|
277
299
|
}`}
|
|
278
300
|
>
|
|
@@ -298,6 +320,12 @@ export default function AutomationsBoard() {
|
|
|
298
320
|
paused
|
|
299
321
|
</span>
|
|
300
322
|
)}
|
|
323
|
+
{overdue && (
|
|
324
|
+
<span className="shrink-0 text-[11px] font-medium text-amber-400 bg-amber-500/10 px-2 py-0.5 rounded-md border border-amber-500/20 flex items-center gap-1">
|
|
325
|
+
<Clock size={10} />
|
|
326
|
+
overdue
|
|
327
|
+
</span>
|
|
328
|
+
)}
|
|
301
329
|
</div>
|
|
302
330
|
{item.schedule.description && (
|
|
303
331
|
<p className="text-[13px] text-[var(--muted-foreground)] leading-relaxed truncate">
|
|
@@ -339,7 +367,7 @@ export default function AutomationsBoard() {
|
|
|
339
367
|
<Clock size={12} />{" "}
|
|
340
368
|
{formatCadence(item.schedule)}
|
|
341
369
|
</span>
|
|
342
|
-
<span className=
|
|
370
|
+
<span className={`flex items-center gap-1.5 ${overdue ? "text-amber-400 font-medium" : ""}`}>
|
|
343
371
|
<CalIcon size={12} />{" "}
|
|
344
372
|
{formatNextRun(item.schedule)}
|
|
345
373
|
</span>
|
|
@@ -563,8 +591,12 @@ function ScheduleInspector({
|
|
|
563
591
|
total runs
|
|
564
592
|
</div>
|
|
565
593
|
</div>
|
|
566
|
-
<div className=
|
|
567
|
-
|
|
594
|
+
<div className={`rounded-xl p-3 flex flex-col items-center justify-center border ${
|
|
595
|
+
isScheduleOverdue(schedule)
|
|
596
|
+
? "bg-amber-500/10 border-amber-500/30"
|
|
597
|
+
: "bg-[var(--muted)] border-[var(--card-border)]"
|
|
598
|
+
}`}>
|
|
599
|
+
<div className={`font-mono text-lg font-semibold mb-0.5 ${isScheduleOverdue(schedule) ? "text-amber-400" : ""}`}>
|
|
568
600
|
{formatNextRun(schedule)}
|
|
569
601
|
</div>
|
|
570
602
|
<div className="text-[10px] text-[var(--muted-foreground)]">
|
|
@@ -56,10 +56,10 @@ export function ContextMenu({ items, children }: ContextMenuProps) {
|
|
|
56
56
|
}
|
|
57
57
|
};
|
|
58
58
|
|
|
59
|
-
document.addEventListener("
|
|
59
|
+
document.addEventListener("pointerdown", handleClickOutside);
|
|
60
60
|
document.addEventListener("keydown", handleKeyDown);
|
|
61
61
|
return () => {
|
|
62
|
-
document.removeEventListener("
|
|
62
|
+
document.removeEventListener("pointerdown", handleClickOutside);
|
|
63
63
|
document.removeEventListener("keydown", handleKeyDown);
|
|
64
64
|
};
|
|
65
65
|
}, [isOpen, close, focusIndex, items]);
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { useEffect, useMemo, useRef, useState } from "react";
|
|
4
4
|
|
|
5
|
+
import { useInputCapabilities } from "@/hooks/useInputCapabilities";
|
|
5
6
|
import { loadFloatingPanelBounds, persistFloatingPanelBounds, type FloatingPanelBounds } from "@/state/floatingPanels";
|
|
6
7
|
|
|
7
8
|
interface FloatingPanelProps {
|
|
@@ -59,6 +60,7 @@ export default function FloatingPanel({
|
|
|
59
60
|
className,
|
|
60
61
|
bodyClassName,
|
|
61
62
|
}: FloatingPanelProps) {
|
|
63
|
+
const { isTouchLayout } = useInputCapabilities();
|
|
62
64
|
const dragRef = useRef<{ startX: number; startY: number; originX: number; originY: number } | null>(null);
|
|
63
65
|
const resizeRef = useRef<{ startX: number; startY: number; originWidth: number; originHeight: number } | null>(null);
|
|
64
66
|
|
|
@@ -81,15 +83,23 @@ export default function FloatingPanel({
|
|
|
81
83
|
}, [bounds, hydrated, panelId]);
|
|
82
84
|
|
|
83
85
|
useEffect(() => {
|
|
86
|
+
if (isTouchLayout) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
|
|
84
90
|
const onResize = () => {
|
|
85
91
|
setBounds((current) => normalizeBounds(current, minWidth, minHeight));
|
|
86
92
|
};
|
|
87
93
|
|
|
88
94
|
window.addEventListener("resize", onResize);
|
|
89
95
|
return () => window.removeEventListener("resize", onResize);
|
|
90
|
-
}, [minHeight, minWidth]);
|
|
96
|
+
}, [isTouchLayout, minHeight, minWidth]);
|
|
91
97
|
|
|
92
98
|
useEffect(() => {
|
|
99
|
+
if (isTouchLayout) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
|
|
93
103
|
const onMouseMove = (event: MouseEvent) => {
|
|
94
104
|
if (dragRef.current) {
|
|
95
105
|
const nextBounds = normalizeBounds(
|
|
@@ -135,9 +145,13 @@ export default function FloatingPanel({
|
|
|
135
145
|
document.body.style.userSelect = "";
|
|
136
146
|
document.body.style.cursor = "";
|
|
137
147
|
};
|
|
138
|
-
}, [bounds, minHeight, minWidth]);
|
|
148
|
+
}, [bounds, isTouchLayout, minHeight, minWidth]);
|
|
139
149
|
|
|
140
150
|
const handleDragStart = (event: React.MouseEvent<HTMLDivElement>) => {
|
|
151
|
+
if (isTouchLayout) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
|
|
141
155
|
const target = event.target as HTMLElement | null;
|
|
142
156
|
if (target?.closest("button, a, input, textarea, select, [data-no-panel-drag='true']")) {
|
|
143
157
|
return;
|
|
@@ -154,6 +168,10 @@ export default function FloatingPanel({
|
|
|
154
168
|
};
|
|
155
169
|
|
|
156
170
|
const handleResizeStart = (event: React.MouseEvent<HTMLDivElement>) => {
|
|
171
|
+
if (isTouchLayout) {
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
|
|
157
175
|
event.preventDefault();
|
|
158
176
|
event.stopPropagation();
|
|
159
177
|
|
|
@@ -172,28 +190,32 @@ export default function FloatingPanel({
|
|
|
172
190
|
className={className}
|
|
173
191
|
style={{
|
|
174
192
|
position: "fixed",
|
|
175
|
-
left: bounds.x,
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
193
|
+
left: isTouchLayout ? "50%" : bounds.x,
|
|
194
|
+
right: isTouchLayout ? "auto" : undefined,
|
|
195
|
+
top: isTouchLayout ? "max(16px, 8vh)" : bounds.y,
|
|
196
|
+
width: isTouchLayout ? `min(${Math.max(bounds.width, minWidth)}px, calc(100vw - 32px))` : bounds.width,
|
|
197
|
+
height: isTouchLayout ? `min(${Math.max(bounds.height, minHeight)}px, calc(100vh - 48px))` : bounds.height,
|
|
198
|
+
transform: isTouchLayout ? "translateX(-50%)" : undefined,
|
|
179
199
|
zIndex: 40,
|
|
180
200
|
}}
|
|
181
201
|
>
|
|
182
202
|
<div className="flex h-full flex-col overflow-hidden rounded-2xl border border-[var(--border)] bg-[var(--card-bg)] shadow-2xl backdrop-blur-md">
|
|
183
203
|
<div
|
|
184
204
|
onMouseDown={handleDragStart}
|
|
185
|
-
className="cursor-grab active:cursor-grabbing border-b border-[var(--border)] bg-[var(--card-bg)]/95
|
|
205
|
+
className={`${isTouchLayout ? "cursor-default" : "cursor-grab active:cursor-grabbing"} border-b border-[var(--border)] bg-[var(--card-bg)]/95`}
|
|
186
206
|
>
|
|
187
207
|
{titleBar}
|
|
188
208
|
</div>
|
|
189
209
|
<div className={bodyClassName}>{children}</div>
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
210
|
+
{!isTouchLayout ? (
|
|
211
|
+
<div
|
|
212
|
+
onMouseDown={handleResizeStart}
|
|
213
|
+
className="absolute bottom-0 right-0 h-5 w-5 cursor-nwse-resize"
|
|
214
|
+
aria-hidden="true"
|
|
215
|
+
>
|
|
216
|
+
<div className="absolute bottom-1.5 right-1.5 h-2.5 w-2.5 rounded-sm border-r-2 border-b-2 border-[var(--muted-foreground)]/50" />
|
|
217
|
+
</div>
|
|
218
|
+
) : null}
|
|
197
219
|
</div>
|
|
198
220
|
</div>
|
|
199
221
|
);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React, { forwardRef } from 'react';
|
|
2
|
+
import { useInputCapabilities } from "@/hooks/useInputCapabilities";
|
|
2
3
|
|
|
3
4
|
export interface IconButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
4
5
|
variant?: 'neutral' | 'primary' | 'destructive' | 'ghost';
|
|
@@ -7,6 +8,7 @@ export interface IconButtonProps extends React.ButtonHTMLAttributes<HTMLButtonEl
|
|
|
7
8
|
|
|
8
9
|
export const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(
|
|
9
10
|
({ className = '', variant = 'neutral', size = 'md', children, ...props }, ref) => {
|
|
11
|
+
const { isTouchLayout } = useInputCapabilities();
|
|
10
12
|
const baseClasses = "inline-flex items-center justify-center rounded-md transition-colors duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] disabled:opacity-50 disabled:pointer-events-none";
|
|
11
13
|
|
|
12
14
|
const sizeClasses = {
|
|
@@ -14,6 +16,11 @@ export const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(
|
|
|
14
16
|
md: "p-1.5 w-8 h-8",
|
|
15
17
|
lg: "p-2 w-10 h-10"
|
|
16
18
|
};
|
|
19
|
+
const touchSizeClasses = {
|
|
20
|
+
sm: "h-11 w-11 p-2",
|
|
21
|
+
md: "h-11 w-11 p-2",
|
|
22
|
+
lg: "h-12 w-12 p-2.5",
|
|
23
|
+
};
|
|
17
24
|
|
|
18
25
|
const variantClasses = {
|
|
19
26
|
neutral: "text-[var(--app-shell-muted)] hover:text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)]",
|
|
@@ -22,10 +29,11 @@ export const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(
|
|
|
22
29
|
destructive: "text-[var(--app-shell-muted)] hover:text-[var(--destructive)] hover:bg-[var(--destructive-muted)]"
|
|
23
30
|
};
|
|
24
31
|
|
|
25
|
-
const
|
|
32
|
+
const effectiveSizeClasses = isTouchLayout ? touchSizeClasses[size] : sizeClasses[size];
|
|
33
|
+
const classes = `${baseClasses} ${effectiveSizeClasses} ${variantClasses[variant]} ${className}`.trim();
|
|
26
34
|
|
|
27
35
|
return (
|
|
28
|
-
<button ref={ref} className={classes} {...props}>
|
|
36
|
+
<button ref={ref} className={classes} data-touch-target={isTouchLayout ? "true" : undefined} {...props}>
|
|
29
37
|
{children}
|
|
30
38
|
</button>
|
|
31
39
|
);
|