@mndrk/agx 2.3.3 → 2.4.2
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 +1 -1
- package/cloud-runtime/standalone/apps/local/.next/BUILD_ID +1 -1
- package/cloud-runtime/standalone/apps/local/.next/app-path-routes-manifest.json +27 -19
- package/cloud-runtime/standalone/apps/local/.next/build-manifest.json +2 -2
- package/cloud-runtime/standalone/apps/local/.next/prerender-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/routes-manifest.json +213 -125
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.html +2 -2
- 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.js.nft.json +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 +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/[id]/profile/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/[id]/profile/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/[id]/skills/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/[id]/skills/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/export/route.js +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/automations/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/automations/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat/route.js +10 -10
- 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/chat-runs/[id]/events/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat-runs/[id]/events/route.js +7 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/activity → chat-runs/[id]/events}/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/context → chat-runs/[id]/events}/route_client-reference-manifest.js +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/daemon/route.js.nft.json +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/filesystem/analyze/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/filesystem/analyze/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/graphs/[graphId]/nodes/[nodeId]/route.js +2 -3
- 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/health/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/health/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/learnings/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/learnings/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/memories/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/memories/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/orchestrator/tasks/[taskId]/cancel/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/orchestrator/tasks/[taskId]/cancel/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/orchestrator/tasks/[taskId]/signal/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/orchestrator/tasks/[taskId]/signal/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/orchestrator/tasks/[taskId]/start/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/orchestrator/tasks/[taskId]/start/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/orchestrator/tasks/[taskId]/status/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/orchestrator/tasks/[taskId]/status/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/participants/route.js +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]/agents/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/agents/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/agents/unassigned/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/agents/unassigned/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/migrate-v1/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/migrate-v1/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/migrate-v2/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/migrate-v2/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/activities/route.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/activities/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/notes/[noteId]/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/notes/[noteId]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/notes/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/notes/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.js +13 -13
- 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]/objectives/[objectiveId]/validate/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/validate/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route.js +14 -14
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/search/route.js +8 -8
- 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]/skills/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/skills/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/[teamId]/agents/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/[teamId]/agents/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/[teamId]/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/[teamId]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/export/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/export/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/import/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/import/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/route.js +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/projects/[id]/threads/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/threads/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/variables/[key]/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/variables/[key]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/variables/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/variables/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/[id]/cancel/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/[id]/cancel/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/[id]/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/[id]/runs/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/[id]/runs/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/agents/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/agents/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js +15 -15
- 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/prompt-jobs/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/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/complete/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/complete/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js +2 -2
- 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 +9 -9
- 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 +12 -12
- 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 +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 +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/task-groups/[id]/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/task-groups/[id]/route.js +8 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/mcp-setup → task-groups/[id]}/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/mcp-setup → task-groups/[id]}/route_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/task-groups/[id]/tasks/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/task-groups/[id]/tasks/route.js +8 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/active-agents → task-groups/[id]/tasks}/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/activity → task-groups/[id]/tasks}/route_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/task-groups/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/task-groups/route.js +8 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/task-groups/route.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/auth → task-groups}/route_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js +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 +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]/costs/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/costs/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/dependencies/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/dependencies/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/events/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/events/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/history/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/history/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/metrics/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/metrics/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/replan/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/replan/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/restart/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/restart/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/resume/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/resume/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/rollback/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/rollback/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/schedule/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/schedule/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/start/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/start/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/history/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/history/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/logs/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/logs/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/comments/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/comments/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/complete/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/complete/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/fail/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/fail/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/resume/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/resume/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/start/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/start/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/stop/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/stop/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js +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 +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/assign-orphans/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/assign-orphans/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js +2 -2
- 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/terminal/sessions/[id]/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/terminal/sessions/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/knowledge/route.js +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 +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/api/tracker/notes/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tracker/notes/route.js +6 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/auth → tracker/notes}/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/status → tracker/notes}/route_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/active-agents/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/active-agents/route.js +7 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/runs/[id] → trackers/[tracker]/active-agents}/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/active-agents/route_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/auth/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/[id] → trackers/[tracker]/auth}/route.js +8 -7
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/auth/route.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/auth/route_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/callback/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/callback/route.js +12 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/callback/route.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/active-agents → trackers/[tracker]/callback}/route_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/groups/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/groups/route.js +12 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/groups/route.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/groups/route_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/activity/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/activity/route.js +12 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/activity/route.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/activity/route_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/recap/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/recap/route.js +13 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/recap/route.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/recap/route_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/route.js +12 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/route.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/route_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/route.js +12 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/route.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/[id]/recap → trackers/[tracker]/items}/route_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/mcp-setup/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/mcp-setup/route.js +13 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/mcp-setup/route.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/mcp-setup/route_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/options/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/options/route.js +12 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/options/route.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/options/route_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/runs/[id]/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/runs/[id]/route.js +12 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/runs/[id]/route.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/runs/[id]/route_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/runs/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/context → trackers/[tracker]/runs}/route.js +8 -7
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/runs/route.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/runs/route_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/runs/scripted/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/runs/scripted/route.js +12 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/runs/scripted/route.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/runs/scripted/route_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/status/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/status/route/build-manifest.json +11 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/status/route.js +12 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/status/route.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/status/route_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/token/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/token/route/build-manifest.json +11 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/token/route/server-reference-manifest.json +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/token/route.js +12 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/token/route.js.map +5 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/token/route.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/token/route_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/token-receive/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/token-receive/route/build-manifest.json +11 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/token-receive/route/server-reference-manifest.json +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/token-receive/route.js +12 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/token-receive/route.js.map +5 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/token-receive/route.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/token-receive/route_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/worker/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/worker/route/build-manifest.json +11 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/worker/route/server-reference-manifest.json +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/worker/route.js +16 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/worker/route.js.map +5 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/worker/route.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/worker/route_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/connections/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/connections/route/build-manifest.json +11 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/connections/route/server-reference-manifest.json +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/connections/route.js +7 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/connections/route.js.map +5 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/callback → trackers/connections}/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/runs/scripted → trackers/connections}/route_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/update-check/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/update-check/route/build-manifest.json +11 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/update-check/route/server-reference-manifest.json +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/update-check/route.js +7 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/update-check/route.js.map +5 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/update-check/route.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/token → update-check}/route_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/user-settings/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/user-settings/route.js.nft.json +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 +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_full.segment.rsc +3 -3
- 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 +1 -1
- 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.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page_client-reference-manifest.js +1 -1
- 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]/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]/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/[slug]/tracking/[tracker]/page/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page/next-font-manifest.json +11 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/{linear → tracking/[tracker]}/page/react-loadable-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page/server-reference-manifest.json +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page.js +16 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page.js.map +5 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page/build-manifest.json +18 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page/next-font-manifest.json +11 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page/react-loadable-manifest.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page/server-reference-manifest.json +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page.js +16 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page.js.map +5 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page/build-manifest.json +18 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/{linear → tracking}/page/next-font-manifest.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page/react-loadable-manifest.json +16 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page/server-reference-manifest.json +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/{linear → tracking}/page.js +6 -6
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page.js.map +5 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/{linear → tracking}/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page.js.nft.json +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/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 +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_full.segment.rsc +2 -2
- 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 +1 -1
- 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/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-paths-manifest.json +27 -19
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/083c9_next-internal_server_app_api_trackers_[tracker]_callback_route_actions_e1d8c3e4.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/0da96_local__next-internal_server_app_api_trackers_connections_route_actions_35145606.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/30bdd_server_app_api_trackers_[tracker]_active-agents_route_actions_e9c27b60.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/30bdd_server_app_api_trackers_[tracker]_items_[id]_activity_route_actions_bb364795.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/30bdd_server_app_api_trackers_[tracker]_items_[id]_recap_route_actions_aaed4138.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/30bdd_server_app_api_trackers_[tracker]_items_[id]_route_actions_6382f424.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/30bdd_server_app_api_trackers_[tracker]_mcp-setup_route_actions_1279e3c1.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/30bdd_server_app_api_trackers_[tracker]_runs_[id]_route_actions_4c32ff23.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/30bdd_server_app_api_trackers_[tracker]_runs_scripted_route_actions_3c16062e.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/30bdd_server_app_api_trackers_[tracker]_token-receive_route_actions_f831c68f.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[externals]__cb7264ab._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[externals]_fs_promises_0bfe4114._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__8ea8c1b9._.js → [root-of-the-server]__03585144._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__9a457fa6._.js → [root-of-the-server]__04ee9637._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__079c42ac._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__08a40fc7._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__bad0734e._.js → [root-of-the-server]__0a528fae._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__29ef193f._.js → [root-of-the-server]__0b317b6d._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0fbbaf2d._.js +95 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__101fe653._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__10a90219._.js +69 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__305e10a8._.js → [root-of-the-server]__10bfac8f._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__121d8e45._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__1629da24._.js +9 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__9a4dd378._.js → [root-of-the-server]__19d0fac1._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__1d3e684e._.js +70 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__203428c1._.js +6 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__21721841._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__240d98b0._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__a7163d7b._.js → [root-of-the-server]__2ab23e45._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__2bb933c7._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__2c148e2b._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__2ff70366._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__17474404._.js → [root-of-the-server]__368f5ffd._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__80be3fd0._.js → [root-of-the-server]__39baf5f6._.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__3a038592._.js +10 -8
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__3b27260f._.js +114 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__f99bf39d._.js → [root-of-the-server]__41534d9e._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__9f7dc3d5._.js → [root-of-the-server]__4641ba3f._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0408eb2d._.js → [root-of-the-server]__4b167927._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0e11afc3._.js → [root-of-the-server]__4b9d4f5c._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__45988247._.js → [root-of-the-server]__4e296e1f._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__3a639150._.js → [root-of-the-server]__4fbf7baa._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__cf874bd3._.js → [root-of-the-server]__5184da61._.js} +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__5859156d._.js +8 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__6062bf0a._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__68b692c4._.js +131 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__92dfd9af._.js → [root-of-the-server]__6b0b354d._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__8363ba26._.js → [root-of-the-server]__6e0ef488._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__68c85bdd._.js → [root-of-the-server]__6e73b6e1._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__a8861f5b._.js → [root-of-the-server]__6ead08b8._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__fd3e97e7._.js → [root-of-the-server]__6f6afa0f._.js} +20 -20
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__73f80c8c._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__7be142e5._.js → [root-of-the-server]__7b7b4601._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__7cd28ae0._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__7db7c421._.js +119 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__1888961f._.js → [root-of-the-server]__7fcbb0c2._.js} +96 -94
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__83baa76e._.js → [root-of-the-server]__80aea589._.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__8269cb17._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__847236fb._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__847ab7ae._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__91dd4b59._.js → [root-of-the-server]__8dd3b8c5._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__268327fe._.js → [root-of-the-server]__905a5b44._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__8c1f1ac0._.js → [root-of-the-server]__90dd5edd._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__97b5dbf7._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__bb6304da._.js → [root-of-the-server]__97e51964._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0ce28b4a._.js → [root-of-the-server]__97e7a600._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__9e4c0741._.js +8 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__9e9149cd._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__cea6728f._.js → [root-of-the-server]__a74338e8._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__816926cc._.js → [root-of-the-server]__aa4e5942._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__ab9b38d8._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__4c4892ef._.js → [root-of-the-server]__ac854687._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__c18c59db._.js → [root-of-the-server]__ae54e5ab._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__b0a94c41._.js +70 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__b1357960._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__53af378f._.js → [root-of-the-server]__b810670d._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__ba72d342._.js +91 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__da39c8a8._.js → [root-of-the-server]__bb757af8._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__c07d22ff._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__c3408141._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__c4a986f6._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__6e876a97._.js → [root-of-the-server]__c614c26c._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__c936d679._.js +17 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__caa79472._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__dc146f58._.js → [root-of-the-server]__cbd45246._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__8316aa3e._.js → [root-of-the-server]__d402ed75._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__d8cc43c7._.js +114 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__e9ff8266._.js → [root-of-the-server]__d8efbb6c._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__e679695d._.js → [root-of-the-server]__dd538d32._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__c16e8d2d._.js → [root-of-the-server]__df0f00fd._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__131f801a._.js → [root-of-the-server]__e237981c._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__7d454180._.js → [root-of-the-server]__e583235c._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__ccd1a823._.js → [root-of-the-server]__ece576c1._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__ef1c393e._.js +70 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__c97ac79d._.js → [root-of-the-server]__f21be9eb._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__f598d976._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__f7a936d9._.js +114 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__d7e4a538._.js → [root-of-the-server]__fb5944d3._.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__fb694089._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__fbe43c0a._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{_3a4bfa8b._.js → _08b93004._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_1a4cb196._.js +95 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_2124f905._.js +25 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_21812330._.js +23 -23
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_25136564._.js +11 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_520e6344._.js +25 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_5b3f1f41._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_5e5f36c4._.js +91 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_80b34b78._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_8f9f647d._.js +128 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_task-groups_[id]_route_actions_b10cc67c.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_task-groups_route_actions_0079ff4a.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_tracker_notes_route_actions_b8a47be9.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_update-check_route_actions_29ba83b6.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{apps_local_3e0a6a05._.js → apps_local_a15e73a6._.js} +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_aac0e4cb._.js +109 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_b8cc7add._.js +23 -23
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{apps_local_2c8c923a._.js → apps_local_c101ba9e._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_d256aa32._.js +286 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_e12b284f._.js +23 -23
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_e1f4d9ad._.js +91 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_e55f28ef._.js +296 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_ea2bca7e._.js +109 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_f8b3abae._.js +91 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_3ddc6591._.js +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_6bd3d8a2._.js +15 -15
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_cli-runner_ts_ead5489c._.js +18 -18
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_d268503a._.js +15 -15
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_history-store_ts_e4ff7678._.js +19 -12
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_history-store_ts_e98db4de._.js +19 -12
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{apps_local_58f0d34e._.js → apps_local_lib_linear-issues_ts_50093d17._.js} +15 -20
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_orchestrator_chat-processor_ts_46384f36._.js +14 -13
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_sqlite-query-adapter_ts_7b90c71f._.js +49 -23
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_sqlite-query-adapter_ts_7ee03cea._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_sqlite-query-adapter_ts_a3d4d8f4._.js +48 -22
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_tracker_tracker-run-store_ts_5aa9592e._.js +114 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ebff2__next-internal_server_app_api_chat-runs_[id]_events_route_actions_2099e8ec.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ebff2__next-internal_server_app_api_task-groups_[id]_tasks_route_actions_9a8b437b.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ebff2__next-internal_server_app_api_trackers_[tracker]_auth_route_actions_93e51026.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ebff2__next-internal_server_app_api_trackers_[tracker]_groups_route_actions_950eeaf7.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ebff2__next-internal_server_app_api_trackers_[tracker]_items_route_actions_41ec2af7.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ebff2__next-internal_server_app_api_trackers_[tracker]_options_route_actions_19b0ffef.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ebff2__next-internal_server_app_api_trackers_[tracker]_runs_route_actions_54d24a56.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ebff2__next-internal_server_app_api_trackers_[tracker]_status_route_actions_1f8ce507.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ebff2__next-internal_server_app_api_trackers_[tracker]_token_route_actions_93eeb2d1.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ebff2__next-internal_server_app_api_trackers_[tracker]_worker_route_actions_22ced26f.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/083c9_next-internal_server_app_projects_[slug]_tracking_connect_page_actions_72d4a587.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0da96_local__next-internal_server_app_projects_[slug]_tracking_page_actions_ad982907.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/30bdd_server_app_projects_[slug]_tracking_[tracker]_page_actions_c27c0fcc.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/9fb8c_lucide-react_dist_esm_icons_5e38c2ed._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{[root-of-the-server]__6e4038bb._.js → [root-of-the-server]__2c4531d0._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__30bf097e._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__46ae9d33._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__50fd8680._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{[root-of-the-server]__64cb5d93._.js → [root-of-the-server]__51edc9b6._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__5aa35736._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__5c817ed1._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__799f4d13._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__8059a285._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__886953ec._.js +7 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__97160565._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__b8a00d09._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__bc60b3cf._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__bce1fbf7._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__c2c07c79._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__c7e1ea27._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{[root-of-the-server]__24007358._.js → [root-of-the-server]__ce586680._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__fdfb2d96._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_55671310._.js +13 -13
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_ba2abc47._.js +7 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_e00b6c25._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_e485f527._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_064c7b93._.js +18 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_16902bc1._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_1e4a0236._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_35d90b5d._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_3e5712aa._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_3f9f6417._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_5d6a3ce2._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_5eebb5cb._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_7395ab20._.js +18 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_86f59be8._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_988d29c0._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_layout_tsx_3bb31889._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_page_tsx_76330306._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_terminal_page_tsx_0933eeaf._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_thread_[threadId]_page_tsx_2a1d1d5e._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_c5e75cc1._.js +18 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_TrackerBoard_tsx_98970bab._.js +48 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_chat-ui_f0554cb4._.js +11 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_projects_ProjectObjectivesWorkspace_tsx_751ab3d3._.js +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_d9a0fd57._.js +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_da1774f7._.js +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{apps_local_5b388b71._.js → apps_local_e46807f8._.js} +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_e7a823e9._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_f67bb291._.js +18 -0
- package/cloud-runtime/standalone/apps/local/.next/server/functions-config-manifest.json +20 -17
- 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 +12 -4
- package/cloud-runtime/standalone/apps/local/.next/server/pages/404.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/pages/500.html +2 -2
- 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/0876dfd6ce07abaf.js +9 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/114ea1bfd6907330.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/1533a70763aff97d.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/1ec83777a9abd420.js +16 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/1fef9364e8667e88.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/286758b0fd546c68.js +16 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/31eb3dfbf34049d2.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/31fa61ac9eccd69e.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/37f4e8258ca4d3fb.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/416f4124364c7ec8.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/4eaf7bca1be5edfa.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/6c278ae4535b6d5c.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/6c777fe66e042eec.js +16 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{2b946f9d53da482e.js → 77cea126364aab3c.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/85b0b6ed57b5df52.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/87e4fb11329a358d.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{4bc34bec0c539bb8.js → 8a9626e4d7c259ee.js} +6 -6
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/a72ed5cb3feb0d51.js +5 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/b02c180ad1d968eb.js +16 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/b048a4812b51f97a.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/be9022a471666b85.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/c63d97c917d96f47.js +46 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/cb19d71dd7ffb935.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/cbb4dbdc63177701.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{bf4057d9deff2a78.js → cd19b123505dd26c.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/d3bf70e2fbdc0ae5.js +5 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{592bca7fe1fc1455.js → d500a3f5d15b31d5.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/d5b14e14665024a9.js +5 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/dd5a56eea2d4c067.js +16 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/dd7d7c382389b8b9.js +16 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{571e45336377eb45.js → e72724fd8225ec39.js} +3 -3
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/ec92e3bd6c2db6e6.css +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/f3c1b6295b9442c6.js +1 -0
- package/cloud-runtime/standalone/apps/local/app/api/chat-runs/[id]/events/route.ts +98 -0
- package/cloud-runtime/standalone/apps/local/app/api/prompt-jobs/route.ts +1 -1
- package/cloud-runtime/standalone/apps/local/app/api/task-groups/[id]/route.ts +38 -0
- package/cloud-runtime/standalone/apps/local/app/api/task-groups/[id]/tasks/route.ts +42 -0
- package/cloud-runtime/standalone/apps/local/app/api/task-groups/route.ts +38 -0
- package/cloud-runtime/standalone/apps/local/app/api/tracker/notes/route.ts +65 -0
- package/cloud-runtime/standalone/apps/local/app/api/{linear/issues → trackers/[tracker]}/active-agents/route.ts +3 -2
- package/cloud-runtime/standalone/apps/local/app/api/trackers/[tracker]/auth/route.ts +29 -0
- package/cloud-runtime/standalone/apps/local/app/api/trackers/[tracker]/callback/route.ts +58 -0
- package/cloud-runtime/standalone/apps/local/app/api/trackers/[tracker]/groups/route.ts +24 -0
- package/cloud-runtime/standalone/apps/local/app/api/trackers/[tracker]/items/[id]/activity/route.ts +24 -0
- package/cloud-runtime/standalone/apps/local/app/api/trackers/[tracker]/items/[id]/recap/route.ts +125 -0
- package/cloud-runtime/standalone/apps/local/app/api/trackers/[tracker]/items/[id]/route.ts +60 -0
- package/cloud-runtime/standalone/apps/local/app/api/trackers/[tracker]/items/route.ts +44 -0
- package/cloud-runtime/standalone/apps/local/app/api/{linear → trackers/[tracker]}/mcp-setup/route.ts +90 -33
- package/cloud-runtime/standalone/apps/local/app/api/trackers/[tracker]/options/route.ts +33 -0
- package/cloud-runtime/standalone/apps/local/app/api/{linear → trackers/[tracker]}/runs/[id]/route.ts +24 -16
- package/cloud-runtime/standalone/apps/local/app/api/trackers/[tracker]/runs/route.ts +87 -0
- package/cloud-runtime/standalone/apps/local/app/api/{linear → trackers/[tracker]}/runs/scripted/route.ts +13 -6
- package/cloud-runtime/standalone/apps/local/app/api/trackers/[tracker]/status/route.ts +48 -0
- package/cloud-runtime/standalone/apps/local/app/api/trackers/[tracker]/token/route.ts +49 -0
- package/cloud-runtime/standalone/apps/local/app/api/trackers/[tracker]/token-receive/route.ts +52 -0
- package/cloud-runtime/standalone/apps/local/app/api/trackers/[tracker]/worker/route.ts +163 -0
- package/cloud-runtime/standalone/apps/local/app/api/trackers/connections/route.ts +96 -0
- package/cloud-runtime/standalone/apps/local/app/api/update-check/route.ts +50 -0
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/layout.tsx +2 -1
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/terminal/page.tsx +4 -1
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/{linear → tracking/[tracker]}/page.tsx +11 -6
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/tracking/connect/page.tsx +180 -0
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/tracking/page.tsx +36 -0
- package/cloud-runtime/standalone/apps/local/components/PromptJobBoard.tsx +3 -3
- package/cloud-runtime/standalone/apps/local/components/{LinearBoard.tsx → TrackerBoard.tsx} +654 -302
- package/cloud-runtime/standalone/apps/local/components/chat-ui/Composer.tsx +18 -75
- package/cloud-runtime/standalone/apps/local/components/chat-ui/MessageBubble.tsx +6 -1
- package/cloud-runtime/standalone/apps/local/components/chat-ui/MessageList.tsx +34 -8
- package/cloud-runtime/standalone/apps/local/components/chat-ui/StreamingSegments.tsx +88 -0
- package/cloud-runtime/standalone/apps/local/components/chat-ui/ThreadView.tsx +23 -13
- package/cloud-runtime/standalone/apps/local/components/projects/ProjectObjectivesWorkspace.tsx +18 -2
- package/cloud-runtime/standalone/apps/local/components/projects/home/ToolPathsSection.tsx +7 -7
- package/cloud-runtime/standalone/apps/local/components/terminal/ProjectTerminal.tsx +28 -5
- package/cloud-runtime/standalone/apps/local/components/thread/WorkspaceSidebar.tsx +61 -46
- package/cloud-runtime/standalone/apps/local/components/tracker/FolderRow.tsx +161 -0
- package/cloud-runtime/standalone/apps/local/components/tracker/GroupNamePrompt.tsx +110 -0
- package/cloud-runtime/standalone/apps/local/components/tracker/GroupPanel.tsx +306 -0
- package/cloud-runtime/standalone/apps/local/components/tracker/NoteSticker.tsx +161 -0
- package/cloud-runtime/standalone/apps/local/components/{linear → tracker}/RunScriptManager.tsx +7 -7
- package/cloud-runtime/standalone/apps/local/components/tracker/SelectionBar.tsx +38 -0
- package/cloud-runtime/standalone/apps/local/components/{linear → tracker}/TicketPanel.tsx +39 -37
- package/cloud-runtime/standalone/apps/local/components/{linear → tracker}/TicketRecapSection.tsx +9 -5
- package/cloud-runtime/standalone/apps/local/components/tracker/TicketRow.tsx +279 -0
- package/cloud-runtime/standalone/apps/local/components/{linear → tracker}/TicketSessionList.tsx +3 -3
- package/cloud-runtime/standalone/apps/local/components/{linear/LinearSettingsModal.tsx → tracker/TrackerSettingsModal.tsx} +26 -22
- package/cloud-runtime/standalone/apps/local/components/{linear/LinearWorkerConfig.tsx → tracker/TrackerWorkerConfig.tsx} +12 -12
- package/cloud-runtime/standalone/apps/local/components/{linear/LinearWorkerRunLog.tsx → tracker/TrackerWorkerRunLog.tsx} +4 -4
- package/cloud-runtime/standalone/apps/local/components/tracking/TaskTrackingNav.tsx +125 -0
- package/cloud-runtime/standalone/apps/local/components/tracking/TrackerIcon.tsx +58 -0
- package/cloud-runtime/standalone/apps/local/components/tracking/TrackerSetup.tsx +264 -0
- package/cloud-runtime/standalone/apps/local/hooks/useGroupChat.ts +1 -0
- package/cloud-runtime/standalone/apps/local/hooks/useProcessPolling.ts +155 -12
- package/cloud-runtime/standalone/apps/local/hooks/useSidebarStage.ts +54 -18
- package/cloud-runtime/standalone/apps/local/hooks/useTaskGroups.ts +133 -0
- package/cloud-runtime/standalone/apps/local/hooks/{useLinearActiveAgents.ts → useTrackerActiveAgents.ts} +19 -6
- package/cloud-runtime/standalone/apps/local/hooks/{useLinearConnection.ts → useTrackerConnection.ts} +107 -26
- package/cloud-runtime/standalone/apps/local/hooks/useTrackerConnections.ts +99 -0
- package/cloud-runtime/standalone/apps/local/hooks/{useLinearIssueMentions.ts → useTrackerItemMentions.ts} +15 -8
- package/cloud-runtime/standalone/apps/local/hooks/useTrackerItems.ts +120 -0
- package/cloud-runtime/standalone/apps/local/hooks/{useLinearParticipants.ts → useTrackerParticipants.ts} +4 -4
- package/cloud-runtime/standalone/apps/local/hooks/{useLinearRunScripts.ts → useTrackerRunScripts.ts} +15 -15
- package/cloud-runtime/standalone/apps/local/hooks/{useLinearRuns.ts → useTrackerRuns.ts} +33 -55
- package/cloud-runtime/standalone/apps/local/hooks/useUpdateCheck.ts +37 -0
- package/cloud-runtime/standalone/apps/local/hooks/useUrlSelection.ts +19 -0
- package/cloud-runtime/standalone/apps/local/lib/agent-process-registry.ts +29 -6
- package/cloud-runtime/standalone/apps/local/lib/chat/tracker-issue-context.ts +11 -0
- package/cloud-runtime/standalone/apps/local/lib/chat/{linear-issue-context.ts → tracker-item-context.ts} +19 -10
- package/cloud-runtime/standalone/apps/local/lib/chat-event-bus.ts +84 -0
- package/cloud-runtime/standalone/apps/local/lib/chat-utils.ts +68 -0
- package/cloud-runtime/standalone/apps/local/lib/cli-runner.ts +46 -21
- package/cloud-runtime/standalone/apps/local/lib/constants/timing.ts +1 -0
- package/cloud-runtime/standalone/apps/local/lib/history-store.ts +14 -0
- package/cloud-runtime/standalone/apps/local/lib/linear-run-status.ts +3 -1
- package/cloud-runtime/standalone/apps/local/lib/{objective-linear-issues.ts → objective-tracker-issues.ts} +12 -6
- package/cloud-runtime/standalone/apps/local/lib/orchestrator/chat-processor.ts +35 -1
- package/cloud-runtime/standalone/apps/local/lib/sqlite-query-adapter.ts +32 -0
- package/cloud-runtime/standalone/apps/local/lib/stream-multiplexer.ts +5 -0
- package/cloud-runtime/standalone/apps/local/lib/task-groups-db.ts +130 -0
- package/cloud-runtime/standalone/apps/local/lib/tiptap/composer-mentions.ts +5 -5
- package/cloud-runtime/standalone/apps/local/lib/tiptap/editor-utils.ts +1 -1
- package/cloud-runtime/standalone/apps/local/lib/tiptap/serialize-composer.ts +2 -2
- package/cloud-runtime/standalone/apps/local/lib/tracker/adapters/jira/adapter.tsx +324 -0
- package/cloud-runtime/standalone/apps/local/lib/tracker/adapters/jira/client.ts +517 -0
- package/cloud-runtime/standalone/apps/local/lib/tracker/adapters/jira/index.ts +18 -0
- package/cloud-runtime/standalone/apps/local/lib/tracker/adapters/jira/issues.ts +268 -0
- package/cloud-runtime/standalone/apps/local/lib/tracker/adapters/jira/jira-icon.tsx +22 -0
- package/cloud-runtime/standalone/apps/local/lib/tracker/adapters/linear/adapter.tsx +307 -0
- package/cloud-runtime/standalone/apps/local/lib/tracker/adapters/linear/client.ts +907 -0
- package/cloud-runtime/standalone/apps/local/lib/tracker/adapters/linear/index.ts +9 -0
- package/cloud-runtime/standalone/apps/local/lib/tracker/adapters/linear/issues.ts +376 -0
- package/cloud-runtime/standalone/apps/local/lib/tracker/adapters/linear/linear-icon.tsx +14 -0
- package/cloud-runtime/standalone/apps/local/lib/tracker/connections.ts +67 -0
- package/cloud-runtime/standalone/apps/local/lib/tracker/index.ts +44 -0
- package/cloud-runtime/standalone/apps/local/lib/tracker/recap.ts +246 -0
- package/cloud-runtime/standalone/apps/local/lib/tracker/registry.ts +32 -0
- package/cloud-runtime/standalone/apps/local/lib/tracker/route-helpers.ts +27 -0
- package/cloud-runtime/standalone/apps/local/lib/{linear-scripted-session.ts → tracker/scripted-session.ts} +28 -23
- package/cloud-runtime/standalone/apps/local/lib/tracker/tracker-adapter.ts +64 -0
- package/cloud-runtime/standalone/apps/local/lib/{linear-execution-prompt.ts → tracker/tracker-execution-prompt.ts} +27 -23
- package/cloud-runtime/standalone/apps/local/lib/tracker/tracker-item-store.ts +804 -0
- package/cloud-runtime/standalone/apps/local/lib/tracker/tracker-run-store.ts +560 -0
- package/cloud-runtime/standalone/apps/local/lib/tracker/types.ts +119 -0
- package/cloud-runtime/standalone/apps/local/lib/tracker-board-utils.ts +4 -0
- package/cloud-runtime/standalone/apps/local/lib/tracker-run-status.ts +88 -0
- package/cloud-runtime/standalone/apps/local/lib/types.ts +1 -0
- package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/objective-worker.ts +4 -4
- package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/processor.ts +7 -6
- package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/{linear-worker-constants.ts → task-worker-constants.ts} +11 -11
- package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/task-worker-job.ts +49 -0
- package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/{linear-worker.ts → task-worker.ts} +47 -31
- package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/types.ts +5 -3
- package/cloud-runtime/standalone/apps/local/state/lastSession.test.ts +83 -0
- package/cloud-runtime/standalone/apps/local/state/lastSession.ts +46 -0
- package/cloud-runtime/standalone/apps/local/state/trackerBoardFilters.ts +112 -0
- package/cloud-runtime/standalone/apps/local/state/{linearBoardPins.ts → trackerBoardPins.ts} +14 -9
- package/cloud-runtime/standalone/apps/local/state/{linearRunScripts.ts → trackerRunScripts.ts} +32 -24
- package/cloud-runtime/standalone/apps/local/worker/index.js +194 -14
- package/lib/commands/chat.js +0 -4
- package/lib/logger.ts +72 -0
- package/package.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/auth/route/app-paths-manifest.json +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/auth/route.js +0 -7
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/callback/route/app-paths-manifest.json +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/callback/route.js +0 -7
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/callback/route_client-reference-manifest.js +0 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/cycles/route/app-paths-manifest.json +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/cycles/route.js +0 -7
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/cycles/route.js.nft.json +0 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/cycles/route_client-reference-manifest.js +0 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/[id]/recap/route/app-paths-manifest.json +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/[id]/recap/route.js +0 -12
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/[id]/recap/route.js.nft.json +0 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/[id]/route/app-paths-manifest.json +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/[id]/route.js.nft.json +0 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/[id]/route_client-reference-manifest.js +0 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/active-agents/route/app-paths-manifest.json +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/active-agents/route.js +0 -7
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/activity/route/app-paths-manifest.json +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/activity/route.js +0 -7
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/context/route/app-paths-manifest.json +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/context/route.js.nft.json +0 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/route/app-paths-manifest.json +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/route.js +0 -11
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/route.js.nft.json +0 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/route_client-reference-manifest.js +0 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/mcp-setup/route/app-paths-manifest.json +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/mcp-setup/route.js +0 -8
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/options/route/app-paths-manifest.json +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/options/route.js +0 -11
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/options/route.js.nft.json +0 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/options/route_client-reference-manifest.js +0 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/[id]/route/app-paths-manifest.json +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/[id]/route.js +0 -7
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/[id]/route_client-reference-manifest.js +0 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/route/app-paths-manifest.json +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/route.js +0 -7
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/route.js.nft.json +0 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/route_client-reference-manifest.js +0 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/scripted/route/app-paths-manifest.json +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/scripted/route.js +0 -24
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/scripted/route.js.nft.json +0 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/status/route/app-paths-manifest.json +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/status/route.js +0 -7
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/status/route.js.nft.json +0 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/token/route/app-paths-manifest.json +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/token/route.js +0 -7
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/token/route.js.nft.json +0 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/worker/route/app-paths-manifest.json +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/worker/route.js +0 -13
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/worker/route.js.nft.json +0 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/worker/route_client-reference-manifest.js +0 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/linear-issues/route/app-paths-manifest.json +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/linear-issues/route.js +0 -14
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/linear-issues/route.js.nft.json +0 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/linear-issues/route_client-reference-manifest.js +0 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page/app-paths-manifest.json +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page_client-reference-manifest.js +0 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/083c9_next-internal_server_app_api_linear_issues_active-agents_route_actions_e49a4900.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/0da96_local__next-internal_server_app_api_linear_issues_[id]_route_actions_8966da68.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/0da96_local__next-internal_server_app_api_linear_runs_scripted_route_actions_65d0c32b.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/9fb8c_next_dist_esm_build_templates_app-route_4a0d9040.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[externals]__c397277f._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[externals]__ec108b52._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0e80a97a._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0fc11060._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__1926415e._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__1a87c857._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__1d278aeb._.js +0 -8
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__1ee65b64._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__2f038740._.js +0 -8
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__4b05c44d._.js +0 -141
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__4c070f04._.js +0 -165
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__6183b682._.js +0 -67
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__63752370._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__713ff4cf._.js +0 -145
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__7ce30f24._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__87abf03f._.js +0 -141
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__a22e30c6._.js +0 -22
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__b176d4d9._.js +0 -160
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__c84eafe2._.js +0 -141
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__d28ace89._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__d7e18064._.js +0 -160
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__d9bbc1a6._.js +0 -141
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__dfd77ac4._.js +0 -31
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__ef75c5b6._.js +0 -4
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__f66666f9._.js +0 -141
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__f844df91._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__ff6a99f0._.js +0 -160
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_00ea3122._.js +0 -415
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_022eee16._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_08d3c605._.js +0 -25
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_671682cc._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_7222e528._.js +0 -9
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_755b8689._.js +0 -415
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_linear_auth_route_actions_845dd997.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_linear_callback_route_actions_90a636e1.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_linear_cycles_route_actions_20618fe1.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_linear_issues_route_actions_f798ab06.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_linear_mcp-setup_route_actions_9c461973.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_linear_options_route_actions_3455e6c0.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_linear_runs_[id]_route_actions_4bd5ad16.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_linear_runs_route_actions_8613ec29.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_linear_status_route_actions_746bcaf4.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_linear_token_route_actions_8fed80a2.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_linear_worker_route_actions_ef891304.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_af73c5e8._.js +0 -155
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_b3086d93._.js +0 -25
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_c530bd77._.js +0 -11
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_f13708ae._.js +0 -415
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_077d49c2._.js +0 -8
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_62edff06._.js +0 -4
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_941822a8._.js +0 -4
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_e7ef8bcb._.js +0 -4
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/e2f97_api_projects_[id]_objectives_[objectiveId]_linear-issues_route_actions_d506d8a3.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ebff2__next-internal_server_app_api_linear_issues_[id]_recap_route_actions_7b9ac0ec.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ebff2__next-internal_server_app_api_linear_issues_activity_route_actions_a25a56a3.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ebff2__next-internal_server_app_api_linear_issues_context_route_actions_b8ed252b.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0da96_local__next-internal_server_app_projects_[slug]_linear_page_actions_d3e5c399.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/9fb8c_lucide-react_dist_esm_icons_c5dc4091._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__31c61bac._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__364fdd09._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__45e37c6d._.js +0 -18
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__7c5959c3._.js +0 -18
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__8666da53._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__94ab2a92._.js +0 -18
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__97e9f8c3._.js +0 -18
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__a3cf8479._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__d47e7e93._.js +0 -18
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__e9f82952._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_480cf274._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_4e95976c._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_5ec7006b._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0ac2a791._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0c3f9085._.js +0 -7
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_37d519f7._.js +0 -7
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_96dee4fc._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_linear_page_tsx_3fd25408._.js +0 -37
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_d30cc504._.js +0 -11
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_df7bb32d._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_f1b23697._.js +0 -11
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/09a9b0ff9fedfd4c.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/1d442896a9e6f641.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/26078932a72e240a.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/28f49fb8b0515698.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/2d455dcd9ffde753.js +0 -5
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/37015d5c91f9a893.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/5cfcd19e814c5846.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/678144d458893b62.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/79fc27e54d194ae1.css +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/8c64b8a9eee8e202.js +0 -16
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/8f8da5f39011a5fb.js +0 -5
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/9a293e4003752b7f.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/9be47f89ded22972.js +0 -16
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/a6bfcaae2ac8b716.js +0 -35
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/b2bbe7bc1d2e8729.js +0 -16
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/b4175ba3d8d2c54a.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/b6ef2665e828eb71.js +0 -9
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/be15308d13860246.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/c91eaf8278deda9c.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/d36cc96f4da78fc6.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/d96375ecaaf51dbd.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/e845c01d0cc3b9a2.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/ec699df05370dd42.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/f67c9e5af56eb2d0.js +0 -5
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/f693c7ecc12d1d78.js +0 -16
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/fa9d7bb55267b173.js +0 -16
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/fdebf03746baf784.js +0 -9
- package/cloud-runtime/standalone/apps/local/app/api/linear/auth/route.ts +0 -32
- package/cloud-runtime/standalone/apps/local/app/api/linear/callback/route.ts +0 -49
- package/cloud-runtime/standalone/apps/local/app/api/linear/cycles/route.ts +0 -27
- package/cloud-runtime/standalone/apps/local/app/api/linear/issues/[id]/recap/route.ts +0 -30
- package/cloud-runtime/standalone/apps/local/app/api/linear/issues/[id]/route.ts +0 -92
- package/cloud-runtime/standalone/apps/local/app/api/linear/issues/activity/route.ts +0 -23
- package/cloud-runtime/standalone/apps/local/app/api/linear/issues/context/route.ts +0 -26
- package/cloud-runtime/standalone/apps/local/app/api/linear/issues/route.ts +0 -96
- package/cloud-runtime/standalone/apps/local/app/api/linear/options/route.ts +0 -48
- package/cloud-runtime/standalone/apps/local/app/api/linear/runs/route.ts +0 -106
- package/cloud-runtime/standalone/apps/local/app/api/linear/status/route.ts +0 -51
- package/cloud-runtime/standalone/apps/local/app/api/linear/token/route.ts +0 -72
- package/cloud-runtime/standalone/apps/local/app/api/linear/worker/route.ts +0 -151
- package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/objectives/[objectiveId]/linear-issues/route.ts +0 -197
- package/cloud-runtime/standalone/apps/local/components/LinearSetup.tsx +0 -239
- package/cloud-runtime/standalone/apps/local/components/linear/LinearIcon.tsx +0 -19
- package/cloud-runtime/standalone/apps/local/components/linear/TicketRow.tsx +0 -158
- package/cloud-runtime/standalone/apps/local/hooks/useLinearIssues.ts +0 -122
- package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/linear-worker-job.ts +0 -52
- package/cloud-runtime/standalone/apps/local/state/linearBoardFilters.ts +0 -108
- package/cloud-runtime/standalone/apps/local/state/linearRunScripts.test.ts +0 -99
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/auth → chat-runs/[id]/events}/route/build-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/auth → chat-runs/[id]/events}/route/server-reference-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/auth → chat-runs/[id]/events}/route.js.map +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/callback → task-groups/[id]}/route/build-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/callback → task-groups/[id]}/route/server-reference-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/callback → task-groups/[id]}/route.js.map +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/cycles → task-groups/[id]/tasks}/route/build-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/cycles → task-groups/[id]/tasks}/route/server-reference-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/cycles → task-groups/[id]/tasks}/route.js.map +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/[id]/recap → task-groups}/route/build-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/[id]/recap → task-groups}/route/server-reference-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/[id]/recap → task-groups}/route.js.map +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/[id] → tracker/notes}/route/build-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/[id] → tracker/notes}/route/server-reference-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/[id] → tracker/notes}/route.js.map +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues → trackers/[tracker]}/active-agents/route/build-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues → trackers/[tracker]}/active-agents/route/server-reference-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues → trackers/[tracker]}/active-agents/route.js.map +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/activity → trackers/[tracker]/auth}/route/build-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/activity → trackers/[tracker]/auth}/route/server-reference-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/activity → trackers/[tracker]/auth}/route.js.map +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/context → trackers/[tracker]/callback}/route/build-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/context → trackers/[tracker]/callback}/route/server-reference-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues/context → trackers/[tracker]/callback}/route.js.map +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues → trackers/[tracker]/groups}/route/build-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues → trackers/[tracker]/groups}/route/server-reference-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/issues → trackers/[tracker]/groups}/route.js.map +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/mcp-setup → trackers/[tracker]/items/[id]/activity}/route/build-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/mcp-setup → trackers/[tracker]/items/[id]/activity}/route/server-reference-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/mcp-setup → trackers/[tracker]/items/[id]/activity}/route.js.map +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/options → trackers/[tracker]/items/[id]/recap}/route/build-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/options → trackers/[tracker]/items/[id]/recap}/route/server-reference-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/options → trackers/[tracker]/items/[id]/recap}/route.js.map +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/runs → trackers/[tracker]/items}/[id]/route/build-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/runs → trackers/[tracker]/items}/[id]/route/server-reference-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/runs → trackers/[tracker]/items}/[id]/route.js.map +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/runs → trackers/[tracker]/items}/route/build-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/runs → trackers/[tracker]/items}/route/server-reference-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/runs → trackers/[tracker]/items}/route.js.map +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/runs/scripted → trackers/[tracker]/mcp-setup}/route/build-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/runs/scripted → trackers/[tracker]/mcp-setup}/route/server-reference-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/runs/scripted → trackers/[tracker]/mcp-setup}/route.js.map +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/status → trackers/[tracker]/options}/route/build-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/status → trackers/[tracker]/options}/route/server-reference-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/status → trackers/[tracker]/options}/route.js.map +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/token → trackers/[tracker]/runs/[id]}/route/build-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/token → trackers/[tracker]/runs/[id]}/route/server-reference-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/token → trackers/[tracker]/runs/[id]}/route.js.map +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/worker → trackers/[tracker]/runs}/route/build-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/worker → trackers/[tracker]/runs}/route/server-reference-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{linear/worker → trackers/[tracker]/runs}/route.js.map +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{projects/[id]/objectives/[objectiveId]/linear-issues → trackers/[tracker]/runs/scripted}/route/build-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{projects/[id]/objectives/[objectiveId]/linear-issues → trackers/[tracker]/runs/scripted}/route/server-reference-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/api/{projects/[id]/objectives/[objectiveId]/linear-issues → trackers/[tracker]/runs/scripted}/route.js.map +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/{projects/[slug]/linear/page → api/trackers/[tracker]/status/route}/server-reference-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/{projects/[slug]/linear/page.js.map → api/trackers/[tracker]/status/route.js.map} +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/{linear → tracking/[tracker]}/page/build-manifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/static/{a4zqdHSrJMueXhCPqODSx → QEldoF1LdgJqO0PgpmUmx}/_buildManifest.js +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/static/{a4zqdHSrJMueXhCPqODSx → QEldoF1LdgJqO0PgpmUmx}/_clientMiddlewareManifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/static/{a4zqdHSrJMueXhCPqODSx → QEldoF1LdgJqO0PgpmUmx}/_ssgManifest.js +0 -0
- /package/cloud-runtime/standalone/apps/local/components/{linear/LinearBoardFilters.tsx → tracker/TrackerBoardFilters.tsx} +0 -0
|
@@ -4,55 +4,74 @@ import React, { useCallback, useEffect, useMemo, useRef, useState } from "react"
|
|
|
4
4
|
import dynamic from "next/dynamic";
|
|
5
5
|
import { ArrowDown, ArrowUp, ChevronLeft, Clock, FileText, Play, Plus, RefreshCw, Search, Settings, User, X } from "lucide-react";
|
|
6
6
|
import { useUrlSelection } from "@/hooks/useUrlSelection";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
7
|
+
import { useTrackerItems } from "@/hooks/useTrackerItems";
|
|
8
|
+
import type { TrackerItem, TrackerStatusCategory } from "@/lib/tracker/types";
|
|
9
|
+
import { useTrackerConnection } from "@/hooks/useTrackerConnection";
|
|
10
|
+
import { useTrackerRuns } from "@/hooks/useTrackerRuns";
|
|
11
|
+
import type { TrackerRunRecord } from "@/lib/tracker/tracker-run-store";
|
|
12
|
+
import { useTrackerRunScripts } from "@/hooks/useTrackerRunScripts";
|
|
11
13
|
import { useGroupChat } from "@/hooks/useGroupChat";
|
|
12
14
|
import { useProcessPolling } from "@/hooks/useProcessPolling";
|
|
13
15
|
import { Markdown } from "@/components/chat-ui/Markdown";
|
|
14
|
-
import RunScriptManager from "@/components/
|
|
16
|
+
import RunScriptManager from "@/components/tracker/RunScriptManager";
|
|
15
17
|
import { stripMarkers } from "@/lib/chat-utils";
|
|
16
18
|
import { useInputCapabilities } from "@/hooks/useInputCapabilities";
|
|
17
19
|
import {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
} from "@/state/
|
|
20
|
+
loadTrackerBoardFilters,
|
|
21
|
+
persistTrackerBoardFilters,
|
|
22
|
+
} from "@/state/trackerBoardFilters";
|
|
21
23
|
import {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
} from "@/state/
|
|
24
|
+
loadPinnedTrackerItemIds,
|
|
25
|
+
persistPinnedTrackerItemIds,
|
|
26
|
+
} from "@/state/trackerBoardPins";
|
|
25
27
|
import {
|
|
26
28
|
loadLinearTicketPanelWidth,
|
|
27
29
|
persistLinearTicketPanelWidth,
|
|
28
30
|
} from "@/state/windowState";
|
|
31
|
+
import { loadLastRunForIssue, persistLastRunForIssue } from "@/state/lastSession";
|
|
29
32
|
import {
|
|
30
33
|
orderParticipantIds,
|
|
31
34
|
type ComposerRoutingMetadata,
|
|
32
35
|
} from "@/lib/chat/composer-routing";
|
|
33
|
-
import {
|
|
36
|
+
import { buildTrackerExecutionPrompt } from "@/lib/tracker/tracker-execution-prompt";
|
|
34
37
|
import type { Participant } from "@/lib/types";
|
|
35
|
-
import LinearSetup from "@/components/
|
|
36
|
-
import
|
|
38
|
+
import LinearSetup from "@/components/tracking/TrackerSetup";
|
|
39
|
+
import TrackerSettingsModal from "@/components/tracker/TrackerSettingsModal";
|
|
37
40
|
import {
|
|
38
41
|
getRunDisplayState,
|
|
39
42
|
getRunTitle,
|
|
40
43
|
STATUS_BADGE_STYLES,
|
|
41
44
|
STATUS_DOT_COLORS,
|
|
45
|
+
STATUS_LABELS,
|
|
42
46
|
STATUS_TEXT_COLORS,
|
|
43
|
-
} from "@/lib/
|
|
47
|
+
} from "@/lib/tracker-run-status";
|
|
44
48
|
import { ResizeHandle } from "@/components/ui/ResizeHandle";
|
|
45
49
|
import {
|
|
46
50
|
FilterSelect,
|
|
47
51
|
IssueStatusSelect,
|
|
48
52
|
MultiFilterPopdown,
|
|
49
53
|
type FilterOption,
|
|
50
|
-
} from "@/components/
|
|
51
|
-
import { TicketRow } from "@/components/
|
|
52
|
-
import { TicketPanel } from "@/components/
|
|
53
|
-
import {
|
|
54
|
-
import {
|
|
55
|
-
import { agentAvatarUrl } from "@/lib/
|
|
54
|
+
} from "@/components/tracker/TrackerBoardFilters";
|
|
55
|
+
import { TicketRow } from "@/components/tracker/TicketRow";
|
|
56
|
+
import { TicketPanel } from "@/components/tracker/TicketPanel";
|
|
57
|
+
import { useTrackerParticipants } from "@/hooks/useTrackerParticipants";
|
|
58
|
+
import { useTrackerActiveAgents } from "@/hooks/useTrackerActiveAgents";
|
|
59
|
+
import { agentAvatarUrl } from "@/lib/tracker-board-utils";
|
|
60
|
+
import { useTaskGroups, type TaskGroup } from "@/hooks/useTaskGroups";
|
|
61
|
+
import { FolderRow } from "@/components/tracker/FolderRow";
|
|
62
|
+
import { GroupPanel } from "@/components/tracker/GroupPanel";
|
|
63
|
+
import { GroupNamePrompt, PENDING_GROUP_DROP_ID } from "@/components/tracker/GroupNamePrompt";
|
|
64
|
+
import { SelectionBar } from "@/components/tracker/SelectionBar";
|
|
65
|
+
import {
|
|
66
|
+
DndContext,
|
|
67
|
+
DragOverlay,
|
|
68
|
+
closestCenter,
|
|
69
|
+
PointerSensor,
|
|
70
|
+
useSensor,
|
|
71
|
+
useSensors,
|
|
72
|
+
type DragEndEvent,
|
|
73
|
+
type DragStartEvent,
|
|
74
|
+
} from "@dnd-kit/core";
|
|
56
75
|
|
|
57
76
|
const Composer = dynamic(
|
|
58
77
|
() => import("@/components/chat-ui/Composer").then((module) => module.Composer),
|
|
@@ -70,34 +89,31 @@ function formatRunTime(iso: string): string {
|
|
|
70
89
|
});
|
|
71
90
|
}
|
|
72
91
|
|
|
73
|
-
interface
|
|
92
|
+
interface GroupOption {
|
|
74
93
|
id: string;
|
|
75
|
-
|
|
76
|
-
name: string | null;
|
|
77
|
-
startsAt: string;
|
|
78
|
-
endsAt: string;
|
|
94
|
+
name: string;
|
|
79
95
|
}
|
|
80
96
|
|
|
81
|
-
interface
|
|
97
|
+
interface TrackerEntityOption {
|
|
82
98
|
id: string;
|
|
83
99
|
name: string;
|
|
84
100
|
}
|
|
85
101
|
|
|
86
102
|
function ThreadMessageList({
|
|
87
|
-
|
|
103
|
+
item,
|
|
88
104
|
run,
|
|
89
105
|
participants,
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
106
|
+
itemStatusOptions,
|
|
107
|
+
itemStatusUpdating,
|
|
108
|
+
onItemStatusChange,
|
|
93
109
|
onBack,
|
|
94
110
|
}: {
|
|
95
|
-
|
|
96
|
-
run:
|
|
111
|
+
item: TrackerItem;
|
|
112
|
+
run: TrackerRunRecord;
|
|
97
113
|
participants: Participant[];
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
114
|
+
itemStatusOptions: FilterOption[];
|
|
115
|
+
itemStatusUpdating: boolean;
|
|
116
|
+
onItemStatusChange: (item: TrackerItem, status: string) => void;
|
|
101
117
|
onBack?: () => void;
|
|
102
118
|
}) {
|
|
103
119
|
const { messages, setMessages, sendMessage, loadHistory, stop } = useGroupChat(
|
|
@@ -115,7 +131,7 @@ function ThreadMessageList({
|
|
|
115
131
|
const runDisplay = useMemo(() => {
|
|
116
132
|
const latestChatRun = chatRuns[0];
|
|
117
133
|
if (!latestChatRun) return getRunDisplayState(run);
|
|
118
|
-
const mappedStatus: Record<string,
|
|
134
|
+
const mappedStatus: Record<string, TrackerRunRecord["status"]> = {
|
|
119
135
|
queued: "queued",
|
|
120
136
|
running: "running",
|
|
121
137
|
awaiting_user: "running",
|
|
@@ -196,7 +212,7 @@ function ThreadMessageList({
|
|
|
196
212
|
</button>
|
|
197
213
|
)}
|
|
198
214
|
<span className="shrink-0 font-mono text-sm text-[var(--muted-foreground)]">
|
|
199
|
-
{
|
|
215
|
+
{item.identifier}
|
|
200
216
|
</span>
|
|
201
217
|
<div className="h-1 w-1 shrink-0 rounded-full bg-[var(--card-border)]" />
|
|
202
218
|
<span className="truncate text-sm font-medium text-[var(--foreground)]">
|
|
@@ -206,11 +222,11 @@ function ThreadMessageList({
|
|
|
206
222
|
|
|
207
223
|
<div className="flex shrink-0 items-center gap-4">
|
|
208
224
|
<IssueStatusSelect
|
|
209
|
-
status={
|
|
210
|
-
options={
|
|
211
|
-
disabled={
|
|
212
|
-
updating={
|
|
213
|
-
onChange={(status) =>
|
|
225
|
+
status={item.status}
|
|
226
|
+
options={itemStatusOptions}
|
|
227
|
+
disabled={itemStatusOptions.length === 0}
|
|
228
|
+
updating={itemStatusUpdating}
|
|
229
|
+
onChange={(status) => onItemStatusChange(item, status)}
|
|
214
230
|
/>
|
|
215
231
|
<div
|
|
216
232
|
className={`flex items-center gap-2 rounded-md border px-2.5 py-1 ${STATUS_BADGE_STYLES[runDisplay.tone]}`}
|
|
@@ -355,13 +371,14 @@ function ThreadMessageList({
|
|
|
355
371
|
);
|
|
356
372
|
}
|
|
357
373
|
|
|
358
|
-
interface
|
|
374
|
+
interface TrackerBoardProps {
|
|
375
|
+
trackerType: string;
|
|
359
376
|
projectId?: string;
|
|
360
377
|
projectSlug?: string;
|
|
361
378
|
initialShowSettings?: boolean;
|
|
362
379
|
}
|
|
363
380
|
|
|
364
|
-
export default function
|
|
381
|
+
export default function TrackerBoard({ trackerType, projectId, projectSlug, initialShowSettings }: TrackerBoardProps) {
|
|
365
382
|
const { isTouchLayout } = useInputCapabilities();
|
|
366
383
|
const {
|
|
367
384
|
connected,
|
|
@@ -373,32 +390,32 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
373
390
|
connectWithKey,
|
|
374
391
|
disconnect,
|
|
375
392
|
configureMcp,
|
|
376
|
-
} =
|
|
393
|
+
} = useTrackerConnection(trackerType, projectId ?? "");
|
|
377
394
|
|
|
378
|
-
const
|
|
395
|
+
const lastRestoredItemRef = useRef<string | null>(null);
|
|
379
396
|
const [showSettings, setShowSettings] = useState(initialShowSettings ?? false);
|
|
380
397
|
const [showRunScripts, setShowRunScripts] = useState(false);
|
|
381
398
|
const [ticketPanelWidth, setTicketPanelWidth] = useState(() => loadLinearTicketPanelWidth() || 576);
|
|
382
399
|
const [search, setSearch] = useState("");
|
|
383
400
|
const [debouncedSearch, setDebouncedSearch] = useState("");
|
|
384
401
|
const [filterOptionsLoaded, setFilterOptionsLoaded] = useState(false);
|
|
385
|
-
const [assignees, setAssignees] = useState<
|
|
386
|
-
const [
|
|
387
|
-
const [workspaces, setWorkspaces] = useState<
|
|
402
|
+
const [assignees, setAssignees] = useState<TrackerEntityOption[]>([]);
|
|
403
|
+
const [statusCategories, setStatusCategories] = useState<{ value: string; label: string }[]>([]);
|
|
404
|
+
const [workspaces, setWorkspaces] = useState<TrackerEntityOption[]>([]);
|
|
388
405
|
const [selectedAssigneeIds, setSelectedAssigneeIds] = useState<string[]>([]);
|
|
389
|
-
const [
|
|
390
|
-
const [
|
|
391
|
-
const [
|
|
406
|
+
const [selectedStatusCategories, setSelectedStatusCategories] = useState<string[]>([]);
|
|
407
|
+
const [groups, setGroups] = useState<GroupOption[]>([]);
|
|
408
|
+
const [selectedGroupId, setSelectedGroupId] = useState("");
|
|
392
409
|
const [selectedWorkspaceId, setSelectedWorkspaceId] = useState("");
|
|
393
410
|
const [sortBy, setSortBy] = useState<"activity" | "identifier" | "status" | "created">("activity");
|
|
394
411
|
const [sortDir, setSortDir] = useState<"asc" | "desc">("desc");
|
|
395
412
|
const [hasActivity, setHasActivity] = useState(false);
|
|
396
|
-
const [
|
|
397
|
-
const [
|
|
398
|
-
const [
|
|
399
|
-
const { participants } =
|
|
400
|
-
const { issueActiveAgents } =
|
|
401
|
-
const [
|
|
413
|
+
const [pinnedItemIds, setPinnedItemIds] = useState<Set<string>>(() => loadPinnedTrackerItemIds(trackerType, projectSlug));
|
|
414
|
+
const [selectedItemFallback, setSelectedItemFallback] = useState<TrackerItem | null>(null);
|
|
415
|
+
const [updatingItemId, setUpdatingItemId] = useState<string | null>(null);
|
|
416
|
+
const { participants } = useTrackerParticipants(trackerType, projectId);
|
|
417
|
+
const { issueActiveAgents } = useTrackerActiveAgents(trackerType, projectId);
|
|
418
|
+
const [pickerItem, setPickerItem] = useState<TrackerItem | null>(null);
|
|
402
419
|
const [pickerAnchor, setPickerAnchor] = useState<{ top: number; left: number } | null>(null);
|
|
403
420
|
const [touchPanelTab, setTouchPanelTab] = useState<"runs" | "ticket">("runs");
|
|
404
421
|
const searchDebounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);
|
|
@@ -406,8 +423,158 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
406
423
|
const runScriptsButtonRef = useRef<HTMLButtonElement | null>(null);
|
|
407
424
|
const runScriptsPanelRef = useRef<HTMLDivElement | null>(null);
|
|
408
425
|
const { getSelection, pushSelection, replaceSelection } = useUrlSelection();
|
|
409
|
-
const
|
|
426
|
+
const selectedItemId = getSelection("issue");
|
|
410
427
|
const selectedRunId = getSelection("run");
|
|
428
|
+
const selectedGroupTaskGroupId = getSelection("group");
|
|
429
|
+
|
|
430
|
+
// Task groups
|
|
431
|
+
const {
|
|
432
|
+
groups: taskGroups,
|
|
433
|
+
createGroup,
|
|
434
|
+
updateGroup,
|
|
435
|
+
deleteGroup,
|
|
436
|
+
addTasksToGroup,
|
|
437
|
+
removeTaskFromGroup: removeTaskFromGroupApi,
|
|
438
|
+
refetch: refetchGroups,
|
|
439
|
+
} = useTaskGroups(projectId);
|
|
440
|
+
|
|
441
|
+
// Multi-select state
|
|
442
|
+
const [multiSelectedItemIds, setMultiSelectedItemIds] = useState<Set<string>>(new Set());
|
|
443
|
+
const [showGroupNamePrompt, setShowGroupNamePrompt] = useState(false);
|
|
444
|
+
const [pendingGroupTaskIds, setPendingGroupTaskIds] = useState<string[]>([]);
|
|
445
|
+
const [pendingGroupTargetId, setPendingGroupTargetId] = useState<string | null>(null);
|
|
446
|
+
|
|
447
|
+
// Drag state
|
|
448
|
+
const dndSensors = useSensors(
|
|
449
|
+
useSensor(PointerSensor, {
|
|
450
|
+
activationConstraint: { distance: 8 },
|
|
451
|
+
}),
|
|
452
|
+
);
|
|
453
|
+
const [dragActiveId, setDragActiveId] = useState<string | null>(null);
|
|
454
|
+
|
|
455
|
+
const toggleItemMultiSelect = useCallback((itemId: string) => {
|
|
456
|
+
setMultiSelectedItemIds((prev) => {
|
|
457
|
+
const next = new Set(prev);
|
|
458
|
+
if (next.has(itemId)) {
|
|
459
|
+
next.delete(itemId);
|
|
460
|
+
} else {
|
|
461
|
+
next.add(itemId);
|
|
462
|
+
}
|
|
463
|
+
return next;
|
|
464
|
+
});
|
|
465
|
+
}, []);
|
|
466
|
+
|
|
467
|
+
const handleCreateGroup = useCallback(
|
|
468
|
+
async (name: string) => {
|
|
469
|
+
if (pendingGroupTaskIds.length < 2) return;
|
|
470
|
+
await createGroup(name, pendingGroupTaskIds);
|
|
471
|
+
setPendingGroupTaskIds([]);
|
|
472
|
+
setShowGroupNamePrompt(false);
|
|
473
|
+
setPendingGroupTargetId(null);
|
|
474
|
+
setMultiSelectedItemIds(new Set());
|
|
475
|
+
},
|
|
476
|
+
[pendingGroupTaskIds, createGroup],
|
|
477
|
+
);
|
|
478
|
+
|
|
479
|
+
// Ref to sortedItems so handleMultiSelectGroup can access it without
|
|
480
|
+
// hoisting issues (sortedItems is declared further down).
|
|
481
|
+
const sortedItemsRef = useRef<TrackerItem[]>([]);
|
|
482
|
+
|
|
483
|
+
const handleMultiSelectGroup = useCallback(() => {
|
|
484
|
+
const ids = Array.from(multiSelectedItemIds);
|
|
485
|
+
// Find the topmost selected item in the sorted list to position the prompt
|
|
486
|
+
const topmost = sortedItemsRef.current.find((i) => multiSelectedItemIds.has(i.id));
|
|
487
|
+
setPendingGroupTaskIds(ids);
|
|
488
|
+
setPendingGroupTargetId(topmost?.id ?? ids[0] ?? null);
|
|
489
|
+
setShowGroupNamePrompt(true);
|
|
490
|
+
}, [multiSelectedItemIds]);
|
|
491
|
+
|
|
492
|
+
const selectedGroup = taskGroups.find((g) => g.id === selectedGroupTaskGroupId);
|
|
493
|
+
const groupedItemIds = useMemo(
|
|
494
|
+
() => new Set(taskGroups.flatMap((g) => g.task_ids)),
|
|
495
|
+
[taskGroups],
|
|
496
|
+
);
|
|
497
|
+
|
|
498
|
+
const handleDragStart = useCallback((event: DragStartEvent) => {
|
|
499
|
+
setDragActiveId(event.active.id as string);
|
|
500
|
+
}, []);
|
|
501
|
+
|
|
502
|
+
const handleDragEnd = useCallback(
|
|
503
|
+
async (event: DragEndEvent) => {
|
|
504
|
+
setDragActiveId(null);
|
|
505
|
+
const { active, over } = event;
|
|
506
|
+
|
|
507
|
+
const activeItemId = active.id as string;
|
|
508
|
+
|
|
509
|
+
// While the pending group prompt is open, handle adds/removes
|
|
510
|
+
if (showGroupNamePrompt) {
|
|
511
|
+
const activeInPending = pendingGroupTaskIds.includes(activeItemId);
|
|
512
|
+
|
|
513
|
+
if (!over || active.id === over.id) {
|
|
514
|
+
// Dropped on nothing or self — if it was a pending item, remove it
|
|
515
|
+
if (activeInPending) {
|
|
516
|
+
setPendingGroupTaskIds((prev) => {
|
|
517
|
+
const next = prev.filter((id) => id !== activeItemId);
|
|
518
|
+
if (next.length < 2) {
|
|
519
|
+
setShowGroupNamePrompt(false);
|
|
520
|
+
setPendingGroupTargetId(null);
|
|
521
|
+
return [];
|
|
522
|
+
}
|
|
523
|
+
return next;
|
|
524
|
+
});
|
|
525
|
+
}
|
|
526
|
+
return;
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
const overId = over.id as string;
|
|
530
|
+
const droppedOnPending = overId === PENDING_GROUP_DROP_ID || pendingGroupTaskIds.includes(overId);
|
|
531
|
+
|
|
532
|
+
if (activeInPending && !droppedOnPending) {
|
|
533
|
+
// Dragged out of pending group — remove it
|
|
534
|
+
setPendingGroupTaskIds((prev) => {
|
|
535
|
+
const next = prev.filter((id) => id !== activeItemId);
|
|
536
|
+
if (next.length < 2) {
|
|
537
|
+
setShowGroupNamePrompt(false);
|
|
538
|
+
setPendingGroupTargetId(null);
|
|
539
|
+
return [];
|
|
540
|
+
}
|
|
541
|
+
return next;
|
|
542
|
+
});
|
|
543
|
+
} else if (!activeInPending) {
|
|
544
|
+
// Dragged into pending group — add it
|
|
545
|
+
setPendingGroupTaskIds((prev) => [...prev, activeItemId]);
|
|
546
|
+
}
|
|
547
|
+
return;
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
if (!over || active.id === over.id) return;
|
|
551
|
+
const overId = over.id as string;
|
|
552
|
+
|
|
553
|
+
// Check if dropping on a folder
|
|
554
|
+
const targetGroup = taskGroups.find((g) => g.id === overId);
|
|
555
|
+
if (targetGroup) {
|
|
556
|
+
await addTasksToGroup(targetGroup.id, [activeItemId]);
|
|
557
|
+
return;
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
// Check if dropping on another loose ticket (create folder)
|
|
561
|
+
const overIsLoose = !groupedItemIds.has(overId);
|
|
562
|
+
const activeIsLoose = !groupedItemIds.has(activeItemId);
|
|
563
|
+
if (activeIsLoose && overIsLoose) {
|
|
564
|
+
setPendingGroupTaskIds([activeItemId, overId]);
|
|
565
|
+
setPendingGroupTargetId(overId);
|
|
566
|
+
setShowGroupNamePrompt(true);
|
|
567
|
+
return;
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
// Ticket dragged out of a folder
|
|
571
|
+
const activeGroup = taskGroups.find((g) => g.task_ids.includes(activeItemId));
|
|
572
|
+
if (activeGroup && overIsLoose) {
|
|
573
|
+
await removeTaskFromGroupApi(activeGroup.id, activeItemId);
|
|
574
|
+
}
|
|
575
|
+
},
|
|
576
|
+
[taskGroups, groupedItemIds, addTasksToGroup, removeTaskFromGroupApi, showGroupNamePrompt, pendingGroupTaskIds],
|
|
577
|
+
);
|
|
411
578
|
|
|
412
579
|
const handleSearchChange = useCallback((value: string) => {
|
|
413
580
|
setSearch(value);
|
|
@@ -417,18 +584,18 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
417
584
|
searchDebounceRef.current = setTimeout(() => setDebouncedSearch(value), 300);
|
|
418
585
|
}, []);
|
|
419
586
|
|
|
420
|
-
const togglePin = useCallback((
|
|
421
|
-
|
|
587
|
+
const togglePin = useCallback((itemId: string) => {
|
|
588
|
+
setPinnedItemIds((prev) => {
|
|
422
589
|
const next = new Set(prev);
|
|
423
|
-
if (next.has(
|
|
424
|
-
next.delete(
|
|
590
|
+
if (next.has(itemId)) {
|
|
591
|
+
next.delete(itemId);
|
|
425
592
|
} else {
|
|
426
|
-
next.add(
|
|
593
|
+
next.add(itemId);
|
|
427
594
|
}
|
|
428
|
-
|
|
595
|
+
persistPinnedTrackerItemIds(trackerType, projectSlug, next);
|
|
429
596
|
return next;
|
|
430
597
|
});
|
|
431
|
-
}, [projectSlug]);
|
|
598
|
+
}, [trackerType, projectSlug]);
|
|
432
599
|
|
|
433
600
|
useEffect(() => {
|
|
434
601
|
return () => {
|
|
@@ -439,19 +606,19 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
439
606
|
}, []);
|
|
440
607
|
|
|
441
608
|
useEffect(() => {
|
|
442
|
-
const storedFilters =
|
|
609
|
+
const storedFilters = loadTrackerBoardFilters(trackerType, projectSlug);
|
|
443
610
|
skipNextFilterPersistRef.current = true;
|
|
444
611
|
setSearch(storedFilters.search);
|
|
445
612
|
setDebouncedSearch(storedFilters.search);
|
|
446
613
|
setSelectedAssigneeIds(storedFilters.assigneeIds);
|
|
447
|
-
|
|
448
|
-
setSelectedWorkspaceId(storedFilters.
|
|
449
|
-
|
|
614
|
+
setSelectedStatusCategories(storedFilters.statusCategories);
|
|
615
|
+
setSelectedWorkspaceId(storedFilters.groupIds?.[0] ?? "");
|
|
616
|
+
setSelectedGroupId(storedFilters.groupIds?.[0] ?? "");
|
|
450
617
|
setSortBy(storedFilters.sortBy);
|
|
451
618
|
setSortDir(storedFilters.sortDir);
|
|
452
619
|
setHasActivity(storedFilters.hasActivity);
|
|
453
|
-
|
|
454
|
-
}, [projectSlug]);
|
|
620
|
+
setPinnedItemIds(loadPinnedTrackerItemIds(trackerType, projectSlug));
|
|
621
|
+
}, [trackerType, projectSlug]);
|
|
455
622
|
|
|
456
623
|
useEffect(() => {
|
|
457
624
|
if (skipNextFilterPersistRef.current) {
|
|
@@ -459,17 +626,16 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
459
626
|
return;
|
|
460
627
|
}
|
|
461
628
|
|
|
462
|
-
|
|
629
|
+
persistTrackerBoardFilters(trackerType, projectSlug, {
|
|
463
630
|
search,
|
|
464
631
|
assigneeIds: selectedAssigneeIds,
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
cycleId: selectedCycleId,
|
|
632
|
+
statusCategories: selectedStatusCategories,
|
|
633
|
+
groupIds: selectedGroupId ? [selectedGroupId] : [],
|
|
468
634
|
sortBy,
|
|
469
635
|
sortDir,
|
|
470
636
|
hasActivity,
|
|
471
637
|
});
|
|
472
|
-
}, [projectSlug, search, selectedAssigneeIds,
|
|
638
|
+
}, [trackerType, projectSlug, search, selectedAssigneeIds, selectedStatusCategories, selectedWorkspaceId, selectedGroupId, sortBy, sortDir, hasActivity]);
|
|
473
639
|
|
|
474
640
|
// Fetch filter options when connected
|
|
475
641
|
useEffect(() => {
|
|
@@ -481,7 +647,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
481
647
|
if (projectSlug) {
|
|
482
648
|
params.set("projectSlug", projectSlug);
|
|
483
649
|
}
|
|
484
|
-
const url = `/api/
|
|
650
|
+
const url = `/api/trackers/${trackerType}/options?${params.toString()}`;
|
|
485
651
|
fetch(url)
|
|
486
652
|
.then((res) => res.json())
|
|
487
653
|
.then((data) => {
|
|
@@ -489,24 +655,24 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
489
655
|
return;
|
|
490
656
|
}
|
|
491
657
|
setAssignees(Array.isArray(data.assignees) ? data.assignees : []);
|
|
492
|
-
|
|
658
|
+
setStatusCategories(Array.isArray(data.statuses) ? data.statuses.map((s: { name: string; category: string }) => ({ value: s.name, label: s.name })) : []);
|
|
493
659
|
setWorkspaces(Array.isArray(data.teams) ? data.teams : []);
|
|
494
|
-
|
|
660
|
+
setGroups(Array.isArray(data.cycles) ? data.cycles : []);
|
|
495
661
|
setFilterOptionsLoaded(true);
|
|
496
662
|
})
|
|
497
663
|
.catch(() => {
|
|
498
664
|
if (!cancelled) {
|
|
499
665
|
setAssignees([]);
|
|
500
|
-
|
|
666
|
+
setStatusCategories([]);
|
|
501
667
|
setWorkspaces([]);
|
|
502
|
-
|
|
668
|
+
setGroups([]);
|
|
503
669
|
setFilterOptionsLoaded(true);
|
|
504
670
|
}
|
|
505
671
|
});
|
|
506
672
|
return () => {
|
|
507
673
|
cancelled = true;
|
|
508
674
|
};
|
|
509
|
-
}, [connected, projectId, projectSlug]);
|
|
675
|
+
}, [connected, trackerType, projectId, projectSlug]);
|
|
510
676
|
|
|
511
677
|
useEffect(() => {
|
|
512
678
|
if (!filterOptionsLoaded) {
|
|
@@ -524,11 +690,12 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
524
690
|
if (!filterOptionsLoaded) {
|
|
525
691
|
return;
|
|
526
692
|
}
|
|
527
|
-
const
|
|
528
|
-
|
|
529
|
-
|
|
693
|
+
const validValues = statusCategories.map((s) => s.value);
|
|
694
|
+
const validStatuses = selectedStatusCategories.filter((status) => validValues.includes(status));
|
|
695
|
+
if (validStatuses.length !== selectedStatusCategories.length) {
|
|
696
|
+
setSelectedStatusCategories(validStatuses);
|
|
530
697
|
}
|
|
531
|
-
}, [filterOptionsLoaded,
|
|
698
|
+
}, [filterOptionsLoaded, selectedStatusCategories, statusCategories]);
|
|
532
699
|
|
|
533
700
|
useEffect(() => {
|
|
534
701
|
if (!filterOptionsLoaded) {
|
|
@@ -548,67 +715,66 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
548
715
|
if (!filterOptionsLoaded) {
|
|
549
716
|
return;
|
|
550
717
|
}
|
|
551
|
-
if (
|
|
552
|
-
|
|
718
|
+
if (selectedGroupId && !groups.some((group) => group.id === selectedGroupId)) {
|
|
719
|
+
setSelectedGroupId("");
|
|
553
720
|
}
|
|
554
|
-
}, [
|
|
721
|
+
}, [groups, filterOptionsLoaded, selectedGroupId]);
|
|
555
722
|
|
|
556
723
|
const filters = useMemo(
|
|
557
724
|
() => ({
|
|
558
725
|
search: debouncedSearch || undefined,
|
|
559
726
|
statuses:
|
|
560
|
-
|
|
561
|
-
?
|
|
727
|
+
selectedStatusCategories.length > 0 && selectedStatusCategories.length < statusCategories.length
|
|
728
|
+
? selectedStatusCategories
|
|
562
729
|
: undefined,
|
|
563
730
|
assigneeIds: selectedAssigneeIds.length > 0 ? selectedAssigneeIds : undefined,
|
|
564
|
-
|
|
565
|
-
cycleId: selectedCycleId || undefined,
|
|
731
|
+
groupIds: selectedGroupId ? [selectedGroupId] : undefined,
|
|
566
732
|
sortBy,
|
|
567
733
|
sortDir,
|
|
568
734
|
hasActivity: hasActivity || undefined,
|
|
569
735
|
}),
|
|
570
|
-
[debouncedSearch, selectedAssigneeIds,
|
|
736
|
+
[debouncedSearch, selectedAssigneeIds, selectedGroupId, selectedStatusCategories, statusCategories.length, sortBy, sortDir, hasActivity]
|
|
571
737
|
);
|
|
572
738
|
|
|
573
739
|
const {
|
|
574
|
-
|
|
575
|
-
loading:
|
|
740
|
+
items,
|
|
741
|
+
loading: itemsLoading,
|
|
576
742
|
hasMore,
|
|
577
743
|
loadMore,
|
|
578
|
-
refresh:
|
|
579
|
-
|
|
580
|
-
} =
|
|
744
|
+
refresh: refreshItems,
|
|
745
|
+
updateItem,
|
|
746
|
+
} = useTrackerItems(trackerType, filters, connected && filterOptionsLoaded && Boolean(projectId), {
|
|
581
747
|
projectId: projectId ?? "",
|
|
582
|
-
projectSlug,
|
|
583
748
|
});
|
|
584
|
-
const
|
|
585
|
-
() => (
|
|
586
|
-
[
|
|
749
|
+
const selectedItemFromList = useMemo(
|
|
750
|
+
() => (selectedItemId ? items.find((item) => item.id === selectedItemId) ?? null : null),
|
|
751
|
+
[items, selectedItemId],
|
|
587
752
|
);
|
|
588
|
-
const
|
|
589
|
-
|
|
590
|
-
(
|
|
591
|
-
|
|
592
|
-
const
|
|
593
|
-
if (
|
|
594
|
-
const pinned:
|
|
595
|
-
const unpinned:
|
|
596
|
-
for (const
|
|
597
|
-
if (
|
|
598
|
-
pinned.push(
|
|
753
|
+
const selectedItem =
|
|
754
|
+
selectedItemFromList ??
|
|
755
|
+
(selectedItemFallback?.id === selectedItemId ? selectedItemFallback : null);
|
|
756
|
+
|
|
757
|
+
const sortedItems = useMemo(() => {
|
|
758
|
+
if (pinnedItemIds.size === 0) return items;
|
|
759
|
+
const pinned: TrackerItem[] = [];
|
|
760
|
+
const unpinned: TrackerItem[] = [];
|
|
761
|
+
for (const item of items) {
|
|
762
|
+
if (pinnedItemIds.has(item.id)) {
|
|
763
|
+
pinned.push(item);
|
|
599
764
|
} else {
|
|
600
|
-
unpinned.push(
|
|
765
|
+
unpinned.push(item);
|
|
601
766
|
}
|
|
602
767
|
}
|
|
603
768
|
return [...pinned, ...unpinned];
|
|
604
|
-
}, [
|
|
769
|
+
}, [items, pinnedItemIds]);
|
|
770
|
+
sortedItemsRef.current = sortedItems;
|
|
605
771
|
|
|
606
772
|
const {
|
|
607
773
|
runs,
|
|
608
774
|
loading: runsLoading,
|
|
609
775
|
createRun,
|
|
610
776
|
updateRun,
|
|
611
|
-
} =
|
|
777
|
+
} = useTrackerRuns(trackerType, selectedItem?.id ?? null, projectId ?? null);
|
|
612
778
|
const {
|
|
613
779
|
scripts: runScripts,
|
|
614
780
|
activeScriptId,
|
|
@@ -616,60 +782,63 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
616
782
|
setActiveScriptId,
|
|
617
783
|
saveScript,
|
|
618
784
|
deleteScript,
|
|
619
|
-
} =
|
|
785
|
+
} = useTrackerRunScripts(trackerType, projectSlug);
|
|
620
786
|
|
|
621
787
|
const selectedRun = selectedRunId
|
|
622
788
|
? runs.find((run) => run.id === selectedRunId) ?? null
|
|
623
789
|
: null;
|
|
790
|
+
const storedRunId = selectedItemId && !selectedRunId ? loadLastRunForIssue(selectedItemId) : null;
|
|
791
|
+
const isAwaitingRestore = !!storedRunId && lastRestoredItemRef.current !== selectedItemId;
|
|
624
792
|
const assigneeOptions = useMemo<FilterOption[]>(
|
|
625
793
|
() => assignees.map((assignee) => ({ value: assignee.id, label: assignee.name })),
|
|
626
794
|
[assignees]
|
|
627
795
|
);
|
|
628
796
|
const statusOptions = useMemo<FilterOption[]>(
|
|
629
|
-
() =>
|
|
630
|
-
[
|
|
797
|
+
() => statusCategories.map((s) => ({ value: s.value, label: s.label })),
|
|
798
|
+
[statusCategories]
|
|
631
799
|
);
|
|
632
|
-
const
|
|
633
|
-
() =>
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
800
|
+
const itemStatusOptions = useMemo<FilterOption[]>(
|
|
801
|
+
() => {
|
|
802
|
+
const opts = statusCategories.map((s) => ({ value: s.label, label: s.label }));
|
|
803
|
+
const existing = new Set(opts.map((o) => o.value));
|
|
804
|
+
const current = selectedItem?.status?.trim();
|
|
805
|
+
if (current && !existing.has(current)) {
|
|
806
|
+
opts.unshift({ value: current, label: current });
|
|
807
|
+
}
|
|
808
|
+
return opts;
|
|
809
|
+
},
|
|
810
|
+
[selectedItem?.status, statusCategories]
|
|
642
811
|
);
|
|
643
812
|
const workspaceOptions = useMemo<FilterOption[]>(
|
|
644
813
|
() => [{ value: "", label: "Workspace" }, ...workspaces.map((workspace) => ({ value: workspace.id, label: workspace.name }))],
|
|
645
814
|
[workspaces]
|
|
646
815
|
);
|
|
647
|
-
const
|
|
816
|
+
const groupOptions = useMemo<FilterOption[]>(
|
|
648
817
|
() => [
|
|
649
|
-
{ value: "", label: "
|
|
650
|
-
...
|
|
651
|
-
value:
|
|
652
|
-
label:
|
|
818
|
+
{ value: "", label: "Group" },
|
|
819
|
+
...groups.map((group) => ({
|
|
820
|
+
value: group.id,
|
|
821
|
+
label: group.name,
|
|
653
822
|
})),
|
|
654
823
|
],
|
|
655
|
-
[
|
|
824
|
+
[groups]
|
|
656
825
|
);
|
|
657
826
|
const showStatusFilter = statusOptions.length > 0;
|
|
658
|
-
const
|
|
827
|
+
const showGroupFilter = groupOptions.length > 1;
|
|
659
828
|
const showWorkspaceFilter = workspaceOptions.length > 2;
|
|
660
829
|
const activeSessionScriptLabel = activeScript?.name ?? "AGX default";
|
|
661
830
|
|
|
662
|
-
const
|
|
663
|
-
async (
|
|
831
|
+
const handleItemStatusChange = useCallback(
|
|
832
|
+
async (item: TrackerItem, status: string) => {
|
|
664
833
|
const nextStatus = status.trim();
|
|
665
|
-
if (!nextStatus || nextStatus ===
|
|
834
|
+
if (!nextStatus || nextStatus === item.status || !projectId) {
|
|
666
835
|
return;
|
|
667
836
|
}
|
|
668
837
|
|
|
669
|
-
|
|
838
|
+
setUpdatingItemId(item.id);
|
|
670
839
|
try {
|
|
671
840
|
const response = await fetch(
|
|
672
|
-
`/api/
|
|
841
|
+
`/api/trackers/${trackerType}/items/${encodeURIComponent(item.id)}?projectId=${encodeURIComponent(projectId ?? "")}`,
|
|
673
842
|
{
|
|
674
843
|
method: "PATCH",
|
|
675
844
|
headers: { "Content-Type": "application/json" },
|
|
@@ -678,40 +847,40 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
678
847
|
);
|
|
679
848
|
const payload = (await response.json().catch(() => ({}))) as {
|
|
680
849
|
error?: string;
|
|
681
|
-
|
|
850
|
+
item?: TrackerItem;
|
|
682
851
|
};
|
|
683
852
|
|
|
684
|
-
if (!response.ok || !payload.
|
|
853
|
+
if (!response.ok || !payload.item) {
|
|
685
854
|
throw new Error(payload.error || "Failed to update ticket status");
|
|
686
855
|
}
|
|
687
856
|
|
|
688
|
-
const
|
|
689
|
-
|
|
690
|
-
if (
|
|
691
|
-
|
|
857
|
+
const updatedItem = payload.item;
|
|
858
|
+
updateItem(updatedItem);
|
|
859
|
+
if (selectedItemId === updatedItem.id) {
|
|
860
|
+
setSelectedItemFallback(updatedItem);
|
|
692
861
|
}
|
|
693
|
-
await
|
|
862
|
+
await refreshItems();
|
|
694
863
|
} catch (error) {
|
|
695
864
|
if (error instanceof Error) {
|
|
696
865
|
window.alert(error.message);
|
|
697
866
|
}
|
|
698
867
|
} finally {
|
|
699
|
-
|
|
868
|
+
setUpdatingItemId((current) => (current === item.id ? null : current));
|
|
700
869
|
}
|
|
701
870
|
},
|
|
702
|
-
[
|
|
871
|
+
[refreshItems, selectedItemId, updateItem, trackerType, projectId]
|
|
703
872
|
);
|
|
704
873
|
|
|
705
874
|
useEffect(() => {
|
|
706
|
-
if (!
|
|
707
|
-
|
|
875
|
+
if (!selectedItemId || !projectId) {
|
|
876
|
+
setSelectedItemFallback(null);
|
|
708
877
|
return;
|
|
709
878
|
}
|
|
710
879
|
|
|
711
|
-
if (
|
|
712
|
-
|
|
713
|
-
if (current?.id ===
|
|
714
|
-
return
|
|
880
|
+
if (selectedItemFromList) {
|
|
881
|
+
setSelectedItemFallback((current: TrackerItem | null) => {
|
|
882
|
+
if (current?.id === selectedItemId) {
|
|
883
|
+
return selectedItemFromList;
|
|
715
884
|
}
|
|
716
885
|
return null;
|
|
717
886
|
});
|
|
@@ -722,7 +891,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
722
891
|
|
|
723
892
|
void (async () => {
|
|
724
893
|
try {
|
|
725
|
-
const response = await fetch(`/api/
|
|
894
|
+
const response = await fetch(`/api/trackers/${trackerType}/items/${encodeURIComponent(selectedItemId)}?projectId=${encodeURIComponent(projectId ?? "")}`);
|
|
726
895
|
if (cancelled) return;
|
|
727
896
|
|
|
728
897
|
if (response.status === 404) {
|
|
@@ -731,19 +900,19 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
731
900
|
}
|
|
732
901
|
|
|
733
902
|
if (!response.ok) {
|
|
734
|
-
throw new Error(`Failed to fetch selected
|
|
903
|
+
throw new Error(`Failed to fetch selected tracker ticket: ${response.status}`);
|
|
735
904
|
}
|
|
736
905
|
|
|
737
|
-
const payload = (await response.json().catch(() => ({}))) as {
|
|
738
|
-
if (!payload.
|
|
906
|
+
const payload = (await response.json().catch(() => ({}))) as { item?: TrackerItem };
|
|
907
|
+
if (!payload.item?.id) {
|
|
739
908
|
replaceSelection({ issue: null, run: null });
|
|
740
909
|
return;
|
|
741
910
|
}
|
|
742
911
|
|
|
743
|
-
|
|
912
|
+
setSelectedItemFallback(payload.item);
|
|
744
913
|
} catch (error) {
|
|
745
914
|
if (!cancelled) {
|
|
746
|
-
console.error("Failed to hydrate selected
|
|
915
|
+
console.error("Failed to hydrate selected tracker item", error);
|
|
747
916
|
}
|
|
748
917
|
}
|
|
749
918
|
})();
|
|
@@ -751,33 +920,47 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
751
920
|
return () => {
|
|
752
921
|
cancelled = true;
|
|
753
922
|
};
|
|
754
|
-
}, [replaceSelection,
|
|
923
|
+
}, [replaceSelection, selectedItemFromList, selectedItemId, trackerType, projectId]);
|
|
755
924
|
|
|
756
925
|
useEffect(() => {
|
|
757
|
-
if (!
|
|
926
|
+
if (!selectedItemId) {
|
|
758
927
|
if (selectedRunId) {
|
|
759
928
|
replaceSelection({ run: null });
|
|
760
929
|
}
|
|
761
930
|
return;
|
|
762
931
|
}
|
|
763
|
-
}, [replaceSelection,
|
|
932
|
+
}, [replaceSelection, selectedItemId, selectedRunId]);
|
|
764
933
|
|
|
765
934
|
useEffect(() => {
|
|
766
|
-
if (!
|
|
935
|
+
if (!selectedItem || !selectedRunId || runsLoading) {
|
|
767
936
|
return;
|
|
768
937
|
}
|
|
769
938
|
|
|
770
939
|
if (!runs.some((run) => run.id === selectedRunId)) {
|
|
771
940
|
replaceSelection({ run: null });
|
|
772
941
|
}
|
|
773
|
-
}, [replaceSelection, runs, runsLoading,
|
|
942
|
+
}, [replaceSelection, runs, runsLoading, selectedItem, selectedRunId]);
|
|
943
|
+
|
|
944
|
+
useEffect(() => {
|
|
945
|
+
if (selectedItemId && selectedRunId) {
|
|
946
|
+
persistLastRunForIssue(selectedItemId, selectedRunId);
|
|
947
|
+
}
|
|
948
|
+
}, [selectedItemId, selectedRunId]);
|
|
949
|
+
|
|
950
|
+
useEffect(() => {
|
|
951
|
+
if (!isAwaitingRestore || runsLoading || runs.length === 0) return;
|
|
952
|
+
lastRestoredItemRef.current = selectedItemId;
|
|
953
|
+
if (storedRunId && runs.some((r) => r.id === storedRunId)) {
|
|
954
|
+
replaceSelection({ run: storedRunId });
|
|
955
|
+
}
|
|
956
|
+
}, [isAwaitingRestore, storedRunId, selectedItemId, runs, runsLoading, replaceSelection]);
|
|
774
957
|
|
|
775
958
|
useEffect(() => {
|
|
776
959
|
if (!isTouchLayout) {
|
|
777
960
|
return;
|
|
778
961
|
}
|
|
779
962
|
|
|
780
|
-
if (!
|
|
963
|
+
if (!selectedItem) {
|
|
781
964
|
setTouchPanelTab("runs");
|
|
782
965
|
return;
|
|
783
966
|
}
|
|
@@ -788,7 +971,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
788
971
|
}
|
|
789
972
|
|
|
790
973
|
setTouchPanelTab("runs");
|
|
791
|
-
}, [isTouchLayout, runs.length,
|
|
974
|
+
}, [isTouchLayout, runs.length, selectedItem, selectedRun]);
|
|
792
975
|
|
|
793
976
|
useEffect(() => {
|
|
794
977
|
if (!showRunScripts) {
|
|
@@ -821,22 +1004,22 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
821
1004
|
}, [showRunScripts]);
|
|
822
1005
|
|
|
823
1006
|
const executeWithAgent = useCallback(
|
|
824
|
-
async (
|
|
825
|
-
|
|
1007
|
+
async (item: TrackerItem, agent: Participant) => {
|
|
1008
|
+
setPickerItem(null);
|
|
826
1009
|
setPickerAnchor(null);
|
|
827
1010
|
|
|
828
1011
|
try {
|
|
829
|
-
const response = await fetch(
|
|
1012
|
+
const response = await fetch(`/api/trackers/${trackerType}/runs/scripted`, {
|
|
830
1013
|
method: "POST",
|
|
831
1014
|
headers: { "Content-Type": "application/json" },
|
|
832
1015
|
body: JSON.stringify({
|
|
833
1016
|
projectId: projectId ?? undefined,
|
|
834
1017
|
projectSlug: projectSlug ?? undefined,
|
|
835
|
-
issueId:
|
|
836
|
-
issueIdentifier:
|
|
837
|
-
issueTitle:
|
|
838
|
-
issueStatus:
|
|
839
|
-
issueAssignee:
|
|
1018
|
+
issueId: item.id,
|
|
1019
|
+
issueIdentifier: item.identifier,
|
|
1020
|
+
issueTitle: item.title,
|
|
1021
|
+
issueStatus: item.status,
|
|
1022
|
+
issueAssignee: item.assignee?.name ?? null,
|
|
840
1023
|
agentId: agent.id,
|
|
841
1024
|
scriptName: activeScript?.name,
|
|
842
1025
|
scriptPrompt: activeScript?.prompt,
|
|
@@ -845,7 +1028,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
845
1028
|
|
|
846
1029
|
const payload = (await response.json().catch(() => ({}))) as {
|
|
847
1030
|
error?: string;
|
|
848
|
-
run?:
|
|
1031
|
+
run?: TrackerRunRecord;
|
|
849
1032
|
chatRunId?: string;
|
|
850
1033
|
userMessageId?: string;
|
|
851
1034
|
};
|
|
@@ -854,33 +1037,33 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
854
1037
|
throw new Error(payload.error || "Failed to start scripted session");
|
|
855
1038
|
}
|
|
856
1039
|
pushSelection({
|
|
857
|
-
issue:
|
|
1040
|
+
issue: item.id,
|
|
858
1041
|
run: payload.run.id,
|
|
859
1042
|
});
|
|
860
1043
|
} catch (error) {
|
|
861
|
-
console.error("Failed to start scripted
|
|
1044
|
+
console.error("Failed to start scripted tracker session:", error);
|
|
862
1045
|
if (error instanceof Error) {
|
|
863
1046
|
window.alert(error.message);
|
|
864
1047
|
}
|
|
865
1048
|
}
|
|
866
1049
|
},
|
|
867
|
-
[activeScript, projectId, projectSlug, pushSelection]
|
|
1050
|
+
[activeScript, projectId, projectSlug, pushSelection, trackerType]
|
|
868
1051
|
);
|
|
869
1052
|
|
|
870
1053
|
const handleStartScriptedSession = useCallback(
|
|
871
|
-
(
|
|
1054
|
+
(item: TrackerItem, event?: React.MouseEvent) => {
|
|
872
1055
|
setShowRunScripts(false);
|
|
873
1056
|
if (participants.length === 0) {
|
|
874
1057
|
window.alert("Add at least one agent to this project before starting a scripted session.");
|
|
875
1058
|
return;
|
|
876
1059
|
}
|
|
877
1060
|
if (participants.length === 1) {
|
|
878
|
-
void executeWithAgent(
|
|
1061
|
+
void executeWithAgent(item, participants[0]);
|
|
879
1062
|
return;
|
|
880
1063
|
}
|
|
881
1064
|
// Multiple agents — show picker
|
|
882
1065
|
const rect = (event?.currentTarget as HTMLElement)?.getBoundingClientRect();
|
|
883
|
-
|
|
1066
|
+
setPickerItem(item);
|
|
884
1067
|
setPickerAnchor(rect ? { top: rect.bottom + 4, left: rect.left } : { top: 200, left: 200 });
|
|
885
1068
|
},
|
|
886
1069
|
[executeWithAgent, participants],
|
|
@@ -903,28 +1086,14 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
903
1086
|
return () => observer.disconnect();
|
|
904
1087
|
}, [hasMore, loadMore]);
|
|
905
1088
|
|
|
906
|
-
if (
|
|
907
|
-
return (
|
|
908
|
-
<div className="flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]">
|
|
909
|
-
Loading...
|
|
910
|
-
</div>
|
|
911
|
-
);
|
|
912
|
-
}
|
|
913
|
-
|
|
914
|
-
const needsMcpSetup = connected && !setupDismissed && !Object.values(mcpConfigured).some(Boolean);
|
|
915
|
-
|
|
916
|
-
if (!connected || needsMcpSetup) {
|
|
1089
|
+
if (!connected) {
|
|
917
1090
|
return (
|
|
918
1091
|
<LinearSetup
|
|
1092
|
+
trackerType={trackerType}
|
|
1093
|
+
projectId={projectId ?? ""}
|
|
919
1094
|
connected={connected}
|
|
920
|
-
user={user}
|
|
921
|
-
clis={clis}
|
|
922
|
-
mcpConfigured={mcpConfigured}
|
|
923
1095
|
onConnect={connect}
|
|
924
1096
|
onConnectWithKey={connectWithKey}
|
|
925
|
-
onDisconnect={disconnect}
|
|
926
|
-
onConfigureMcp={configureMcp}
|
|
927
|
-
onContinue={() => setSetupDismissed(true)}
|
|
928
1097
|
/>
|
|
929
1098
|
);
|
|
930
1099
|
}
|
|
@@ -949,12 +1118,12 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
949
1118
|
<button
|
|
950
1119
|
type="button"
|
|
951
1120
|
className="shrink-0 rounded p-2 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)] disabled:cursor-not-allowed disabled:opacity-50"
|
|
952
|
-
onClick={() => void
|
|
1121
|
+
onClick={() => void refreshItems()}
|
|
953
1122
|
title="Refresh tickets"
|
|
954
1123
|
aria-label="Refresh tickets"
|
|
955
|
-
disabled={
|
|
1124
|
+
disabled={itemsLoading}
|
|
956
1125
|
>
|
|
957
|
-
<RefreshCw size={16} className={
|
|
1126
|
+
<RefreshCw size={16} className={itemsLoading ? "animate-spin" : undefined} />
|
|
958
1127
|
</button>
|
|
959
1128
|
<button
|
|
960
1129
|
type="button"
|
|
@@ -963,7 +1132,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
963
1132
|
setShowRunScripts(false);
|
|
964
1133
|
setShowSettings(true);
|
|
965
1134
|
}}
|
|
966
|
-
title="
|
|
1135
|
+
title="Tracker settings"
|
|
967
1136
|
>
|
|
968
1137
|
<Settings size={16} />
|
|
969
1138
|
</button>
|
|
@@ -972,10 +1141,10 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
972
1141
|
{showStatusFilter ? (
|
|
973
1142
|
<MultiFilterPopdown
|
|
974
1143
|
label="Status"
|
|
975
|
-
values={
|
|
1144
|
+
values={selectedStatusCategories}
|
|
976
1145
|
options={statusOptions}
|
|
977
1146
|
activeClasses="border-amber-500/30 bg-amber-500/10 text-amber-300"
|
|
978
|
-
onChange={
|
|
1147
|
+
onChange={setSelectedStatusCategories}
|
|
979
1148
|
emptyLabel="All statuses"
|
|
980
1149
|
/>
|
|
981
1150
|
) : null}
|
|
@@ -996,13 +1165,13 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
996
1165
|
onChange={setSelectedWorkspaceId}
|
|
997
1166
|
/>
|
|
998
1167
|
) : null}
|
|
999
|
-
{
|
|
1168
|
+
{showGroupFilter ? (
|
|
1000
1169
|
<FilterSelect
|
|
1001
|
-
label="
|
|
1002
|
-
value={
|
|
1003
|
-
options={
|
|
1170
|
+
label="Group"
|
|
1171
|
+
value={selectedGroupId}
|
|
1172
|
+
options={groupOptions}
|
|
1004
1173
|
activeClasses="border-purple-500/30 bg-purple-500/10 text-purple-400"
|
|
1005
|
-
onChange={
|
|
1174
|
+
onChange={setSelectedGroupId}
|
|
1006
1175
|
/>
|
|
1007
1176
|
) : null}
|
|
1008
1177
|
<FilterSelect
|
|
@@ -1040,37 +1209,38 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
1040
1209
|
</div>
|
|
1041
1210
|
|
|
1042
1211
|
<div className="flex-1 overflow-y-auto">
|
|
1043
|
-
{
|
|
1212
|
+
{itemsLoading && items.length === 0 ? (
|
|
1044
1213
|
<div className="px-3 py-4 text-xs text-[var(--muted-foreground)]">
|
|
1045
1214
|
Loading tickets...
|
|
1046
1215
|
</div>
|
|
1047
|
-
) :
|
|
1216
|
+
) : items.length === 0 ? (
|
|
1048
1217
|
<div className="px-3 py-4 text-xs text-[var(--muted-foreground)]">
|
|
1049
1218
|
No tickets found.
|
|
1050
1219
|
</div>
|
|
1051
1220
|
) : (
|
|
1052
1221
|
<>
|
|
1053
|
-
{
|
|
1054
|
-
<React.Fragment key={
|
|
1055
|
-
{
|
|
1056
|
-
!
|
|
1057
|
-
(idx === 0 ||
|
|
1222
|
+
{sortedItems.map((item, idx) => (
|
|
1223
|
+
<React.Fragment key={item.id}>
|
|
1224
|
+
{pinnedItemIds.size > 0 &&
|
|
1225
|
+
!pinnedItemIds.has(item.id) &&
|
|
1226
|
+
(idx === 0 || pinnedItemIds.has(sortedItems[idx - 1].id)) && (
|
|
1058
1227
|
<div className="mx-4 border-t border-amber-500/20" />
|
|
1059
1228
|
)}
|
|
1060
1229
|
<TicketRow
|
|
1061
|
-
|
|
1062
|
-
selected={
|
|
1063
|
-
pinned={
|
|
1064
|
-
activeAgents={issueActiveAgents.get(
|
|
1230
|
+
item={item}
|
|
1231
|
+
selected={selectedItem?.id === item.id}
|
|
1232
|
+
pinned={pinnedItemIds.has(item.id)}
|
|
1233
|
+
activeAgents={issueActiveAgents.get(item.id)}
|
|
1065
1234
|
participants={participants}
|
|
1235
|
+
projectSlug={projectSlug}
|
|
1066
1236
|
onSelect={() => {
|
|
1067
1237
|
setTouchPanelTab("runs");
|
|
1068
1238
|
pushSelection({
|
|
1069
|
-
issue:
|
|
1239
|
+
issue: item.id,
|
|
1070
1240
|
run: null,
|
|
1071
1241
|
});
|
|
1072
1242
|
}}
|
|
1073
|
-
onTogglePin={() => togglePin(
|
|
1243
|
+
onTogglePin={() => togglePin(item.id)}
|
|
1074
1244
|
/>
|
|
1075
1245
|
</React.Fragment>
|
|
1076
1246
|
))}
|
|
@@ -1079,7 +1249,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
1079
1249
|
ref={sentinelRef}
|
|
1080
1250
|
className="py-2 text-center text-xs text-[var(--muted-foreground)]"
|
|
1081
1251
|
>
|
|
1082
|
-
{
|
|
1252
|
+
{itemsLoading ? "Loading..." : "Load more"}
|
|
1083
1253
|
</div>
|
|
1084
1254
|
) : null}
|
|
1085
1255
|
</>
|
|
@@ -1087,15 +1257,15 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
1087
1257
|
</div>
|
|
1088
1258
|
</div>
|
|
1089
1259
|
|
|
1090
|
-
{
|
|
1260
|
+
{selectedItem ? (
|
|
1091
1261
|
<div className="absolute inset-0 z-20 flex flex-col bg-[var(--background)]">
|
|
1092
1262
|
<div className="flex items-center justify-between gap-3 border-b border-[var(--card-border)] px-4 py-3">
|
|
1093
1263
|
<div className="min-w-0">
|
|
1094
1264
|
<div className="text-[10px] font-semibold uppercase tracking-[0.14em] text-[var(--muted-foreground)]">
|
|
1095
|
-
{
|
|
1265
|
+
{selectedItem.identifier}
|
|
1096
1266
|
</div>
|
|
1097
1267
|
<div className="truncate text-sm font-semibold text-[var(--foreground)]">
|
|
1098
|
-
{
|
|
1268
|
+
{selectedItem.title}
|
|
1099
1269
|
</div>
|
|
1100
1270
|
</div>
|
|
1101
1271
|
<button
|
|
@@ -1149,7 +1319,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
1149
1319
|
}}
|
|
1150
1320
|
title="Open a fresh chat for this ticket. You can choose or edit the session script in the ticket tab."
|
|
1151
1321
|
aria-label="New session"
|
|
1152
|
-
disabled={!
|
|
1322
|
+
disabled={!selectedItem}
|
|
1153
1323
|
>
|
|
1154
1324
|
<Plus size={12} />
|
|
1155
1325
|
New session
|
|
@@ -1157,7 +1327,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
1157
1327
|
</div>
|
|
1158
1328
|
|
|
1159
1329
|
<div className="flex-1 overflow-y-auto">
|
|
1160
|
-
{runsLoading && runs.length === 0 ? (
|
|
1330
|
+
{(runsLoading && runs.length === 0) || isAwaitingRestore ? (
|
|
1161
1331
|
<div className="px-3 py-4 text-xs text-[var(--muted-foreground)]">
|
|
1162
1332
|
Loading sessions...
|
|
1163
1333
|
</div>
|
|
@@ -1212,40 +1382,46 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
1212
1382
|
</div>
|
|
1213
1383
|
) : selectedRun ? (
|
|
1214
1384
|
<ThreadMessageList
|
|
1215
|
-
|
|
1385
|
+
item={selectedItem ?? {
|
|
1216
1386
|
id: selectedRun.issueId,
|
|
1217
1387
|
identifier: selectedRun.issueIdentifier,
|
|
1218
1388
|
title: selectedRun.issueTitle,
|
|
1219
|
-
url: null,
|
|
1220
1389
|
status: selectedRun.issueStatus,
|
|
1221
|
-
|
|
1390
|
+
statusCategory: "todo",
|
|
1391
|
+
labels: [],
|
|
1392
|
+
trackerId: "",
|
|
1393
|
+
trackerType,
|
|
1394
|
+
assignee: selectedRun.issueAssignee ? { id: "", name: selectedRun.issueAssignee } : undefined,
|
|
1222
1395
|
updatedAt: selectedRun.updatedAt,
|
|
1396
|
+
createdAt: selectedRun.updatedAt,
|
|
1397
|
+
url: "",
|
|
1223
1398
|
}}
|
|
1224
1399
|
run={selectedRun}
|
|
1225
1400
|
participants={participants}
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1401
|
+
itemStatusOptions={itemStatusOptions}
|
|
1402
|
+
itemStatusUpdating={updatingItemId === selectedRun.issueId}
|
|
1403
|
+
onItemStatusChange={handleItemStatusChange}
|
|
1229
1404
|
onBack={() => replaceSelection({ run: null })}
|
|
1230
1405
|
/>
|
|
1231
|
-
) : participants.length === 0 ? (
|
|
1406
|
+
) : isAwaitingRestore ? null : participants.length === 0 ? (
|
|
1232
1407
|
<div className="flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]">
|
|
1233
1408
|
Add at least one agent to this project to start a session.
|
|
1234
1409
|
</div>
|
|
1235
1410
|
) : (
|
|
1236
1411
|
<TicketPanel
|
|
1237
|
-
key={
|
|
1238
|
-
|
|
1412
|
+
key={selectedItem.id}
|
|
1413
|
+
item={selectedItem}
|
|
1414
|
+
trackerType={trackerType}
|
|
1239
1415
|
runs={runs}
|
|
1240
1416
|
participants={participants}
|
|
1241
1417
|
projectId={projectId}
|
|
1242
1418
|
projectSlug={projectSlug}
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1419
|
+
itemStatusOptions={itemStatusOptions}
|
|
1420
|
+
itemStatusUpdating={updatingItemId === selectedItem.id}
|
|
1421
|
+
onItemStatusChange={handleItemStatusChange}
|
|
1246
1422
|
activeSessionScriptLabel={activeSessionScriptLabel}
|
|
1247
1423
|
onOpenSessionScripts={() => setShowRunScripts(true)}
|
|
1248
|
-
onStartScriptedSession={(event) => handleStartScriptedSession(
|
|
1424
|
+
onStartScriptedSession={(event) => handleStartScriptedSession(selectedItem, event)}
|
|
1249
1425
|
createRun={createRun}
|
|
1250
1426
|
updateRun={updateRun}
|
|
1251
1427
|
onRunCreated={(runId) => pushSelection({ run: runId })}
|
|
@@ -1274,12 +1450,12 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
1274
1450
|
<button
|
|
1275
1451
|
type="button"
|
|
1276
1452
|
className="shrink-0 rounded p-1.5 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--card-bg)] hover:text-[var(--foreground)] disabled:cursor-not-allowed disabled:opacity-50"
|
|
1277
|
-
onClick={() => void
|
|
1453
|
+
onClick={() => void refreshItems()}
|
|
1278
1454
|
title="Refresh tickets"
|
|
1279
1455
|
aria-label="Refresh tickets"
|
|
1280
|
-
disabled={
|
|
1456
|
+
disabled={itemsLoading}
|
|
1281
1457
|
>
|
|
1282
|
-
<RefreshCw size={16} className={
|
|
1458
|
+
<RefreshCw size={16} className={itemsLoading ? "animate-spin" : undefined} />
|
|
1283
1459
|
</button>
|
|
1284
1460
|
<button
|
|
1285
1461
|
type="button"
|
|
@@ -1288,7 +1464,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
1288
1464
|
setShowRunScripts(false);
|
|
1289
1465
|
setShowSettings(true);
|
|
1290
1466
|
}}
|
|
1291
|
-
title="
|
|
1467
|
+
title="Tracker settings"
|
|
1292
1468
|
>
|
|
1293
1469
|
<Settings size={16} />
|
|
1294
1470
|
</button>
|
|
@@ -1297,10 +1473,10 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
1297
1473
|
{showStatusFilter ? (
|
|
1298
1474
|
<MultiFilterPopdown
|
|
1299
1475
|
label="Status"
|
|
1300
|
-
values={
|
|
1476
|
+
values={selectedStatusCategories}
|
|
1301
1477
|
options={statusOptions}
|
|
1302
1478
|
activeClasses="border-amber-500/30 bg-amber-500/10 text-amber-300"
|
|
1303
|
-
onChange={
|
|
1479
|
+
onChange={setSelectedStatusCategories}
|
|
1304
1480
|
emptyLabel="All statuses"
|
|
1305
1481
|
/>
|
|
1306
1482
|
) : null}
|
|
@@ -1321,13 +1497,13 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
1321
1497
|
onChange={setSelectedWorkspaceId}
|
|
1322
1498
|
/>
|
|
1323
1499
|
) : null}
|
|
1324
|
-
{
|
|
1500
|
+
{showGroupFilter ? (
|
|
1325
1501
|
<FilterSelect
|
|
1326
|
-
label="
|
|
1327
|
-
value={
|
|
1328
|
-
options={
|
|
1502
|
+
label="Group"
|
|
1503
|
+
value={selectedGroupId}
|
|
1504
|
+
options={groupOptions}
|
|
1329
1505
|
activeClasses="border-purple-500/30 bg-purple-500/10 text-purple-400"
|
|
1330
|
-
onChange={
|
|
1506
|
+
onChange={setSelectedGroupId}
|
|
1331
1507
|
/>
|
|
1332
1508
|
) : null}
|
|
1333
1509
|
<FilterSelect
|
|
@@ -1364,51 +1540,201 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
1364
1540
|
</div>
|
|
1365
1541
|
</div>
|
|
1366
1542
|
|
|
1367
|
-
<
|
|
1368
|
-
{
|
|
1543
|
+
<DndContext
|
|
1544
|
+
sensors={dndSensors}
|
|
1545
|
+
collisionDetection={closestCenter}
|
|
1546
|
+
onDragStart={handleDragStart}
|
|
1547
|
+
onDragEnd={handleDragEnd}
|
|
1548
|
+
>
|
|
1549
|
+
<div className="relative flex-1 overflow-y-auto">
|
|
1550
|
+
{itemsLoading && items.length === 0 ? (
|
|
1369
1551
|
<div className="px-3 py-4 text-xs text-[var(--muted-foreground)]">
|
|
1370
1552
|
Loading tickets...
|
|
1371
1553
|
</div>
|
|
1372
|
-
) :
|
|
1554
|
+
) : items.length === 0 ? (
|
|
1373
1555
|
<div className="px-3 py-4 text-xs text-[var(--muted-foreground)]">
|
|
1374
1556
|
No tickets found.
|
|
1375
1557
|
</div>
|
|
1376
1558
|
) : (
|
|
1377
1559
|
<>
|
|
1378
|
-
{
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1560
|
+
{/* Unified list: groups rendered inline at first-member position */}
|
|
1561
|
+
{(() => {
|
|
1562
|
+
const pendingSet = showGroupNamePrompt ? new Set(pendingGroupTaskIds) : null;
|
|
1563
|
+
|
|
1564
|
+
// Build a map: itemId → group (for the first member of each group)
|
|
1565
|
+
const firstMemberToGroup = new Map<string, typeof taskGroups[number]>();
|
|
1566
|
+
for (const group of taskGroups) {
|
|
1567
|
+
const firstInSort = sortedItems.find((i) => group.task_ids.includes(i.id));
|
|
1568
|
+
if (firstInSort) firstMemberToGroup.set(firstInSort.id, group);
|
|
1569
|
+
}
|
|
1570
|
+
|
|
1571
|
+
// Pending group prompt: find insert position
|
|
1572
|
+
const pendingTickets = showGroupNamePrompt
|
|
1573
|
+
? pendingGroupTaskIds
|
|
1574
|
+
.map((id) => sortedItems.find((i) => i.id === id))
|
|
1575
|
+
.filter(Boolean)
|
|
1576
|
+
.map((i) => ({ id: i!.id, identifier: i!.identifier, title: i!.title, status: STATUS_LABELS[i!.status] ?? i!.status }))
|
|
1577
|
+
: [];
|
|
1578
|
+
|
|
1579
|
+
// Track which groups we've rendered
|
|
1580
|
+
const renderedGroups = new Set<string>();
|
|
1581
|
+
let looseIdx = 0;
|
|
1582
|
+
|
|
1583
|
+
return sortedItems.map((item) => {
|
|
1584
|
+
// Skip pending tickets
|
|
1585
|
+
if (pendingSet?.has(item.id)) {
|
|
1586
|
+
// Render prompt at target position
|
|
1587
|
+
if (item.id === pendingGroupTargetId && showGroupNamePrompt) {
|
|
1588
|
+
return (
|
|
1589
|
+
<GroupNamePrompt
|
|
1590
|
+
key="__pending-group__"
|
|
1591
|
+
tickets={pendingTickets}
|
|
1592
|
+
onConfirm={handleCreateGroup}
|
|
1593
|
+
onCancel={() => {
|
|
1594
|
+
setShowGroupNamePrompt(false);
|
|
1595
|
+
setPendingGroupTaskIds([]);
|
|
1596
|
+
setPendingGroupTargetId(null);
|
|
1597
|
+
}}
|
|
1598
|
+
/>
|
|
1599
|
+
);
|
|
1396
1600
|
}
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1601
|
+
return null;
|
|
1602
|
+
}
|
|
1603
|
+
|
|
1604
|
+
// If this item is the first member of a group, render the group here
|
|
1605
|
+
const group = firstMemberToGroup.get(item.id);
|
|
1606
|
+
if (group && !renderedGroups.has(group.id)) {
|
|
1607
|
+
renderedGroups.add(group.id);
|
|
1608
|
+
const groupItems = group.task_ids
|
|
1609
|
+
.map((id) => sortedItems.find((i) => i.id === id))
|
|
1610
|
+
.filter(Boolean) as TrackerItem[];
|
|
1611
|
+
return (
|
|
1612
|
+
<React.Fragment key={`group-${group.id}`}>
|
|
1613
|
+
<FolderRow
|
|
1614
|
+
groupId={group.id}
|
|
1615
|
+
name={group.name}
|
|
1616
|
+
count={groupItems.length}
|
|
1617
|
+
collapsed={!!group.collapsed}
|
|
1618
|
+
selected={selectedGroupTaskGroupId === group.id}
|
|
1619
|
+
projectSlug={projectSlug}
|
|
1620
|
+
onToggleCollapse={() =>
|
|
1621
|
+
updateGroup(group.id, { collapsed: !group.collapsed })
|
|
1622
|
+
}
|
|
1623
|
+
onSelect={() =>
|
|
1624
|
+
pushSelection({ group: group.id, issue: null, run: null })
|
|
1625
|
+
}
|
|
1626
|
+
onUngroup={() => {
|
|
1627
|
+
void deleteGroup(group.id);
|
|
1628
|
+
if (selectedGroupTaskGroupId === group.id) {
|
|
1629
|
+
replaceSelection({ group: null });
|
|
1630
|
+
}
|
|
1631
|
+
}}
|
|
1632
|
+
/>
|
|
1633
|
+
{!group.collapsed &&
|
|
1634
|
+
groupItems.map((gi, giIdx) => (
|
|
1635
|
+
<TicketRow
|
|
1636
|
+
key={gi.id}
|
|
1637
|
+
item={gi}
|
|
1638
|
+
selected={selectedItem?.id === gi.id}
|
|
1639
|
+
pinned={pinnedItemIds.has(gi.id)}
|
|
1640
|
+
activeAgents={issueActiveAgents.get(gi.id)}
|
|
1641
|
+
participants={participants}
|
|
1642
|
+
draggable
|
|
1643
|
+
multiSelected={multiSelectedItemIds.has(gi.id)}
|
|
1644
|
+
treeConnector={giIdx === groupItems.length - 1 ? "last" : "mid"}
|
|
1645
|
+
projectSlug={projectSlug}
|
|
1646
|
+
onSelect={(event) => {
|
|
1647
|
+
if (event && (event.metaKey || event.ctrlKey)) {
|
|
1648
|
+
toggleItemMultiSelect(gi.id);
|
|
1649
|
+
} else {
|
|
1650
|
+
pushSelection({
|
|
1651
|
+
issue: gi.id,
|
|
1652
|
+
run: null,
|
|
1653
|
+
group: null,
|
|
1654
|
+
});
|
|
1655
|
+
}
|
|
1656
|
+
}}
|
|
1657
|
+
onTogglePin={() => togglePin(gi.id)}
|
|
1658
|
+
/>
|
|
1659
|
+
))}
|
|
1660
|
+
</React.Fragment>
|
|
1661
|
+
);
|
|
1662
|
+
}
|
|
1663
|
+
|
|
1664
|
+
// Skip grouped items (already rendered with their group)
|
|
1665
|
+
if (groupedItemIds.has(item.id)) return null;
|
|
1666
|
+
|
|
1667
|
+
// Loose ticket
|
|
1668
|
+
const currentLooseIdx = looseIdx++;
|
|
1669
|
+
const prevLoose = currentLooseIdx > 0
|
|
1670
|
+
? sortedItems.filter((i) => !groupedItemIds.has(i.id) && (!pendingSet || !pendingSet.has(i.id)))[currentLooseIdx - 1]
|
|
1671
|
+
: null;
|
|
1672
|
+
return (
|
|
1673
|
+
<React.Fragment key={item.id}>
|
|
1674
|
+
{pinnedItemIds.size > 0 &&
|
|
1675
|
+
!pinnedItemIds.has(item.id) &&
|
|
1676
|
+
(currentLooseIdx === 0 || (prevLoose && pinnedItemIds.has(prevLoose.id))) && (
|
|
1677
|
+
<div className="mx-4 border-t border-amber-500/20" />
|
|
1678
|
+
)}
|
|
1679
|
+
<TicketRow
|
|
1680
|
+
item={item}
|
|
1681
|
+
selected={selectedItem?.id === item.id}
|
|
1682
|
+
pinned={pinnedItemIds.has(item.id)}
|
|
1683
|
+
activeAgents={issueActiveAgents.get(item.id)}
|
|
1684
|
+
participants={participants}
|
|
1685
|
+
draggable
|
|
1686
|
+
multiSelected={multiSelectedItemIds.has(item.id)}
|
|
1687
|
+
projectSlug={projectSlug}
|
|
1688
|
+
onSelect={(event) => {
|
|
1689
|
+
if (event && (event.metaKey || event.ctrlKey)) {
|
|
1690
|
+
toggleItemMultiSelect(item.id);
|
|
1691
|
+
} else {
|
|
1692
|
+
pushSelection({
|
|
1693
|
+
issue: item.id,
|
|
1694
|
+
run: null,
|
|
1695
|
+
group: null,
|
|
1696
|
+
});
|
|
1697
|
+
}
|
|
1698
|
+
}}
|
|
1699
|
+
onTogglePin={() => togglePin(item.id)}
|
|
1700
|
+
/>
|
|
1701
|
+
</React.Fragment>
|
|
1702
|
+
);
|
|
1703
|
+
});
|
|
1704
|
+
})()}
|
|
1401
1705
|
{hasMore ? (
|
|
1402
1706
|
<div
|
|
1403
1707
|
ref={sentinelRef}
|
|
1404
1708
|
className="py-2 text-center text-xs text-[var(--muted-foreground)]"
|
|
1405
1709
|
>
|
|
1406
|
-
{
|
|
1710
|
+
{itemsLoading ? "Loading..." : "Load more"}
|
|
1407
1711
|
</div>
|
|
1408
1712
|
) : null}
|
|
1409
1713
|
</>
|
|
1410
1714
|
)}
|
|
1715
|
+
<SelectionBar
|
|
1716
|
+
count={multiSelectedItemIds.size}
|
|
1717
|
+
onGroup={handleMultiSelectGroup}
|
|
1718
|
+
onClear={() => setMultiSelectedItemIds(new Set())}
|
|
1719
|
+
/>
|
|
1411
1720
|
</div>
|
|
1721
|
+
<DragOverlay dropAnimation={null}>
|
|
1722
|
+
{dragActiveId && (() => {
|
|
1723
|
+
const dragItem = sortedItems.find((i) => i.id === dragActiveId);
|
|
1724
|
+
if (!dragItem) return null;
|
|
1725
|
+
return (
|
|
1726
|
+
<div className="flex items-center gap-3 rounded-lg border border-[var(--primary)]/30 bg-[var(--card-bg)] px-4 py-2.5 text-sm shadow-xl backdrop-blur-sm">
|
|
1727
|
+
<span className="w-24 shrink-0 whitespace-nowrap font-mono text-xs text-[var(--muted-foreground)]">
|
|
1728
|
+
{dragItem.identifier}
|
|
1729
|
+
</span>
|
|
1730
|
+
<span className="min-w-0 flex-1 truncate text-xs font-medium text-[var(--foreground)]">
|
|
1731
|
+
{dragItem.title}
|
|
1732
|
+
</span>
|
|
1733
|
+
</div>
|
|
1734
|
+
);
|
|
1735
|
+
})()}
|
|
1736
|
+
</DragOverlay>
|
|
1737
|
+
</DndContext>
|
|
1412
1738
|
</div>
|
|
1413
1739
|
|
|
1414
1740
|
<ResizeHandle onResize={(delta) => setTicketPanelWidth((w) => { const next = Math.max(180, Math.min(600, w + delta)); persistLinearTicketPanelWidth(next); return next; })} />
|
|
@@ -1433,44 +1759,69 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
1433
1759
|
<div className="flex min-w-0 flex-1 flex-col overflow-hidden">
|
|
1434
1760
|
{selectedRun ? (
|
|
1435
1761
|
<ThreadMessageList
|
|
1436
|
-
|
|
1762
|
+
item={selectedItem ?? {
|
|
1437
1763
|
id: selectedRun.issueId,
|
|
1438
1764
|
identifier: selectedRun.issueIdentifier,
|
|
1439
1765
|
title: selectedRun.issueTitle,
|
|
1440
|
-
url: null,
|
|
1441
1766
|
status: selectedRun.issueStatus,
|
|
1442
|
-
|
|
1767
|
+
statusCategory: "todo",
|
|
1768
|
+
labels: [],
|
|
1769
|
+
trackerId: "",
|
|
1770
|
+
trackerType,
|
|
1771
|
+
assignee: selectedRun.issueAssignee ? { id: "", name: selectedRun.issueAssignee } : undefined,
|
|
1443
1772
|
updatedAt: selectedRun.updatedAt,
|
|
1773
|
+
createdAt: selectedRun.updatedAt,
|
|
1774
|
+
url: "",
|
|
1444
1775
|
}}
|
|
1445
1776
|
run={selectedRun}
|
|
1446
1777
|
participants={participants}
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1778
|
+
itemStatusOptions={itemStatusOptions}
|
|
1779
|
+
itemStatusUpdating={updatingItemId === selectedRun.issueId}
|
|
1780
|
+
onItemStatusChange={handleItemStatusChange}
|
|
1450
1781
|
onBack={() => replaceSelection({ run: null })}
|
|
1451
1782
|
/>
|
|
1452
|
-
) : !
|
|
1783
|
+
) : selectedGroup && !selectedItem ? (
|
|
1784
|
+
<GroupPanel
|
|
1785
|
+
group={selectedGroup}
|
|
1786
|
+
items={items}
|
|
1787
|
+
trackerType={trackerType}
|
|
1788
|
+
participants={participants}
|
|
1789
|
+
projectId={projectId}
|
|
1790
|
+
projectSlug={projectSlug}
|
|
1791
|
+
onUpdateName={(name) => updateGroup(selectedGroup.id, { name })}
|
|
1792
|
+
onDelete={async () => {
|
|
1793
|
+
await deleteGroup(selectedGroup.id);
|
|
1794
|
+
replaceSelection({ group: null });
|
|
1795
|
+
}}
|
|
1796
|
+
onSelectItem={(itemId) =>
|
|
1797
|
+
pushSelection({ issue: itemId, group: null, run: null })
|
|
1798
|
+
}
|
|
1799
|
+
onRunCreated={(runId) => pushSelection({ run: runId })}
|
|
1800
|
+
onSelectRun={(runId) => pushSelection({ run: runId })}
|
|
1801
|
+
/>
|
|
1802
|
+
) : !selectedItem ? (
|
|
1453
1803
|
<div className="flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]">
|
|
1454
1804
|
Select a ticket from the list.
|
|
1455
1805
|
</div>
|
|
1456
|
-
) : participants.length === 0 ? (
|
|
1806
|
+
) : isAwaitingRestore ? null : participants.length === 0 ? (
|
|
1457
1807
|
<div className="flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]">
|
|
1458
1808
|
Add at least one agent to this project to start a session.
|
|
1459
1809
|
</div>
|
|
1460
1810
|
) : (
|
|
1461
1811
|
<TicketPanel
|
|
1462
|
-
key={
|
|
1463
|
-
|
|
1812
|
+
key={selectedItem.id}
|
|
1813
|
+
item={selectedItem}
|
|
1814
|
+
trackerType={trackerType}
|
|
1464
1815
|
runs={runs}
|
|
1465
1816
|
participants={participants}
|
|
1466
1817
|
projectId={projectId}
|
|
1467
1818
|
projectSlug={projectSlug}
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1819
|
+
itemStatusOptions={itemStatusOptions}
|
|
1820
|
+
itemStatusUpdating={updatingItemId === selectedItem.id}
|
|
1821
|
+
onItemStatusChange={handleItemStatusChange}
|
|
1471
1822
|
activeSessionScriptLabel={activeSessionScriptLabel}
|
|
1472
1823
|
onOpenSessionScripts={() => setShowRunScripts(true)}
|
|
1473
|
-
onStartScriptedSession={(event) => handleStartScriptedSession(
|
|
1824
|
+
onStartScriptedSession={(event) => handleStartScriptedSession(selectedItem, event)}
|
|
1474
1825
|
createRun={createRun}
|
|
1475
1826
|
updateRun={updateRun}
|
|
1476
1827
|
onRunCreated={(runId) => pushSelection({ run: runId })}
|
|
@@ -1483,7 +1834,8 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
1483
1834
|
|
|
1484
1835
|
{/* Settings overlay */}
|
|
1485
1836
|
{showSettings && (
|
|
1486
|
-
<
|
|
1837
|
+
<TrackerSettingsModal
|
|
1838
|
+
trackerType={trackerType}
|
|
1487
1839
|
connected={connected}
|
|
1488
1840
|
user={user}
|
|
1489
1841
|
clis={clis}
|
|
@@ -1516,12 +1868,12 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
1516
1868
|
) : null}
|
|
1517
1869
|
|
|
1518
1870
|
{/* Agent picker popover */}
|
|
1519
|
-
{
|
|
1871
|
+
{pickerItem && pickerAnchor && (
|
|
1520
1872
|
<>
|
|
1521
1873
|
<div
|
|
1522
1874
|
className="fixed inset-0 z-40"
|
|
1523
1875
|
onClick={() => {
|
|
1524
|
-
|
|
1876
|
+
setPickerItem(null);
|
|
1525
1877
|
setPickerAnchor(null);
|
|
1526
1878
|
}}
|
|
1527
1879
|
/>
|
|
@@ -1537,7 +1889,7 @@ export default function LinearBoard({ projectId, projectSlug, initialShowSetting
|
|
|
1537
1889
|
key={agent.id}
|
|
1538
1890
|
type="button"
|
|
1539
1891
|
className="flex w-full items-center gap-2 px-3 py-1.5 text-left text-xs transition-colors hover:bg-[var(--card-bg)]"
|
|
1540
|
-
onClick={() => void executeWithAgent(
|
|
1892
|
+
onClick={() => void executeWithAgent(pickerItem, agent)}
|
|
1541
1893
|
>
|
|
1542
1894
|
<img
|
|
1543
1895
|
src={agentAvatarUrl(agent.id, agent.color, 20)}
|