@mndrk/agx 2.2.0 → 2.3.1
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 +70 -105
- package/cloud-runtime/standalone/apps/local/.next/BUILD_ID +1 -1
- package/cloud-runtime/standalone/apps/local/.next/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/prerender-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.html +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/agent-specs/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/[id]/profile/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/export/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat/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/linear/issues/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/context/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/options/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/scripted/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/status/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/participants/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/linear-issues/route.js.nft.json +1 -1
- 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]/worker/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/search/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/check/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/debug/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/poll/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/assign/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/available/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/detail/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/history/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/learn/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/unlearn/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/status/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/summarize/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/extract/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/knowledge/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page/react-loadable-manifest.json +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.rsc +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_full.segment.rsc +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/automations/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/automations.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/board/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/board/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/board.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/execution-graph/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/execution-graph.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/folders/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/folders.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.rsc +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]/knowledge/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page/react-loadable-manifest.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects/orphans/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects/orphans.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page.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/settings/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/settings.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.rsc +4 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_full.segment.rsc +4 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_tree.segment.rsc +3 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +3 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/skills.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/status/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/thread/[id]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0-zk9w8._.js +7 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0.01bfe._.js +13 -8
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__00c~p6z._.js +7 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__019dflu._.js +7 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__02t.3rm._.js +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__06zr0ph._.js +6 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__07d._0s._.js +15 -10
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__08xj~a3._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0a0cq38._.js +34 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0asvfdo._.js +35 -4
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0bt7ejs._.js +7 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0f.~98d._.js +7 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0g-~-.q._.js +6 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0g7p6pw._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0gj~dap._.js +40 -9
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0hkcw03._.js +8 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0hyu3en._.js +7 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0i5aw03._.js +7 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0ke4z91._.js +7 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0l53ok5._.js +41 -10
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0ll-~cx._.js +7 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0mh6p.0._.js +7 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0nc-lbr._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0p9rl6.._.js +8 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0q~pnp0._.js +6 -6
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0ue0bu5._.js +6 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0unwwyx._.js +12 -7
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0vtkl3q._.js +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0x6w64i._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0z82z0-._.js +6 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0zrv3p3._.js +16 -11
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0~iknwz._.js +12 -7
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__10d.dhd._.js +46 -15
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__10sw5ia._.js +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__11yx.ud._.js +33 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__13-nlgu._.js +5 -5
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__13960a8._.js +14 -9
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_06qet8g._.js +14 -9
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0_0m2ly._.js +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0a15wtk._.js +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0fr1qq6._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0g.q2r6._.js +6 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0i7fs.i._.js +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_01pvj2g._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_agent-participants_ts_0cq15u5._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_db_ts_0twf-w5._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_orchestrator_chat-processor_ts_0c2l_oh._.js +43 -12
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_sqlite-query-adapter_ts_0l95hik._.js +15 -15
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_sqlite-query-adapter_ts_0s5xprd._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_graph_082u-ls._.js +19 -14
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_graph_schedule-runner_ts_07-ozf_._.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0_l0fpi.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0gips_c.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0rszt9p.js +10 -6
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0u_5kfo.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_06fnblz._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0140-84._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_03fckp4._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{_0tcjapj._.js → _0ip6k6n._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0jensz1._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0t0p8q5._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0yeuuy1._.js +1 -23
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_03z24q2._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0_ac-.f._.js +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0a-8i4p._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0k4~c1x._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0ld1uug._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0ms1d6i._.js +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0p_v0ri._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0x.xj52._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0~g2ijr._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_11k_-8~._.js +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_agents_[id]_page_tsx_06n47n~._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_agents_page_tsx_078reb_._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_linear_page_tsx_0a~n5y8._.js +25 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_page_tsx_0kcaeqi._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_[teamId]_agents_[agentId]_page_tsx_0wm~_~t._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_[teamId]_page_tsx_0iyozfl._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_new_page_tsx_0yqd0a5._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_terminal_page_tsx_01n9qk.._.js +1 -20
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_setup_page_tsx_0ql2qmr._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_PromptJobBoard_tsx_06zob36._.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_projects_ProjectObjectivesWorkspace_tsx_0k4tfip._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_terminal_TerminalPane_tsx_0l17vs_._.js +22 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_thread_WorkspaceSidebar_tsx_0unv2xp._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/middleware-build-manifest.js +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/middleware-manifest.json +5 -5
- package/cloud-runtime/standalone/apps/local/.next/server/pages/404.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/pages/500.html +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{1011~1x9nj4ny.js → 0-k2m1ncx7hwx.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0dnw31436wd~..js → 0-pkmgle2s8u8.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/064jfmraty.9h.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/06kru5m9q~r.j.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/06kyg1q0bcz6p.js +5 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0_cjth28_11b2.js → 08bdyjcnamzep.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0-olq~7zw3wjy.js → 08xq~uyr6.eqw.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0gj98094p~zn4.js → 0cku81z~3oe6..js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0e7jhy0-52_4k.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0wh6p5~ft5rma.js → 0htc.sqrk_0.c.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ju4xmxwqddw6.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0mm978wb-ueg-.js +6 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0musu8f.4wvxz.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0bchtyu6m.2yv.js → 0muti0yiyhu0t.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0rhps884e-bzu.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0rr3fvwc5ind~.js +5 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0sbkkjowkksa6.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0sjz0.o9_33qy.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0srzmg8ivve1g.css +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0fonouj2i9qnb.js → 0swo3_e8.4s7j.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0sysrf3~l~r35.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0t69h-kc701fn.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0v67lnh..wj4z.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{013gtut17~fne.js → 0wb45ol1xrqe~.js} +1 -23
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{00po4v2x~0x_z.js → 0wiw2v8gm-k_-.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0jq0t4zip38wt.js → 0wopevh0s7.8c.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0xm2~gxlt1npd.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{1503vb7lb6.g1.js → 0ya124ushze_f.js} +4 -4
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{00e1ihnb6ap3t.js → 0zt2o58c5gytn.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0~idsggr8vqf5.js +59 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0xu_doej_wc-3.js → 0~mcfx41q4znh.js} +3 -3
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/116j4mjz~y42t.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0-vo_x2cxmjm3.js → 12b62py0mq1gm.js} +4 -4
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/12y5i0lh6s73o.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/148.mt80civoz.js +20 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/14m5d270euu_s.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/16h9208kl5~xa.js +16 -0
- package/cloud-runtime/standalone/apps/local/app/agents/[id]/page.tsx +6 -3
- package/cloud-runtime/standalone/apps/local/app/agents/page.tsx +3 -3
- package/cloud-runtime/standalone/apps/local/app/api/chat/route.ts +7 -1
- package/cloud-runtime/standalone/apps/local/app/api/participants/route.ts +9 -9
- package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/search/route.ts +6 -6
- package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/teams/route.ts +3 -3
- package/cloud-runtime/standalone/apps/local/app/api/prompt-jobs/agents/route.ts +1 -1
- package/cloud-runtime/standalone/apps/local/app/api/schedules/poll/route.ts +11 -2
- package/cloud-runtime/standalone/apps/local/app/page.tsx +72 -14
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/page.tsx +34 -1
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.tsx +6 -3
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/teams/[teamId]/page.tsx +6 -3
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/teams/new/page.tsx +8 -17
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/teams/replace/page.tsx +1 -1
- package/cloud-runtime/standalone/apps/local/app/projects/page.tsx +7 -0
- package/cloud-runtime/standalone/apps/local/app/setup/page.tsx +1 -38
- package/cloud-runtime/standalone/apps/local/components/AutomationsBoard.tsx +8 -4
- package/cloud-runtime/standalone/apps/local/components/EmptyStateCard.tsx +37 -0
- package/cloud-runtime/standalone/apps/local/components/LinearBoard.tsx +103 -770
- package/cloud-runtime/standalone/apps/local/components/PromptJobBoard.tsx +5 -37
- package/cloud-runtime/standalone/apps/local/components/TeamPickerModal.tsx +3 -3
- package/cloud-runtime/standalone/apps/local/components/chat-ui/Composer.tsx +28 -32
- package/cloud-runtime/standalone/apps/local/components/chat-ui/ParticipantBar.tsx +24 -39
- package/cloud-runtime/standalone/apps/local/components/linear/LinearBoardFilters.tsx +343 -0
- package/cloud-runtime/standalone/apps/local/components/linear/TicketRow.tsx +158 -0
- package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveHealthTrend.tsx +45 -61
- package/cloud-runtime/standalone/apps/local/components/projects/RecentlyCompletedCard.tsx +0 -16
- package/cloud-runtime/standalone/apps/local/components/projects/ReplaceAgentsModal.tsx +2 -2
- package/cloud-runtime/standalone/apps/local/components/setup/McpSetupStep.tsx +155 -120
- package/cloud-runtime/standalone/apps/local/components/setup/ProviderStep.tsx +85 -88
- package/cloud-runtime/standalone/apps/local/components/setup/SetupLayout.tsx +6 -4
- package/cloud-runtime/standalone/apps/local/components/terminal/ProjectTerminal.tsx +18 -193
- package/cloud-runtime/standalone/apps/local/components/terminal/TerminalPane.tsx +40 -4
- package/cloud-runtime/standalone/apps/local/components/thread/WorkspaceSidebar.tsx +4 -4
- package/cloud-runtime/standalone/apps/local/components/ui/ResizeHandle.tsx +52 -0
- package/cloud-runtime/standalone/apps/local/hooks/useAutomations.ts +8 -3
- package/cloud-runtime/standalone/apps/local/hooks/useLinearActiveAgents.ts +38 -0
- package/cloud-runtime/standalone/apps/local/hooks/useLinearParticipants.ts +118 -0
- package/cloud-runtime/standalone/apps/local/hooks/usePromptJobs.ts +5 -3
- package/cloud-runtime/standalone/apps/local/hooks/useSetupFlow.ts +6 -81
- package/cloud-runtime/standalone/apps/local/lib/agent-participants.ts +1 -1
- package/cloud-runtime/standalone/apps/local/lib/agent-process-registry.ts +34 -0
- package/cloud-runtime/standalone/apps/local/lib/db.ts +5 -5
- package/cloud-runtime/standalone/apps/local/lib/linear-board-utils.ts +9 -0
- package/cloud-runtime/standalone/apps/local/lib/linear-run-status.ts +88 -0
- package/cloud-runtime/standalone/apps/local/lib/linear-run-store.ts +4 -4
- package/cloud-runtime/standalone/apps/local/lib/sqlite-query-adapter.ts +5 -1
- package/cloud-runtime/standalone/apps/local/lib/team-catalog.ts +60 -60
- package/cloud-runtime/standalone/apps/local/lib/types.ts +1 -1
- package/cloud-runtime/standalone/apps/local/migrations/sqlite_schema.sql +1 -1
- package/cloud-runtime/standalone/apps/local/skills-lock.json +5 -0
- package/cloud-runtime/standalone/apps/local/src/graph/schedule-runner.ts +26 -1
- package/cloud-runtime/standalone/apps/local/src/graph/store.ts +13 -0
- package/cloud-runtime/standalone/apps/local/state/linearBoardPins.ts +45 -0
- package/cloud-runtime/standalone/apps/local/worker/index.js +56 -5
- package/lib/cli/onboarding.js +8 -5
- package/package.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_067eb..._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_00trrg8._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ejzn1e._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0sjchy6._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0w4gpvr._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0x6hh0t._.js +0 -4
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0t6p.qm._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0-wlbe.ripd2w.css +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/014z_yruiincl.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/041-dhls9zkl1.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/069yt_7prdxsp.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0e6rxcxy.l5c8.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ime4btrg-g4l.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0j-nhn61e~nnj.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0jglardpw~5uc.js +0 -37
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0l3v45kd.9is_.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ng6wy4ak35jg.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0n~jhoq~op4e5.js +0 -16
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0p-rdas54yo~w.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0pdrpsy-zdxp0.js +0 -5
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0p~l5ap6qqx2o.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0tm20~ec~occu.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0w94x-v00osq0.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0xwny92a.ad_i.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/11l2tww5f0hsk.js +0 -20
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/12qohmk-~yrtg.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/14v~9vx3tdv85.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/16fyhcmwlw3th.js +0 -6
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/18e8w~~mvoh5o.js +0 -1
- package/cloud-runtime/standalone/apps/local/components/setup/ProjectStep.tsx +0 -189
- package/cloud-runtime/standalone/apps/local/components/setup/TeamsStep.tsx +0 -500
- /package/cloud-runtime/standalone/apps/local/.next/static/{qPuactsz6OYimwT6dSdHn → 438GF86gZtccU2fS12URB}/_buildManifest.js +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/static/{qPuactsz6OYimwT6dSdHn → 438GF86gZtccU2fS12URB}/_clientMiddlewareManifest.js +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/static/{qPuactsz6OYimwT6dSdHn → 438GF86gZtccU2fS12URB}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,741746,e=>{"use strict";let t=(0,e.i(363732).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);e.s(["AlertCircle",0,t],741746)},780004,e=>{"use strict";let t="obra/superpowers",n="vercel/next-skills";function i(e,t,n){return n?{repo:e,skillId:t,condition:n}:{repo:e,skillId:t}}function a(e){return e.condition?{...e}:{repo:e.repo,skillId:e.skillId}}function r(e){let t={...e};return t.extraSkills&&(t.extraSkills=t.extraSkills.map(a)),t}function s(e){return{...e,agents:e.agents.map(r)}}function l(e){let t={...e,agents:e.agents.map(r)};return t.variants&&(t.variants=t.variants.map(s)),t}let o={"strategist-lead":[i(t,"brainstorming"),i(t,"writing-plans"),i(t,"dispatching-parallel-agents"),i(t,"requesting-code-review"),i(t,"verification-before-completion")],"senior-builder":[i(t,"test-driven-development"),i(t,"systematic-debugging"),i(t,"subagent-driven-development"),i(t,"requesting-code-review"),i(t,"verification-before-completion"),i(t,"finishing-a-development-branch")],builder:[i(t,"test-driven-development"),i(t,"systematic-debugging"),i(t,"verification-before-completion"),i(t,"finishing-a-development-branch")],planner:[i(t,"brainstorming"),i(t,"writing-plans"),i(t,"verification-before-completion")],researcher:[i(t,"brainstorming"),i(t,"writing-plans"),i(t,"systematic-debugging"),i(t,"verification-before-completion")],reviewer:[i(t,"systematic-debugging"),i(t,"test-driven-development"),i(t,"requesting-code-review"),i(t,"verification-before-completion")]},d=["strategist-lead","senior-builder","builder","planner","researcher","reviewer"].map(e=>({id:e,skills:o[e].map(a)})),c=[i(n,"api-routes","next.js app router, route handlers, api endpoints"),i(n,"nextjs-patterns","next.js app structure, routing, layouts, data fetching"),i(n,"react-server-components","react server components, server client boundaries, next.js rendering")],m={"team-lead":{name:"Ada",role:"Team Lead",style:"balanced",skillProfileId:"strategist-lead",identity:"Own technical direction, break ambiguous work into executable plans, and keep the squad aligned on delivery."},"fullstack-engineer":{name:"Kai",role:"Senior Fullstack Engineer",style:"balanced",skillProfileId:"senior-builder",identity:"Ship features end-to-end across frontend and backend with pragmatic tradeoffs and clean boundaries.",extraSkills:c},"backend-engineer":{name:"Ravi",role:"Senior Backend Engineer",style:"specialist",skillProfileId:"senior-builder",identity:"Own backend contracts, data integrity, and safe delivery under real production constraints."},"frontend-engineer":{name:"Mira",role:"Senior Frontend Engineer",style:"balanced",skillProfileId:"senior-builder",identity:"Own product-facing UI quality, interaction design fidelity, and maintainable front-end architecture.",extraSkills:c},"data-engineer":{name:"Nia",role:"Data Engineer",style:"specialist",skillProfileId:"senior-builder",identity:"Build reliable data pipelines, schemas, and transformations with a bias toward traceability."},"ml-engineer":{name:"Luca",role:"ML Engineer",style:"specialist",skillProfileId:"senior-builder",identity:"Ship model-backed systems pragmatically, with evaluation, rollback paths, and tight production feedback."},"devops-engineer":{name:"Juno",role:"DevOps Engineer",style:"specialist",skillProfileId:"senior-builder",identity:"Own delivery automation, deployment safety, and infrastructure changes that must fail predictably."},"security-engineer":{name:"Iris",role:"Security Engineer",style:"conservative",skillProfileId:"senior-builder",identity:"Harden trust boundaries, implement secure defaults, and turn vague risk into concrete engineering requirements."},"ui-designer":{name:"Theo",role:"UI Designer",style:"specialist",skillProfileId:"builder",identity:"Refine interfaces into consistent, high-signal UI systems that are practical to build and maintain.",extraSkills:[i(n,"nextjs-patterns","next.js ui flows, routing, layouts, app router"),i(n,"react-server-components","react server components, server client boundaries, data fetching placement")]},"qa-engineer":{name:"Sana",role:"QA Engineer",style:"conservative",skillProfileId:"reviewer",identity:"Find regressions early, tighten acceptance boundaries, and force evidence before release claims."},sre:{name:"Dax",role:"Site Reliability Engineer",style:"conservative",skillProfileId:"reviewer",identity:"Guard uptime, incident readiness, and operational correctness by challenging risky assumptions early."},"pen-tester":{name:"Vega",role:"Penetration Tester",style:"specialist",skillProfileId:"reviewer",identity:"Probe the system as an adversary, find exploit paths, and make the attack surface legible to builders."},"product-manager":{name:"Sage",role:"Product Manager",style:"balanced",skillProfileId:"planner",identity:"Turn ambiguous requests into scoped bets, crisp plans, and explicit tradeoffs the team can execute."},"ux-designer":{name:"Yara",role:"UX Designer",style:"balanced",skillProfileId:"planner",identity:"Clarify user intent, reduce friction in flows, and turn product goals into coherent interaction design."},"technical-writer":{name:"Orin",role:"Technical Writer",style:"balanced",skillProfileId:"planner",identity:"Turn complex implementation detail into clear docs, rollout notes, and operational guidance."},"growth-marketer":{name:"Zed",role:"Growth Marketer",style:"balanced",skillProfileId:"strategist-lead",identity:"Design growth experiments with clear hypotheses, sequencing, and measurable outcomes."},analyst:{name:"Piper",role:"Product Analyst",style:"specialist",skillProfileId:"researcher",identity:"Ground decisions in evidence, identify gaps in the brief, and surface the signal behind user behavior."},"content-writer":{name:"Wren",role:"Content Strategist",style:"balanced",skillProfileId:"researcher",identity:"Translate product and audience insight into clear narratives, launch copy, and feedback loops."},researcher:{name:"Ezra",role:"Researcher",style:"balanced",skillProfileId:"researcher",identity:"Map fast-changing domains, synthesize evidence, and surface the governing model behind decisions."},"marketing-strategist":{name:"Finn",role:"Marketing Strategist",style:"balanced",skillProfileId:"strategist-lead",identity:"Own brand positioning, campaign strategy, and channel mix with measurable conversion targets."},copywriter:{name:"Blair",role:"Copywriter",style:"balanced",skillProfileId:"researcher",identity:"Craft clear, persuasive copy that serves both the reader and the business goal."},"support-engineer":{name:"Gwen",role:"Support Engineer",style:"balanced",skillProfileId:"builder",identity:"Diagnose customer issues fast, escalate with precision, and turn patterns into preventive fixes."},"support-lead":{name:"Eli",role:"Support Lead",style:"balanced",skillProfileId:"planner",identity:"Triage incoming issues, route to the right responder, and track resolution quality."},"devrel-engineer":{name:"Milo",role:"Developer Relations Engineer",style:"balanced",skillProfileId:"senior-builder",identity:"Build sample apps, integrations, and tooling that make the platform easy to adopt."},"community-manager":{name:"Uma",role:"Community Manager",style:"balanced",skillProfileId:"planner",identity:"Grow and engage the developer community through events, content, and feedback loops."},"ops-engineer":{name:"Nate",role:"Operations Engineer",style:"specialist",skillProfileId:"senior-builder",identity:"Automate operational workflows, reduce toil, and keep internal tooling reliable."},"project-manager":{name:"Quinn",role:"Project Manager",style:"balanced",skillProfileId:"planner",identity:"Track milestones, remove blockers, and keep cross-team delivery on schedule."},"solutions-architect":{name:"Cass",role:"Solutions Architect",style:"balanced",skillProfileId:"strategist-lead",identity:"Design system-level architectures, evaluate tradeoffs, and guide teams through technical decisions."},"mobile-engineer":{name:"Rio",role:"Senior Mobile Engineer",style:"balanced",skillProfileId:"senior-builder",identity:"Ship native and cross-platform mobile experiences with attention to performance and platform conventions."}},p=["team-lead","fullstack-engineer","backend-engineer","frontend-engineer","qa-engineer","product-manager","analyst","growth-marketer","content-writer","data-engineer","ml-engineer","ux-designer","ui-designer","devops-engineer","sre","security-engineer","pen-tester","researcher","technical-writer","marketing-strategist","copywriter","support-engineer","support-lead","devrel-engineer","community-manager","ops-engineer","project-manager","solutions-architect","mobile-engineer"].map(e=>r({id:e,...m[e]}));function g(e){return r({id:e,...m[e]})}let u=[{id:"engineering",name:"Engineering",description:"Software engineering teams across all domains — pick a specialization or build your own.",icon:"hammer",agents:[g("team-lead"),g("backend-engineer"),g("frontend-engineer"),g("fullstack-engineer"),g("qa-engineer")],variants:[{id:"general",name:"General",description:"Product engineering with leadership, builders across the stack, and quality gates.",agents:[g("team-lead"),g("backend-engineer"),g("frontend-engineer"),g("fullstack-engineer"),g("qa-engineer")]},{id:"ai",name:"AI",description:"Applied AI and ML engineering for models, evaluation, and production inference.",agents:[g("team-lead"),g("ml-engineer"),g("data-engineer"),g("researcher"),g("qa-engineer")]},{id:"data",name:"Data",description:"Data platform engineering for pipelines, warehousing, and transformation reliability.",agents:[g("team-lead"),g("data-engineer"),g("qa-engineer")]},{id:"mobile",name:"Mobile",description:"Native and cross-platform mobile engineering with fullstack support.",agents:[g("team-lead"),g("mobile-engineer"),g("fullstack-engineer"),g("qa-engineer")]},{id:"infra",name:"Infrastructure",description:"Platform reliability for delivery pipelines, runtime stability, and operational safety.",agents:[g("team-lead"),g("devops-engineer"),g("sre")]},{id:"security",name:"Security",description:"Security engineering for secure defaults, hardening, and adversarial validation.",agents:[g("team-lead"),g("security-engineer"),g("pen-tester")]},{id:"solutions",name:"Solutions",description:"Architecture and integration work across systems and customer deployments.",agents:[g("team-lead"),g("solutions-architect"),g("backend-engineer"),g("devops-engineer")]}]},{id:"product",name:"Product",description:"Discovery and prioritization for product direction, scope, and validation.",icon:"clipboard-list",agents:[g("team-lead"),g("product-manager"),g("analyst")]},{id:"design",name:"Design",description:"UX and UI pairing for flows, interaction models, and polished product surfaces.",icon:"palette",agents:[g("team-lead"),g("ux-designer"),g("ui-designer")]},{id:"growth",name:"Growth",description:"Experiment and content team for acquisition, activation, and learning loops.",icon:"trending-up",agents:[g("team-lead"),g("growth-marketer"),g("content-writer")]},{id:"research",name:"Research",description:"Research and synthesis pair for investigations, briefs, and decision support.",icon:"flask-conical",agents:[g("team-lead"),g("researcher"),g("technical-writer")]},{id:"marketing",name:"Marketing",description:"Brand strategy, campaign execution, and content production.",icon:"megaphone",agents:[g("team-lead"),g("marketing-strategist"),g("copywriter"),g("content-writer")]},{id:"support",name:"Support",description:"Customer-facing support with triage, diagnosis, and escalation.",icon:"life-buoy",agents:[g("team-lead"),g("support-lead"),g("support-engineer")]},{id:"devrel",name:"Developer Relations",description:"Developer advocacy through tooling, content, and community engagement.",icon:"users",agents:[g("team-lead"),g("devrel-engineer"),g("community-manager"),g("technical-writer")]},{id:"operations",name:"Operations",description:"Internal tooling, project delivery, and cross-team coordination.",icon:"settings",agents:[g("team-lead"),g("project-manager"),g("ops-engineer")]}].map(l),f=new Map(d.map(e=>[e.id,e])),h=new Map(p.map(e=>[e.id,e]));u.map(e=>[e.id,e]),e.s(["getAgentPresetBindings",0,function(e){let t,n="string"==typeof e?function(e){if(!e)return null;let t=h.get(e);return t?r(t):null}(e):e;return n?[...(t=function(e){if(!e)return null;let t=f.get(e);return t?{id:t.id,skills:t.skills.map(a)}:null}(n.skillProfileId))?t.skills:[],...n.extraSkills?n.extraSkills.map(a):[]]:[]},"listAgentPresets",0,function(){return p.map(r)},"listTeamTemplates",0,function(){return u.map(l)}])},331160,e=>{"use strict";var t=e.i(843476),n=e.i(271645),i=e.i(618566),a=e.i(780004),r=e.i(378764),s=e.i(524123),l=e.i(572665),o=e.i(906724),d=e.i(529471),c=e.i(741746);function m(e,t){let n=(0,a.getAgentPresetBindings)(t).map(e=>`${e.repo}/${e.skillId}`),i=new Set(e);return{overlap:n.filter(e=>i.has(e)),missing:n.filter(e=>!i.has(e))}}e.s(["default",0,function({params:e}){let{slug:p}=(0,n.use)(e),g=(0,i.useRouter)(),{projects:u}=(0,s.useProjectsWithAgents)(),f=u.find(e=>e.slug===p),[h,b]=(0,n.useState)([]),[y,v]=(0,n.useState)(!0),[x,k]=(0,n.useState)(""),[w,j]=(0,n.useState)(null),[P,S]=(0,n.useState)(null),[I,N]=(0,n.useState)(!1),[C,T]=(0,n.useState)(!1),[A,M]=(0,n.useState)(null),[E,q]=(0,n.useState)({}),O=(0,n.useMemo)(()=>(0,a.listTeamTemplates)(),[]),$=(0,n.useMemo)(()=>(0,a.listAgentPresets)(),[]),_=(0,n.useMemo)(()=>O.find(e=>e.id===w)??null,[O,w]),D=(0,n.useMemo)(()=>_?.variants&&P?_.variants.find(e=>e.id===P)??null:null,[_,P]),R=(0,n.useMemo)(()=>D?D.agents:_?_.agents:[],[_,D]),U=(0,n.useCallback)(async()=>{if(f){try{let e=await fetch(`/api/projects/${f.id}/agents/unassigned`);if(e.ok){let t=await e.json();b(t.agents??[])}}catch{}v(!1)}},[f]);(0,n.useEffect)(()=>{U()},[U]);let B=(0,n.useMemo)(()=>O.map(e=>({id:e.id,label:e.name,description:e.description,meta:e.variants?`${e.variants.length} specializations`:`${e.agents.length} roles`})),[O]),z=(0,n.useMemo)(()=>_?.variants?_.variants.map(e=>({id:e.id,label:e.name,description:e.description,meta:`${e.agents.length} roles`})):[],[_]),F=(0,n.useMemo)(()=>[{id:"__auto__",label:"Auto",description:"Best match based on skills"},...(R.length>0?R:$).map(e=>({id:e.id,label:e.name,meta:e.skillProfileId}))],[R,$]),G=(0,n.useMemo)(()=>0===R.length?h.map(e=>({agent:e,matchedPreset:null,overlap:[],missing:[]})):h.map(e=>{let t=E[e.id];if(t&&"__auto__"!==t){let n=R.find(e=>e.id===t)??$.find(e=>e.id===t)??null;if(n){let{overlap:t,missing:i}=m(e.skills.map(e=>e.file),n);return{agent:e,matchedPreset:n,overlap:t,missing:i}}}let{preset:n,overlap:i,missing:a}=function(e,t){let n=e.skills.map(e=>e.file),i={preset:null,overlap:[],missing:[]},a=-1;for(let e of t){let{overlap:t,missing:r}=m(n,e);t.length>a&&(a=t.length,i={preset:e,overlap:t,missing:r})}return i}(e,R);return{agent:e,matchedPreset:n,overlap:i,missing:a}}),[h,R,E,$]);async function L(){if(x.trim()&&f){T(!0),M(null);try{let e=await fetch(`/api/projects/${f.id}/teams`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:x.trim()})});if(!e.ok)throw Error((await e.json().catch(()=>({}))).error||"Failed to create team");let{team:t}=await e.json();for(let e of G){let n=e.matchedPreset?.id??"member";await fetch(`/api/projects/${f.id}/teams/${t.id}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:e.agent.id,roleKey:n})})}if(I){for(let e of G)if(e.missing.length>0&&e.matchedPreset){let t=(0,a.getAgentPresetBindings)(e.matchedPreset),n=new Set(e.missing),i=t.filter(e=>n.has(`${e.repo}/${e.skillId}`)).map(e=>({file:`${e.repo}/${e.skillId}`,...e.condition?{condition:e.condition}:{}}));i.length>0&&await fetch(`/api/agents/${e.agent.id}/skills`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({skills:[...e.agent.skills.map(e=>({file:e.file})),...i]})})}}g.push(`/projects/${p}/teams`)}catch(e){M(e instanceof Error?e.message:"Failed to adopt agents"),T(!1)}}}if(!f||y)return(0,t.jsx)("div",{className:"flex items-center justify-center h-full text-sm text-zinc-500",children:"Loading..."});let J=!!_?.variants;return(0,t.jsx)("div",{className:"h-full overflow-y-auto",children:(0,t.jsxs)("div",{className:"max-w-2xl mx-auto px-6 py-8 space-y-6",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h1",{className:"text-lg font-bold",children:"Adopt Unassigned Agents"}),(0,t.jsxs)("p",{className:"text-xs text-[var(--muted-foreground)]",children:["Group ",h.length," unassigned agent",1!==h.length?"s":""," into a team."]})]}),A&&(0,t.jsx)("div",{className:"p-3 rounded-xl bg-[var(--destructive-muted)] border border-[var(--destructive)]/20 text-sm text-[var(--destructive)]",children:A}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-medium text-[var(--muted-foreground)] mb-1.5",children:"Team name"}),(0,t.jsx)("input",{value:x,onChange:e=>k(e.target.value),placeholder:"e.g. Core Engineering",className:"input w-full text-sm",disabled:C,autoFocus:!0})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-medium text-[var(--muted-foreground)] mb-1.5",children:"Template (optional — for role matching)"}),(0,t.jsx)(r.default,{options:B,value:w,onChange:function(e){j(e),S(null),q({});let t=O.find(t=>t.id===e);t&&!x&&k(t.name)},placeholder:"Select a template...",disabled:C})]}),J&&(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-medium text-[var(--muted-foreground)] mb-1.5",children:"Specialization"}),(0,t.jsx)(r.default,{options:z,value:P,onChange:function(e){S(e),q({})},placeholder:"Select a specialization...",disabled:C})]}),R.length>0&&(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-medium text-[var(--muted-foreground)] mb-2",children:"Role matching"}),(0,t.jsx)("div",{className:"space-y-1.5",children:G.map(e=>(0,t.jsxs)("div",{className:"p-2.5 rounded-xl",style:{background:"var(--muted)",border:"1px solid var(--border)"},children:[(0,t.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,t.jsx)(l.Users,{className:"w-4 h-4 text-[var(--muted-foreground)] flex-shrink-0"}),(0,t.jsx)("span",{className:"text-sm font-medium truncate",children:e.agent.name})]}),(0,t.jsx)("div",{className:"flex-shrink-0 w-48",children:(0,t.jsx)(r.default,{options:F,value:E[e.agent.id]??e.matchedPreset?.id??"__auto__",onChange:t=>q(n=>({...n,[e.agent.id]:"__auto__"===t?null:t})),placeholder:"Select role...",disabled:C})})]}),e.matchedPreset&&(0,t.jsxs)("div",{className:"mt-2 flex flex-wrap gap-1.5",children:[e.overlap.map(e=>(0,t.jsxs)("span",{className:"inline-flex items-center gap-1 text-[10px] px-1.5 py-0.5 rounded bg-emerald-500/10 text-emerald-400 border border-emerald-500/20",children:[(0,t.jsx)(d.Check,{className:"w-2.5 h-2.5"}),e.split("/").pop()]},e)),e.missing.map(e=>(0,t.jsxs)("span",{className:"inline-flex items-center gap-1 text-[10px] px-1.5 py-0.5 rounded bg-amber-500/10 text-amber-400 border border-amber-500/20",children:[(0,t.jsx)(c.AlertCircle,{className:"w-2.5 h-2.5"}),e.split("/").pop()]},e))]})]},e.agent.id))})]}),G.some(e=>e.missing.length>0)&&(0,t.jsxs)("label",{className:"flex items-center gap-2.5 cursor-pointer py-1",children:[(0,t.jsx)("input",{type:"checkbox",checked:I,onChange:e=>N(e.target.checked),disabled:C,className:"rounded",style:{borderColor:"var(--border)"}}),(0,t.jsx)("span",{className:"text-sm",children:"Add missing skills from template"})]}),(0,t.jsxs)("div",{className:"flex items-center gap-3 pt-4 border-t",style:{borderColor:"var(--border)"},children:[(0,t.jsx)("button",{onClick:()=>g.push(`/projects/${p}/teams`),disabled:C,className:"px-4 py-2 rounded-xl border hover:bg-[var(--muted)]/50 transition-colors text-sm",style:{borderColor:"var(--border)"},children:"Cancel"}),(0,t.jsx)("button",{onClick:L,disabled:!x.trim()||C,className:"btn-primary px-5 py-2 text-sm min-w-[120px] flex items-center justify-center gap-2",children:C?(0,t.jsx)(o.Loader2,{className:"w-4 h-4 animate-spin"}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(l.Users,{className:"w-4 h-4"}),"Adopt (",h.length,")"]})})]})]})})}])}]);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,958164,e=>{"use strict";let t=(0,e.i(363732).default)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);e.s(["AlertTriangle",0,t],958164)},367859,e=>{"use strict";let t=(0,e.i(363732).default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);e.s(["ChevronRight",0,t],367859)},80673,e=>{"use strict";let t=(0,e.i(363732).default)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]);e.s(["Download",0,t],80673)},629155,e=>{"use strict";let t=(0,e.i(363732).default)("hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]);e.s(["Hash",0,t],629155)},211464,e=>{"use strict";let t=(0,e.i(363732).default)("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["Circle",0,t],211464)},794731,e=>{"use strict";let t=(0,e.i(363732).default)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);e.s(["Trash2",0,t],794731)},580873,e=>{"use strict";let t=(0,e.i(363732).default)("clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6l4 2",key:"mmk7yg"}]]);e.s(["Clock",0,t],580873)},203096,e=>{"use strict";let t=(0,e.i(363732).default)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);e.s(["RefreshCw",0,t],203096)},423709,e=>{"use strict";e.s(["stripMarkers",0,function(e){return e.replace(/\[reaction\s+[^\]]*\]/gi,"").replace(/\[agx:[^\]]*\]/g,"").replace(/\[checkpoint\]/g,"").replace(/\[criteria:\s*[^\]]*\]/g,"").replace(/\[done\]/g,"").replace(/\[blocked[^\]]*\]/g,"").replace(/^\[SKIP\]$/gm,"").trim()}])},66386,e=>{"use strict";var t=e.i(271645),r=e.i(618566);function a(e){return"string"!=typeof e?null:e.trim()||null}function n(e,t){return(e.get(t)?.trim()??"")||null}e.s(["useUrlSelection",0,function(){let e=(0,r.useRouter)(),s=(0,r.usePathname)(),i=(0,r.useSearchParams)(),l=(0,t.useCallback)(e=>n(i,e),[i]),c=(0,t.useCallback)((e,t)=>(function(e,t,r){let s=function(e,t){let r={...t},s=e=>Object.prototype.hasOwnProperty.call(t,e);if(s("issue")&&!s("run")){let s=n(e,"issue");a(t.issue)!==s&&(r.run=null)}if(s("job")&&!s("run")){let s=n(e,"job");a(t.job)!==s&&(r.run=null)}if(s("open")&&!s("message")){let s=n(e,"open");a(t.open)!==s&&(r.message=null)}return r}(t,r),i=new URLSearchParams(t.toString());for(let[e,t]of Object.entries(s)){let r=a(t);r?i.set(e,r):i.delete(e)}let l=i.toString();return l?`${e}?${l}`:e})(t??s,i,e),[s,i]),o=(0,t.useCallback)((t,r)=>{e.push(c(t,r))},[c,e]),d=(0,t.useCallback)((t,r)=>{e.replace(c(t,r))},[c,e]);return{pathname:s,searchParams:i,getSelection:l,buildHref:c,pushSelection:o,replaceSelection:d}}])},990933,e=>{"use strict";function t(e){if("string"==typeof e)return e.trim()||void 0}e.s(["extractComposerRouting",0,function(e,r){let a=new Set,n=new Set;!function e(t,r){if(t)for(let a of t)r(a),e(a.content,r)}(e.content,e=>{if("participantMention"!==e.type)return;let t=e.attrs??{},r="string"==typeof t.id?t.id.trim():"",s="string"==typeof t.kind?t.kind:"agent";r&&"agent"===s&&(a.add(r),"parallel"===t.mode&&n.add(r))});let s=t(r);return{...s?{pinnedParticipantId:s}:{},mentionedParticipantIds:Array.from(a),parallelParticipantIds:Array.from(n)}},"orderParticipantIds",0,function(e,r){let a=function(e){if(!Array.isArray(e))return[];let t=new Set,r=[];for(let a of e){if("string"!=typeof a)continue;let e=a.trim();!e||t.has(e)||(t.add(e),r.push(e))}return r}(e),n=t(r);return n&&a.includes(n)?[n,...a.filter(e=>e!==n)]:a}])},945028,490011,e=>{"use strict";var t=e.i(271645);function r(e){return`threadId=${encodeURIComponent(e)}`}function a(e){return`workspaceId=${encodeURIComponent(e)}`}e.s(["useGroupChat",0,function(e){let[n,s]=(0,t.useState)([]),[i,l]=(0,t.useState)([]),[c,o]=(0,t.useState)([]),d=(0,t.useRef)(e),u=(0,t.useRef)(e);d.current=e,u.current!==e&&(u.current=e,s([]),l([]),o([]));let p=(0,t.useCallback)(async e=>{let t=e?.trim()||d.current?.trim();if(!t){s([]),l([]);return}let n=r(t);try{let[e,r]=await Promise.all([fetch(`/api/history?${n}`),fetch(`/api/logs?${a(t)}`)]);if(d.current!==t)return;e.ok&&s(await e.json()),r.ok&&l(await r.json())}catch{}},[]),m=(0,t.useCallback)(async e=>{let t=e?.trim()||d.current?.trim();if(!t){s([]),l([]);return}let n=r(t);await Promise.all([fetch(`/api/history?${n}`,{method:"DELETE"}),fetch(`/api/logs?${a(t)}`,{method:"DELETE"})]),d.current===t&&(s([]),l([]))},[]),h=(0,t.useCallback)(async(e,t=10,r,a,n,i,l,c,u,p)=>{let m=r?.trim()||d.current?.trim();if(!m)return;let h=Date.now(),f=crypto.randomUUID(),y={id:f,role:"user",participantId:null,content:e,timestamp:h,rootMessageId:a||null,parentMessageId:a||null,depth:+!!a,...i&&i.length>0?{attachments:i}:{}};s(e=>[...e,y]);try{let r=await fetch("/api/chat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:m,prompt:e,promptPrefix:u||void 0,maxRounds:t,userMessageId:f,rootMessageId:a||void 0,attachmentIds:n?.length?n:void 0,activeParticipantIds:Array.isArray(l)?l:void 0,projectSlug:c?.trim()||void 0,routing:p})}),i=await r.json().catch(e=>(console.warn("[useGroupChat] failed to parse run response:",e),null));r.ok&&i?.chatRunId?o(e=>[{chatRunId:i.chatRunId,threadId:m,rootMessageId:a||f,status:"queued",optimistic:!0,enqueuedAt:Date.now()},...e.filter(e=>e.chatRunId!==i.chatRunId)]):r.ok||(console.error(`[useGroupChat] POST /api/chat failed (${r.status}):`,i?.error||r.statusText),s(e=>e.map(e=>e.id===f?{...e,sendFailed:!0}:e)))}catch(e){console.error("[useGroupChat] network error sending message:",e),s(e=>e.map(e=>e.id===f?{...e,sendFailed:!0}:e))}return f},[]),f=(0,t.useCallback)(async()=>{let e=d.current?.trim();if(e)try{await fetch(`/api/processes?workspaceId=${encodeURIComponent(e)}`,{method:"DELETE"})}catch{}},[]),y=(0,t.useCallback)(async e=>{let t=d.current?.trim();if(t)try{await fetch(`/api/processes?workspaceId=${encodeURIComponent(t)}&threadId=${encodeURIComponent(e)}`,{method:"DELETE"})}catch{}},[]);return{messages:n,setMessages:s,logs:i,sendMessage:h,loadHistory:p,clearHistory:m,clearLogs:(0,t.useCallback)(async e=>{let t=e?.trim()||d.current?.trim();t?(await fetch(`/api/logs?${a(t)}`,{method:"DELETE"}).catch(e=>console.warn("[useGroupChat] delete logs failed:",e)),d.current===t&&l([])):l([])},[]),chatRuns:c,setChatRuns:o,stop:f,stopThread:y}}],945028);let n=new Set(["spawning","running"]);e.s(["useProcessPolling",0,function(e,r){let a=r?.intervalMs??1500,s=r?.idleIntervalMs??1e4,[i,l]=(0,t.useState)(new Set),[c,o]=(0,t.useState)([]),[d,u]=(0,t.useState)({}),[p,m]=(0,t.useState)([]),h=(0,t.useRef)(e);h.current=e;let f=(0,t.useRef)(r?.messages??[]);f.current=r?.messages??[];let y=(0,t.useRef)(r?.setMessages);y.current=r?.setMessages;let g=(0,t.useRef)(0);(0,t.useEffect)(()=>{let e=r?.messages??[];if(e.length>0){let t=Math.max(...e.map(e=>e.timestamp));t>g.current&&(g.current=t)}},[r?.messages]);let k=(0,t.useCallback)(async()=>{let e=h.current;if(!e){l(new Set),o([]),u({}),m([]);return}let t=null;if(e.threadId?t=`/api/processes?threadId=${encodeURIComponent(e.threadId)}`:e.workspaceId&&(t=`/api/processes?workspaceId=${encodeURIComponent(e.workspaceId)}`),!t){l(new Set),o([]),u({}),m([]);return}try{let a=e.workspaceId||e.threadId,s=a?`/api/history?threadId=${encodeURIComponent(a)}&since=${g.current}`:null,i=a?`/api/chat-runs?threadId=${encodeURIComponent(a)}&limit=20`:null,c=[fetch(t)];s&&c.push(fetch(s)),i&&c.push(fetch(i));let[d,p,k]=await Promise.all(c),x=h.current;if(x?.threadId!==e.threadId||x?.workspaceId!==e.workspaceId)return;if(d.ok){let e=await d.json();o(e);let t=new Set(e.filter(e=>n.has(e.state)).map(e=>e.agentId));l(t);let r={};for(let t of e){if(!n.has(t.state))continue;let e=f.current.find(e=>e.id===t.sinceMessageId),a=e?.rootMessageId??t.sinceMessageId;r[t.agentId]={content:"",rootMessageId:a}}u(r)}if(k?.ok){var r;let e=(r=await k.json(),Array.isArray(r)?r.map(e=>{if(!e||"object"!=typeof e)return null;let t="string"==typeof e.chatRunId?e.chatRunId:"string"==typeof e.id?e.id:null,r="string"==typeof e.threadId?e.threadId:null,a="string"==typeof e.status?e.status:null,n="string"==typeof e.rootMessageId?e.rootMessageId:(e.rootMessageId,null);return t&&r&&a&&("queued"===a||"running"===a||"awaiting_user"===a||"blocked"===a||"completed"===a||"failed"===a||"cancelled"===a)?{chatRunId:t,threadId:r,rootMessageId:n,status:a,optimistic:!1}:null}).filter(e=>!!e):[]);m(e)}if(p?.ok&&y.current){let e=await p.json();if(e.length>0){let t=Math.max(...e.map(e=>e.timestamp));t>g.current&&(g.current=t),y.current(t=>{let r=new Set(t.map(e=>e.id)),a=e.filter(e=>!r.has(e.id)),n=t.map(t=>e.find(e=>e.id===t.id)??t);return 0===a.length?n:[...n,...a].sort((e,t)=>e.timestamp-t.timestamp)})}}}catch{}},[]),x=e?.threadId||e?.workspaceId||null,v=p.some(e=>"queued"===e.status||"running"===e.status),I=c.some(e=>n.has(e.state)),w=v||I?a:s;return(0,t.useEffect)(()=>{if(!x){l(new Set),o([]),u({}),m([]);return}k();let e=setInterval(k,w);return()=>clearInterval(e)},[x,w,k]),{activeAgents:i,processes:c,streaming:d,chatRuns:p,poll:k}}],490011)},437307,e=>{"use strict";let t=(0,e.i(363732).default)("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);e.s(["XCircle",0,t],437307)},741746,e=>{"use strict";let t=(0,e.i(363732).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);e.s(["AlertCircle",0,t],741746)},807087,e=>{"use strict";let t=(0,e.i(363732).default)("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);e.s(["CheckCircle2",0,t],807087)},493141,e=>{"use strict";let t=(0,e.i(363732).default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);e.s(["ChevronLeft",0,t],493141)},100373,e=>{"use strict";let t=(0,e.i(363732).default)("ban",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M4.929 4.929 19.07 19.071",key:"196cmz"}]]);e.s(["Ban",0,t],100373)},352687,e=>{"use strict";var t=e.i(843476),r=e.i(271645);e.s(["default",0,function({isOpen:e,title:a,message:n,preview:s,confirmLabel:i="Confirm",cancelLabel:l="Cancel",variant:c="default",onConfirm:o,onCancel:d}){let u=(0,r.useRef)(null),p=(0,r.useRef)(null);(0,r.useEffect)(()=>{if(e){let e=setTimeout(()=>u.current?.focus(),50);return()=>clearTimeout(e)}},[e]);let m=(0,r.useCallback)(e=>{"Escape"===e.key&&d()},[d]);if(!e)return null;let h="danger"===c;return(0,t.jsxs)("div",{className:"fixed inset-0 z-[100] flex items-center justify-center bg-black/50 backdrop-blur-md",style:{animation:"confirm-overlay-in 200ms ease-out"},onClick:e=>e.target===e.currentTarget&&d(),onKeyDown:m,children:[(0,t.jsxs)("div",{ref:p,className:"w-full max-w-md mx-4 bg-[var(--card-bg)] rounded-2xl border border-[var(--card-border)] shadow-2xl overflow-hidden",style:{animation:"confirm-dialog-in 250ms cubic-bezier(0.34, 1.56, 0.64, 1)"},children:[(0,t.jsx)("div",{className:"px-6 pt-6 pb-3",children:(0,t.jsxs)("div",{className:"flex items-start gap-4",children:[h&&(0,t.jsx)("div",{className:"flex-shrink-0 w-11 h-11 rounded-full bg-red-500/10 border border-red-500/20 flex items-center justify-center",children:(0,t.jsx)("svg",{className:"w-5 h-5 text-red-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M14.74 9l-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0"})})}),(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsx)("h3",{className:"text-[15px] font-semibold text-[var(--foreground)]",children:a}),(0,t.jsx)("p",{className:"mt-1 text-[13px] text-[var(--muted-foreground)] leading-relaxed",children:n})]})]})}),s&&(0,t.jsx)("div",{className:"mx-6 mb-3 px-3 py-2.5 rounded-lg bg-[var(--muted)]/40 border border-[var(--card-border)]",children:(0,t.jsxs)("p",{className:"text-[12px] text-[var(--muted-foreground)] line-clamp-3 leading-relaxed italic",children:["“",s,"”"]})}),(0,t.jsx)("div",{className:"mx-6 border-t border-[var(--card-border)]"}),(0,t.jsxs)("div",{className:"px-6 py-4 flex items-center justify-end gap-2.5",children:[(0,t.jsx)("button",{onClick:d,className:"px-4 py-2 rounded-lg text-[13px] font-medium text-[var(--muted-foreground)] hover:text-[var(--foreground)] hover:bg-[var(--muted)]/60 transition-all duration-150",children:l}),(0,t.jsx)("button",{ref:u,onClick:o,className:`px-4 py-2 rounded-lg text-[13px] font-medium transition-all duration-150 ${h?"bg-red-500 text-white hover:bg-red-600 active:scale-[0.97]":"btn-primary active:scale-[0.97]"}`,children:i})]})]}),(0,t.jsx)("style",{children:`
|
|
2
|
+
@keyframes confirm-overlay-in {
|
|
3
|
+
from { opacity: 0; }
|
|
4
|
+
to { opacity: 1; }
|
|
5
|
+
}
|
|
6
|
+
@keyframes confirm-dialog-in {
|
|
7
|
+
from {
|
|
8
|
+
opacity: 0;
|
|
9
|
+
transform: scale(0.9) translateY(10px);
|
|
10
|
+
}
|
|
11
|
+
to {
|
|
12
|
+
opacity: 1;
|
|
13
|
+
transform: scale(1) translateY(0);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
`})]})}])},574957,e=>{"use strict";var t=e.i(843476),r=e.i(271645),a=e.i(186552);e.s(["default",0,function({params:e}){let{slug:n,threadId:s}=(0,r.use)(e);return(0,t.jsx)(a.ChatContainer,{projectSlug:n,initialThreadId:s,showSidebar:!1})}])}]);
|
|
@@ -995,12 +995,13 @@ export default function AgentProfilePage() {
|
|
|
995
995
|
title="Edit agent"
|
|
996
996
|
initial={{
|
|
997
997
|
name: agent.name,
|
|
998
|
-
|
|
998
|
+
role: agent.role || "",
|
|
999
999
|
provider: agent.provider,
|
|
1000
1000
|
model: agent.model || "",
|
|
1001
1001
|
identity: agent.identity || "",
|
|
1002
1002
|
color: agent.color,
|
|
1003
1003
|
skills: agent.skills || [],
|
|
1004
|
+
skillBindings: agent.skillBindings || [],
|
|
1004
1005
|
}}
|
|
1005
1006
|
agentId={agent.id}
|
|
1006
1007
|
submitLabel="Save"
|
|
@@ -1011,23 +1012,25 @@ export default function AgentProfilePage() {
|
|
|
1011
1012
|
body: JSON.stringify({
|
|
1012
1013
|
id: agent.id,
|
|
1013
1014
|
name: data.name,
|
|
1014
|
-
|
|
1015
|
+
role: data.role || null,
|
|
1015
1016
|
provider: data.provider,
|
|
1016
1017
|
model: data.model,
|
|
1017
1018
|
color: data.color,
|
|
1018
1019
|
...(data.identity ? { identity: data.identity } : {}),
|
|
1019
1020
|
skills: data.skills ?? [],
|
|
1021
|
+
skillBindings: data.skillBindings ?? [],
|
|
1020
1022
|
}),
|
|
1021
1023
|
});
|
|
1022
1024
|
setAgent({
|
|
1023
1025
|
...agent,
|
|
1024
1026
|
name: data.name,
|
|
1025
|
-
|
|
1027
|
+
role: data.role || undefined,
|
|
1026
1028
|
provider: data.provider,
|
|
1027
1029
|
model: data.model,
|
|
1028
1030
|
identity: data.identity,
|
|
1029
1031
|
color: data.color ?? agent.color,
|
|
1030
1032
|
skills: data.skills ?? [],
|
|
1033
|
+
skillBindings: data.skillBindings ?? [],
|
|
1031
1034
|
});
|
|
1032
1035
|
setEditModal(false);
|
|
1033
1036
|
}}
|
|
@@ -897,7 +897,7 @@ export default function AgentLibraryPage() {
|
|
|
897
897
|
headers: { "Content-Type": "application/json" },
|
|
898
898
|
body: JSON.stringify({
|
|
899
899
|
id, name: data.name, provider: data.provider, model: data.model, color: data.color ?? color,
|
|
900
|
-
...(data.
|
|
900
|
+
...(data.role ? { role: data.role } : {}),
|
|
901
901
|
...(data.identity ? { identity: data.identity } : {}),
|
|
902
902
|
skills: data.skills ?? [],
|
|
903
903
|
skillBindings: data.skillBindings ?? [],
|
|
@@ -928,7 +928,7 @@ export default function AgentLibraryPage() {
|
|
|
928
928
|
title="Edit agent"
|
|
929
929
|
initial={{
|
|
930
930
|
name: editAgent.name,
|
|
931
|
-
|
|
931
|
+
role: editAgent.role || "",
|
|
932
932
|
provider: editAgent.provider,
|
|
933
933
|
model: editAgent.model || "",
|
|
934
934
|
identity: editAgent.identity || "",
|
|
@@ -955,7 +955,7 @@ export default function AgentLibraryPage() {
|
|
|
955
955
|
body: JSON.stringify({
|
|
956
956
|
id: editAgent.id,
|
|
957
957
|
name: data.name,
|
|
958
|
-
|
|
958
|
+
role: data.role || null,
|
|
959
959
|
provider: data.provider,
|
|
960
960
|
model: data.model,
|
|
961
961
|
color: data.color,
|
|
@@ -473,8 +473,14 @@ export async function POST(request: NextRequest) {
|
|
|
473
473
|
if (rawAttachmentIds.length > 0) {
|
|
474
474
|
const finalized = await finalizeAttachments(userMessageId, rawAttachmentIds);
|
|
475
475
|
if (finalized.length > 0) {
|
|
476
|
+
const imageFiles = finalized.filter((a) => a.mimeType.startsWith("image/"));
|
|
476
477
|
const lines = finalized.map((a) => `- ${a.filename} (${a.mimeType}, ${a.size} bytes): ${a.diskPath}`);
|
|
477
|
-
|
|
478
|
+
if (imageFiles.length > 0) {
|
|
479
|
+
const noun = imageFiles.length === 1 ? "an image" : `${imageFiles.length} images`;
|
|
480
|
+
attachmentContext = `\n\n[The user pasted ${noun}. View ${imageFiles.length === 1 ? "it" : "them"} with the Read tool before responding.]\n${lines.join("\n")}\n`;
|
|
481
|
+
} else {
|
|
482
|
+
attachmentContext = `\n\n[Attached files]\n${lines.join("\n")}\n`;
|
|
483
|
+
}
|
|
478
484
|
}
|
|
479
485
|
}
|
|
480
486
|
|
|
@@ -28,7 +28,7 @@ export async function GET() {
|
|
|
28
28
|
interface ParticipantPayload {
|
|
29
29
|
id?: unknown;
|
|
30
30
|
name?: unknown;
|
|
31
|
-
|
|
31
|
+
role?: unknown;
|
|
32
32
|
provider?: unknown;
|
|
33
33
|
model?: unknown;
|
|
34
34
|
identity?: unknown;
|
|
@@ -100,7 +100,7 @@ function toParticipant(body: ParticipantPayload, fallbackId?: string): Participa
|
|
|
100
100
|
return null;
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
-
const
|
|
103
|
+
const role = toOptionalString(body.role);
|
|
104
104
|
const identity = toOptionalString(body.identity);
|
|
105
105
|
const identityFile = toOptionalString(body.identityFile);
|
|
106
106
|
const skills = toSkills(body.skills);
|
|
@@ -123,7 +123,7 @@ function toParticipant(body: ParticipantPayload, fallbackId?: string): Participa
|
|
|
123
123
|
provider,
|
|
124
124
|
model,
|
|
125
125
|
color,
|
|
126
|
-
...(
|
|
126
|
+
...(role ? { role } : {}),
|
|
127
127
|
...(identity ? { identity } : {}),
|
|
128
128
|
...(toOptionalString(body.voice) ? { voice: toOptionalString(body.voice) } : {}),
|
|
129
129
|
...(toOptionalString(body.seed) ? { seed: toOptionalString(body.seed) } : {}),
|
|
@@ -156,7 +156,7 @@ export async function POST(request: NextRequest) {
|
|
|
156
156
|
createdAgent = await createAgent(LOCAL_USER.id, {
|
|
157
157
|
id: participant.id,
|
|
158
158
|
name: participant.name,
|
|
159
|
-
|
|
159
|
+
role: participant.role,
|
|
160
160
|
style: "balanced",
|
|
161
161
|
description: participant.identity,
|
|
162
162
|
model: participant.model ?? undefined,
|
|
@@ -179,8 +179,8 @@ export async function POST(request: NextRequest) {
|
|
|
179
179
|
const created: Participant = {
|
|
180
180
|
id: createdAgent.id,
|
|
181
181
|
name: createdAgent.name,
|
|
182
|
-
...(createdAgent.
|
|
183
|
-
? {
|
|
182
|
+
...(createdAgent.role || participant.role
|
|
183
|
+
? { role: createdAgent.role || participant.role }
|
|
184
184
|
: {}),
|
|
185
185
|
provider: (createdAgent.provider || participant.provider || "claude") as ChatProvider,
|
|
186
186
|
model: createdAgent.model || participant.model || null,
|
|
@@ -227,7 +227,7 @@ export async function PATCH(request: NextRequest) {
|
|
|
227
227
|
try {
|
|
228
228
|
updatedAgent = await updateDbAgent(participant.id, LOCAL_USER.id, {
|
|
229
229
|
name: participant.name,
|
|
230
|
-
|
|
230
|
+
role: participant.role,
|
|
231
231
|
description: participant.identity,
|
|
232
232
|
model: participant.model ?? undefined,
|
|
233
233
|
provider: participant.provider,
|
|
@@ -253,8 +253,8 @@ export async function PATCH(request: NextRequest) {
|
|
|
253
253
|
const updated: Participant = {
|
|
254
254
|
id: updatedAgent.id,
|
|
255
255
|
name: updatedAgent.name,
|
|
256
|
-
...(updatedAgent.
|
|
257
|
-
? {
|
|
256
|
+
...(updatedAgent.role || participant.role
|
|
257
|
+
? { role: updatedAgent.role || participant.role }
|
|
258
258
|
: {}),
|
|
259
259
|
provider: (updatedAgent.provider || participant.provider || "claude") as ChatProvider,
|
|
260
260
|
model: updatedAgent.model || participant.model || null,
|
|
@@ -89,7 +89,7 @@ function scoreAgentMatch(
|
|
|
89
89
|
agent: {
|
|
90
90
|
id?: string | null;
|
|
91
91
|
name: string;
|
|
92
|
-
|
|
92
|
+
role?: string | null;
|
|
93
93
|
teamName?: string | null;
|
|
94
94
|
},
|
|
95
95
|
): number {
|
|
@@ -113,7 +113,7 @@ function scoreAgentMatch(
|
|
|
113
113
|
query,
|
|
114
114
|
agent.id,
|
|
115
115
|
agent.name,
|
|
116
|
-
agent.
|
|
116
|
+
agent.role,
|
|
117
117
|
agent.teamName,
|
|
118
118
|
);
|
|
119
119
|
}
|
|
@@ -271,7 +271,7 @@ export async function GET(request: NextRequest, context: RouteContext) {
|
|
|
271
271
|
.filter((agent) => projectAgentIds.has(agent.id))
|
|
272
272
|
.filter((agent) => {
|
|
273
273
|
const primaryTeam = primaryTeamByAgentId.get(agent.id);
|
|
274
|
-
return matchesQuery(query, agent.id, agent.name, agent.
|
|
274
|
+
return matchesQuery(query, agent.id, agent.name, agent.role, primaryTeam?.teamName);
|
|
275
275
|
})
|
|
276
276
|
.sort(
|
|
277
277
|
(left, right) => {
|
|
@@ -281,13 +281,13 @@ export async function GET(request: NextRequest, context: RouteContext) {
|
|
|
281
281
|
scoreAgentMatch(query, {
|
|
282
282
|
id: left.id,
|
|
283
283
|
name: left.name,
|
|
284
|
-
|
|
284
|
+
role: left.role,
|
|
285
285
|
teamName: leftPrimaryTeam?.teamName,
|
|
286
286
|
}) -
|
|
287
287
|
scoreAgentMatch(query, {
|
|
288
288
|
id: right.id,
|
|
289
289
|
name: right.name,
|
|
290
|
-
|
|
290
|
+
role: right.role,
|
|
291
291
|
teamName: rightPrimaryTeam?.teamName,
|
|
292
292
|
})
|
|
293
293
|
);
|
|
@@ -301,7 +301,7 @@ export async function GET(request: NextRequest, context: RouteContext) {
|
|
|
301
301
|
title: agent.name,
|
|
302
302
|
context:
|
|
303
303
|
primaryTeamByAgentId.get(agent.id)?.teamName ??
|
|
304
|
-
agent.
|
|
304
|
+
agent.role ??
|
|
305
305
|
agent.provider ??
|
|
306
306
|
undefined,
|
|
307
307
|
description: shorten(cleanText(agent.identity || agent.model || ""), 120) || undefined,
|
|
@@ -26,7 +26,7 @@ type RouteContext = { params: Promise<{ id: string }> };
|
|
|
26
26
|
type RequestedAgent = {
|
|
27
27
|
preset: AgentPreset;
|
|
28
28
|
name?: string;
|
|
29
|
-
|
|
29
|
+
role?: string;
|
|
30
30
|
identity?: string;
|
|
31
31
|
provider?: string;
|
|
32
32
|
model?: string;
|
|
@@ -125,7 +125,7 @@ function resolveRequestedAgents(value: unknown): { agents?: RequestedAgent[]; er
|
|
|
125
125
|
resolved.push({
|
|
126
126
|
preset,
|
|
127
127
|
name: toOptionalString(obj.name),
|
|
128
|
-
|
|
128
|
+
role: toOptionalString(obj.role),
|
|
129
129
|
identity: toOptionalString(obj.identity),
|
|
130
130
|
provider: toOptionalString(obj.provider),
|
|
131
131
|
model: toOptionalString(obj.model),
|
|
@@ -143,7 +143,7 @@ async function provisionAgent(requested: RequestedAgent, projectId: string, team
|
|
|
143
143
|
const identity = requested.identity ?? preset.identity;
|
|
144
144
|
const agent = await createAgent(LOCAL_USER.id, {
|
|
145
145
|
name: requested.name ?? preset.name,
|
|
146
|
-
|
|
146
|
+
role: requested.role ?? preset.role,
|
|
147
147
|
style: preset.style,
|
|
148
148
|
description: identity,
|
|
149
149
|
voice: identity,
|
|
@@ -25,10 +25,19 @@ export async function POST(request: NextRequest) {
|
|
|
25
25
|
// Poll a specific task
|
|
26
26
|
const result = await executeScheduleTick(body.taskId, { dispatchFunction, dispatchWork });
|
|
27
27
|
|
|
28
|
+
if (!result.fired) {
|
|
29
|
+
const skipReason = result.graph?.schedule?.tickInProgress ? 'tick_in_progress' : 'not_due';
|
|
30
|
+
return NextResponse.json({
|
|
31
|
+
success: false,
|
|
32
|
+
taskId: body.taskId,
|
|
33
|
+
skipReason,
|
|
34
|
+
error: result.error?.message ?? null,
|
|
35
|
+
}, { status: 409 });
|
|
36
|
+
}
|
|
37
|
+
|
|
28
38
|
return NextResponse.json({
|
|
29
|
-
success:
|
|
39
|
+
success: true,
|
|
30
40
|
taskId: body.taskId,
|
|
31
|
-
error: result.error?.message ?? null,
|
|
32
41
|
});
|
|
33
42
|
}
|
|
34
43
|
|
|
@@ -3,41 +3,99 @@
|
|
|
3
3
|
|
|
4
4
|
import { useEffect, useState } from "react";
|
|
5
5
|
import { useRouter } from "next/navigation";
|
|
6
|
-
import { Loader2 } from "lucide-react";
|
|
6
|
+
import { FolderPlus, Loader2, Users } from "lucide-react";
|
|
7
|
+
import { EmptyStateCard } from "@/components/EmptyStateCard";
|
|
8
|
+
|
|
9
|
+
type HomeState =
|
|
10
|
+
| { kind: "loading" }
|
|
11
|
+
| { kind: "no-project" }
|
|
12
|
+
| { kind: "no-team"; projectSlug: string; projectName: string }
|
|
13
|
+
| { kind: "ready"; projectSlug: string };
|
|
7
14
|
|
|
8
15
|
export default function Home() {
|
|
9
16
|
const router = useRouter();
|
|
10
|
-
const [
|
|
17
|
+
const [state, setState] = useState<HomeState>({ kind: "loading" });
|
|
11
18
|
|
|
12
19
|
useEffect(() => {
|
|
13
20
|
let cancelled = false;
|
|
21
|
+
|
|
14
22
|
void (async () => {
|
|
15
23
|
try {
|
|
16
24
|
const res = await fetch("/api/projects", { cache: "no-store" });
|
|
17
25
|
if (cancelled) return;
|
|
18
|
-
if (res.ok) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
26
|
+
if (!res.ok) {
|
|
27
|
+
router.replace("/setup");
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const data = await res.json();
|
|
32
|
+
const projects = Array.isArray(data?.projects) ? data.projects : [];
|
|
33
|
+
if (projects.length === 0) {
|
|
34
|
+
// If no providers are installed/authenticated, send to /setup first.
|
|
35
|
+
const providersRes = await fetch("/api/providers", { cache: "no-store" });
|
|
36
|
+
if (cancelled) return;
|
|
37
|
+
const providersData = providersRes.ok ? await providersRes.json() : { providers: [] };
|
|
38
|
+
const providerList = Array.isArray(providersData?.providers) ? providersData.providers : [];
|
|
39
|
+
const anyReady = providerList.some((p: { installed?: boolean; authenticated?: boolean }) => p?.installed && p?.authenticated);
|
|
40
|
+
if (!anyReady) {
|
|
22
41
|
router.replace("/setup");
|
|
23
|
-
|
|
24
|
-
router.replace(`/projects/${projects[0].slug}`);
|
|
42
|
+
return;
|
|
25
43
|
}
|
|
44
|
+
setState({ kind: "no-project" });
|
|
26
45
|
return;
|
|
27
46
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
47
|
+
|
|
48
|
+
const first = projects[0];
|
|
49
|
+
const teamsRes = await fetch(`/api/projects/${first.id}/teams`, { cache: "no-store" });
|
|
50
|
+
if (cancelled) return;
|
|
51
|
+
const teamsData = teamsRes.ok ? await teamsRes.json() : { teams: [] };
|
|
52
|
+
const teams = Array.isArray(teamsData?.teams) ? teamsData.teams : [];
|
|
53
|
+
|
|
54
|
+
if (teams.length === 0) {
|
|
55
|
+
setState({ kind: "no-team", projectSlug: first.slug, projectName: first.name });
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
router.replace(`/projects/${first.slug}`);
|
|
60
|
+
} catch {
|
|
61
|
+
if (!cancelled) router.replace("/setup");
|
|
31
62
|
}
|
|
32
63
|
})();
|
|
64
|
+
|
|
33
65
|
return () => { cancelled = true; };
|
|
34
66
|
}, [router]);
|
|
35
67
|
|
|
36
|
-
if (
|
|
68
|
+
if (state.kind === "loading" || state.kind === "ready") {
|
|
69
|
+
return (
|
|
70
|
+
<div className="h-screen w-full flex items-center justify-center bg-[var(--background)]">
|
|
71
|
+
<Loader2 className="w-6 h-6 animate-spin text-[var(--muted-foreground)]" />
|
|
72
|
+
</div>
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
if (state.kind === "no-project") {
|
|
77
|
+
return (
|
|
78
|
+
<div className="h-screen w-full bg-[var(--background)]">
|
|
79
|
+
<EmptyStateCard
|
|
80
|
+
icon={<FolderPlus className="w-6 h-6 text-[var(--foreground)]" />}
|
|
81
|
+
title="Create your first project"
|
|
82
|
+
description="A project groups your repos, teams, and automations. Create one to start working with agents."
|
|
83
|
+
ctaLabel="Create a project"
|
|
84
|
+
ctaHref="/projects?new=1"
|
|
85
|
+
/>
|
|
86
|
+
</div>
|
|
87
|
+
);
|
|
88
|
+
}
|
|
37
89
|
|
|
38
90
|
return (
|
|
39
|
-
<div className="h-screen w-full
|
|
40
|
-
<
|
|
91
|
+
<div className="h-screen w-full bg-[var(--background)]">
|
|
92
|
+
<EmptyStateCard
|
|
93
|
+
icon={<Users className="w-6 h-6 text-[var(--foreground)]" />}
|
|
94
|
+
title={`Add a team to ${state.projectName}`}
|
|
95
|
+
description="Teams give your project the agents that will actually do the work. Add one to get started."
|
|
96
|
+
ctaLabel="Add a team"
|
|
97
|
+
ctaHref={`/projects/${state.projectSlug}/teams/new`}
|
|
98
|
+
/>
|
|
41
99
|
</div>
|
|
42
100
|
);
|
|
43
101
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { use } from "react";
|
|
3
|
+
import { use, useEffect, useState } from "react";
|
|
4
|
+
import { Users } from "lucide-react";
|
|
4
5
|
import { ProjectHome } from "@/components/projects/ProjectHome";
|
|
6
|
+
import { EmptyStateCard } from "@/components/EmptyStateCard";
|
|
5
7
|
import { useProjectsWithAgents } from "@/hooks/useProjects";
|
|
6
8
|
|
|
7
9
|
export default function ProjectPage({
|
|
@@ -13,6 +15,25 @@ export default function ProjectPage({
|
|
|
13
15
|
const { projects } = useProjectsWithAgents();
|
|
14
16
|
const project = projects.find((p) => p.slug === slug);
|
|
15
17
|
|
|
18
|
+
const [teamState, setTeamState] = useState<"loading" | "empty" | "has-teams">("loading");
|
|
19
|
+
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
if (!project) return;
|
|
22
|
+
let cancelled = false;
|
|
23
|
+
void (async () => {
|
|
24
|
+
try {
|
|
25
|
+
const res = await fetch(`/api/projects/${project.id}/teams`, { cache: "no-store" });
|
|
26
|
+
if (cancelled) return;
|
|
27
|
+
const data = res.ok ? await res.json() : { teams: [] };
|
|
28
|
+
const teams = Array.isArray(data?.teams) ? data.teams : [];
|
|
29
|
+
setTeamState(teams.length === 0 ? "empty" : "has-teams");
|
|
30
|
+
} catch {
|
|
31
|
+
if (!cancelled) setTeamState("has-teams");
|
|
32
|
+
}
|
|
33
|
+
})();
|
|
34
|
+
return () => { cancelled = true; };
|
|
35
|
+
}, [project]);
|
|
36
|
+
|
|
16
37
|
if (!project) {
|
|
17
38
|
return (
|
|
18
39
|
<div className="flex items-center justify-center h-full text-sm text-zinc-500">
|
|
@@ -21,6 +42,18 @@ export default function ProjectPage({
|
|
|
21
42
|
);
|
|
22
43
|
}
|
|
23
44
|
|
|
45
|
+
if (teamState === "empty") {
|
|
46
|
+
return (
|
|
47
|
+
<EmptyStateCard
|
|
48
|
+
icon={<Users className="w-6 h-6 text-[var(--foreground)]" />}
|
|
49
|
+
title={`Add a team to ${project.name}`}
|
|
50
|
+
description="Teams give your project the agents that will actually do the work. Add one to get started."
|
|
51
|
+
ctaLabel="Add a team"
|
|
52
|
+
ctaHref={`/projects/${project.slug}/teams/new`}
|
|
53
|
+
/>
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
|
|
24
57
|
return (
|
|
25
58
|
<ProjectHome
|
|
26
59
|
projectId={project.id}
|
|
@@ -1044,12 +1044,13 @@ export default function TeamAgentProfilePage({
|
|
|
1044
1044
|
title="Edit agent"
|
|
1045
1045
|
initial={{
|
|
1046
1046
|
name: agent.name,
|
|
1047
|
-
|
|
1047
|
+
role: agent.role || "",
|
|
1048
1048
|
provider: agent.provider,
|
|
1049
1049
|
model: agent.model || "",
|
|
1050
1050
|
identity: agent.identity || "",
|
|
1051
1051
|
color: agent.color,
|
|
1052
1052
|
skills: agent.skills || [],
|
|
1053
|
+
skillBindings: agent.skillBindings || [],
|
|
1053
1054
|
}}
|
|
1054
1055
|
agentId={agent.id}
|
|
1055
1056
|
submitLabel="Save"
|
|
@@ -1060,23 +1061,25 @@ export default function TeamAgentProfilePage({
|
|
|
1060
1061
|
body: JSON.stringify({
|
|
1061
1062
|
id: agent.id,
|
|
1062
1063
|
name: data.name,
|
|
1063
|
-
|
|
1064
|
+
role: data.role || null,
|
|
1064
1065
|
provider: data.provider,
|
|
1065
1066
|
model: data.model,
|
|
1066
1067
|
color: data.color,
|
|
1067
1068
|
...(data.identity ? { identity: data.identity } : {}),
|
|
1068
1069
|
skills: data.skills ?? [],
|
|
1070
|
+
skillBindings: data.skillBindings ?? [],
|
|
1069
1071
|
}),
|
|
1070
1072
|
});
|
|
1071
1073
|
setAgent({
|
|
1072
1074
|
...agent,
|
|
1073
1075
|
name: data.name,
|
|
1074
|
-
|
|
1076
|
+
role: data.role || undefined,
|
|
1075
1077
|
provider: data.provider,
|
|
1076
1078
|
model: data.model,
|
|
1077
1079
|
identity: data.identity,
|
|
1078
1080
|
color: data.color ?? agent.color,
|
|
1079
1081
|
skills: data.skills ?? [],
|
|
1082
|
+
skillBindings: data.skillBindings ?? [],
|
|
1080
1083
|
});
|
|
1081
1084
|
setEditModal(false);
|
|
1082
1085
|
}}
|
|
@@ -277,9 +277,10 @@ export default function TeamDetailPage({
|
|
|
277
277
|
headers: { "Content-Type": "application/json" },
|
|
278
278
|
body: JSON.stringify({
|
|
279
279
|
name: preset.name,
|
|
280
|
+
role: preset.role,
|
|
280
281
|
provider: "claude",
|
|
281
282
|
model: null,
|
|
282
|
-
identity:
|
|
283
|
+
identity: preset.identity,
|
|
283
284
|
skills: bindings.map((b) => ({
|
|
284
285
|
file: `${b.repo}/${b.skillId}`,
|
|
285
286
|
...(b.condition ? { condition: b.condition } : {}),
|
|
@@ -697,12 +698,13 @@ export default function TeamDetailPage({
|
|
|
697
698
|
title="Edit agent"
|
|
698
699
|
initial={{
|
|
699
700
|
name: participantMap.get(editAgentId)!.name,
|
|
700
|
-
|
|
701
|
+
role: participantMap.get(editAgentId)!.role || "",
|
|
701
702
|
provider: participantMap.get(editAgentId)!.provider,
|
|
702
703
|
model: participantMap.get(editAgentId)!.model || "",
|
|
703
704
|
identity: participantMap.get(editAgentId)!.identity || "",
|
|
704
705
|
color: participantMap.get(editAgentId)!.color,
|
|
705
706
|
skills: participantMap.get(editAgentId)!.skills || [],
|
|
707
|
+
skillBindings: participantMap.get(editAgentId)!.skillBindings || [],
|
|
706
708
|
}}
|
|
707
709
|
agentId={editAgentId}
|
|
708
710
|
submitLabel="Save"
|
|
@@ -713,12 +715,13 @@ export default function TeamDetailPage({
|
|
|
713
715
|
body: JSON.stringify({
|
|
714
716
|
id: editAgentId,
|
|
715
717
|
name: data.name,
|
|
716
|
-
|
|
718
|
+
role: data.role || null,
|
|
717
719
|
provider: data.provider,
|
|
718
720
|
model: data.model,
|
|
719
721
|
color: data.color,
|
|
720
722
|
...(data.identity ? { identity: data.identity } : {}),
|
|
721
723
|
skills: data.skills ?? [],
|
|
724
|
+
skillBindings: data.skillBindings ?? [],
|
|
722
725
|
}),
|
|
723
726
|
});
|
|
724
727
|
setEditAgentId(null);
|