@ai-development-environment/server 0.0.137 → 0.0.138
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/package.json +1 -1
- package/standalone/.next/BUILD_ID +1 -1
- package/standalone/.next/build-manifest.json +3 -3
- package/standalone/.next/prerender-manifest.json +3 -3
- package/standalone/.next/server/app/[locale]/(auth)/register/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(auth)/register/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(auth)/sign-in/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(auth)/sign-in/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/ai/costs/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/ai/costs/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/ai/drafts/new/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/ai/drafts/new/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/ai/drafts/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/ai/drafts/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/ai/plans/[runId]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/ai/plans/[runId]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/ai/plans/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/ai/plans/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/ai/sessions/[runId]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/ai/sessions/[runId]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/ai/sessions/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/ai/sessions/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/ai/skills/[skillId]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/ai/skills/[skillId]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/ai/skills/groups/[groupId]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/ai/skills/groups/[groupId]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/ai/skills/groups/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/ai/skills/groups/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/ai/skills/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/ai/skills/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/ai/skills/sync/[runId]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/ai/skills/sync/[runId]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/ai/usage/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/ai/usage/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/action-center/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/action-center/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/agents/[id]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/agents/[id]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/agents/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/apps/[appId]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/apps/[appId]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/apps/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/apps/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/builds/[buildId]/coverage/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/builds/[buildId]/coverage/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/builds/[buildId]/output/route.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/builds/[buildId]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/builds/[buildId]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/builds/configurations/[configurationId]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/builds/configurations/[configurationId]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/builds/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/builds/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/changes/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/changes/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/codebases/[codebaseId]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/codebases/[codebaseId]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/codebases/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/codebases/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/codebases/repositories/[repositoryId]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/codebases/repositories/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/commands/[commandId]/edit/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/commands/[commandId]/edit/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/commands/new/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/commands/new/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/commands/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/commands/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/commands/runs/[runId]/output/route.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/commands/runs/[runId]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/commands/runs/[runId]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/jobs/[jobId]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/jobs/[jobId]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/notifications/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/notifications/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/workflows/[workflowId]/edit/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/workflows/[workflowId]/edit/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/workflows/[workflowId]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/workflows/[workflowId]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/workflows/new/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/workflows/new/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/workflows/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/workflows/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/workflows/runs/[runId]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/workflows/runs/[runId]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/worktrees/[worktreeId]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/worktrees/[worktreeId]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/worktrees/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/dashboard/worktrees/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/analytics-events/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/analytics-events/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/console-logs/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/console-logs/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/crashes/[crashId]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/crashes/[crashId]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/crashes/dsyms/[dsymId]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/crashes/dsyms/[dsymId]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/crashes/dsyms/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/crashes/dsyms/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/crashes/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/crashes/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/push-notifications/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/push-notifications/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/sse/[endpointId]/mocks/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/sse/[endpointId]/mocks/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/sse/[endpointId]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/sse/[endpointId]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/sse/breakpoints/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/sse/breakpoints/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/sse/history/[requestId]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/sse/history/[requestId]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/sse/history/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/sse/history/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/sse/new/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/sse/new/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/sse/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/sse/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/sse/storage/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/sse/storage/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/unified-events/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/debugging/unified-events/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/github/actions/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/github/actions/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/github/actions-cache/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/github/actions-cache/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/github/cache/entries/[id]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/github/cache/entries/[id]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/github/cache/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/github/cache/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/github/comments/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/github/comments/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/github/pull-requests/[owner]/[repository]/[number]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/github/pull-requests/[owner]/[repository]/[number]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/github/pull-requests/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/github/pull-requests/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/github/webhooks/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/github/webhooks/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/gitlab/cache/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/gitlab/cache/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/gitlab/comments/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/gitlab/comments/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/gitlab/merge-requests/[projectId]/[iid]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/gitlab/merge-requests/[projectId]/[iid]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/gitlab/merge-requests/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/gitlab/merge-requests/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/gitlab/pipelines/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/gitlab/pipelines/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/gitlab/webhooks/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/gitlab/webhooks/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/jira/cache/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/jira/cache/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/jira/cache/tickets/[issueKey]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/jira/cache/tickets/[issueKey]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/jira/tickets/[issueKey]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/jira/tickets/[issueKey]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/jira/tickets/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/jira/tickets/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/jira/webhooks/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/jira/webhooks/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/api-keys/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/api-keys/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/build-data/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/build-data/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/connected-applications/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/connected-applications/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/credentials/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/credentials/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/devices/[id]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/devices/[id]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/devices/enroll/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/devices/enroll/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/devices/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/devices/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/polling/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/polling/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/prepare/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/prepare/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/provisioning-profiles/[profileId]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/provisioning-profiles/[profileId]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/provisioning-profiles/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/provisioning-profiles/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/settings/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/settings/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/status/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/status/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/tailscale/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/tailscale/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/tools/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/tools/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/users/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(dashboard)/system/users/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(mcp)/mcp/consent/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(mcp)/mcp/consent/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/(mcp)/mcp/sign-in/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/(mcp)/mcp/sign-in/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/[locale]/page.js.nft.json +1 -1
- package/standalone/.next/server/app/[locale]/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/_global-error.html +1 -1
- package/standalone/.next/server/app/_global-error.rsc +1 -1
- package/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/standalone/.next/server/app/_not-found.html +1 -1
- package/standalone/.next/server/app/_not-found.rsc +1 -1
- package/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/standalone/.next/server/app/api/agent/build-artifact-transfers/[transferId]/complete/route.js +1 -1
- package/standalone/.next/server/app/api/agent/build-artifact-transfers/[transferId]/complete/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/agent/build-artifact-transfers/[transferId]/download/route.js +1 -1
- package/standalone/.next/server/app/api/agent/build-artifact-transfers/[transferId]/download/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/agent/build-artifact-transfers/[transferId]/route.js +1 -1
- package/standalone/.next/server/app/api/agent/build-artifact-transfers/[transferId]/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/agent/build-artifact-transfers/[transferId]/upload/route.js +1 -1
- package/standalone/.next/server/app/api/agent/build-artifact-transfers/[transferId]/upload/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/agent/dsyms/[dsymId]/dwarf/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/agent/run-attachments/[attachmentId]/route.js +1 -1
- package/standalone/.next/server/app/api/agent/run-attachments/[attachmentId]/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/build-artifact-uploads/[uploadId]/route.js +1 -1
- package/standalone/.next/server/app/api/build-artifact-uploads/[uploadId]/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/codebases/by-path/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/codebases/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/crash-files/dsyms/[dsymId]/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/crash-files/reports/[crashId]/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/dsyms/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/dsyms/uploads/[uploadId]/complete/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/dsyms/uploads/[uploadId]/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/dsyms/uploads/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/graphql/route.js +1 -1
- package/standalone/.next/server/app/api/graphql/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/ios/apns-devices/route.js +2 -2
- package/standalone/.next/server/app/api/ios/apns-devices/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/ios/devices/export.tsv/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/ios/enrollment/start/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/ios/notification-devices/route.js +2 -2
- package/standalone/.next/server/app/api/ios/notification-devices/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/mcp/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/openapi.json/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/public/builds/[buildId]/artifacts/[artifactId]/manifest.plist/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/public/builds/[buildId]/artifacts/[artifactId]/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/public/crashes/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/public/github/webhook/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/public/gitlab/webhook/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/public/ios/enrollment-profile/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/public/ios/profile-response/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/public/jira/webhook/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/public/sse/[token]/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/run-attachments/[attachmentId]/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/run-attachments/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/sse/history/export/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/telemetry/analytics-events/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/telemetry/console-logs/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/telemetry/export/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/tools/call/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/tools/catalog/route.js.nft.json +1 -1
- package/standalone/.next/server/app/api/worktrees/[worktreeId]/diff-image/route.js.nft.json +1 -1
- package/standalone/.next/server/chunks/{[root-of-the-server]__013jjy8_tp5xo._.js → [root-of-the-server]__00iwkfurpc0x0._.js} +1 -1
- package/standalone/.next/server/chunks/{[root-of-the-server]__06f1gskg4t5ra._.js → [root-of-the-server]__085kh_xzq74pi._.js} +1 -1
- package/standalone/.next/server/chunks/{[root-of-the-server]__0ls_xfg-o69ws._.js → [root-of-the-server]__0b95wr93hpccm._.js} +1 -1
- package/standalone/.next/server/chunks/{[root-of-the-server]__0dy3_w5i5avqu._.js → [root-of-the-server]__0dqcl3ne9jy6j._.js} +1 -1
- package/standalone/.next/server/chunks/{[root-of-the-server]__0ihief9wd15j-._.js → [root-of-the-server]__0ernvc_drsyur._.js} +1 -1
- package/standalone/.next/server/chunks/{[root-of-the-server]__0nazqxkz69cb-._.js → [root-of-the-server]__0gdpss1ozbpj6._.js} +1 -1
- package/standalone/.next/server/chunks/{[root-of-the-server]__0fdv7ezffrnb8._.js → [root-of-the-server]__0n0aoxk6qal2q._.js} +1 -1
- package/standalone/.next/server/chunks/{[root-of-the-server]__103-o8iatm04o._.js → [root-of-the-server]__0pb0of35lhv4r._.js} +2 -2
- package/standalone/.next/server/chunks/{[root-of-the-server]__0jo85vtp06p8k._.js → [root-of-the-server]__0pb4bln2irwf1._.js} +1 -1
- package/standalone/.next/server/chunks/{[root-of-the-server]__0mf1u6efc98j1._.js → [root-of-the-server]__0q_f0b_y6m06s._.js} +1 -1
- package/standalone/.next/server/chunks/{[root-of-the-server]__0867t3wdit4oo._.js → [root-of-the-server]__0r5hav-f6hg4y._.js} +2 -2
- package/standalone/.next/server/chunks/{[root-of-the-server]__0te36hr8zjt5a._.js → [root-of-the-server]__0rfsymbgl5zmz._.js} +2 -2
- package/standalone/.next/server/chunks/{[root-of-the-server]__0mjmd0-g6img6._.js → [root-of-the-server]__0twikyj29lh-8._.js} +1 -1
- package/standalone/.next/server/chunks/{[root-of-the-server]__0jqrn7hnkezim._.js → [root-of-the-server]__0uj03p6vvvoox._.js} +1 -1
- package/standalone/.next/server/chunks/{[root-of-the-server]__02w866s8cv03o._.js → [root-of-the-server]__0vqqb799ovs3f._.js} +2 -2
- package/standalone/.next/server/chunks/{[root-of-the-server]__0o0xdssylq9hn._.js → [root-of-the-server]__0wpet49k-mtfs._.js} +2 -2
- package/standalone/.next/server/chunks/[root-of-the-server]__0zdbzx4i-waj1._.js +3 -0
- package/standalone/.next/server/chunks/{[root-of-the-server]__064yhuqdlomcc._.js → [root-of-the-server]__0zo4-ogstcigk._.js} +1 -1
- package/standalone/.next/server/chunks/{[root-of-the-server]__02inw6-w863p6._.js → [root-of-the-server]__1-80xb-l8bnx8._.js} +1 -1
- package/standalone/.next/server/chunks/[root-of-the-server]__10hjc82wl2rrg._.js +3 -0
- package/standalone/.next/server/chunks/[root-of-the-server]__13a6nglsddnmp._.js +3 -0
- package/standalone/.next/server/chunks/{[root-of-the-server]__016k_dvgtq4np._.js → [root-of-the-server]__15rnf_muhindu._.js} +2 -2
- package/standalone/.next/server/chunks/{[root-of-the-server]__01uprimny6xf6._.js → [root-of-the-server]__17e3j_fplgxlt._.js} +1 -1
- package/standalone/.next/server/chunks/{[root-of-the-server]__0lfp2twrecdmg._.js → [root-of-the-server]__18549u75hk0zc._.js} +1 -1
- package/standalone/.next/server/chunks/{[root-of-the-server]__0q00u15k45x_y._.js → [root-of-the-server]__1aktlm6bxadr9._.js} +1 -1
- package/standalone/.next/server/chunks/[root-of-the-server]__1cdu86kwjpucp._.js +3 -0
- package/standalone/.next/server/chunks/[root-of-the-server]__1fyo1xks_hnke._.js +3 -0
- package/standalone/.next/server/chunks/[root-of-the-server]__1h19tyu2_us3g._.js +3 -0
- package/standalone/.next/server/chunks/[root-of-the-server]__1jv6n33tz33mq._.js +3 -0
- package/standalone/.next/server/chunks/[root-of-the-server]__1nz79np-vsmai._.js +3 -0
- package/standalone/.next/server/chunks/[root-of-the-server]__1p7-v5i6_c02i._.js +3 -0
- package/standalone/.next/server/chunks/[root-of-the-server]__1qkmdb5cuuvm2._.js +3 -0
- package/standalone/.next/server/chunks/[root-of-the-server]__1w7ym0rrtb0i-._.js +3 -0
- package/standalone/.next/server/chunks/[root-of-the-server]__1ymepgwm4cf20._.js +3 -0
- package/standalone/.next/server/chunks/[root-of-the-server]__20in07t-hzagn._.js +3 -0
- package/standalone/.next/server/chunks/_00m3rl49dioc5._.js +2 -2
- package/standalone/.next/server/chunks/_01xc_0zvoyeyx._.js +34 -6
- package/standalone/.next/server/chunks/_02hp9azf0wdup._.js +1 -1
- package/standalone/.next/server/chunks/_093bw72t0qhum._.js +1 -1
- package/standalone/.next/server/chunks/_0d-5v8n_htaud._.js +1 -1
- package/standalone/.next/server/chunks/_0d7kp9zewgzo1._.js +2 -2
- package/standalone/.next/server/chunks/_0dudkod891pw5._.js +3 -3
- package/standalone/.next/server/chunks/_0j7luifqpmd6_._.js +2 -2
- package/standalone/.next/server/chunks/_0locehugaxjku._.js +2 -2
- package/standalone/.next/server/chunks/_0w3t6yq0vzl4e._.js +1 -1
- package/standalone/.next/server/chunks/_0y5_6jpmf7x6s._.js +29 -1
- package/standalone/.next/server/chunks/_0zco7_ov6mcxo._.js +2 -2
- package/standalone/.next/server/chunks/_115xin0kz2fip._.js +3 -3
- package/standalone/.next/server/chunks/_12hy44_5ttvdf._.js +1 -1
- package/standalone/.next/server/chunks/_16ok4m6i7ixom._.js +1 -1
- package/standalone/.next/server/chunks/_19p9fduxrv2k5._.js +1 -1
- package/standalone/.next/server/chunks/_1_s18hw5f5luk._.js +1 -1
- package/standalone/.next/server/chunks/_1f-fkpn7r9h91._.js +3 -3
- package/standalone/.next/server/chunks/_1l_e477qf2_nl._.js +2 -2
- package/standalone/.next/server/chunks/_1m_66q0249ksj._.js +34 -6
- package/standalone/.next/server/chunks/_1tf-vrjf16ebm._.js +1 -1
- package/standalone/.next/server/chunks/_1uio0t8zcf1gc._.js +1 -1
- package/standalone/.next/server/chunks/_1wrauglm0po8g._.js +2 -2
- package/standalone/.next/server/chunks/_20mbq9d_-vcjz._.js +1 -1
- package/standalone/.next/server/chunks/src_services_0shipcub2yhy6._.js +1 -1
- package/standalone/.next/server/chunks/ssr/_0-efhkzh6ytuc._.js +4 -1
- package/standalone/.next/server/chunks/ssr/_01tmqlwi5urdh._.js +4 -1
- package/standalone/.next/server/chunks/ssr/_05hrnr_dqieci._.js +4 -1
- package/standalone/.next/server/chunks/ssr/_09frr_x9sj064._.js +5 -5
- package/standalone/.next/server/chunks/ssr/_0b_41u6xr2bpb._.js +4 -1
- package/standalone/.next/server/chunks/ssr/_0wpoapzcyfgyq._.js +5 -5
- package/standalone/.next/server/chunks/ssr/_0x-yk4-j0jzr_._.js +5 -5
- package/standalone/.next/server/chunks/ssr/_10ljfb0azxzug._.js +4 -1
- package/standalone/.next/server/chunks/ssr/_18-1310mrai6k._.js +1 -1
- package/standalone/.next/server/chunks/ssr/messages_de_json_[json]_cjs_1uig1ud36h5oz._.js +1 -1
- package/standalone/.next/server/chunks/ssr/messages_en_json_[json]_cjs_206072-e4clp3._.js +1 -1
- package/standalone/.next/server/chunks/ssr/messages_es_json_[json]_cjs_082yukd_h99n8._.js +1 -1
- package/standalone/.next/server/chunks/ssr/messages_fr_json_[json]_cjs_0j6-w0ix_w_ac._.js +1 -1
- package/standalone/.next/server/chunks/ssr/src_components_github_merge-pull-request-button_tsx_0ie9278wjani8._.js +4 -4
- package/standalone/.next/server/chunks/ssr/src_components_runs_run-detail-page_tsx_0eje87-gx_hru._.js +1 -1
- package/standalone/.next/server/chunks/ssr/src_components_telemetry_telemetry-page_tsx_0yzdpy67zpdxv._.js +12 -12
- package/standalone/.next/server/middleware-build-manifest.js +3 -3
- package/standalone/.next/server/pages/404.html +1 -1
- package/standalone/.next/server/pages/500.html +1 -1
- package/standalone/.next/server/preview-props.json +3 -3
- package/standalone/.next/server/server-reference-manifest.js +1 -1
- package/standalone/.next/server/server-reference-manifest.json +1 -1
- package/standalone/.next/static/chunks/0ntk3pefienee.js +74 -0
- package/standalone/.next/static/chunks/{3_jy_qgwcgmn3.js → 14kti20ptdk3_.js} +1 -1
- package/standalone/.next/static/chunks/19qk_mg79rhyl.css +1 -0
- package/standalone/.next/static/chunks/{3_zfruxk01zuz.js → 1e332a5q9nxel.js} +5 -2
- package/standalone/.next/static/chunks/28saicmp1_h9d.js +6 -0
- package/standalone/.next/static/chunks/{0-5ysfaxu6aan.js → 2d07_4-p-edmw.js} +8 -5
- package/standalone/.next/static/chunks/{32mx1gp4arbt_.js → 2efwkyl82sglw.js} +5 -5
- package/standalone/.next/static/chunks/{42k7pln5sl3oz.js → 2yh26beqzug_m.js} +4 -1
- package/standalone/.next/static/chunks/{2r8eetg_rh89t.js → 2za-zornp6w1i.js} +7 -4
- package/standalone/.next/static/chunks/{0uyjb26ic9ght.js → 3_q7pq1wb2d40.js} +8 -5
- package/standalone/.next/static/chunks/{0j0ja7mw0m3um.js → 3kdlr1xpqonpk.js} +4 -4
- package/standalone/packages/agent-contract/src/runs.test.ts +85 -1
- package/standalone/packages/agent-contract/src/runs.ts +71 -0
- package/standalone/.next/server/chunks/[root-of-the-server]__0yel_6ygv-b1q._.js +0 -3
- package/standalone/.next/server/chunks/[root-of-the-server]__11maut7kzgbir._.js +0 -3
- package/standalone/.next/server/chunks/[root-of-the-server]__13gc7j8v7vuh0._.js +0 -3
- package/standalone/.next/server/chunks/[root-of-the-server]__1a8-wn63eojbf._.js +0 -3
- package/standalone/.next/server/chunks/[root-of-the-server]__1ezzodrqye_k8._.js +0 -3
- package/standalone/.next/server/chunks/[root-of-the-server]__1iz-2u-1z1_wl._.js +0 -3
- package/standalone/.next/server/chunks/[root-of-the-server]__1j1n2lzndr33r._.js +0 -3
- package/standalone/.next/server/chunks/[root-of-the-server]__1muq_0k53s3ch._.js +0 -3
- package/standalone/.next/server/chunks/[root-of-the-server]__1p4d5mk5s-hn3._.js +0 -3
- package/standalone/.next/server/chunks/[root-of-the-server]__1qlb8l11-wp5b._.js +0 -3
- package/standalone/.next/server/chunks/[root-of-the-server]__1qpqa-yffw6l1._.js +0 -3
- package/standalone/.next/server/chunks/[root-of-the-server]__1r8sh0sbv66af._.js +0 -3
- package/standalone/.next/server/chunks/[root-of-the-server]__1rvzmcinwhc9f._.js +0 -3
- package/standalone/.next/static/chunks/0nab6cwtymfd9.js +0 -6
- package/standalone/.next/static/chunks/2sxkr-ertr4d-.js +0 -74
- package/standalone/.next/static/chunks/3x93y46q6oe51.css +0 -1
- /package/standalone/.next/static/{QCl5bKQ9cBiF-g9fxs6IK → _Jso-9p3y6xgFDkMzfmcW}/_buildManifest.js +0 -0
- /package/standalone/.next/static/{QCl5bKQ9cBiF-g9fxs6IK → _Jso-9p3y6xgFDkMzfmcW}/_clientMiddlewareManifest.js +0 -0
- /package/standalone/.next/static/{QCl5bKQ9cBiF-g9fxs6IK → _Jso-9p3y6xgFDkMzfmcW}/_ssgManifest.js +0 -0
|
@@ -7,6 +7,6 @@ ${o}`].join("\n\n").slice(0,2e6)),this.createInternal({...t,attachmentIds:i,kind
|
|
|
7
7
|
${e.prompt}`).join("\n\n"),o.run.events.filter(e=>null===o.eventSequence?e.createdAt<=o.createdAt:e.sequence<=o.eventSequence).map(e=>`[${e.type}] ${e.summary}${e.detailMarkdown?`
|
|
8
8
|
${e.detailMarkdown}`:""}`).join("\n\n"),`Questions:
|
|
9
9
|
${o.questions.map(e=>`- ${e.prompt}`).join("\n")}`,`Revised answer:
|
|
10
|
-
${JSON.stringify(t,null,2)}`].filter(Boolean).join("\n\n").slice(0,2e6),f=await C(i,"SESSION"),m=(0,n.randomUUID)(),I=(0,n.randomUUID)(),E=new Date,y=await i.agentRun.create({data:{id:m,kind:"SESSION",displayNumber:f,status:d?"IN_PROGRESS":"QUEUED",phase:d?"ANSWER_REVISION_QUEUED":"WAITING_FOR_WORKTREE",provider:o.run.provider,worktreeId:o.run.worktreeId,repositoryId:o.run.repositoryId,agentId:o.run.agentId,jiraIssueKey:o.run.jiraIssueKey,repositoryName:o.run.repositoryName,branch:o.run.branch,model:o.run.model,effort:o.run.effort,webSearchEnabled:o.run.webSearchEnabled,worktreeConcurrencyLimit:"SESSION"===o.run.kind?o.run.worktreeConcurrencyLimit:k("SESSION",void 0),initialPrompt:h,parentRunId:o.runId,parentRunNumber:o.run.displayNumber,followUpMode:"ANSWER_REVISION",inputs:{create:{id:I,sequence:0,kind:"ANSWER_REVISION",prompt:h}}}});d&&await i.worktreeRunLease.update({where:{runId:o.runId},data:{runId:m,purpose:"RUN",reservationKey:null,acquiredAt:new Date}}),await i.agentRun.update({where:{id:o.runId},data:{status:"CANCELLED",phase:"SUPERSEDED_BY_ANSWER_REVISION",finishedAt:E}});let g=await O(i,{runId:m,agentId:o.run.agentId,type:"REVISE_ANSWER",payload:{batchId:e,revisionId:u,inputId:I,stash:!!r,rollback:a,checkpoint:o.checkpoint}});return{batch:o,run:y,command:g,sourceRunId:o.runId,sourceAgentId:o.run.agentId,transfersSlot:d}});return D(s.sourceRunId),D(s.run.id),s.transfersSlot&&v(s.command,s.sourceAgentId),await this.promoteQueuedLaneSafely(s.run.worktreeId,"SESSION"),this.get(s.run.id)}async pendingCommands(e){return await this.reconcileQueuedRuns(e),(await (0,i.U)()).runCommand.findMany({where:{agentId:e,OR:[{status:"RUNNING"},{status:"QUEUED",run:{status:{not:"QUEUED"}}}]},orderBy:[{createdAt:"asc"},{sequence:"asc"}],take:200,include:b})}async claimCommand(e,t){let r=await (0,i.U)(),n=await r.runCommand.findUnique({where:{id:t},select:{agentId:!0,status:!0,type:!0,run:{select:{worktreeId:!0,status:!0}}}});if(!n||n.agentId!==e)throw Error("Run command not found");if("QUEUED"===n.status&&"QUEUED"===n.run.status&&new Set(["START","PLAY_PLAN","CONTINUE","REVISE_ANSWER"]).has(n.type))throw Error("Run command is waiting for the worktree");"QUEUED"===n.status&&n.run.worktreeId&&await this.diskSpace?.assertWorktreeCanStart(n.run.worktreeId),await r.runCommand.updateMany({where:{id:t,agentId:e,status:"QUEUED"},data:{status:"RUNNING",claimedAt:new Date}});let a=await r.runCommand.findUnique({where:{id:t},include:b});if(!a||a.agentId!==e)throw Error("Run command not found");if("RUNNING"!==a.status)throw Error("Run command cannot be claimed");return a}async completeCommand(e,t,r,n){let a=await (0,i.U)(),o=await a.runCommand.findUnique({where:{id:t},include:{run:{select:{worktreeId:!0,kind:!0}}}});if(!o||o.agentId!==e)throw Error("Run command not found");let s=await a.runCommand.update({where:{id:t},data:{status:"SUCCEEDED"===r?"SUCCEEDED":"FAILED",error:R(n,2e4),finishedAt:new Date}});if("DELETE_NATIVE"===s.type&&"SUCCEEDED"===s.status){let e=await a.agentRun.findUnique({where:{id:s.runId},include:{inputs:{include:{attachments:!0}}}});if(e){let t=e.inputs.flatMap(e=>e.attachments.map(({storagePath:e})=>e));await a.agentRun.delete({where:{id:e.id}}),await (0,h.l)(t)}}else if("FAILED"===s.status){"PREPARE_ANSWER_REVISION"===s.type&&await a.worktreeRunLease.deleteMany({where:{runId:s.runId,purpose:E}});let e="ANSWER"===s.type&&await a.runQuestionBatch.count({where:{runId:s.runId,status:"PENDING"}});await a.agentRun.updateMany({where:{id:s.runId,status:{notIn:[...I]}},data:{error:s.error,phase:e?"WAITING_FOR_ANSWER":`${s.type}_FAILED`,...["START","PLAY_PLAN","CONTINUE"].includes(s.type)?{status:"FAILED",finishedAt:new Date}:{},...["PREPARE_ANSWER_REVISION","REVISE_ANSWER"].includes(s.type)?{status:"PAUSED",finishedAt:null}:{}}}),["START","PLAY_PLAN","CONTINUE"].includes(s.type)&&await a.worktreeRunLease.deleteMany({where:{runId:s.runId}})}else if(["PAUSE","CANCEL"].includes(s.type)){let e="CANCEL"===s.type;await a.agentRun.updateMany({where:{id:s.runId,status:{notIn:[...I]}},data:{status:e?"CANCELLED":"PAUSED",phase:e?"CANCELLED":"PAUSED",finishedAt:e?new Date:null}}),e&&await a.worktreeRunLease.deleteMany({where:{runId:s.runId}})}return D(s.runId),o.run.worktreeId&&("PLAN"===o.run.kind||"SESSION"===o.run.kind)&&await this.promoteQueuedLaneSafely(o.run.worktreeId,o.run.kind),s}async beginAttempt(e,t,r){let a=await (0,i.U)(),o=await a.agentRun.findUnique({where:{id:t},include:{attempts:!0}});if(!o||o.agentId!==e)throw Error("Run not found for this agent");if("QUEUED"===o.status)throw Error("Run is waiting for the worktree");if(I.has(o.status))throw Error("Run is already finished");let s=o.attempts.length,d=await a.runAttempt.create({data:{id:(0,n.randomUUID)(),runId:t,generation:s,nativeId:r||null,nativeKey:r?`${e}:${o.provider}:${r}`:null,status:"RUNNING"}});return await a.agentRun.update({where:{id:t},data:{phase:"RUNNING",startedAt:o.startedAt??new Date}}),D(t),d}async updateAttemptNativeId(e,t,r,n){let a=await (0,i.U)(),o=await a.$transaction(async a=>{let i=await a.runAttempt.findUnique({where:{id:t},include:{run:!0}});if(!i||i.run.agentId!==e)throw Error("Attempt not found");let o=`${e}:${i.run.provider}:${r}`,s=await a.runAttempt.findUnique({where:{nativeKey:o}});if(s&&s.id!==t){if(s.runId!==i.runId)throw Error("Native provider session belongs to another run");await a.runAttempt.update({where:{id:s.id},data:{nativeKey:null}})}let d=await a.runAttempt.update({where:{id:t},data:{nativeId:r,nativeKey:o}});return n&&await a.agentRun.update({where:{id:i.runId},data:{providerVersion:n}}),d});return D(o.runId),o}async appendEvents(e,t,r,n){let a=await (0,i.U)(),s=await a.agentRun.findUnique({where:{id:t}});if(!s||s.agentId!==e)throw Error("Run not found for this agent");let d=n.slice(0,500).map(e=>{let n=A(e.summary,"Event summary",2e3);return{id:e.id,runId:t,attemptId:r,sequence:e.sequence,type:A(e.type,"Event type",100).toUpperCase(),summary:n,searchText:R(e.searchText,1e5)??n,detailMarkdown:R(e.detailMarkdown,5e5),rawJson:void 0===e.raw?null:JSON.stringify(e.raw),createdAt:N(e.createdAt)}});if(!d.length)return[];let u=await a.$transaction(async e=>{let n=new Set((await e.runEvent.findMany({where:{id:{in:d.map(e=>e.id)}},select:{id:!0}})).map(({id:e})=>e)),a=d.filter(e=>!n.has(e.id));if(a.length){await e.runEvent.createMany({data:a});let n=a.filter(e=>e.type.includes("TOOL")&&!e.type.includes("QUESTION")).map(e=>({id:`event:${e.id}`,runId:t,attemptId:r,sequence:e.sequence,name:e.summary.split(/[\s:(]/,1)[0]||e.type,status:e.type.includes("FAIL")||e.type.includes("ERROR")?"FAILED":e.type.includes("COMPLETE")||e.type.includes("RESULT")?"COMPLETED":"OBSERVED",inputJson:e.rawJson,error:e.type.includes("FAIL")||e.type.includes("ERROR")?e.summary:null,finishedAt:e.createdAt}));n.length&&(await e.runToolCall.createMany({data:n}),await e.agentRun.update({where:{id:t},data:{toolCallCount:await e.runToolCall.count({where:{runId:t}})}}))}return e.runEvent.findMany({where:{id:{in:d.map(e=>e.id)}},orderBy:{sequence:"asc"}})});for(let e of u)o._H.publish((0,o.zP)(t),{runEventAdded:e});return D(t),u}async reportQuestion(e,t,r,a,s,d){if(!d.length||d.some(e=>!e.field)&&d.length>10||d.length>200)throw Error("Question batch is invalid");let u=await (0,i.U)(),l=await u.$transaction(async i=>{let o=await i.agentRun.findUnique({where:{id:t},include:{worktree:!0}});if(!o||o.agentId!==e)throw Error("Run not found for this agent");if(a){let e=await i.runQuestionBatch.findUnique({where:{runId_nativeRequestId:{runId:t,nativeRequestId:a}},include:{questions:{orderBy:{position:"asc"},include:{options:{orderBy:{position:"asc"}}}}}});if(e)return{batch:e,notification:null}}let u=(0,n.randomUUID)(),l=await i.runQuestionBatch.create({data:{id:u,runId:t,attemptId:r,nativeRequestId:a,eventSequence:Number.isInteger(s)&&(s??-1)>=-1?s:null,questions:{create:d.map((e,t)=>({id:`${u}:${t}:${e.id||"question"}`,position:t,header:R(e.header,200),prompt:A(e.prompt,"Question",1e4),multiSelect:!!e.multiSelect,allowCustom:!1!==e.allowCustom,fieldJson:e.field?JSON.stringify(c(e.field)):null,options:{create:(e.options??[]).map((e,t)=>({id:(0,n.randomUUID)(),position:t,label:A(e.label,"Option label",500),description:R(e.description,2e3)}))}}))}},include:{questions:{include:{options:!0}}}});return await i.agentRun.update({where:{id:t},data:{phase:"WAITING_FOR_ANSWER"}}),{batch:l,notification:this.notifications?await this.notifications.recordInTransaction(i,{dedupeKey:`run:${t}:question:${u}`,typeKey:"RUN_NEEDS_ANSWER",title:`${"PLAN"===o.kind?"Plan":"Session"} #${o.displayNumber} needs an answer`,body:d[0].prompt.slice(0,1e3),href:U(o),resourceKind:o.kind,resourceId:o.id,worktreeId:o.worktreeId,highlightColor:o.worktree?.highlightColor}):null}});return this.notifications?.created(l.notification),D(t),o._H.publish((0,o.hn)(t),{runQuestionChanged:{id:l.batch.id,runId:t}}),l.batch}async reportUsage(e,t,r,a){let o=await (0,i.U)(),s=await o.agentRun.findUnique({where:{id:t}});if(!s||s.agentId!==e)throw Error("Run not found for this agent");let d=e=>Number.isFinite(e)&&(e??0)>=0?Math.floor(e):0;return await o.$transaction(async e=>{let i=await e.runModelUsage.findFirst({where:{runId:t,attemptId:r,model:a.model}}),o={inputTokens:d(a.inputTokens),outputTokens:d(a.outputTokens),reasoningTokens:d(a.reasoningTokens),cacheReadTokens:d(a.cacheReadTokens),cacheWriteTokens:d(a.cacheWriteTokens),estimatedCost:a.estimatedCost??null};i?await e.runModelUsage.update({where:{id:i.id},data:o}):await e.runModelUsage.create({data:{id:(0,n.randomUUID)(),runId:t,attemptId:r,model:a.model,...o}});let s=await e.runModelUsage.aggregate({where:{runId:t},_sum:{inputTokens:!0,outputTokens:!0,reasoningTokens:!0,cacheReadTokens:!0,cacheWriteTokens:!0,estimatedCost:!0}}),u=await e.runModelUsage.findMany({where:{runId:t,estimatedCost:{not:null}},select:{model:!0,estimatedCost:!0}}),l=u.find(({model:e})=>"estimated-total"===e)?.estimatedCost,c=await e.runToolCall.count({where:{runId:t}});await e.agentRun.update({where:{id:t},data:{inputTokens:s._sum.inputTokens??0,outputTokens:s._sum.outputTokens??0,reasoningTokens:s._sum.reasoningTokens??0,cacheReadTokens:s._sum.cacheReadTokens??0,cacheWriteTokens:s._sum.cacheWriteTokens??0,toolCallCount:Math.max(c,d(a.toolCallCount)),estimatedCost:l??(u.length?u.reduce((e,t)=>e+(t.estimatedCost??0),0):null),pricingSource:R(a.pricingSource,200),pricingUpdatedAt:new Date}})}),D(t),this.get(t)}async finishAttempt(e,t,r){let n=r.status.toUpperCase();if(!["PAUSED","COMPLETED","CANCELLED","FAILED"].includes(n))throw Error("Run completion status is invalid");let a=await (0,i.U)(),o=await a.$transaction(async a=>{let i=await a.runAttempt.findUnique({where:{id:t},include:{run:{include:{worktree:!0}}}});if(!i||i.run.agentId!==e)throw Error("Attempt not found");let o=I.has(i.run.status)?i.run.status:n;await a.runAttempt.update({where:{id:t},data:{status:o,finishedAt:new Date}}),await a.runQuestionBatch.updateMany({where:{runId:i.runId,status:"PENDING"},data:{status:"SUPERSEDED",supersededAt:new Date}});let s=I.has(i.run.status)?i.run:await a.agentRun.update({where:{id:i.runId},data:{status:n,phase:r.phase?.trim().toUpperCase()||n,finalOutput:R(r.finalOutput,2e6),error:R(r.error,2e4),finishedAt:"PAUSED"===n?null:new Date}});I.has(o)&&await a.worktreeRunLease.deleteMany({where:{runId:s.id,purpose:{not:E}}});let d="COMPLETED"===o?"RUN_COMPLETED":"FAILED"===o?"RUN_FAILED":"CANCELLED"===o?"RUN_CANCELLED":"RECOVERY_PAUSED"===r.phase?"RUN_RECOVERY_PAUSED":null,u=d&&this.notifications?await this.notifications.recordInTransaction(a,{dedupeKey:`run:${s.id}:status:${o}:${i.generation}`,typeKey:d,title:`${"PLAN"===s.kind?"Plan":"Session"} #${s.displayNumber} ${o.toLowerCase()}`,body:r.error||r.finalOutput?.slice(0,1e3)||`The ${s.kind.toLowerCase()} is ${o.toLowerCase()}.`,href:U(s),resourceKind:s.kind,resourceId:s.id,worktreeId:s.worktreeId,highlightColor:i.run.worktree?.highlightColor}):null;return{run:s,notification:u}});return this.notifications?.created(o.notification),D(o.run.id),I.has(o.run.status)&&o.run.worktreeId&&("PLAN"===o.run.kind||"SESSION"===o.run.kind)&&await this.promoteQueuedLaneSafely(o.run.worktreeId,o.run.kind),this.get(o.run.id)}async reportCheckpoint(e,t,r,a){let o=await (0,i.U)(),s=await o.agentRun.findUnique({where:{id:t}});if(!s||s.agentId!==e)throw Error("Run not found for this agent");if(a.questionBatchId){let e=await o.runQuestionBatch.findUnique({where:{id:a.questionBatchId}});if(!e||e.runId!==t)throw Error("Question batch not found")}let d=await o.runCheckpoint.create({data:{id:(0,n.randomUUID)(),runId:t,attemptId:r,questionBatchId:a.questionBatchId??null,kind:A(a.kind,"Checkpoint kind",100).toUpperCase(),headSha:R(a.headSha,100),branch:R(a.branch,500),upstreamSha:R(a.upstreamSha,100),indexTree:R(a.indexTree,100),worktreeTree:R(a.worktreeTree,100),refName:R(a.refName,1e3),manifestJson:R(a.manifestJson,2e6),diffSummary:R(a.diffSummary,5e5),diffPatch:R(a.diffPatch,2e6),stashRef:R(a.stashRef,1e3)}});return D(t),d}async reportAnswerRevisionPreview(e,t,r,n){let a=await (0,i.U)(),s=await a.runQuestionBatch.findUnique({where:{id:t},include:{run:!0}});if(!s?.runId||!s.run||s.run.agentId!==e||"MANAGED"!==s.run.origin)throw Error("Question batch not found for this agent");let d=await a.runQuestionBatch.update({where:{id:t},data:{revisionPreparedAt:new Date,rollbackPatch:r.slice(0,2e6),pushedCommitWarning:R(n,2e4)},include:{questions:{orderBy:{position:"asc"},include:{options:{orderBy:{position:"asc"}}}},answerRevisions:{orderBy:{revision:"asc"}}}});return D(s.runId),o._H.publish((0,o.hn)(s.runId),{runQuestionChanged:{id:t,runId:s.runId}}),d}async applyAnswerRevision(e,t,r,n){let a=await (0,i.U)(),o=await a.$transaction(async a=>{let i=await a.runQuestionBatch.findUnique({where:{id:t},include:{run:!0,attempt:!0}}),o=await a.runAttempt.findUnique({where:{id:n},include:{run:!0}}),s=await a.runAnswerRevision.findUnique({where:{id:r}});if(!i?.runId||!i.run||i.run.agentId!==e||!i.attempt||!o||o.run.parentRunId!==i.runId||"ANSWER_REVISION"!==o.run.followUpMode||!s||s.batchId!==t)throw Error("Answer revision cannot be applied");let d=new Date,u=(await a.runAttempt.findMany({where:{runId:i.runId,generation:{gte:i.attempt.generation}},select:{id:!0}})).map(({id:e})=>e);await a.runAttempt.updateMany({where:{id:{in:u}},data:{status:"SUPERSEDED",supersededAt:d,finishedAt:d}}),await a.runEvent.updateMany({where:{runId:i.runId,sequence:{gt:i.eventSequence??-1},supersededAt:null},data:{supersededAt:d}}),await a.runToolCall.updateMany({where:{attemptId:{in:u},supersededAt:null},data:{supersededAt:d}}),await a.runModelUsage.updateMany({where:{attemptId:{in:u}},data:{superseded:!0}});let l=(await a.runQuestionBatch.findMany({where:{runId:i.runId,createdAt:{gt:i.createdAt}},select:{id:!0}})).map(({id:e})=>e);return await a.runQuestionBatch.updateMany({where:{id:{in:l}},data:{status:"SUPERSEDED",supersededAt:d}}),await a.runAnswerRevision.updateMany({where:{OR:[{batchId:{in:l}},{batchId:t,id:{not:r}}],supersededAt:null},data:{supersededAt:d}}),await a.runAnswerRevision.update({where:{id:r},data:{replacementAttemptId:n}}),await a.agentRun.update({where:{id:i.runId},data:{status:"CANCELLED",phase:"SUPERSEDED_BY_ANSWER_REVISION",finishedAt:d}}),await a.agentRun.update({where:{id:o.runId},data:{status:"IN_PROGRESS",phase:"RUNNING"}}),{sourceRunId:i.runId,replacementRunId:o.runId}});return D(o.sourceRunId),D(o.replacementRunId),this.get(o.replacementRunId)}async importHistory(e,t,r){let a=await (0,i.U)();await a.$transaction(async a=>{if(r.events){let n=r.events.map((n,a)=>({id:`${t}:import:${n.id}`,runId:e,attemptId:t,sequence:a,type:A(n.type,"Event type",100).toUpperCase(),summary:A(n.summary,"Event summary",2e3),searchText:(n.searchText??JSON.stringify(n.raw??n.summary)).slice(0,1e5),detailMarkdown:n.detailMarkdown?.slice(0,5e5)??null,rawJson:void 0===n.raw?null:JSON.stringify(n.raw),createdAt:N(n.createdAt)??N(r.createdAt)??new Date}));await a.runToolCall.deleteMany({where:{runId:e,attemptId:t}}),await a.runEvent.deleteMany({where:{runId:e,attemptId:t}});for(let e=0;e<n.length;e+=500)await a.runEvent.createMany({data:n.slice(e,e+500)});let i=new Map;for(let e of n){let t=e.rawJson?JSON.parse(e.rawJson):{};if("user"===t.type&&Array.isArray(t.message?.content))for(let r of t.message.content)"tool_result"===r.type&&"string"==typeof r.tool_use_id&&i.set(r.tool_use_id,{content:r.content??t.tool_use_result??null,isError:!0===r.is_error,createdAt:e.createdAt})}let o=n.flatMap(r=>{let n=r.rawJson?JSON.parse(r.rawJson):{},a="assistant"===n.type&&Array.isArray(n.message?.content)?n.message.content.find(e=>"tool_use"===e.type):void 0;if(a){let n=i.get(String(a.id));return[{id:`event:${r.id}`,runId:e,attemptId:t,sequence:r.sequence,name:String(a.name??"Tool"),status:n?n.isError?"FAILED":"COMPLETED":"OBSERVED",inputJson:r.rawJson,outputJson:JSON.stringify(n?.content??null),error:n?.isError?"string"==typeof n.content?n.content:JSON.stringify(n.content):null,startedAt:r.createdAt,finishedAt:n?.createdAt??null}]}let o=n.params?.item,s=n.properties?.part,d=o&&["commandExecution","fileChange","mcpToolCall","dynamicToolCall","webSearch"].includes(o.type),u="message.part.updated"===n.type&&s?.type==="tool";if(!d&&!u)return[];let l=u?s.state??{}:o,c=String(l.status??"COMPLETED").toUpperCase(),w=u&&"number"==typeof l.time?.start?new Date(l.time.start):r.createdAt,p=u?"number"==typeof l.time?.end?new Date(l.time.end):null:["INPROGRESS","IN_PROGRESS","RUNNING","PENDING"].includes(c)?null:r.createdAt;return[{id:`event:${r.id}`,runId:e,attemptId:t,sequence:r.sequence,name:u?s.tool??s.name??"tool":o.tool??o.command??o.type,status:"ERROR"===c?"FAILED":"INPROGRESS"===c?"IN_PROGRESS":c,inputJson:r.rawJson,outputJson:JSON.stringify(u?l.result??l.output??null:o.result??o.aggregatedOutput??null),error:l.error?"string"==typeof l.error?l.error:JSON.stringify(l.error):null,startedAt:w,finishedAt:p}]});for(let e=0;e<o.length;e+=500)await a.runToolCall.createMany({data:o.slice(e,e+500)});await a.agentRun.update({where:{id:e},data:{toolCallCount:await a.runToolCall.count({where:{runId:e}})}})}if(r.usage){for(let i of(await a.runModelUsage.deleteMany({where:{runId:e,attemptId:t}}),r.usage)){let r=e=>Number.isFinite(e)&&(e??0)>=0?Math.floor(e):0;await a.runModelUsage.create({data:{id:(0,n.randomUUID)(),runId:e,attemptId:t,model:A(i.model,"Model",500),inputTokens:r(i.inputTokens),outputTokens:r(i.outputTokens),reasoningTokens:r(i.reasoningTokens),cacheReadTokens:r(i.cacheReadTokens),cacheWriteTokens:r(i.cacheWriteTokens),estimatedCost:i.estimatedCost??null}})}let i=await a.runModelUsage.aggregate({where:{runId:e},_sum:{inputTokens:!0,outputTokens:!0,reasoningTokens:!0,cacheReadTokens:!0,cacheWriteTokens:!0,estimatedCost:!0}});await a.agentRun.update({where:{id:e},data:{inputTokens:i._sum.inputTokens??0,outputTokens:i._sum.outputTokens??0,reasoningTokens:i._sum.reasoningTokens??0,cacheReadTokens:i._sum.cacheReadTokens??0,cacheWriteTokens:i._sum.cacheWriteTokens??0,estimatedCost:r.estimatedCost??(r.usage.length&&r.usage.every(e=>null!=e.estimatedCost)?i._sum.estimatedCost??null:null),pricingSource:R(r.pricingSource??[...new Set(r.usage.map(e=>e.pricingSource).filter(Boolean))].join(", "),200),pricingUpdatedAt:new Date}})}else void 0!==r.estimatedCost&&await a.agentRun.update({where:{id:e},data:{estimatedCost:r.estimatedCost,pricingSource:R(r.pricingSource,200),pricingUpdatedAt:new Date}})})}async importRuns(e,t,r){let a=g(m,t,"Provider"),o=await (0,i.U)(),s=0;for(let t of r){let r=t.prompt?.trim()||void 0,i=`${e}:${a}:${A(t.nativeId,"Native ID",500)}`,d=t.events||t.usage||void 0!==t.estimatedCost?(0,n.createHash)("sha256").update(JSON.stringify([t.events,t.usage,t.estimatedCost,t.pricingSource])).digest("hex"):void 0,u=t.rawMetadata&&"object"==typeof t.rawMetadata?t.rawMetadata:{},l=(0,n.createHash)("sha256").update(JSON.stringify({...t,events:d,usage:void 0})).digest("hex"),c=JSON.stringify({...u,...d?{importedHistoryDigest:d}:{},importedSnapshotDigest:l}),w=(()=>{let e=t.status?.toUpperCase()??"COMPLETED";return["ACTIVE","RUNNING","STARTING","IN_PROGRESS","WAITING_FOR_ANSWER"].includes(e)?"IN_PROGRESS":"PAUSED"===e?"PAUSED":"CANCELLED"===e||"CANCELED"===e?"CANCELLED":["FAILED","ERROR","SYSTEMERROR"].includes(e)?"FAILED":"COMPLETED"})(),p=await o.runAttempt.findUnique({where:{nativeKey:i},include:{run:!0}});if(p){if("IMPORTED"===p.run.origin){let e=JSON.parse(p.rawMetadataJson??"{}"),n=("SESSION"===p.run.kind&&"IN_PROGRESS"===w?await o.worktreeRunLease.findFirst({where:{worktreeId:p.run.worktreeId??"",run:{kind:"SESSION",origin:"MANAGED",status:{in:["IN_PROGRESS","PAUSED"]}}}}):null)?"IMPORTED_ACTIVE_COLLISION":"IMPORTED_SYNCED";if(e.importedSnapshotDigest===l&&p.run.phase===n)continue;let a=d&&e.importedHistoryDigest!==d;await o.$transaction([o.runAttempt.update({where:{id:p.id},data:{rawMetadataJson:a?JSON.stringify(u):c}}),o.agentRun.update({where:{id:p.runId},data:{status:w,phase:n,...r?{initialPrompt:r,inputs:{updateMany:{where:{kind:"INITIAL",sequence:0},data:{prompt:r}}}}:{},model:t.model||p.run.model,effort:void 0===t.effort?p.run.effort:R(t.effort,100),finalOutput:void 0===t.finalOutput?p.run.finalOutput:R(t.finalOutput,2e6),branch:t.branch??p.run.branch,jiraIssueKey:S(t.jiraIssueKey),nativeArchivedAt:t.archived?p.run.nativeArchivedAt??new Date:null,startedAt:N(t.createdAt)??p.run.startedAt,finishedAt:"IN_PROGRESS"===w?null:N(t.updatedAt)??p.run.finishedAt}})]),a&&(await this.importHistory(p.runId,p.id,t),await o.runAttempt.update({where:{id:p.id},data:{rawMetadataJson:c}})),D(p.runId)}continue}let h=await o.worktree.findUnique({where:{id:t.worktreeId},include:{codebase:{include:{repository:!0}}}});if(!h||h.codebase.agentId!==e)continue;let f=t.kind?.toUpperCase()==="PLAN"?"PLAN":"SESSION",m="SESSION"===f&&"IN_PROGRESS"===w?await o.worktreeRunLease.findFirst({where:{worktreeId:h.id,run:{kind:"SESSION",origin:"MANAGED",status:{in:["IN_PROGRESS","PAUSED"]}}}}):null,I=await o.$transaction(e=>C(e,f)),E=(0,n.randomUUID)(),y=(0,n.randomUUID)();await o.agentRun.create({data:{id:E,kind:f,displayNumber:I,status:w,phase:m?"IMPORTED_ACTIVE_COLLISION":"IMPORTED_SYNCED",origin:"IMPORTED",provider:a,worktreeId:h.id,repositoryId:h.codebase.repository.id,agentId:e,jiraIssueKey:S(t.jiraIssueKey),repositoryName:h.codebase.repository.name,branch:t.branch??h.branch,model:t.model||"unknown",effort:R(t.effort,100),worktreeConcurrencyLimit:k(f,void 0),initialPrompt:r??"Imported provider history",finalOutput:R(t.finalOutput,2e6),archivedAt:t.archived?new Date:null,nativeArchivedAt:t.archived?new Date:null,startedAt:N(t.createdAt),finishedAt:N(t.updatedAt),createdAt:N(t.createdAt),attempts:{create:{id:y,generation:0,nativeId:t.nativeId,nativeKey:i,status:"IMPORTED",rawMetadataJson:d?JSON.stringify(u):c}},inputs:{create:{id:(0,n.randomUUID)(),sequence:0,kind:"INITIAL",prompt:r??"Imported provider history"}}}}),d&&(await this.importHistory(E,y,t),await o.runAttempt.update({where:{id:y},data:{rawMetadataJson:c}})),D(E),s+=1}return await o.runProviderSync.upsert({where:{agentId_provider:{agentId:e,provider:a}},create:{id:(0,n.randomUUID)(),agentId:e,provider:a,status:"IDLE",lastCompletedAt:new Date,importedCount:s},update:{status:"IDLE",lastCompletedAt:new Date,lastError:null,importedCount:{increment:s}}}),s}async providerCatalog(e={}){let t=await (0,i.U)(),r=!!(e.runId||e.worktreeId),n=e.worktreeId??(e.runId?(await t.agentRun.findUnique({where:{id:e.runId},select:{worktreeId:!0}}))?.worktreeId:null),a=e.runId?(await t.agentRun.findUnique({where:{id:e.runId},select:{agentId:!0}}))?.agentId:e.worktreeId?(await t.worktree.findUnique({where:{id:e.worktreeId},select:{codebase:{select:{agentId:!0}}}}))?.codebase.agentId:null,[o,d]=r&&!a?[[],[]]:await Promise.all([t.agent.findMany({where:a?{id:a}:void 0,select:{id:!0,capabilitiesJson:!0,lastSeenAt:!0,disconnectedAt:!0,heartbeatIntervalSeconds:!0}}),t.runProviderSync.findMany({where:a?{agentId:a}:void 0,orderBy:{updatedAt:"desc"}})]);return m.map(e=>{let t=`runs.provider.${e.toLowerCase()}`,r=o.some(r=>{let n=d.find(t=>t.agentId===r.id&&t.provider===e);return!r.disconnectedAt&&!!r.lastSeenAt&&Date.now()-r.lastSeenAt.getTime()<=(0,s.z)(r)&&JSON.parse(r.capabilitiesJson).includes(t)&&n?.status!=="FAILED"}),a=d.find(({provider:t})=>t===e)?.catalogJson,i=a?JSON.parse(a):null,u=n&&i?.worktrees?i.worktrees[n]?.models??[]:i?.models;return{key:e,label:"OPENCODE"===e?"OpenCode":"CLAUDE"===e?"Claude":"Codex",available:r,models:u?.length?u:[{id:"default",label:"Provider default",efforts:["auto","low","medium","high"]}],supportsWebSearch:i?.capabilities?.webSearch??!0,supportsQuestions:i?.capabilities?.questions??!0,supportsImport:i?.capabilities?.import??!0,supportsPause:i?.capabilities?.pause??!0,supportsSteering:i?.capabilities?.steering??!0,supportsResume:i?.capabilities?.resume??!0,supportsNativeDelete:i?.capabilities?.nativeDelete??!0}})}async providerImportStatus(){return(await (0,i.U)()).runProviderSync.findMany({orderBy:[{agentId:"asc"},{provider:"asc"}]})}async reportProviderImportStatus(e,t,r,a,o){let s=g(m,t,"Provider"),d=r.trim().toUpperCase();if(!["SYNCING","IDLE","FAILED"].includes(d))throw Error("Import status is invalid");return(await (0,i.U)()).runProviderSync.upsert({where:{agentId_provider:{agentId:e,provider:s}},create:{id:(0,n.randomUUID)(),agentId:e,provider:s,status:d,lastStartedAt:"SYNCING"===d?new Date:void 0,lastCompletedAt:"IDLE"===d?new Date:void 0,lastError:R(a,2e4),catalogJson:void 0===o?void 0:JSON.stringify(o)},update:{status:d,lastStartedAt:"SYNCING"===d?new Date:void 0,lastCompletedAt:"IDLE"===d?new Date:void 0,lastError:"FAILED"===d?R(a,2e4):null,catalogJson:void 0===o?void 0:JSON.stringify(o)}})}subscribeRunList(e){let n=o._H.iterate(o.hu);return(0,r.G)(n,async r=>{if("drafts"===r.runChanged.id)return!1;if(!e.kind&&!e.appId&&!e.provider&&!e.origin&&!e.worktreeId&&!e.workflowId)return!0;let n=await (0,i.U)(),a=await n.agentRun.findUnique({where:{id:r.runChanged.id},select:{worktreeId:!0,workflowRun:{select:{workflowId:!0}},kind:!0,provider:!0,origin:!0,repositoryId:!0}});return!a||(!e.workflowId||a.workflowRun?.workflowId===e.workflowId||!!await (0,t.f)(e.workflowId,a.worktreeId))&&(!e.worktreeId||a.worktreeId===e.worktreeId)&&(!e.kind||a.kind===e.kind)&&(!e.provider||a.provider===e.provider.trim().toUpperCase())&&(!e.origin||a.origin===e.origin)&&(!e.appId||!!a.repositoryId&&!!await n.appRepository.findFirst({where:{appId:e.appId,repositoryId:a.repositoryId},select:{appId:!0}}))})}subscribeRuns(){return o._H.iterate(o.hu)}subscribeRun(e){return o._H.iterate((0,o.k_)(e))}subscribeEvents(e){return o._H.iterate((0,o.zP)(e))}subscribeQuestions(e){return o._H.iterate((0,o.hn)(e))}async requireWorktree(e,t){let r=await (0,i.U)(),n=await r.worktree.findUnique({where:{id:A(e,"Worktree",500)},include:{codebase:{include:{repository:!0,agent:!0}}}});if(!n||"AVAILABLE"!==n.availability)throw Error("Worktree is unavailable");if(t){let e=n.codebase.agent,a=JSON.parse(e.capabilitiesJson);if(e.disconnectedAt||!e.lastSeenAt||Date.now()-e.lastSeenAt.getTime()>(0,s.z)(e)||!a.includes(`runs.provider.${t.toLowerCase()}`))throw Error(`${t} is unavailable on this worktree's agent`);let i=await r.runProviderSync.findUnique({where:{agentId_provider:{agentId:n.codebase.agentId,provider:t}}});if(i?.status==="FAILED")throw Error(`${t} is unavailable: ${i.lastError??"provider capability check failed"}`)}return n}async requireAttachments(e,t){if(!e.length)return;if(e.length>100)throw Error("Too many attachments");let r=await (0,i.U)(),n=await r.runAttachment.findMany({where:{id:{in:e},inputId:null,...t?{OR:[{draftId:t},{draftId:null}]}:{draftId:null}}});if(n.length!==e.length)throw Error("One or more attachments are unavailable");if(n.reduce((e,t)=>e+t.size,0)>h.r)throw Error("Attachments exceed the 100 MB input limit")}}],594875)},489947,e=>{var t=e.i(243783);async function r(e,r){if(!r)return!1;let n=await (0,t.U)();return!!await n.workflowRun.findFirst({where:{workflowId:e,OR:[{status:"QUEUED",worktreeId:r},{agentRuns:{some:{status:"QUEUED",origin:"MANAGED",worktreeId:r}}}]},select:{id:!0}})}e.s(["f",0,r])}]})();
|
|
10
|
+
${JSON.stringify(t,null,2)}`].filter(Boolean).join("\n\n").slice(0,2e6),f=await C(i,"SESSION"),m=(0,n.randomUUID)(),I=(0,n.randomUUID)(),E=new Date,y=await i.agentRun.create({data:{id:m,kind:"SESSION",displayNumber:f,status:d?"IN_PROGRESS":"QUEUED",phase:d?"ANSWER_REVISION_QUEUED":"WAITING_FOR_WORKTREE",provider:o.run.provider,worktreeId:o.run.worktreeId,repositoryId:o.run.repositoryId,agentId:o.run.agentId,jiraIssueKey:o.run.jiraIssueKey,repositoryName:o.run.repositoryName,branch:o.run.branch,model:o.run.model,effort:o.run.effort,webSearchEnabled:o.run.webSearchEnabled,worktreeConcurrencyLimit:"SESSION"===o.run.kind?o.run.worktreeConcurrencyLimit:k("SESSION",void 0),initialPrompt:h,parentRunId:o.runId,parentRunNumber:o.run.displayNumber,followUpMode:"ANSWER_REVISION",inputs:{create:{id:I,sequence:0,kind:"ANSWER_REVISION",prompt:h}}}});d&&await i.worktreeRunLease.update({where:{runId:o.runId},data:{runId:m,purpose:"RUN",reservationKey:null,acquiredAt:new Date}}),await i.agentRun.update({where:{id:o.runId},data:{status:"CANCELLED",phase:"SUPERSEDED_BY_ANSWER_REVISION",finishedAt:E}});let g=await O(i,{runId:m,agentId:o.run.agentId,type:"REVISE_ANSWER",payload:{batchId:e,revisionId:u,inputId:I,stash:!!r,rollback:a,checkpoint:o.checkpoint}});return{batch:o,run:y,command:g,sourceRunId:o.runId,sourceAgentId:o.run.agentId,transfersSlot:d}});return D(s.sourceRunId),D(s.run.id),s.transfersSlot&&v(s.command,s.sourceAgentId),await this.promoteQueuedLaneSafely(s.run.worktreeId,"SESSION"),this.get(s.run.id)}async pendingCommands(e){return await this.reconcileQueuedRuns(e),(await (0,i.U)()).runCommand.findMany({where:{agentId:e,OR:[{status:"RUNNING"},{status:"QUEUED",run:{status:{not:"QUEUED"}}}]},orderBy:[{createdAt:"asc"},{sequence:"asc"}],take:200,include:b})}async claimCommand(e,t){let r=await (0,i.U)(),n=await r.runCommand.findUnique({where:{id:t},select:{agentId:!0,status:!0,type:!0,run:{select:{worktreeId:!0,status:!0}}}});if(!n||n.agentId!==e)throw Error("Run command not found");if("QUEUED"===n.status&&"QUEUED"===n.run.status&&new Set(["START","PLAY_PLAN","CONTINUE","REVISE_ANSWER"]).has(n.type))throw Error("Run command is waiting for the worktree");"QUEUED"===n.status&&n.run.worktreeId&&await this.diskSpace?.assertWorktreeCanStart(n.run.worktreeId),await r.runCommand.updateMany({where:{id:t,agentId:e,status:"QUEUED"},data:{status:"RUNNING",claimedAt:new Date}});let a=await r.runCommand.findUnique({where:{id:t},include:b});if(!a||a.agentId!==e)throw Error("Run command not found");if("RUNNING"!==a.status)throw Error("Run command cannot be claimed");return a}async completeCommand(e,t,r,n){let a=await (0,i.U)(),o=await a.runCommand.findUnique({where:{id:t},include:{run:{select:{worktreeId:!0,kind:!0}}}});if(!o||o.agentId!==e)throw Error("Run command not found");let s=await a.runCommand.update({where:{id:t},data:{status:"SUCCEEDED"===r?"SUCCEEDED":"FAILED",error:R(n,2e4),finishedAt:new Date}});if("DELETE_NATIVE"===s.type&&"SUCCEEDED"===s.status){let e=await a.agentRun.findUnique({where:{id:s.runId},include:{inputs:{include:{attachments:!0}}}});if(e){let t=e.inputs.flatMap(e=>e.attachments.map(({storagePath:e})=>e));await a.agentRun.delete({where:{id:e.id}}),await (0,h.l)(t)}}else if("FAILED"===s.status){"PREPARE_ANSWER_REVISION"===s.type&&await a.worktreeRunLease.deleteMany({where:{runId:s.runId,purpose:E}});let e="ANSWER"===s.type&&await a.runQuestionBatch.count({where:{runId:s.runId,status:"PENDING"}});await a.agentRun.updateMany({where:{id:s.runId,status:{notIn:[...I]}},data:{error:s.error,phase:e?"WAITING_FOR_ANSWER":`${s.type}_FAILED`,...["START","PLAY_PLAN","CONTINUE"].includes(s.type)?{status:"FAILED",finishedAt:new Date}:{},...["PREPARE_ANSWER_REVISION","REVISE_ANSWER"].includes(s.type)?{status:"PAUSED",finishedAt:null}:{}}}),["START","PLAY_PLAN","CONTINUE"].includes(s.type)&&await a.worktreeRunLease.deleteMany({where:{runId:s.runId}})}else if(["PAUSE","CANCEL"].includes(s.type)){let e="CANCEL"===s.type;await a.agentRun.updateMany({where:{id:s.runId,status:{notIn:[...I]}},data:{status:e?"CANCELLED":"PAUSED",phase:e?"CANCELLED":"PAUSED",finishedAt:e?new Date:null}}),e&&await a.worktreeRunLease.deleteMany({where:{runId:s.runId}})}return D(s.runId),o.run.worktreeId&&("PLAN"===o.run.kind||"SESSION"===o.run.kind)&&await this.promoteQueuedLaneSafely(o.run.worktreeId,o.run.kind),s}async beginAttempt(e,t,r){let a=await (0,i.U)(),o=await a.agentRun.findUnique({where:{id:t},include:{attempts:!0}});if(!o||o.agentId!==e)throw Error("Run not found for this agent");if("QUEUED"===o.status)throw Error("Run is waiting for the worktree");if(I.has(o.status))throw Error("Run is already finished");let s=o.attempts.length,d=await a.runAttempt.create({data:{id:(0,n.randomUUID)(),runId:t,generation:s,nativeId:r||null,nativeKey:r?`${e}:${o.provider}:${r}`:null,status:"RUNNING"}});return await a.agentRun.update({where:{id:t},data:{phase:"RUNNING",startedAt:o.startedAt??new Date}}),D(t),d}async updateAttemptNativeId(e,t,r,n,a){let o=await (0,i.U)(),s=await o.$transaction(async i=>{let o=await i.runAttempt.findUnique({where:{id:t},include:{run:!0}});if(!o||o.run.agentId!==e)throw Error("Attempt not found");let s=`${e}:${o.run.provider}:${r}`,u=await i.runAttempt.findUnique({where:{nativeKey:s}});if(u&&u.id!==t){if(u.runId!==o.runId)throw Error("Native provider session belongs to another run");await i.runAttempt.update({where:{id:u.id},data:{nativeKey:null}})}let l=await i.runAttempt.update({where:{id:t},data:{nativeId:r,nativeKey:s,...a?{rawMetadataJson:JSON.stringify((0,d.B)(o.rawMetadataJson,a))}:{}}});return n&&await i.agentRun.update({where:{id:o.runId},data:{providerVersion:n}}),l});return D(s.runId),s}async appendEvents(e,t,r,n){let a=await (0,i.U)(),s=await a.agentRun.findUnique({where:{id:t}});if(!s||s.agentId!==e)throw Error("Run not found for this agent");let d=n.slice(0,500).map(e=>{let n=A(e.summary,"Event summary",2e3);return{id:e.id,runId:t,attemptId:r,sequence:e.sequence,type:A(e.type,"Event type",100).toUpperCase(),summary:n,searchText:R(e.searchText,1e5)??n,detailMarkdown:R(e.detailMarkdown,5e5),rawJson:void 0===e.raw?null:JSON.stringify(e.raw),createdAt:N(e.createdAt)}});if(!d.length)return[];let u=await a.$transaction(async e=>{let n=new Set((await e.runEvent.findMany({where:{id:{in:d.map(e=>e.id)}},select:{id:!0}})).map(({id:e})=>e)),a=d.filter(e=>!n.has(e.id));if(a.length){await e.runEvent.createMany({data:a});let n=a.filter(e=>e.type.includes("TOOL")&&!e.type.includes("QUESTION")).map(e=>({id:`event:${e.id}`,runId:t,attemptId:r,sequence:e.sequence,name:e.summary.split(/[\s:(]/,1)[0]||e.type,status:e.type.includes("FAIL")||e.type.includes("ERROR")?"FAILED":e.type.includes("COMPLETE")||e.type.includes("RESULT")?"COMPLETED":"OBSERVED",inputJson:e.rawJson,error:e.type.includes("FAIL")||e.type.includes("ERROR")?e.summary:null,finishedAt:e.createdAt}));n.length&&(await e.runToolCall.createMany({data:n}),await e.agentRun.update({where:{id:t},data:{toolCallCount:await e.runToolCall.count({where:{runId:t}})}}))}return e.runEvent.findMany({where:{id:{in:d.map(e=>e.id)}},orderBy:{sequence:"asc"}})});for(let e of u)o._H.publish((0,o.zP)(t),{runEventAdded:e});return D(t),u}async reportQuestion(e,t,r,a,s,d){if(!d.length||d.some(e=>!e.field)&&d.length>10||d.length>200)throw Error("Question batch is invalid");let u=await (0,i.U)(),l=await u.$transaction(async i=>{let o=await i.agentRun.findUnique({where:{id:t},include:{worktree:!0}});if(!o||o.agentId!==e)throw Error("Run not found for this agent");if(a){let e=await i.runQuestionBatch.findUnique({where:{runId_nativeRequestId:{runId:t,nativeRequestId:a}},include:{questions:{orderBy:{position:"asc"},include:{options:{orderBy:{position:"asc"}}}}}});if(e)return{batch:e,notification:null}}let u=(0,n.randomUUID)(),l=await i.runQuestionBatch.create({data:{id:u,runId:t,attemptId:r,nativeRequestId:a,eventSequence:Number.isInteger(s)&&(s??-1)>=-1?s:null,questions:{create:d.map((e,t)=>({id:`${u}:${t}:${e.id||"question"}`,position:t,header:R(e.header,200),prompt:A(e.prompt,"Question",1e4),multiSelect:!!e.multiSelect,allowCustom:!1!==e.allowCustom,fieldJson:e.field?JSON.stringify(c(e.field)):null,options:{create:(e.options??[]).map((e,t)=>({id:(0,n.randomUUID)(),position:t,label:A(e.label,"Option label",500),description:R(e.description,2e3)}))}}))}},include:{questions:{include:{options:!0}}}});return await i.agentRun.update({where:{id:t},data:{phase:"WAITING_FOR_ANSWER"}}),{batch:l,notification:this.notifications?await this.notifications.recordInTransaction(i,{dedupeKey:`run:${t}:question:${u}`,typeKey:"RUN_NEEDS_ANSWER",title:`${"PLAN"===o.kind?"Plan":"Session"} #${o.displayNumber} needs an answer`,body:d[0].prompt.slice(0,1e3),href:U(o),resourceKind:o.kind,resourceId:o.id,worktreeId:o.worktreeId,highlightColor:o.worktree?.highlightColor}):null}});return this.notifications?.created(l.notification),D(t),o._H.publish((0,o.hn)(t),{runQuestionChanged:{id:l.batch.id,runId:t}}),l.batch}async reportUsage(e,t,r,a){let o=await (0,i.U)(),s=await o.agentRun.findUnique({where:{id:t}});if(!s||s.agentId!==e)throw Error("Run not found for this agent");let d=e=>Number.isFinite(e)&&(e??0)>=0?Math.floor(e):0;return await o.$transaction(async e=>{let i=await e.runModelUsage.findFirst({where:{runId:t,attemptId:r,model:a.model}}),o={inputTokens:d(a.inputTokens),outputTokens:d(a.outputTokens),reasoningTokens:d(a.reasoningTokens),cacheReadTokens:d(a.cacheReadTokens),cacheWriteTokens:d(a.cacheWriteTokens),estimatedCost:a.estimatedCost??null};i?await e.runModelUsage.update({where:{id:i.id},data:o}):await e.runModelUsage.create({data:{id:(0,n.randomUUID)(),runId:t,attemptId:r,model:a.model,...o}});let s=await e.runModelUsage.aggregate({where:{runId:t},_sum:{inputTokens:!0,outputTokens:!0,reasoningTokens:!0,cacheReadTokens:!0,cacheWriteTokens:!0,estimatedCost:!0}}),u=await e.runModelUsage.findMany({where:{runId:t,estimatedCost:{not:null}},select:{model:!0,estimatedCost:!0}}),l=u.find(({model:e})=>"estimated-total"===e)?.estimatedCost,c=await e.runToolCall.count({where:{runId:t}});await e.agentRun.update({where:{id:t},data:{inputTokens:s._sum.inputTokens??0,outputTokens:s._sum.outputTokens??0,reasoningTokens:s._sum.reasoningTokens??0,cacheReadTokens:s._sum.cacheReadTokens??0,cacheWriteTokens:s._sum.cacheWriteTokens??0,toolCallCount:Math.max(c,d(a.toolCallCount)),estimatedCost:l??(u.length?u.reduce((e,t)=>e+(t.estimatedCost??0),0):null),pricingSource:R(a.pricingSource,200),pricingUpdatedAt:new Date}})}),D(t),this.get(t)}async finishAttempt(e,t,r){let n=r.status.toUpperCase();if(!["PAUSED","COMPLETED","CANCELLED","FAILED"].includes(n))throw Error("Run completion status is invalid");let a=await (0,i.U)(),o=await a.$transaction(async a=>{let i=await a.runAttempt.findUnique({where:{id:t},include:{run:{include:{worktree:!0}}}});if(!i||i.run.agentId!==e)throw Error("Attempt not found");let o=I.has(i.run.status)?i.run.status:n;await a.runAttempt.update({where:{id:t},data:{status:o,finishedAt:new Date}}),await a.runQuestionBatch.updateMany({where:{runId:i.runId,status:"PENDING"},data:{status:"SUPERSEDED",supersededAt:new Date}});let s=I.has(i.run.status)?i.run:await a.agentRun.update({where:{id:i.runId},data:{status:n,phase:r.phase?.trim().toUpperCase()||n,finalOutput:R(r.finalOutput,2e6),error:R(r.error,2e4),finishedAt:"PAUSED"===n?null:new Date}});I.has(o)&&await a.worktreeRunLease.deleteMany({where:{runId:s.id,purpose:{not:E}}});let d="COMPLETED"===o?"RUN_COMPLETED":"FAILED"===o?"RUN_FAILED":"CANCELLED"===o?"RUN_CANCELLED":"RECOVERY_PAUSED"===r.phase?"RUN_RECOVERY_PAUSED":null,u=d&&this.notifications?await this.notifications.recordInTransaction(a,{dedupeKey:`run:${s.id}:status:${o}:${i.generation}`,typeKey:d,title:`${"PLAN"===s.kind?"Plan":"Session"} #${s.displayNumber} ${o.toLowerCase()}`,body:r.error||r.finalOutput?.slice(0,1e3)||`The ${s.kind.toLowerCase()} is ${o.toLowerCase()}.`,href:U(s),resourceKind:s.kind,resourceId:s.id,worktreeId:s.worktreeId,highlightColor:i.run.worktree?.highlightColor}):null;return{run:s,notification:u}});return this.notifications?.created(o.notification),D(o.run.id),I.has(o.run.status)&&o.run.worktreeId&&("PLAN"===o.run.kind||"SESSION"===o.run.kind)&&await this.promoteQueuedLaneSafely(o.run.worktreeId,o.run.kind),this.get(o.run.id)}async reportCheckpoint(e,t,r,a){let o=await (0,i.U)(),s=await o.agentRun.findUnique({where:{id:t}});if(!s||s.agentId!==e)throw Error("Run not found for this agent");if(a.questionBatchId){let e=await o.runQuestionBatch.findUnique({where:{id:a.questionBatchId}});if(!e||e.runId!==t)throw Error("Question batch not found")}let d=await o.runCheckpoint.create({data:{id:(0,n.randomUUID)(),runId:t,attemptId:r,questionBatchId:a.questionBatchId??null,kind:A(a.kind,"Checkpoint kind",100).toUpperCase(),headSha:R(a.headSha,100),branch:R(a.branch,500),upstreamSha:R(a.upstreamSha,100),indexTree:R(a.indexTree,100),worktreeTree:R(a.worktreeTree,100),refName:R(a.refName,1e3),manifestJson:R(a.manifestJson,2e6),diffSummary:R(a.diffSummary,5e5),diffPatch:R(a.diffPatch,2e6),stashRef:R(a.stashRef,1e3)}});return D(t),d}async reportAnswerRevisionPreview(e,t,r,n){let a=await (0,i.U)(),s=await a.runQuestionBatch.findUnique({where:{id:t},include:{run:!0}});if(!s?.runId||!s.run||s.run.agentId!==e||"MANAGED"!==s.run.origin)throw Error("Question batch not found for this agent");let d=await a.runQuestionBatch.update({where:{id:t},data:{revisionPreparedAt:new Date,rollbackPatch:r.slice(0,2e6),pushedCommitWarning:R(n,2e4)},include:{questions:{orderBy:{position:"asc"},include:{options:{orderBy:{position:"asc"}}}},answerRevisions:{orderBy:{revision:"asc"}}}});return D(s.runId),o._H.publish((0,o.hn)(s.runId),{runQuestionChanged:{id:t,runId:s.runId}}),d}async applyAnswerRevision(e,t,r,n){let a=await (0,i.U)(),o=await a.$transaction(async a=>{let i=await a.runQuestionBatch.findUnique({where:{id:t},include:{run:!0,attempt:!0}}),o=await a.runAttempt.findUnique({where:{id:n},include:{run:!0}}),s=await a.runAnswerRevision.findUnique({where:{id:r}});if(!i?.runId||!i.run||i.run.agentId!==e||!i.attempt||!o||o.run.parentRunId!==i.runId||"ANSWER_REVISION"!==o.run.followUpMode||!s||s.batchId!==t)throw Error("Answer revision cannot be applied");let d=new Date,u=(await a.runAttempt.findMany({where:{runId:i.runId,generation:{gte:i.attempt.generation}},select:{id:!0}})).map(({id:e})=>e);await a.runAttempt.updateMany({where:{id:{in:u}},data:{status:"SUPERSEDED",supersededAt:d,finishedAt:d}}),await a.runEvent.updateMany({where:{runId:i.runId,sequence:{gt:i.eventSequence??-1},supersededAt:null},data:{supersededAt:d}}),await a.runToolCall.updateMany({where:{attemptId:{in:u},supersededAt:null},data:{supersededAt:d}}),await a.runModelUsage.updateMany({where:{attemptId:{in:u}},data:{superseded:!0}});let l=(await a.runQuestionBatch.findMany({where:{runId:i.runId,createdAt:{gt:i.createdAt}},select:{id:!0}})).map(({id:e})=>e);return await a.runQuestionBatch.updateMany({where:{id:{in:l}},data:{status:"SUPERSEDED",supersededAt:d}}),await a.runAnswerRevision.updateMany({where:{OR:[{batchId:{in:l}},{batchId:t,id:{not:r}}],supersededAt:null},data:{supersededAt:d}}),await a.runAnswerRevision.update({where:{id:r},data:{replacementAttemptId:n}}),await a.agentRun.update({where:{id:i.runId},data:{status:"CANCELLED",phase:"SUPERSEDED_BY_ANSWER_REVISION",finishedAt:d}}),await a.agentRun.update({where:{id:o.runId},data:{status:"IN_PROGRESS",phase:"RUNNING"}}),{sourceRunId:i.runId,replacementRunId:o.runId}});return D(o.sourceRunId),D(o.replacementRunId),this.get(o.replacementRunId)}async importHistory(e,t,r){let a=await (0,i.U)();await a.$transaction(async a=>{if(r.events){let n=r.events.map((n,a)=>({id:`${t}:import:${n.id}`,runId:e,attemptId:t,sequence:a,type:A(n.type,"Event type",100).toUpperCase(),summary:A(n.summary,"Event summary",2e3),searchText:(n.searchText??JSON.stringify(n.raw??n.summary)).slice(0,1e5),detailMarkdown:n.detailMarkdown?.slice(0,5e5)??null,rawJson:void 0===n.raw?null:JSON.stringify(n.raw),createdAt:N(n.createdAt)??N(r.createdAt)??new Date}));await a.runToolCall.deleteMany({where:{runId:e,attemptId:t}}),await a.runEvent.deleteMany({where:{runId:e,attemptId:t}});for(let e=0;e<n.length;e+=500)await a.runEvent.createMany({data:n.slice(e,e+500)});let i=new Map;for(let e of n){let t=e.rawJson?JSON.parse(e.rawJson):{};if("user"===t.type&&Array.isArray(t.message?.content))for(let r of t.message.content)"tool_result"===r.type&&"string"==typeof r.tool_use_id&&i.set(r.tool_use_id,{content:r.content??t.tool_use_result??null,isError:!0===r.is_error,createdAt:e.createdAt})}let o=n.flatMap(r=>{let n=r.rawJson?JSON.parse(r.rawJson):{},a="assistant"===n.type&&Array.isArray(n.message?.content)?n.message.content.find(e=>"tool_use"===e.type):void 0;if(a){let n=i.get(String(a.id));return[{id:`event:${r.id}`,runId:e,attemptId:t,sequence:r.sequence,name:String(a.name??"Tool"),status:n?n.isError?"FAILED":"COMPLETED":"OBSERVED",inputJson:r.rawJson,outputJson:JSON.stringify(n?.content??null),error:n?.isError?"string"==typeof n.content?n.content:JSON.stringify(n.content):null,startedAt:r.createdAt,finishedAt:n?.createdAt??null}]}let o=n.params?.item,s=n.properties?.part,d=o&&["commandExecution","fileChange","mcpToolCall","dynamicToolCall","webSearch"].includes(o.type),u="message.part.updated"===n.type&&s?.type==="tool";if(!d&&!u)return[];let l=u?s.state??{}:o,c=String(l.status??"COMPLETED").toUpperCase(),w=u&&"number"==typeof l.time?.start?new Date(l.time.start):r.createdAt,p=u?"number"==typeof l.time?.end?new Date(l.time.end):null:["INPROGRESS","IN_PROGRESS","RUNNING","PENDING"].includes(c)?null:r.createdAt;return[{id:`event:${r.id}`,runId:e,attemptId:t,sequence:r.sequence,name:u?s.tool??s.name??"tool":o.tool??o.command??o.type,status:"ERROR"===c?"FAILED":"INPROGRESS"===c?"IN_PROGRESS":c,inputJson:r.rawJson,outputJson:JSON.stringify(u?l.result??l.output??null:o.result??o.aggregatedOutput??null),error:l.error?"string"==typeof l.error?l.error:JSON.stringify(l.error):null,startedAt:w,finishedAt:p}]});for(let e=0;e<o.length;e+=500)await a.runToolCall.createMany({data:o.slice(e,e+500)});await a.agentRun.update({where:{id:e},data:{toolCallCount:await a.runToolCall.count({where:{runId:e}})}})}if(r.usage){for(let i of(await a.runModelUsage.deleteMany({where:{runId:e,attemptId:t}}),r.usage)){let r=e=>Number.isFinite(e)&&(e??0)>=0?Math.floor(e):0;await a.runModelUsage.create({data:{id:(0,n.randomUUID)(),runId:e,attemptId:t,model:A(i.model,"Model",500),inputTokens:r(i.inputTokens),outputTokens:r(i.outputTokens),reasoningTokens:r(i.reasoningTokens),cacheReadTokens:r(i.cacheReadTokens),cacheWriteTokens:r(i.cacheWriteTokens),estimatedCost:i.estimatedCost??null}})}let i=await a.runModelUsage.aggregate({where:{runId:e},_sum:{inputTokens:!0,outputTokens:!0,reasoningTokens:!0,cacheReadTokens:!0,cacheWriteTokens:!0,estimatedCost:!0}});await a.agentRun.update({where:{id:e},data:{inputTokens:i._sum.inputTokens??0,outputTokens:i._sum.outputTokens??0,reasoningTokens:i._sum.reasoningTokens??0,cacheReadTokens:i._sum.cacheReadTokens??0,cacheWriteTokens:i._sum.cacheWriteTokens??0,estimatedCost:r.estimatedCost??(r.usage.length&&r.usage.every(e=>null!=e.estimatedCost)?i._sum.estimatedCost??null:null),pricingSource:R(r.pricingSource??[...new Set(r.usage.map(e=>e.pricingSource).filter(Boolean))].join(", "),200),pricingUpdatedAt:new Date}})}else void 0!==r.estimatedCost&&await a.agentRun.update({where:{id:e},data:{estimatedCost:r.estimatedCost,pricingSource:R(r.pricingSource,200),pricingUpdatedAt:new Date}})})}async importRuns(e,t,r){let o=g(m,t,"Provider"),s=await (0,i.U)(),u=0;for(let t of r){let r=t.prompt?.trim()||void 0,i=`${e}:${o}:${A(t.nativeId,"Native ID",500)}`,l=await s.runAttempt.findUnique({where:{nativeKey:i},include:{run:!0}}),c=(0,d.t)(l?.rawMetadataJson),w=(0,d.t)(t.rawMetadata),p={...(0,d.r)(w),...(0,d.X)(t.sessionInfo)},h=t.events||t.usage||void 0!==t.estimatedCost?(0,n.createHash)("sha256").update(JSON.stringify([t.events,t.usage,t.estimatedCost,t.pricingSource])).digest("hex"):void 0,f=(0,d.B)({...c,...w},{...(0,d.r)(c),...p});delete f.importedHistoryDigest,delete f.importedSnapshotDigest;let m="CODEX"===o&&"string"==typeof w.cliVersion?R(w.cliVersion,200):null,I=(0,n.createHash)("sha256").update(JSON.stringify({...t,events:h,usage:void 0})).digest("hex"),E=JSON.stringify({...f,...h||c.importedHistoryDigest?{importedHistoryDigest:h??c.importedHistoryDigest}:{},importedSnapshotDigest:I}),y=(()=>{let e=t.status?.toUpperCase()??"COMPLETED";return["ACTIVE","RUNNING","STARTING","IN_PROGRESS","WAITING_FOR_ANSWER"].includes(e)?"IN_PROGRESS":"PAUSED"===e?"PAUSED":"CANCELLED"===e||"CANCELED"===e?"CANCELLED":["FAILED","ERROR","SYSTEMERROR"].includes(e)?"FAILED":"COMPLETED"})();if(l){if("IMPORTED"===l.run.origin){let e=("SESSION"===l.run.kind&&"IN_PROGRESS"===y?await s.worktreeRunLease.findFirst({where:{worktreeId:l.run.worktreeId??"",run:{kind:"SESSION",origin:"MANAGED",status:{in:["IN_PROGRESS","PAUSED"]}}}}):null)?"IMPORTED_ACTIVE_COLLISION":"IMPORTED_SYNCED";if(c.importedSnapshotDigest===I&&l.run.phase===e)continue;let n=h&&c.importedHistoryDigest!==h;await s.$transaction([s.runAttempt.update({where:{id:l.id},data:{rawMetadataJson:n?JSON.stringify(f):E}}),s.agentRun.update({where:{id:l.runId},data:{status:y,phase:e,...m?{providerVersion:m}:{},...r?{initialPrompt:r,inputs:{updateMany:{where:{kind:"INITIAL",sequence:0},data:{prompt:r}}}}:{},model:t.model||l.run.model,effort:void 0===t.effort?l.run.effort:R(t.effort,100),finalOutput:void 0===t.finalOutput?l.run.finalOutput:R(t.finalOutput,2e6),branch:t.branch??l.run.branch,jiraIssueKey:S(t.jiraIssueKey),nativeArchivedAt:t.archived?l.run.nativeArchivedAt??new Date:null,startedAt:N(t.createdAt)??l.run.startedAt,finishedAt:"IN_PROGRESS"===y?null:N(t.updatedAt)??l.run.finishedAt}})]),n&&(await this.importHistory(l.runId,l.id,t),await s.runAttempt.update({where:{id:l.id},data:{rawMetadataJson:E}})),D(l.runId)}else{let e=(0,d.B)(c,p);(!(0,a.isDeepStrictEqual)(c,e)||m&&!l.run.providerVersion)&&await s.$transaction(async e=>{let t=await e.runAttempt.findUnique({where:{id:l.id},include:{run:!0}});if(!t)return!1;let r=(0,d.t)(t.rawMetadataJson),n=(0,d.B)(r,p),i=!(0,a.isDeepStrictEqual)(r,n),o=m&&!t.run.providerVersion;return i&&await e.runAttempt.update({where:{id:t.id},data:{rawMetadataJson:JSON.stringify(n)}}),o&&await e.agentRun.update({where:{id:t.runId},data:{providerVersion:m}}),i||o})&&D(l.runId)}continue}let g=await s.worktree.findUnique({where:{id:t.worktreeId},include:{codebase:{include:{repository:!0}}}});if(!g||g.codebase.agentId!==e)continue;let U=t.kind?.toUpperCase()==="PLAN"?"PLAN":"SESSION",v="SESSION"===U&&"IN_PROGRESS"===y?await s.worktreeRunLease.findFirst({where:{worktreeId:g.id,run:{kind:"SESSION",origin:"MANAGED",status:{in:["IN_PROGRESS","PAUSED"]}}}}):null,L=await s.$transaction(e=>C(e,U)),b=(0,n.randomUUID)(),O=(0,n.randomUUID)();await s.agentRun.create({data:{id:b,kind:U,displayNumber:L,status:y,phase:v?"IMPORTED_ACTIVE_COLLISION":"IMPORTED_SYNCED",origin:"IMPORTED",provider:o,providerVersion:m,worktreeId:g.id,repositoryId:g.codebase.repository.id,agentId:e,jiraIssueKey:S(t.jiraIssueKey),repositoryName:g.codebase.repository.name,branch:t.branch??g.branch,model:t.model||"unknown",effort:R(t.effort,100),worktreeConcurrencyLimit:k(U,void 0),initialPrompt:r??"Imported provider history",finalOutput:R(t.finalOutput,2e6),archivedAt:t.archived?new Date:null,nativeArchivedAt:t.archived?new Date:null,startedAt:N(t.createdAt),finishedAt:N(t.updatedAt),createdAt:N(t.createdAt),attempts:{create:{id:O,generation:0,nativeId:t.nativeId,nativeKey:i,status:"IMPORTED",rawMetadataJson:h?JSON.stringify(f):E}},inputs:{create:{id:(0,n.randomUUID)(),sequence:0,kind:"INITIAL",prompt:r??"Imported provider history"}}}}),h&&(await this.importHistory(b,O,t),await s.runAttempt.update({where:{id:O},data:{rawMetadataJson:E}})),D(b),u+=1}return await s.runProviderSync.upsert({where:{agentId_provider:{agentId:e,provider:o}},create:{id:(0,n.randomUUID)(),agentId:e,provider:o,status:"IDLE",lastCompletedAt:new Date,importedCount:u},update:{status:"IDLE",lastCompletedAt:new Date,lastError:null,importedCount:{increment:u}}}),u}async providerCatalog(e={}){let t=await (0,i.U)(),r=!!(e.runId||e.worktreeId),n=e.worktreeId??(e.runId?(await t.agentRun.findUnique({where:{id:e.runId},select:{worktreeId:!0}}))?.worktreeId:null),a=e.runId?(await t.agentRun.findUnique({where:{id:e.runId},select:{agentId:!0}}))?.agentId:e.worktreeId?(await t.worktree.findUnique({where:{id:e.worktreeId},select:{codebase:{select:{agentId:!0}}}}))?.codebase.agentId:null,[o,d]=r&&!a?[[],[]]:await Promise.all([t.agent.findMany({where:a?{id:a}:void 0,select:{id:!0,capabilitiesJson:!0,lastSeenAt:!0,disconnectedAt:!0,heartbeatIntervalSeconds:!0}}),t.runProviderSync.findMany({where:a?{agentId:a}:void 0,orderBy:{updatedAt:"desc"}})]);return m.map(e=>{let t=`runs.provider.${e.toLowerCase()}`,r=o.some(r=>{let n=d.find(t=>t.agentId===r.id&&t.provider===e);return!r.disconnectedAt&&!!r.lastSeenAt&&Date.now()-r.lastSeenAt.getTime()<=(0,s.z)(r)&&JSON.parse(r.capabilitiesJson).includes(t)&&n?.status!=="FAILED"}),a=d.find(({provider:t})=>t===e)?.catalogJson,i=a?JSON.parse(a):null,u=n&&i?.worktrees?i.worktrees[n]?.models??[]:i?.models;return{key:e,label:"OPENCODE"===e?"OpenCode":"CLAUDE"===e?"Claude":"Codex",available:r,models:u?.length?u:[{id:"default",label:"Provider default",efforts:["auto","low","medium","high"]}],supportsWebSearch:i?.capabilities?.webSearch??!0,supportsQuestions:i?.capabilities?.questions??!0,supportsImport:i?.capabilities?.import??!0,supportsPause:i?.capabilities?.pause??!0,supportsSteering:i?.capabilities?.steering??!0,supportsResume:i?.capabilities?.resume??!0,supportsNativeDelete:i?.capabilities?.nativeDelete??!0}})}async providerImportStatus(){return(await (0,i.U)()).runProviderSync.findMany({orderBy:[{agentId:"asc"},{provider:"asc"}]})}async reportProviderImportStatus(e,t,r,a,o){let s=g(m,t,"Provider"),d=r.trim().toUpperCase();if(!["SYNCING","IDLE","FAILED"].includes(d))throw Error("Import status is invalid");return(await (0,i.U)()).runProviderSync.upsert({where:{agentId_provider:{agentId:e,provider:s}},create:{id:(0,n.randomUUID)(),agentId:e,provider:s,status:d,lastStartedAt:"SYNCING"===d?new Date:void 0,lastCompletedAt:"IDLE"===d?new Date:void 0,lastError:R(a,2e4),catalogJson:void 0===o?void 0:JSON.stringify(o)},update:{status:d,lastStartedAt:"SYNCING"===d?new Date:void 0,lastCompletedAt:"IDLE"===d?new Date:void 0,lastError:"FAILED"===d?R(a,2e4):null,catalogJson:void 0===o?void 0:JSON.stringify(o)}})}subscribeRunList(e){let n=o._H.iterate(o.hu);return(0,r.G)(n,async r=>{if("drafts"===r.runChanged.id)return!1;if(!e.kind&&!e.appId&&!e.provider&&!e.origin&&!e.worktreeId&&!e.workflowId)return!0;let n=await (0,i.U)(),a=await n.agentRun.findUnique({where:{id:r.runChanged.id},select:{worktreeId:!0,workflowRun:{select:{workflowId:!0}},kind:!0,provider:!0,origin:!0,repositoryId:!0}});return!a||(!e.workflowId||a.workflowRun?.workflowId===e.workflowId||!!await (0,t.f)(e.workflowId,a.worktreeId))&&(!e.worktreeId||a.worktreeId===e.worktreeId)&&(!e.kind||a.kind===e.kind)&&(!e.provider||a.provider===e.provider.trim().toUpperCase())&&(!e.origin||a.origin===e.origin)&&(!e.appId||!!a.repositoryId&&!!await n.appRepository.findFirst({where:{appId:e.appId,repositoryId:a.repositoryId},select:{appId:!0}}))})}subscribeRuns(){return o._H.iterate(o.hu)}subscribeRun(e){return o._H.iterate((0,o.k_)(e))}subscribeEvents(e){return o._H.iterate((0,o.zP)(e))}subscribeQuestions(e){return o._H.iterate((0,o.hn)(e))}async requireWorktree(e,t){let r=await (0,i.U)(),n=await r.worktree.findUnique({where:{id:A(e,"Worktree",500)},include:{codebase:{include:{repository:!0,agent:!0}}}});if(!n||"AVAILABLE"!==n.availability)throw Error("Worktree is unavailable");if(t){let e=n.codebase.agent,a=JSON.parse(e.capabilitiesJson);if(e.disconnectedAt||!e.lastSeenAt||Date.now()-e.lastSeenAt.getTime()>(0,s.z)(e)||!a.includes(`runs.provider.${t.toLowerCase()}`))throw Error(`${t} is unavailable on this worktree's agent`);let i=await r.runProviderSync.findUnique({where:{agentId_provider:{agentId:n.codebase.agentId,provider:t}}});if(i?.status==="FAILED")throw Error(`${t} is unavailable: ${i.lastError??"provider capability check failed"}`)}return n}async requireAttachments(e,t){if(!e.length)return;if(e.length>100)throw Error("Too many attachments");let r=await (0,i.U)(),n=await r.runAttachment.findMany({where:{id:{in:e},inputId:null,...t?{OR:[{draftId:t},{draftId:null}]}:{draftId:null}}});if(n.length!==e.length)throw Error("One or more attachments are unavailable");if(n.reduce((e,t)=>e+t.size,0)>h.r)throw Error("Attachments exceed the 100 MB input limit")}}],594875)},489947,e=>{var t=e.i(243783);async function r(e,r){if(!r)return!1;let n=await (0,t.U)();return!!await n.workflowRun.findFirst({where:{workflowId:e,OR:[{status:"QUEUED",worktreeId:r},{agentRuns:{some:{status:"QUEUED",origin:"MANAGED",worktreeId:r}}}]},select:{id:!0}})}e.s(["f",0,r])}]})();
|
|
11
11
|
|
|
12
12
|
//# sourceMappingURL=src_services_0shipcub2yhy6._.js.map
|
|
@@ -15,7 +15,10 @@
|
|
|
15
15
|
cacheReadTokens cacheWriteTokens toolCallCount parentRunId parentRunNumber
|
|
16
16
|
parentRun { ${b} }
|
|
17
17
|
followUps { ${b} }
|
|
18
|
-
attempts {
|
|
18
|
+
attempts {
|
|
19
|
+
id generation nativeId status resumeStrategy startedAt finishedAt supersededAt
|
|
20
|
+
sessionInfo { nativeTranscriptPath activityLogPath workingDirectory }
|
|
21
|
+
}
|
|
19
22
|
inputs {
|
|
20
23
|
id sequence kind prompt createdAt
|
|
21
24
|
attachments { id filename contentType size sha256 downloadPath createdAt }
|
|
@@ -15,7 +15,10 @@
|
|
|
15
15
|
cacheReadTokens cacheWriteTokens toolCallCount parentRunId parentRunNumber
|
|
16
16
|
parentRun { ${b} }
|
|
17
17
|
followUps { ${b} }
|
|
18
|
-
attempts {
|
|
18
|
+
attempts {
|
|
19
|
+
id generation nativeId status resumeStrategy startedAt finishedAt supersededAt
|
|
20
|
+
sessionInfo { nativeTranscriptPath activityLogPath workingDirectory }
|
|
21
|
+
}
|
|
19
22
|
inputs {
|
|
20
23
|
id sequence kind prompt createdAt
|
|
21
24
|
attachments { id filename contentType size sha256 downloadPath createdAt }
|
|
@@ -15,7 +15,10 @@
|
|
|
15
15
|
cacheReadTokens cacheWriteTokens toolCallCount parentRunId parentRunNumber
|
|
16
16
|
parentRun { ${b} }
|
|
17
17
|
followUps { ${b} }
|
|
18
|
-
attempts {
|
|
18
|
+
attempts {
|
|
19
|
+
id generation nativeId status resumeStrategy startedAt finishedAt supersededAt
|
|
20
|
+
sessionInfo { nativeTranscriptPath activityLogPath workingDirectory }
|
|
21
|
+
}
|
|
19
22
|
inputs {
|
|
20
23
|
id sequence kind prompt createdAt
|
|
21
24
|
attachments { id filename contentType size sha256 downloadPath createdAt }
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
workflowChanges(resourceKind: $kind, resourceId: $resourceId) { definitionsChanged }
|
|
56
56
|
}`,variables:{kind:l.target.resourceKind,resourceId:l.target.resourceId}},{next:a=>{a.data?.workflowChanges.definitionsChanged||j(l)},error:()=>void 0,complete:()=>void 0})),c??=(0,y.g)(()=>{for(let a of d.values())j(a)}),i();let m=l,n=!1;return()=>{if(!n){if(n=!0,m.consumers.delete(g),!m.consumers.size){for(let a of(m.disposeRuns?.(),d.delete(k),m.waiters))a();for(let a of(m.waiters.clear(),e))a.entries.some(f)||a.controller.abort()}d.size||(c?.(),c=void 0,void 0!==b&&clearTimeout(b),b=void 0)}}}});function G({worktreeId:a,sessionData:b,workflows:c,className:d}){let e=(0,q.f)("workflows"),f=function(a){let{resourceKind:b,resourceId:c}=a,d=(0,r.useCallback)(a=>F.subscribe({resourceKind:b,resourceId:c},a),[b,c]),e=(0,r.useCallback)(()=>F.snapshot({resourceKind:b,resourceId:c}),[b,c]),f=(0,r.useCallback)(()=>F.refresh({resourceKind:b,resourceId:c}),[b,c]);return{...(0,r.useSyncExternalStore)(d,e,()=>B),refresh:f}}({resourceKind:"WORKTREE",resourceId:a}),[g,h]=(0,r.useState)(null),[i,j]=(0,r.useState)(null),[k,l]=(0,r.useState)(null),C={};for(let a of f.activeRuns)(C[a.workflowId]??=[]).push(a);let D=async(c,d)=>{h(c.id),l(null);try{await (0,y.W)(`mutation RunWorktreeQuickAction($input: TriggerWorkflowInput!) {
|
|
57
57
|
triggerWorkflow(input: $input) { id }
|
|
58
|
-
}`,{input:{workflowId:c.id,sessionData:b,resourceKind:"WORKTREE",resourceId:a,subjectKey:`WORKTREE:${a}`,choice:d}}),await f.refresh()}catch(a){l(a instanceof Error?a.message:String(a))}finally{h(null)}},E=async(a,b)=>{j(a),l(null);try{await (0,y.W)(`mutation WorktreeQuickActionLifecycle($id: ID!) { ${"pause"===b?"pauseWorkflowRun":"cancelWorkflowRun"}(id: $id) { id status } }`,{id:a}),await f.refresh()}catch(a){l(a instanceof Error?a.message:String(a))}finally{j(null)}},H=k??f.error;return(0,m.jsxs)("div",{className:(0,z.f)("w-full space-y-2",d),children:[(0,m.jsx)("div",{className:"flex flex-wrap gap-2",children:c.map(a=>{let b=C[a.id]??[],c=b.length>0||g===a.id;return(0,m.jsxs)("div",{className:"flex",children:[b.length>0&&(0,m.jsxs)(u.G,{children:[(0,m.jsx)(u.X,{asChild:!0,children:(0,m.jsxs)(t.K,{"aria-label":e("manageRuns",{name:a.name}),className:"rounded-r-none",size:"sm",variant:"outline",children:[(0,m.jsx)(v.f,{}),b.length>1&&(0,m.jsx)("span",{className:"text-xs tabular-nums",children:b.length})]})}),(0,m.jsx)(u.L,{align:"start",className:"min-w-48",children:b.map((a,c)=>(0,m.jsxs)("div",{children:[c>0&&(0,m.jsx)(u.U,{}),b.length>1&&(0,m.jsx)(u.B,{className:"text-xs text-muted-foreground",children:e("runNumber",{number:a.displayNumber})}),["RUNNING","WAITING","BLOCKED"].includes(a.status)&&(0,m.jsxs)(u.r,{disabled:null!==i,onSelect:()=>void E(a.id,"pause"),children:[(0,m.jsx)(n.f,{}),e("pause")]}),(0,m.jsxs)(u.r,{disabled:null!==i,onSelect:()=>void E(a.id,"cancel"),children:[(0,m.jsx)(o.f,{}),e("cancelRun")]}),(0,m.jsx)(u.r,{asChild:!0,children:(0,m.jsxs)(x.L,{href:`/dashboard/workflows/runs/${a.id}`,children:[(0,m.jsx)(p.f,{}),e("quickActionView")]})})]},a.id))})]}),(0,m.jsx)(A.f,{button:(0,m.jsxs)(t.K,{className:b.length>0?"-ml-px rounded-l-none":void 0,disabled:null!==g,size:"sm",title:c?e("startAnotherRun",{name:a.name}):a.description||a.name,variant:a.quickActionButtonVariant,children:[g===a.id?(0,m.jsx)(v.f,{}):(0,m.jsx)(w.f,{iconKey:a.quickActionIconKey}),a.name]}),choices:a.triggerChoices??[],hasPlainTrigger:a.hasPlainTrigger??!1,onRun:b=>void D(a,b)})]},a.id)})}),H&&(0,m.jsx)(s.J,{variant:"destructive",children:(0,m.jsx)(s.p,{children:H})})]})}a.s(["f",0,function(a){return a.workflows.length?(0,m.jsx)(G,{...a}):null}],272088)},159087,a=>{var b=a.i(187924),c=a.i(105606),d=a.i(519783),e=a.i(415925),f=a.i(572131),g=a.i(129965),h=a.i(205956),i=a.i(16603),j=a.i(314395),k=a.i(649021),l=a.i(124348),m=a.i(699570),n=a.i(315055),o=a.i(795225),p=a.i(866718),q=a.i(870430),r=a.i(580701),s=a.i(668684),t=a.i(429246),u=a.i(460280),v=a.i(971734);let w=new Set(["SYNCING","WAITING_CI","WAITING_REQUIREMENTS","MERGING","POST_MERGE"]);function x(a){let b=a.autoMerge,c=a.pullRequest;return b&&b.worktreeId===a.id&&b.branch===a.branch&&(!c||c.headRefName===a.branch&&b.pullRequestNumber===c.number&&b.repositoryNameWithOwner.toLowerCase()===c.repositoryNameWithOwner.toLowerCase())?b:null}function y(a){let b=a.sourceControlRequest;if(b?.provider==="GITLAB")return!!(b.headRefName===a.branch&&"OPENED"===b.state&&b.mergeWhenPipelineSucceeds);let c=a.pullRequest;return!!(c?.headRefName===a.branch&&c?.state==="OPEN"&&c.autoMergeEnabled)}function z(a){let b=a.sourceControlRequest;if(b?.provider==="GITLAB"){let c=b.mergeOperation,d=b.headRefName===a.branch&&c?.worktreeId===a.id&&c.autoMerge?c:null;return d?.state==="ACTION_REQUIRED"?"paused":d?.state==="COMPLETED"&&"MERGED"===b.state?"completed":y(a)||d&&("PREPARING"===d.state||"WAITING"===d.state||w.has(d.state))?"active":"inactive"}let c=x(a);return c?.state==="ACTION_REQUIRED"?"paused":c?.state!=="COMPLETED"||a.pullRequest&&"MERGED"!==a.pullRequest.state?y(a)||c&&("ACTIVE"===c.state||w.has(c.state))?"active":"inactive":"completed"}let A="__none__",B="__github_account_default__";function C(a){return a instanceof Error?a.message:String(a)}function D({worktree:a,disabled:d,onCompleted:g}){let h,i=(0,e.f)("worktrees"),l=(0,e.f)("gitlabPages"),[n,o]=(0,f.useState)(!1),p=a.sourceControlRequest;if(!p?.projectId)return null;let q=(h=a.sourceControlRequest,h?.provider==="GITLAB"&&!h.isDraft&&"mergeable"===h.detailedMergeStatus&&!(a.gitLabPipelines??[]).some(a=>(0,k.f)(a.status))),r=z(a),s="paused"===r,t="completed"===r,u="active"===r;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(m.K,{className:u||t?"bg-emerald-600 text-white hover:bg-emerald-700":void 0,size:"sm",variant:s?"destructive":u||t?"default":"outline",disabled:t||d&&"inactive"===r,onClick:a=>{a.stopPropagation(),o(!0)},children:[(0,b.jsx)(c.f,{}),t?i("autoMergeComplete"):s?i("autoMergePaused"):u?i("autoMerging"):l(q?"merge":"autoMerge")]}),(0,b.jsx)(j.f,{mergeRequest:{projectId:p.projectId,iid:p.number,title:p.title},worktreeId:a.id,onMerged:g,open:n,onOpenChange:o})]})}function E({worktree:a,disabled:d,onCompleted:j,onError:k}){let n,v=(0,e.f)("worktrees"),w=(0,e.f)("pullRequests"),A=a.pullRequest,D=x(a),F=z(a),G=y(a),[
|
|
58
|
+
}`,{input:{workflowId:c.id,sessionData:b,resourceKind:"WORKTREE",resourceId:a,subjectKey:`WORKTREE:${a}`,choice:d}}),await f.refresh()}catch(a){l(a instanceof Error?a.message:String(a))}finally{h(null)}},E=async(a,b)=>{j(a),l(null);try{await (0,y.W)(`mutation WorktreeQuickActionLifecycle($id: ID!) { ${"pause"===b?"pauseWorkflowRun":"cancelWorkflowRun"}(id: $id) { id status } }`,{id:a}),await f.refresh()}catch(a){l(a instanceof Error?a.message:String(a))}finally{j(null)}},H=k??f.error;return(0,m.jsxs)("div",{className:(0,z.f)("w-full space-y-2",d),children:[(0,m.jsx)("div",{className:"flex flex-wrap gap-2",children:c.map(a=>{let b=C[a.id]??[],c=b.length>0||g===a.id;return(0,m.jsxs)("div",{className:"flex",children:[b.length>0&&(0,m.jsxs)(u.G,{children:[(0,m.jsx)(u.X,{asChild:!0,children:(0,m.jsxs)(t.K,{"aria-label":e("manageRuns",{name:a.name}),className:"rounded-r-none",size:"sm",variant:"outline",children:[(0,m.jsx)(v.f,{}),b.length>1&&(0,m.jsx)("span",{className:"text-xs tabular-nums",children:b.length})]})}),(0,m.jsx)(u.L,{align:"start",className:"min-w-48",children:b.map((a,c)=>(0,m.jsxs)("div",{children:[c>0&&(0,m.jsx)(u.U,{}),b.length>1&&(0,m.jsx)(u.B,{className:"text-xs text-muted-foreground",children:e("runNumber",{number:a.displayNumber})}),["RUNNING","WAITING","BLOCKED"].includes(a.status)&&(0,m.jsxs)(u.r,{disabled:null!==i,onSelect:()=>void E(a.id,"pause"),children:[(0,m.jsx)(n.f,{}),e("pause")]}),(0,m.jsxs)(u.r,{disabled:null!==i,onSelect:()=>void E(a.id,"cancel"),children:[(0,m.jsx)(o.f,{}),e("cancelRun")]}),(0,m.jsx)(u.r,{asChild:!0,children:(0,m.jsxs)(x.L,{href:`/dashboard/workflows/runs/${a.id}`,children:[(0,m.jsx)(p.f,{}),e("quickActionView")]})})]},a.id))})]}),(0,m.jsx)(A.f,{button:(0,m.jsxs)(t.K,{className:b.length>0?"-ml-px rounded-l-none":void 0,disabled:null!==g,size:"sm",title:c?e("startAnotherRun",{name:a.name}):a.description||a.name,variant:a.quickActionButtonVariant,children:[g===a.id?(0,m.jsx)(v.f,{}):(0,m.jsx)(w.f,{iconKey:a.quickActionIconKey}),a.name]}),choices:a.triggerChoices??[],hasPlainTrigger:a.hasPlainTrigger??!1,onRun:b=>void D(a,b)})]},a.id)})}),H&&(0,m.jsx)(s.J,{variant:"destructive",children:(0,m.jsx)(s.p,{children:H})})]})}a.s(["f",0,function(a){return a.workflows.length?(0,m.jsx)(G,{...a}):null}],272088)},159087,a=>{var b=a.i(187924),c=a.i(105606),d=a.i(519783),e=a.i(415925),f=a.i(572131),g=a.i(129965),h=a.i(205956),i=a.i(16603),j=a.i(314395),k=a.i(649021),l=a.i(124348),m=a.i(699570),n=a.i(315055),o=a.i(795225),p=a.i(866718),q=a.i(870430),r=a.i(580701),s=a.i(668684),t=a.i(429246),u=a.i(460280),v=a.i(971734);let w=new Set(["SYNCING","WAITING_CI","WAITING_REQUIREMENTS","MERGING","POST_MERGE"]);function x(a){let b=a.autoMerge,c=a.pullRequest;return b&&b.worktreeId===a.id&&b.branch===a.branch&&(!c||c.headRefName===a.branch&&b.pullRequestNumber===c.number&&b.repositoryNameWithOwner.toLowerCase()===c.repositoryNameWithOwner.toLowerCase())?b:null}function y(a){let b=a.sourceControlRequest;if(b?.provider==="GITLAB")return!!(b.headRefName===a.branch&&"OPENED"===b.state&&b.mergeWhenPipelineSucceeds);let c=a.pullRequest;return!!(c?.headRefName===a.branch&&c?.state==="OPEN"&&c.autoMergeEnabled)}function z(a){let b=a.sourceControlRequest;if(b?.provider==="GITLAB"){let c=b.mergeOperation,d=b.headRefName===a.branch&&c?.worktreeId===a.id&&c.autoMerge?c:null;return d?.state==="ACTION_REQUIRED"?"paused":d?.state==="COMPLETED"&&"MERGED"===b.state?"completed":y(a)||d&&("PREPARING"===d.state||"WAITING"===d.state||w.has(d.state))?"active":"inactive"}let c=x(a);return c?.state==="ACTION_REQUIRED"?"paused":c?.state!=="COMPLETED"||a.pullRequest&&"MERGED"!==a.pullRequest.state?y(a)||c&&("ACTIVE"===c.state||w.has(c.state))?"active":"inactive":"completed"}let A="__none__",B="__github_account_default__";function C(a){return a instanceof Error?a.message:String(a)}function D({worktree:a,disabled:d,onCompleted:g}){let h,i=(0,e.f)("worktrees"),l=(0,e.f)("gitlabPages"),[n,o]=(0,f.useState)(!1),p=a.sourceControlRequest;if(!p?.projectId)return null;let q=(h=a.sourceControlRequest,h?.provider==="GITLAB"&&!h.isDraft&&"mergeable"===h.detailedMergeStatus&&!(a.gitLabPipelines??[]).some(a=>(0,k.f)(a.status))),r=z(a),s="paused"===r,t="completed"===r,u="active"===r,v=q&&"inactive"===r;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(m.K,{className:u||t||v?"bg-emerald-600 text-white hover:bg-emerald-700":void 0,size:"sm",variant:s?"destructive":u||t||v?"default":"outline",disabled:t||d&&"inactive"===r,onClick:a=>{a.stopPropagation(),o(!0)},children:[(0,b.jsx)(c.f,{}),t?i("autoMergeComplete"):s?i("autoMergePaused"):u?i("autoMerging"):l(q?"merge":"autoMerge")]}),(0,b.jsx)(j.f,{mergeRequest:{projectId:p.projectId,iid:p.number,title:p.title},worktreeId:a.id,onMerged:g,open:n,onOpenChange:o})]})}function E({worktree:a,disabled:d,onCompleted:j,onError:k}){let n,v=(0,e.f)("worktrees"),w=(0,e.f)("pullRequests"),A=a.pullRequest,D=x(a),F=z(a),G=y(a),H=!!(n=a.pullRequest)&&"OPEN"===n.state&&!n.isDraft&&"MERGEABLE"===n.mergeable&&["CLEAN","HAS_HOOKS","UNSTABLE"].includes(n.mergeStateStatus),[I,J]=(0,f.useState)(!1),[K,L]=(0,f.useState)(!1),M=A?.repositoryNameWithOwner,N=A?.number,[O,P]=(0,f.useState)(!1),[Q,R]=(0,f.useState)(!1),[S,T]=(0,f.useState)(null),[U,V]=(0,f.useState)(null),[W,X]=(0,f.useState)(""),[Y,Z]=(0,f.useState)(""),[$,_]=(0,f.useState)(!1),[aa,ab]=(0,f.useState)(""),[ac,ad]=(0,f.useState)(B),[ae,af]=(0,f.useState)([]),[ag,ah]=(0,f.useState)(!1),[ai,aj]=(0,f.useState)(!1);if((0,f.useEffect)(()=>{if(!I||!M||!N)return;let b=!0,[c="",d=""]=M.split("/",2),e=window.setTimeout(()=>{P(!0),V(null),T(null),(0,u.W)(`query GitHubPullRequestMergeOptions(
|
|
59
59
|
$owner: String!
|
|
60
60
|
$name: String!
|
|
61
61
|
$number: Int!
|
|
@@ -74,9 +74,9 @@
|
|
|
74
74
|
canEnableAutoMerge autoMergeEnabled viewerCanDisableAutoMerge canAutoMergeWithSync autoSyncBlockedReason defaultAutoSync
|
|
75
75
|
mergeStateStatus headRefOid blockedReason
|
|
76
76
|
}
|
|
77
|
-
}`,{owner:c,name:d,number:
|
|
77
|
+
}`,{owner:c,name:d,number:N,worktreeId:a.id}).then(a=>{if(!b)return;let c=a.githubPullRequestMergeOptions;V(c),_(c.defaultAutoSync??!1),af(c.baseBranchUpdateOptions?.selectedWorktreeIds??[]),X(c.defaultMethod??c.availableMethods[0]??""),Z(c.defaultCommitHeadline),ab(c.defaultCommitBody),ad(c.defaultCommitEmail??B),ah(!!(c.canDeleteWorktree&&c.defaultDeleteWorktree)),aj(!!(c.ticketKey&&c.defaultMoveTicketToDone))}).catch(a=>b&&T(C(a))).finally(()=>b&&P(!1))},0);return()=>{b=!1,window.clearTimeout(e)}},[I,M,N,a.id]),A&&(K||!I&&!D&&!G&&H))return(0,b.jsx)(h.f,{className:H?"bg-emerald-600 text-white hover:bg-emerald-700":void 0,onMerged:()=>j(),onOpenChange:L,open:K,worktreeId:a.id,pullRequest:A,requestSource:"WORKTREE_AUTOMATION",variant:H?"default":"outline"});let ak=A?.state==="MERGED"&&!!D,al=async()=>{if(A&&W&&Y.trim()&&(ak||!ai||U?.ticketDoneStatusConfigured)){R(!0),T(null);try{if(ak){await (0,u.W)(`mutation RetryWorktreeAutoMerge($worktreeId: ID!) {
|
|
78
78
|
retryWorktreeAutoMerge(worktreeId: $worktreeId) { worktreeId state }
|
|
79
|
-
}`,{worktreeId:a.id}),k(null),
|
|
79
|
+
}`,{worktreeId:a.id}),k(null),J(!1),await j();return}await (0,u.W)(`mutation ConfigureWorktreeAutoMerge(
|
|
80
80
|
$input: ConfigureWorktreeAutoMergeInput!
|
|
81
81
|
) {
|
|
82
82
|
configureWorktreeAutoMerge(input: $input) {
|
|
@@ -85,9 +85,9 @@
|
|
|
85
85
|
moveTicketToDone ticketKey lastError updatedAt
|
|
86
86
|
autoSync
|
|
87
87
|
}
|
|
88
|
-
}`,{input:{worktreeId:a.id
|
|
88
|
+
}`,{input:{worktreeId:a.id,...$?{autoSync:!0,expectedHeadSha:U?.headRefOid}:{},repositoryNameWithOwner:A.repositoryNameWithOwner,pullRequestNumber:A.number,method:W,commitHeadline:Y,commitBody:aa,authorEmail:ac===B?null:ac,...ae.length&&U?.baseBranchUpdateOptions?.destinationBaseBranch?{baseBranchUpdate:{worktreeIds:ae,destinationBaseBranch:U.baseBranchUpdateOptions.destinationBaseBranch}}:{},deleteWorktree:ag,moveTicketToDone:ai}}),k(null),J(!1),await j()}catch(a){T(C(a))}finally{R(!1)}}},am=async()=>{R(!0),T(null);try{await (0,u.W)(`mutation CancelWorktreeAutoMerge($worktreeId: ID!) {
|
|
89
89
|
cancelWorktreeAutoMerge(worktreeId: $worktreeId)
|
|
90
|
-
}`,{worktreeId:a.id}),k(null),
|
|
90
|
+
}`,{worktreeId:a.id}),k(null),J(!1),await j()}catch(a){T(C(a))}finally{R(!1)}},an="paused"===F,ao="completed"===F,ap="active"===F;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(m.K,{className:ap||ao?"bg-emerald-600 text-white hover:bg-emerald-700":void 0,disabled:!A||d&&"inactive"===F||ao,onClick:a=>{a.stopPropagation(),P(!0),V(null),T(null),J(!0)},size:"sm",type:"button",variant:an?"destructive":ap||ao?"default":"outline",children:[(0,b.jsx)(c.f,{}),v(ao?"autoMergeComplete":an?"autoMergePaused":ap?"autoMerging":"autoMerge")]}),(0,b.jsx)(o.N,{onOpenChange:a=>!Q&&J(a),open:I,children:(0,b.jsxs)(o.d,{className:"sm:max-w-xl",children:[(0,b.jsxs)(o.s,{children:[(0,b.jsx)(o.F,{children:v("autoMergeTitle")}),(0,b.jsx)(o.C,{children:v("autoMergeDescription")})]}),!O&&(U||S)?(0,b.jsxs)("div",{className:"space-y-4",children:[(S||D?.lastError)&&(0,b.jsx)(l.J,{variant:"destructive",children:(0,b.jsx)(l.p,{children:S||D?.lastError})}),U&&(0,b.jsxs)(b.Fragment,{children:[D?.autoSync&&(0,b.jsx)(i.r,{state:D.state}),(0,b.jsx)(i.y,{checked:$,onChange:_,disabled:Q||ak,unavailableReason:U.autoSyncBlockedReason}),(0,b.jsxs)("div",{children:[(0,b.jsx)(q.f,{className:"mb-1.5 block",children:w("mergeType")}),(0,b.jsxs)(r.d,{disabled:Q||ak,onValueChange:a=>X(a),value:W,children:[(0,b.jsx)(r.P,{children:(0,b.jsx)(r.U,{})}),(0,b.jsx)(r.r,{children:U.availableMethods.map(a=>(0,b.jsx)(r.T,{value:a,children:w(`mergeTypes.${a}`)},a))})]})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)(q.f,{className:"mb-1.5 block",children:w("commitMessage")}),(0,b.jsx)(p.f,{disabled:Q||ak,onChange:a=>Z(a.target.value),value:Y})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)(q.f,{className:"mb-1.5 block",children:w("commitDescription")}),(0,b.jsx)(t.f,{className:"min-h-24",disabled:Q||ak,onChange:a=>ab(a.target.value),value:aa})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)(q.f,{className:"mb-1.5 block",children:w("commitEmail")}),(0,b.jsxs)(r.d,{disabled:Q||ak,onValueChange:ad,value:ac,children:[(0,b.jsx)(r.P,{children:(0,b.jsx)(r.U,{})}),(0,b.jsxs)(r.r,{children:[(0,b.jsx)(r.T,{value:B,children:w("githubDefaultEmail")}),U.commitEmails.map(a=>(0,b.jsx)(r.T,{value:a,children:a},a))]})]})]}),(0,b.jsx)(g.y,{options:U,selectedWorktreeIds:ae,onSelectedWorktreeIdsChange:af,disabled:Q||ak,deleteWorktree:ag,moveTicketToDone:ai,onDeleteWorktreeChange:ah,onMoveTicketToDoneChange:aj})]})]}):(0,b.jsxs)("div",{className:"flex items-center gap-2 py-6 text-sm text-muted-foreground",children:[(0,b.jsx)(s.f,{})," ",w("loadingMergeOptions")]}),(0,b.jsxs)(o.c,{children:[(D||G)&&(0,b.jsx)(m.K,{disabled:Q||!D&&!U?.viewerCanDisableAutoMerge,onClick:()=>void am(),type:"button",variant:"destructive",children:v("cancelAutoMerge")}),(0,b.jsx)(m.K,{disabled:Q,onClick:()=>J(!1),type:"button",variant:"outline",children:v("cancel")}),(0,b.jsxs)(m.K,{disabled:O||Q||!!(D?.autoSync&&["SYNCING","WAITING_CI","WAITING_REQUIREMENTS","MERGING"].includes(D.state))||!W||!Y.trim()||!ak&&ai&&!U?.ticketDoneStatusConfigured||($?!U?.canAutoMergeWithSync:!D&&!U?.canEnableAutoMerge),onClick:()=>void al(),type:"button",children:[Q&&(0,b.jsx)(s.f,{}),v(an?"resumeAutoMerge":"saveAutoMerge")]})]})]})})]})}a.s(["o",0,function(a){return a.worktree.sourceControlRequest?.provider==="GITLAB"?(0,b.jsx)(D,{...a}):(0,b.jsx)(E,{...a})},"b",0,function({worktree:a,conflictWorkflows:c,disabled:g,onCompleted:h,onError:i}){let j=(0,e.f)("worktrees"),k=a.autoSync,[p,t]=(0,f.useState)(!1),[w,x]=(0,f.useState)(!1),[y,z]=(0,f.useState)(!1),[B,D]=(0,f.useState)(null),[E,F]=(0,f.useState)(!1),[G,H]=(0,f.useState)(A),[I,J]=(0,f.useState)(A),K=(0,f.useMemo)(()=>c.find(a=>a.id===G),[c,G]),L=async()=>{x(!0),D(null);try{await (0,u.W)(`mutation ConfigureWorktreeAutoSync(
|
|
91
91
|
$input: ConfigureWorktreeAutoSyncInput!
|
|
92
92
|
) {
|
|
93
93
|
configureWorktreeAutoSync(input: $input) {
|
|
@@ -42,7 +42,10 @@
|
|
|
42
42
|
cacheReadTokens cacheWriteTokens toolCallCount parentRunId parentRunNumber
|
|
43
43
|
parentRun { ${b} }
|
|
44
44
|
followUps { ${b} }
|
|
45
|
-
attempts {
|
|
45
|
+
attempts {
|
|
46
|
+
id generation nativeId status resumeStrategy startedAt finishedAt supersededAt
|
|
47
|
+
sessionInfo { nativeTranscriptPath activityLogPath workingDirectory }
|
|
48
|
+
}
|
|
46
49
|
inputs {
|
|
47
50
|
id sequence kind prompt createdAt
|
|
48
51
|
attachments { id filename contentType size sha256 downloadPath createdAt }
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
workflowChanges(resourceKind: $kind, resourceId: $resourceId) { definitionsChanged }
|
|
56
56
|
}`,variables:{kind:l.target.resourceKind,resourceId:l.target.resourceId}},{next:a=>{a.data?.workflowChanges.definitionsChanged||j(l)},error:()=>void 0,complete:()=>void 0})),c??=(0,y.g)(()=>{for(let a of d.values())j(a)}),i();let m=l,n=!1;return()=>{if(!n){if(n=!0,m.consumers.delete(g),!m.consumers.size){for(let a of(m.disposeRuns?.(),d.delete(k),m.waiters))a();for(let a of(m.waiters.clear(),e))a.entries.some(f)||a.controller.abort()}d.size||(c?.(),c=void 0,void 0!==b&&clearTimeout(b),b=void 0)}}}});function G({worktreeId:a,sessionData:b,workflows:c,className:d}){let e=(0,q.f)("workflows"),f=function(a){let{resourceKind:b,resourceId:c}=a,d=(0,r.useCallback)(a=>F.subscribe({resourceKind:b,resourceId:c},a),[b,c]),e=(0,r.useCallback)(()=>F.snapshot({resourceKind:b,resourceId:c}),[b,c]),f=(0,r.useCallback)(()=>F.refresh({resourceKind:b,resourceId:c}),[b,c]);return{...(0,r.useSyncExternalStore)(d,e,()=>B),refresh:f}}({resourceKind:"WORKTREE",resourceId:a}),[g,h]=(0,r.useState)(null),[i,j]=(0,r.useState)(null),[k,l]=(0,r.useState)(null),C={};for(let a of f.activeRuns)(C[a.workflowId]??=[]).push(a);let D=async(c,d)=>{h(c.id),l(null);try{await (0,y.W)(`mutation RunWorktreeQuickAction($input: TriggerWorkflowInput!) {
|
|
57
57
|
triggerWorkflow(input: $input) { id }
|
|
58
|
-
}`,{input:{workflowId:c.id,sessionData:b,resourceKind:"WORKTREE",resourceId:a,subjectKey:`WORKTREE:${a}`,choice:d}}),await f.refresh()}catch(a){l(a instanceof Error?a.message:String(a))}finally{h(null)}},E=async(a,b)=>{j(a),l(null);try{await (0,y.W)(`mutation WorktreeQuickActionLifecycle($id: ID!) { ${"pause"===b?"pauseWorkflowRun":"cancelWorkflowRun"}(id: $id) { id status } }`,{id:a}),await f.refresh()}catch(a){l(a instanceof Error?a.message:String(a))}finally{j(null)}},H=k??f.error;return(0,m.jsxs)("div",{className:(0,z.f)("w-full space-y-2",d),children:[(0,m.jsx)("div",{className:"flex flex-wrap gap-2",children:c.map(a=>{let b=C[a.id]??[],c=b.length>0||g===a.id;return(0,m.jsxs)("div",{className:"flex",children:[b.length>0&&(0,m.jsxs)(u.G,{children:[(0,m.jsx)(u.X,{asChild:!0,children:(0,m.jsxs)(t.K,{"aria-label":e("manageRuns",{name:a.name}),className:"rounded-r-none",size:"sm",variant:"outline",children:[(0,m.jsx)(v.f,{}),b.length>1&&(0,m.jsx)("span",{className:"text-xs tabular-nums",children:b.length})]})}),(0,m.jsx)(u.L,{align:"start",className:"min-w-48",children:b.map((a,c)=>(0,m.jsxs)("div",{children:[c>0&&(0,m.jsx)(u.U,{}),b.length>1&&(0,m.jsx)(u.B,{className:"text-xs text-muted-foreground",children:e("runNumber",{number:a.displayNumber})}),["RUNNING","WAITING","BLOCKED"].includes(a.status)&&(0,m.jsxs)(u.r,{disabled:null!==i,onSelect:()=>void E(a.id,"pause"),children:[(0,m.jsx)(n.f,{}),e("pause")]}),(0,m.jsxs)(u.r,{disabled:null!==i,onSelect:()=>void E(a.id,"cancel"),children:[(0,m.jsx)(o.f,{}),e("cancelRun")]}),(0,m.jsx)(u.r,{asChild:!0,children:(0,m.jsxs)(x.L,{href:`/dashboard/workflows/runs/${a.id}`,children:[(0,m.jsx)(p.f,{}),e("quickActionView")]})})]},a.id))})]}),(0,m.jsx)(A.f,{button:(0,m.jsxs)(t.K,{className:b.length>0?"-ml-px rounded-l-none":void 0,disabled:null!==g,size:"sm",title:c?e("startAnotherRun",{name:a.name}):a.description||a.name,variant:a.quickActionButtonVariant,children:[g===a.id?(0,m.jsx)(v.f,{}):(0,m.jsx)(w.f,{iconKey:a.quickActionIconKey}),a.name]}),choices:a.triggerChoices??[],hasPlainTrigger:a.hasPlainTrigger??!1,onRun:b=>void D(a,b)})]},a.id)})}),H&&(0,m.jsx)(s.J,{variant:"destructive",children:(0,m.jsx)(s.p,{children:H})})]})}a.s(["f",0,function(a){return a.workflows.length?(0,m.jsx)(G,{...a}):null}],272088)},159087,a=>{var b=a.i(187924),c=a.i(105606),d=a.i(519783),e=a.i(415925),f=a.i(572131),g=a.i(129965),h=a.i(205956),i=a.i(16603),j=a.i(314395),k=a.i(649021),l=a.i(124348),m=a.i(699570),n=a.i(315055),o=a.i(795225),p=a.i(866718),q=a.i(870430),r=a.i(580701),s=a.i(668684),t=a.i(429246),u=a.i(460280),v=a.i(971734);let w=new Set(["SYNCING","WAITING_CI","WAITING_REQUIREMENTS","MERGING","POST_MERGE"]);function x(a){let b=a.autoMerge,c=a.pullRequest;return b&&b.worktreeId===a.id&&b.branch===a.branch&&(!c||c.headRefName===a.branch&&b.pullRequestNumber===c.number&&b.repositoryNameWithOwner.toLowerCase()===c.repositoryNameWithOwner.toLowerCase())?b:null}function y(a){let b=a.sourceControlRequest;if(b?.provider==="GITLAB")return!!(b.headRefName===a.branch&&"OPENED"===b.state&&b.mergeWhenPipelineSucceeds);let c=a.pullRequest;return!!(c?.headRefName===a.branch&&c?.state==="OPEN"&&c.autoMergeEnabled)}function z(a){let b=a.sourceControlRequest;if(b?.provider==="GITLAB"){let c=b.mergeOperation,d=b.headRefName===a.branch&&c?.worktreeId===a.id&&c.autoMerge?c:null;return d?.state==="ACTION_REQUIRED"?"paused":d?.state==="COMPLETED"&&"MERGED"===b.state?"completed":y(a)||d&&("PREPARING"===d.state||"WAITING"===d.state||w.has(d.state))?"active":"inactive"}let c=x(a);return c?.state==="ACTION_REQUIRED"?"paused":c?.state!=="COMPLETED"||a.pullRequest&&"MERGED"!==a.pullRequest.state?y(a)||c&&("ACTIVE"===c.state||w.has(c.state))?"active":"inactive":"completed"}let A="__none__",B="__github_account_default__";function C(a){return a instanceof Error?a.message:String(a)}function D({worktree:a,disabled:d,onCompleted:g}){let h,i=(0,e.f)("worktrees"),l=(0,e.f)("gitlabPages"),[n,o]=(0,f.useState)(!1),p=a.sourceControlRequest;if(!p?.projectId)return null;let q=(h=a.sourceControlRequest,h?.provider==="GITLAB"&&!h.isDraft&&"mergeable"===h.detailedMergeStatus&&!(a.gitLabPipelines??[]).some(a=>(0,k.f)(a.status))),r=z(a),s="paused"===r,t="completed"===r,u="active"===r;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(m.K,{className:u||t?"bg-emerald-600 text-white hover:bg-emerald-700":void 0,size:"sm",variant:s?"destructive":u||t?"default":"outline",disabled:t||d&&"inactive"===r,onClick:a=>{a.stopPropagation(),o(!0)},children:[(0,b.jsx)(c.f,{}),t?i("autoMergeComplete"):s?i("autoMergePaused"):u?i("autoMerging"):l(q?"merge":"autoMerge")]}),(0,b.jsx)(j.f,{mergeRequest:{projectId:p.projectId,iid:p.number,title:p.title},worktreeId:a.id,onMerged:g,open:n,onOpenChange:o})]})}function E({worktree:a,disabled:d,onCompleted:j,onError:k}){let n,v=(0,e.f)("worktrees"),w=(0,e.f)("pullRequests"),A=a.pullRequest,D=x(a),F=z(a),G=y(a),[
|
|
58
|
+
}`,{input:{workflowId:c.id,sessionData:b,resourceKind:"WORKTREE",resourceId:a,subjectKey:`WORKTREE:${a}`,choice:d}}),await f.refresh()}catch(a){l(a instanceof Error?a.message:String(a))}finally{h(null)}},E=async(a,b)=>{j(a),l(null);try{await (0,y.W)(`mutation WorktreeQuickActionLifecycle($id: ID!) { ${"pause"===b?"pauseWorkflowRun":"cancelWorkflowRun"}(id: $id) { id status } }`,{id:a}),await f.refresh()}catch(a){l(a instanceof Error?a.message:String(a))}finally{j(null)}},H=k??f.error;return(0,m.jsxs)("div",{className:(0,z.f)("w-full space-y-2",d),children:[(0,m.jsx)("div",{className:"flex flex-wrap gap-2",children:c.map(a=>{let b=C[a.id]??[],c=b.length>0||g===a.id;return(0,m.jsxs)("div",{className:"flex",children:[b.length>0&&(0,m.jsxs)(u.G,{children:[(0,m.jsx)(u.X,{asChild:!0,children:(0,m.jsxs)(t.K,{"aria-label":e("manageRuns",{name:a.name}),className:"rounded-r-none",size:"sm",variant:"outline",children:[(0,m.jsx)(v.f,{}),b.length>1&&(0,m.jsx)("span",{className:"text-xs tabular-nums",children:b.length})]})}),(0,m.jsx)(u.L,{align:"start",className:"min-w-48",children:b.map((a,c)=>(0,m.jsxs)("div",{children:[c>0&&(0,m.jsx)(u.U,{}),b.length>1&&(0,m.jsx)(u.B,{className:"text-xs text-muted-foreground",children:e("runNumber",{number:a.displayNumber})}),["RUNNING","WAITING","BLOCKED"].includes(a.status)&&(0,m.jsxs)(u.r,{disabled:null!==i,onSelect:()=>void E(a.id,"pause"),children:[(0,m.jsx)(n.f,{}),e("pause")]}),(0,m.jsxs)(u.r,{disabled:null!==i,onSelect:()=>void E(a.id,"cancel"),children:[(0,m.jsx)(o.f,{}),e("cancelRun")]}),(0,m.jsx)(u.r,{asChild:!0,children:(0,m.jsxs)(x.L,{href:`/dashboard/workflows/runs/${a.id}`,children:[(0,m.jsx)(p.f,{}),e("quickActionView")]})})]},a.id))})]}),(0,m.jsx)(A.f,{button:(0,m.jsxs)(t.K,{className:b.length>0?"-ml-px rounded-l-none":void 0,disabled:null!==g,size:"sm",title:c?e("startAnotherRun",{name:a.name}):a.description||a.name,variant:a.quickActionButtonVariant,children:[g===a.id?(0,m.jsx)(v.f,{}):(0,m.jsx)(w.f,{iconKey:a.quickActionIconKey}),a.name]}),choices:a.triggerChoices??[],hasPlainTrigger:a.hasPlainTrigger??!1,onRun:b=>void D(a,b)})]},a.id)})}),H&&(0,m.jsx)(s.J,{variant:"destructive",children:(0,m.jsx)(s.p,{children:H})})]})}a.s(["f",0,function(a){return a.workflows.length?(0,m.jsx)(G,{...a}):null}],272088)},159087,a=>{var b=a.i(187924),c=a.i(105606),d=a.i(519783),e=a.i(415925),f=a.i(572131),g=a.i(129965),h=a.i(205956),i=a.i(16603),j=a.i(314395),k=a.i(649021),l=a.i(124348),m=a.i(699570),n=a.i(315055),o=a.i(795225),p=a.i(866718),q=a.i(870430),r=a.i(580701),s=a.i(668684),t=a.i(429246),u=a.i(460280),v=a.i(971734);let w=new Set(["SYNCING","WAITING_CI","WAITING_REQUIREMENTS","MERGING","POST_MERGE"]);function x(a){let b=a.autoMerge,c=a.pullRequest;return b&&b.worktreeId===a.id&&b.branch===a.branch&&(!c||c.headRefName===a.branch&&b.pullRequestNumber===c.number&&b.repositoryNameWithOwner.toLowerCase()===c.repositoryNameWithOwner.toLowerCase())?b:null}function y(a){let b=a.sourceControlRequest;if(b?.provider==="GITLAB")return!!(b.headRefName===a.branch&&"OPENED"===b.state&&b.mergeWhenPipelineSucceeds);let c=a.pullRequest;return!!(c?.headRefName===a.branch&&c?.state==="OPEN"&&c.autoMergeEnabled)}function z(a){let b=a.sourceControlRequest;if(b?.provider==="GITLAB"){let c=b.mergeOperation,d=b.headRefName===a.branch&&c?.worktreeId===a.id&&c.autoMerge?c:null;return d?.state==="ACTION_REQUIRED"?"paused":d?.state==="COMPLETED"&&"MERGED"===b.state?"completed":y(a)||d&&("PREPARING"===d.state||"WAITING"===d.state||w.has(d.state))?"active":"inactive"}let c=x(a);return c?.state==="ACTION_REQUIRED"?"paused":c?.state!=="COMPLETED"||a.pullRequest&&"MERGED"!==a.pullRequest.state?y(a)||c&&("ACTIVE"===c.state||w.has(c.state))?"active":"inactive":"completed"}let A="__none__",B="__github_account_default__";function C(a){return a instanceof Error?a.message:String(a)}function D({worktree:a,disabled:d,onCompleted:g}){let h,i=(0,e.f)("worktrees"),l=(0,e.f)("gitlabPages"),[n,o]=(0,f.useState)(!1),p=a.sourceControlRequest;if(!p?.projectId)return null;let q=(h=a.sourceControlRequest,h?.provider==="GITLAB"&&!h.isDraft&&"mergeable"===h.detailedMergeStatus&&!(a.gitLabPipelines??[]).some(a=>(0,k.f)(a.status))),r=z(a),s="paused"===r,t="completed"===r,u="active"===r,v=q&&"inactive"===r;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(m.K,{className:u||t||v?"bg-emerald-600 text-white hover:bg-emerald-700":void 0,size:"sm",variant:s?"destructive":u||t||v?"default":"outline",disabled:t||d&&"inactive"===r,onClick:a=>{a.stopPropagation(),o(!0)},children:[(0,b.jsx)(c.f,{}),t?i("autoMergeComplete"):s?i("autoMergePaused"):u?i("autoMerging"):l(q?"merge":"autoMerge")]}),(0,b.jsx)(j.f,{mergeRequest:{projectId:p.projectId,iid:p.number,title:p.title},worktreeId:a.id,onMerged:g,open:n,onOpenChange:o})]})}function E({worktree:a,disabled:d,onCompleted:j,onError:k}){let n,v=(0,e.f)("worktrees"),w=(0,e.f)("pullRequests"),A=a.pullRequest,D=x(a),F=z(a),G=y(a),H=!!(n=a.pullRequest)&&"OPEN"===n.state&&!n.isDraft&&"MERGEABLE"===n.mergeable&&["CLEAN","HAS_HOOKS","UNSTABLE"].includes(n.mergeStateStatus),[I,J]=(0,f.useState)(!1),[K,L]=(0,f.useState)(!1),M=A?.repositoryNameWithOwner,N=A?.number,[O,P]=(0,f.useState)(!1),[Q,R]=(0,f.useState)(!1),[S,T]=(0,f.useState)(null),[U,V]=(0,f.useState)(null),[W,X]=(0,f.useState)(""),[Y,Z]=(0,f.useState)(""),[$,_]=(0,f.useState)(!1),[aa,ab]=(0,f.useState)(""),[ac,ad]=(0,f.useState)(B),[ae,af]=(0,f.useState)([]),[ag,ah]=(0,f.useState)(!1),[ai,aj]=(0,f.useState)(!1);if((0,f.useEffect)(()=>{if(!I||!M||!N)return;let b=!0,[c="",d=""]=M.split("/",2),e=window.setTimeout(()=>{P(!0),V(null),T(null),(0,u.W)(`query GitHubPullRequestMergeOptions(
|
|
59
59
|
$owner: String!
|
|
60
60
|
$name: String!
|
|
61
61
|
$number: Int!
|
|
@@ -74,9 +74,9 @@
|
|
|
74
74
|
canEnableAutoMerge autoMergeEnabled viewerCanDisableAutoMerge canAutoMergeWithSync autoSyncBlockedReason defaultAutoSync
|
|
75
75
|
mergeStateStatus headRefOid blockedReason
|
|
76
76
|
}
|
|
77
|
-
}`,{owner:c,name:d,number:
|
|
77
|
+
}`,{owner:c,name:d,number:N,worktreeId:a.id}).then(a=>{if(!b)return;let c=a.githubPullRequestMergeOptions;V(c),_(c.defaultAutoSync??!1),af(c.baseBranchUpdateOptions?.selectedWorktreeIds??[]),X(c.defaultMethod??c.availableMethods[0]??""),Z(c.defaultCommitHeadline),ab(c.defaultCommitBody),ad(c.defaultCommitEmail??B),ah(!!(c.canDeleteWorktree&&c.defaultDeleteWorktree)),aj(!!(c.ticketKey&&c.defaultMoveTicketToDone))}).catch(a=>b&&T(C(a))).finally(()=>b&&P(!1))},0);return()=>{b=!1,window.clearTimeout(e)}},[I,M,N,a.id]),A&&(K||!I&&!D&&!G&&H))return(0,b.jsx)(h.f,{className:H?"bg-emerald-600 text-white hover:bg-emerald-700":void 0,onMerged:()=>j(),onOpenChange:L,open:K,worktreeId:a.id,pullRequest:A,requestSource:"WORKTREE_AUTOMATION",variant:H?"default":"outline"});let ak=A?.state==="MERGED"&&!!D,al=async()=>{if(A&&W&&Y.trim()&&(ak||!ai||U?.ticketDoneStatusConfigured)){R(!0),T(null);try{if(ak){await (0,u.W)(`mutation RetryWorktreeAutoMerge($worktreeId: ID!) {
|
|
78
78
|
retryWorktreeAutoMerge(worktreeId: $worktreeId) { worktreeId state }
|
|
79
|
-
}`,{worktreeId:a.id}),k(null),
|
|
79
|
+
}`,{worktreeId:a.id}),k(null),J(!1),await j();return}await (0,u.W)(`mutation ConfigureWorktreeAutoMerge(
|
|
80
80
|
$input: ConfigureWorktreeAutoMergeInput!
|
|
81
81
|
) {
|
|
82
82
|
configureWorktreeAutoMerge(input: $input) {
|
|
@@ -85,9 +85,9 @@
|
|
|
85
85
|
moveTicketToDone ticketKey lastError updatedAt
|
|
86
86
|
autoSync
|
|
87
87
|
}
|
|
88
|
-
}`,{input:{worktreeId:a.id
|
|
88
|
+
}`,{input:{worktreeId:a.id,...$?{autoSync:!0,expectedHeadSha:U?.headRefOid}:{},repositoryNameWithOwner:A.repositoryNameWithOwner,pullRequestNumber:A.number,method:W,commitHeadline:Y,commitBody:aa,authorEmail:ac===B?null:ac,...ae.length&&U?.baseBranchUpdateOptions?.destinationBaseBranch?{baseBranchUpdate:{worktreeIds:ae,destinationBaseBranch:U.baseBranchUpdateOptions.destinationBaseBranch}}:{},deleteWorktree:ag,moveTicketToDone:ai}}),k(null),J(!1),await j()}catch(a){T(C(a))}finally{R(!1)}}},am=async()=>{R(!0),T(null);try{await (0,u.W)(`mutation CancelWorktreeAutoMerge($worktreeId: ID!) {
|
|
89
89
|
cancelWorktreeAutoMerge(worktreeId: $worktreeId)
|
|
90
|
-
}`,{worktreeId:a.id}),k(null),
|
|
90
|
+
}`,{worktreeId:a.id}),k(null),J(!1),await j()}catch(a){T(C(a))}finally{R(!1)}},an="paused"===F,ao="completed"===F,ap="active"===F;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(m.K,{className:ap||ao?"bg-emerald-600 text-white hover:bg-emerald-700":void 0,disabled:!A||d&&"inactive"===F||ao,onClick:a=>{a.stopPropagation(),P(!0),V(null),T(null),J(!0)},size:"sm",type:"button",variant:an?"destructive":ap||ao?"default":"outline",children:[(0,b.jsx)(c.f,{}),v(ao?"autoMergeComplete":an?"autoMergePaused":ap?"autoMerging":"autoMerge")]}),(0,b.jsx)(o.N,{onOpenChange:a=>!Q&&J(a),open:I,children:(0,b.jsxs)(o.d,{className:"sm:max-w-xl",children:[(0,b.jsxs)(o.s,{children:[(0,b.jsx)(o.F,{children:v("autoMergeTitle")}),(0,b.jsx)(o.C,{children:v("autoMergeDescription")})]}),!O&&(U||S)?(0,b.jsxs)("div",{className:"space-y-4",children:[(S||D?.lastError)&&(0,b.jsx)(l.J,{variant:"destructive",children:(0,b.jsx)(l.p,{children:S||D?.lastError})}),U&&(0,b.jsxs)(b.Fragment,{children:[D?.autoSync&&(0,b.jsx)(i.r,{state:D.state}),(0,b.jsx)(i.y,{checked:$,onChange:_,disabled:Q||ak,unavailableReason:U.autoSyncBlockedReason}),(0,b.jsxs)("div",{children:[(0,b.jsx)(q.f,{className:"mb-1.5 block",children:w("mergeType")}),(0,b.jsxs)(r.d,{disabled:Q||ak,onValueChange:a=>X(a),value:W,children:[(0,b.jsx)(r.P,{children:(0,b.jsx)(r.U,{})}),(0,b.jsx)(r.r,{children:U.availableMethods.map(a=>(0,b.jsx)(r.T,{value:a,children:w(`mergeTypes.${a}`)},a))})]})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)(q.f,{className:"mb-1.5 block",children:w("commitMessage")}),(0,b.jsx)(p.f,{disabled:Q||ak,onChange:a=>Z(a.target.value),value:Y})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)(q.f,{className:"mb-1.5 block",children:w("commitDescription")}),(0,b.jsx)(t.f,{className:"min-h-24",disabled:Q||ak,onChange:a=>ab(a.target.value),value:aa})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)(q.f,{className:"mb-1.5 block",children:w("commitEmail")}),(0,b.jsxs)(r.d,{disabled:Q||ak,onValueChange:ad,value:ac,children:[(0,b.jsx)(r.P,{children:(0,b.jsx)(r.U,{})}),(0,b.jsxs)(r.r,{children:[(0,b.jsx)(r.T,{value:B,children:w("githubDefaultEmail")}),U.commitEmails.map(a=>(0,b.jsx)(r.T,{value:a,children:a},a))]})]})]}),(0,b.jsx)(g.y,{options:U,selectedWorktreeIds:ae,onSelectedWorktreeIdsChange:af,disabled:Q||ak,deleteWorktree:ag,moveTicketToDone:ai,onDeleteWorktreeChange:ah,onMoveTicketToDoneChange:aj})]})]}):(0,b.jsxs)("div",{className:"flex items-center gap-2 py-6 text-sm text-muted-foreground",children:[(0,b.jsx)(s.f,{})," ",w("loadingMergeOptions")]}),(0,b.jsxs)(o.c,{children:[(D||G)&&(0,b.jsx)(m.K,{disabled:Q||!D&&!U?.viewerCanDisableAutoMerge,onClick:()=>void am(),type:"button",variant:"destructive",children:v("cancelAutoMerge")}),(0,b.jsx)(m.K,{disabled:Q,onClick:()=>J(!1),type:"button",variant:"outline",children:v("cancel")}),(0,b.jsxs)(m.K,{disabled:O||Q||!!(D?.autoSync&&["SYNCING","WAITING_CI","WAITING_REQUIREMENTS","MERGING"].includes(D.state))||!W||!Y.trim()||!ak&&ai&&!U?.ticketDoneStatusConfigured||($?!U?.canAutoMergeWithSync:!D&&!U?.canEnableAutoMerge),onClick:()=>void al(),type:"button",children:[Q&&(0,b.jsx)(s.f,{}),v(an?"resumeAutoMerge":"saveAutoMerge")]})]})]})})]})}a.s(["o",0,function(a){return a.worktree.sourceControlRequest?.provider==="GITLAB"?(0,b.jsx)(D,{...a}):(0,b.jsx)(E,{...a})},"b",0,function({worktree:a,conflictWorkflows:c,disabled:g,onCompleted:h,onError:i}){let j=(0,e.f)("worktrees"),k=a.autoSync,[p,t]=(0,f.useState)(!1),[w,x]=(0,f.useState)(!1),[y,z]=(0,f.useState)(!1),[B,D]=(0,f.useState)(null),[E,F]=(0,f.useState)(!1),[G,H]=(0,f.useState)(A),[I,J]=(0,f.useState)(A),K=(0,f.useMemo)(()=>c.find(a=>a.id===G),[c,G]),L=async()=>{x(!0),D(null);try{await (0,u.W)(`mutation ConfigureWorktreeAutoSync(
|
|
91
91
|
$input: ConfigureWorktreeAutoSyncInput!
|
|
92
92
|
) {
|
|
93
93
|
configureWorktreeAutoSync(input: $input) {
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
workflowChanges(resourceKind: $kind, resourceId: $resourceId) { definitionsChanged }
|
|
56
56
|
}`,variables:{kind:l.target.resourceKind,resourceId:l.target.resourceId}},{next:a=>{a.data?.workflowChanges.definitionsChanged||j(l)},error:()=>void 0,complete:()=>void 0})),c??=(0,y.g)(()=>{for(let a of d.values())j(a)}),i();let m=l,n=!1;return()=>{if(!n){if(n=!0,m.consumers.delete(g),!m.consumers.size){for(let a of(m.disposeRuns?.(),d.delete(k),m.waiters))a();for(let a of(m.waiters.clear(),e))a.entries.some(f)||a.controller.abort()}d.size||(c?.(),c=void 0,void 0!==b&&clearTimeout(b),b=void 0)}}}});function G({worktreeId:a,sessionData:b,workflows:c,className:d}){let e=(0,q.f)("workflows"),f=function(a){let{resourceKind:b,resourceId:c}=a,d=(0,r.useCallback)(a=>F.subscribe({resourceKind:b,resourceId:c},a),[b,c]),e=(0,r.useCallback)(()=>F.snapshot({resourceKind:b,resourceId:c}),[b,c]),f=(0,r.useCallback)(()=>F.refresh({resourceKind:b,resourceId:c}),[b,c]);return{...(0,r.useSyncExternalStore)(d,e,()=>B),refresh:f}}({resourceKind:"WORKTREE",resourceId:a}),[g,h]=(0,r.useState)(null),[i,j]=(0,r.useState)(null),[k,l]=(0,r.useState)(null),C={};for(let a of f.activeRuns)(C[a.workflowId]??=[]).push(a);let D=async(c,d)=>{h(c.id),l(null);try{await (0,y.W)(`mutation RunWorktreeQuickAction($input: TriggerWorkflowInput!) {
|
|
57
57
|
triggerWorkflow(input: $input) { id }
|
|
58
|
-
}`,{input:{workflowId:c.id,sessionData:b,resourceKind:"WORKTREE",resourceId:a,subjectKey:`WORKTREE:${a}`,choice:d}}),await f.refresh()}catch(a){l(a instanceof Error?a.message:String(a))}finally{h(null)}},E=async(a,b)=>{j(a),l(null);try{await (0,y.W)(`mutation WorktreeQuickActionLifecycle($id: ID!) { ${"pause"===b?"pauseWorkflowRun":"cancelWorkflowRun"}(id: $id) { id status } }`,{id:a}),await f.refresh()}catch(a){l(a instanceof Error?a.message:String(a))}finally{j(null)}},H=k??f.error;return(0,m.jsxs)("div",{className:(0,z.f)("w-full space-y-2",d),children:[(0,m.jsx)("div",{className:"flex flex-wrap gap-2",children:c.map(a=>{let b=C[a.id]??[],c=b.length>0||g===a.id;return(0,m.jsxs)("div",{className:"flex",children:[b.length>0&&(0,m.jsxs)(u.G,{children:[(0,m.jsx)(u.X,{asChild:!0,children:(0,m.jsxs)(t.K,{"aria-label":e("manageRuns",{name:a.name}),className:"rounded-r-none",size:"sm",variant:"outline",children:[(0,m.jsx)(v.f,{}),b.length>1&&(0,m.jsx)("span",{className:"text-xs tabular-nums",children:b.length})]})}),(0,m.jsx)(u.L,{align:"start",className:"min-w-48",children:b.map((a,c)=>(0,m.jsxs)("div",{children:[c>0&&(0,m.jsx)(u.U,{}),b.length>1&&(0,m.jsx)(u.B,{className:"text-xs text-muted-foreground",children:e("runNumber",{number:a.displayNumber})}),["RUNNING","WAITING","BLOCKED"].includes(a.status)&&(0,m.jsxs)(u.r,{disabled:null!==i,onSelect:()=>void E(a.id,"pause"),children:[(0,m.jsx)(n.f,{}),e("pause")]}),(0,m.jsxs)(u.r,{disabled:null!==i,onSelect:()=>void E(a.id,"cancel"),children:[(0,m.jsx)(o.f,{}),e("cancelRun")]}),(0,m.jsx)(u.r,{asChild:!0,children:(0,m.jsxs)(x.L,{href:`/dashboard/workflows/runs/${a.id}`,children:[(0,m.jsx)(p.f,{}),e("quickActionView")]})})]},a.id))})]}),(0,m.jsx)(A.f,{button:(0,m.jsxs)(t.K,{className:b.length>0?"-ml-px rounded-l-none":void 0,disabled:null!==g,size:"sm",title:c?e("startAnotherRun",{name:a.name}):a.description||a.name,variant:a.quickActionButtonVariant,children:[g===a.id?(0,m.jsx)(v.f,{}):(0,m.jsx)(w.f,{iconKey:a.quickActionIconKey}),a.name]}),choices:a.triggerChoices??[],hasPlainTrigger:a.hasPlainTrigger??!1,onRun:b=>void D(a,b)})]},a.id)})}),H&&(0,m.jsx)(s.J,{variant:"destructive",children:(0,m.jsx)(s.p,{children:H})})]})}a.s(["f",0,function(a){return a.workflows.length?(0,m.jsx)(G,{...a}):null}],272088)},159087,a=>{var b=a.i(187924),c=a.i(105606),d=a.i(519783),e=a.i(415925),f=a.i(572131),g=a.i(129965),h=a.i(205956),i=a.i(16603),j=a.i(314395),k=a.i(649021),l=a.i(124348),m=a.i(699570),n=a.i(315055),o=a.i(795225),p=a.i(866718),q=a.i(870430),r=a.i(580701),s=a.i(668684),t=a.i(429246),u=a.i(460280),v=a.i(971734);let w=new Set(["SYNCING","WAITING_CI","WAITING_REQUIREMENTS","MERGING","POST_MERGE"]);function x(a){let b=a.autoMerge,c=a.pullRequest;return b&&b.worktreeId===a.id&&b.branch===a.branch&&(!c||c.headRefName===a.branch&&b.pullRequestNumber===c.number&&b.repositoryNameWithOwner.toLowerCase()===c.repositoryNameWithOwner.toLowerCase())?b:null}function y(a){let b=a.sourceControlRequest;if(b?.provider==="GITLAB")return!!(b.headRefName===a.branch&&"OPENED"===b.state&&b.mergeWhenPipelineSucceeds);let c=a.pullRequest;return!!(c?.headRefName===a.branch&&c?.state==="OPEN"&&c.autoMergeEnabled)}function z(a){let b=a.sourceControlRequest;if(b?.provider==="GITLAB"){let c=b.mergeOperation,d=b.headRefName===a.branch&&c?.worktreeId===a.id&&c.autoMerge?c:null;return d?.state==="ACTION_REQUIRED"?"paused":d?.state==="COMPLETED"&&"MERGED"===b.state?"completed":y(a)||d&&("PREPARING"===d.state||"WAITING"===d.state||w.has(d.state))?"active":"inactive"}let c=x(a);return c?.state==="ACTION_REQUIRED"?"paused":c?.state!=="COMPLETED"||a.pullRequest&&"MERGED"!==a.pullRequest.state?y(a)||c&&("ACTIVE"===c.state||w.has(c.state))?"active":"inactive":"completed"}let A="__none__",B="__github_account_default__";function C(a){return a instanceof Error?a.message:String(a)}function D({worktree:a,disabled:d,onCompleted:g}){let h,i=(0,e.f)("worktrees"),l=(0,e.f)("gitlabPages"),[n,o]=(0,f.useState)(!1),p=a.sourceControlRequest;if(!p?.projectId)return null;let q=(h=a.sourceControlRequest,h?.provider==="GITLAB"&&!h.isDraft&&"mergeable"===h.detailedMergeStatus&&!(a.gitLabPipelines??[]).some(a=>(0,k.f)(a.status))),r=z(a),s="paused"===r,t="completed"===r,u="active"===r;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(m.K,{className:u||t?"bg-emerald-600 text-white hover:bg-emerald-700":void 0,size:"sm",variant:s?"destructive":u||t?"default":"outline",disabled:t||d&&"inactive"===r,onClick:a=>{a.stopPropagation(),o(!0)},children:[(0,b.jsx)(c.f,{}),t?i("autoMergeComplete"):s?i("autoMergePaused"):u?i("autoMerging"):l(q?"merge":"autoMerge")]}),(0,b.jsx)(j.f,{mergeRequest:{projectId:p.projectId,iid:p.number,title:p.title},worktreeId:a.id,onMerged:g,open:n,onOpenChange:o})]})}function E({worktree:a,disabled:d,onCompleted:j,onError:k}){let n,v=(0,e.f)("worktrees"),w=(0,e.f)("pullRequests"),A=a.pullRequest,D=x(a),F=z(a),G=y(a),[
|
|
58
|
+
}`,{input:{workflowId:c.id,sessionData:b,resourceKind:"WORKTREE",resourceId:a,subjectKey:`WORKTREE:${a}`,choice:d}}),await f.refresh()}catch(a){l(a instanceof Error?a.message:String(a))}finally{h(null)}},E=async(a,b)=>{j(a),l(null);try{await (0,y.W)(`mutation WorktreeQuickActionLifecycle($id: ID!) { ${"pause"===b?"pauseWorkflowRun":"cancelWorkflowRun"}(id: $id) { id status } }`,{id:a}),await f.refresh()}catch(a){l(a instanceof Error?a.message:String(a))}finally{j(null)}},H=k??f.error;return(0,m.jsxs)("div",{className:(0,z.f)("w-full space-y-2",d),children:[(0,m.jsx)("div",{className:"flex flex-wrap gap-2",children:c.map(a=>{let b=C[a.id]??[],c=b.length>0||g===a.id;return(0,m.jsxs)("div",{className:"flex",children:[b.length>0&&(0,m.jsxs)(u.G,{children:[(0,m.jsx)(u.X,{asChild:!0,children:(0,m.jsxs)(t.K,{"aria-label":e("manageRuns",{name:a.name}),className:"rounded-r-none",size:"sm",variant:"outline",children:[(0,m.jsx)(v.f,{}),b.length>1&&(0,m.jsx)("span",{className:"text-xs tabular-nums",children:b.length})]})}),(0,m.jsx)(u.L,{align:"start",className:"min-w-48",children:b.map((a,c)=>(0,m.jsxs)("div",{children:[c>0&&(0,m.jsx)(u.U,{}),b.length>1&&(0,m.jsx)(u.B,{className:"text-xs text-muted-foreground",children:e("runNumber",{number:a.displayNumber})}),["RUNNING","WAITING","BLOCKED"].includes(a.status)&&(0,m.jsxs)(u.r,{disabled:null!==i,onSelect:()=>void E(a.id,"pause"),children:[(0,m.jsx)(n.f,{}),e("pause")]}),(0,m.jsxs)(u.r,{disabled:null!==i,onSelect:()=>void E(a.id,"cancel"),children:[(0,m.jsx)(o.f,{}),e("cancelRun")]}),(0,m.jsx)(u.r,{asChild:!0,children:(0,m.jsxs)(x.L,{href:`/dashboard/workflows/runs/${a.id}`,children:[(0,m.jsx)(p.f,{}),e("quickActionView")]})})]},a.id))})]}),(0,m.jsx)(A.f,{button:(0,m.jsxs)(t.K,{className:b.length>0?"-ml-px rounded-l-none":void 0,disabled:null!==g,size:"sm",title:c?e("startAnotherRun",{name:a.name}):a.description||a.name,variant:a.quickActionButtonVariant,children:[g===a.id?(0,m.jsx)(v.f,{}):(0,m.jsx)(w.f,{iconKey:a.quickActionIconKey}),a.name]}),choices:a.triggerChoices??[],hasPlainTrigger:a.hasPlainTrigger??!1,onRun:b=>void D(a,b)})]},a.id)})}),H&&(0,m.jsx)(s.J,{variant:"destructive",children:(0,m.jsx)(s.p,{children:H})})]})}a.s(["f",0,function(a){return a.workflows.length?(0,m.jsx)(G,{...a}):null}],272088)},159087,a=>{var b=a.i(187924),c=a.i(105606),d=a.i(519783),e=a.i(415925),f=a.i(572131),g=a.i(129965),h=a.i(205956),i=a.i(16603),j=a.i(314395),k=a.i(649021),l=a.i(124348),m=a.i(699570),n=a.i(315055),o=a.i(795225),p=a.i(866718),q=a.i(870430),r=a.i(580701),s=a.i(668684),t=a.i(429246),u=a.i(460280),v=a.i(971734);let w=new Set(["SYNCING","WAITING_CI","WAITING_REQUIREMENTS","MERGING","POST_MERGE"]);function x(a){let b=a.autoMerge,c=a.pullRequest;return b&&b.worktreeId===a.id&&b.branch===a.branch&&(!c||c.headRefName===a.branch&&b.pullRequestNumber===c.number&&b.repositoryNameWithOwner.toLowerCase()===c.repositoryNameWithOwner.toLowerCase())?b:null}function y(a){let b=a.sourceControlRequest;if(b?.provider==="GITLAB")return!!(b.headRefName===a.branch&&"OPENED"===b.state&&b.mergeWhenPipelineSucceeds);let c=a.pullRequest;return!!(c?.headRefName===a.branch&&c?.state==="OPEN"&&c.autoMergeEnabled)}function z(a){let b=a.sourceControlRequest;if(b?.provider==="GITLAB"){let c=b.mergeOperation,d=b.headRefName===a.branch&&c?.worktreeId===a.id&&c.autoMerge?c:null;return d?.state==="ACTION_REQUIRED"?"paused":d?.state==="COMPLETED"&&"MERGED"===b.state?"completed":y(a)||d&&("PREPARING"===d.state||"WAITING"===d.state||w.has(d.state))?"active":"inactive"}let c=x(a);return c?.state==="ACTION_REQUIRED"?"paused":c?.state!=="COMPLETED"||a.pullRequest&&"MERGED"!==a.pullRequest.state?y(a)||c&&("ACTIVE"===c.state||w.has(c.state))?"active":"inactive":"completed"}let A="__none__",B="__github_account_default__";function C(a){return a instanceof Error?a.message:String(a)}function D({worktree:a,disabled:d,onCompleted:g}){let h,i=(0,e.f)("worktrees"),l=(0,e.f)("gitlabPages"),[n,o]=(0,f.useState)(!1),p=a.sourceControlRequest;if(!p?.projectId)return null;let q=(h=a.sourceControlRequest,h?.provider==="GITLAB"&&!h.isDraft&&"mergeable"===h.detailedMergeStatus&&!(a.gitLabPipelines??[]).some(a=>(0,k.f)(a.status))),r=z(a),s="paused"===r,t="completed"===r,u="active"===r,v=q&&"inactive"===r;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(m.K,{className:u||t||v?"bg-emerald-600 text-white hover:bg-emerald-700":void 0,size:"sm",variant:s?"destructive":u||t||v?"default":"outline",disabled:t||d&&"inactive"===r,onClick:a=>{a.stopPropagation(),o(!0)},children:[(0,b.jsx)(c.f,{}),t?i("autoMergeComplete"):s?i("autoMergePaused"):u?i("autoMerging"):l(q?"merge":"autoMerge")]}),(0,b.jsx)(j.f,{mergeRequest:{projectId:p.projectId,iid:p.number,title:p.title},worktreeId:a.id,onMerged:g,open:n,onOpenChange:o})]})}function E({worktree:a,disabled:d,onCompleted:j,onError:k}){let n,v=(0,e.f)("worktrees"),w=(0,e.f)("pullRequests"),A=a.pullRequest,D=x(a),F=z(a),G=y(a),H=!!(n=a.pullRequest)&&"OPEN"===n.state&&!n.isDraft&&"MERGEABLE"===n.mergeable&&["CLEAN","HAS_HOOKS","UNSTABLE"].includes(n.mergeStateStatus),[I,J]=(0,f.useState)(!1),[K,L]=(0,f.useState)(!1),M=A?.repositoryNameWithOwner,N=A?.number,[O,P]=(0,f.useState)(!1),[Q,R]=(0,f.useState)(!1),[S,T]=(0,f.useState)(null),[U,V]=(0,f.useState)(null),[W,X]=(0,f.useState)(""),[Y,Z]=(0,f.useState)(""),[$,_]=(0,f.useState)(!1),[aa,ab]=(0,f.useState)(""),[ac,ad]=(0,f.useState)(B),[ae,af]=(0,f.useState)([]),[ag,ah]=(0,f.useState)(!1),[ai,aj]=(0,f.useState)(!1);if((0,f.useEffect)(()=>{if(!I||!M||!N)return;let b=!0,[c="",d=""]=M.split("/",2),e=window.setTimeout(()=>{P(!0),V(null),T(null),(0,u.W)(`query GitHubPullRequestMergeOptions(
|
|
59
59
|
$owner: String!
|
|
60
60
|
$name: String!
|
|
61
61
|
$number: Int!
|
|
@@ -74,9 +74,9 @@
|
|
|
74
74
|
canEnableAutoMerge autoMergeEnabled viewerCanDisableAutoMerge canAutoMergeWithSync autoSyncBlockedReason defaultAutoSync
|
|
75
75
|
mergeStateStatus headRefOid blockedReason
|
|
76
76
|
}
|
|
77
|
-
}`,{owner:c,name:d,number:
|
|
77
|
+
}`,{owner:c,name:d,number:N,worktreeId:a.id}).then(a=>{if(!b)return;let c=a.githubPullRequestMergeOptions;V(c),_(c.defaultAutoSync??!1),af(c.baseBranchUpdateOptions?.selectedWorktreeIds??[]),X(c.defaultMethod??c.availableMethods[0]??""),Z(c.defaultCommitHeadline),ab(c.defaultCommitBody),ad(c.defaultCommitEmail??B),ah(!!(c.canDeleteWorktree&&c.defaultDeleteWorktree)),aj(!!(c.ticketKey&&c.defaultMoveTicketToDone))}).catch(a=>b&&T(C(a))).finally(()=>b&&P(!1))},0);return()=>{b=!1,window.clearTimeout(e)}},[I,M,N,a.id]),A&&(K||!I&&!D&&!G&&H))return(0,b.jsx)(h.f,{className:H?"bg-emerald-600 text-white hover:bg-emerald-700":void 0,onMerged:()=>j(),onOpenChange:L,open:K,worktreeId:a.id,pullRequest:A,requestSource:"WORKTREE_AUTOMATION",variant:H?"default":"outline"});let ak=A?.state==="MERGED"&&!!D,al=async()=>{if(A&&W&&Y.trim()&&(ak||!ai||U?.ticketDoneStatusConfigured)){R(!0),T(null);try{if(ak){await (0,u.W)(`mutation RetryWorktreeAutoMerge($worktreeId: ID!) {
|
|
78
78
|
retryWorktreeAutoMerge(worktreeId: $worktreeId) { worktreeId state }
|
|
79
|
-
}`,{worktreeId:a.id}),k(null),
|
|
79
|
+
}`,{worktreeId:a.id}),k(null),J(!1),await j();return}await (0,u.W)(`mutation ConfigureWorktreeAutoMerge(
|
|
80
80
|
$input: ConfigureWorktreeAutoMergeInput!
|
|
81
81
|
) {
|
|
82
82
|
configureWorktreeAutoMerge(input: $input) {
|
|
@@ -85,9 +85,9 @@
|
|
|
85
85
|
moveTicketToDone ticketKey lastError updatedAt
|
|
86
86
|
autoSync
|
|
87
87
|
}
|
|
88
|
-
}`,{input:{worktreeId:a.id
|
|
88
|
+
}`,{input:{worktreeId:a.id,...$?{autoSync:!0,expectedHeadSha:U?.headRefOid}:{},repositoryNameWithOwner:A.repositoryNameWithOwner,pullRequestNumber:A.number,method:W,commitHeadline:Y,commitBody:aa,authorEmail:ac===B?null:ac,...ae.length&&U?.baseBranchUpdateOptions?.destinationBaseBranch?{baseBranchUpdate:{worktreeIds:ae,destinationBaseBranch:U.baseBranchUpdateOptions.destinationBaseBranch}}:{},deleteWorktree:ag,moveTicketToDone:ai}}),k(null),J(!1),await j()}catch(a){T(C(a))}finally{R(!1)}}},am=async()=>{R(!0),T(null);try{await (0,u.W)(`mutation CancelWorktreeAutoMerge($worktreeId: ID!) {
|
|
89
89
|
cancelWorktreeAutoMerge(worktreeId: $worktreeId)
|
|
90
|
-
}`,{worktreeId:a.id}),k(null),
|
|
90
|
+
}`,{worktreeId:a.id}),k(null),J(!1),await j()}catch(a){T(C(a))}finally{R(!1)}},an="paused"===F,ao="completed"===F,ap="active"===F;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(m.K,{className:ap||ao?"bg-emerald-600 text-white hover:bg-emerald-700":void 0,disabled:!A||d&&"inactive"===F||ao,onClick:a=>{a.stopPropagation(),P(!0),V(null),T(null),J(!0)},size:"sm",type:"button",variant:an?"destructive":ap||ao?"default":"outline",children:[(0,b.jsx)(c.f,{}),v(ao?"autoMergeComplete":an?"autoMergePaused":ap?"autoMerging":"autoMerge")]}),(0,b.jsx)(o.N,{onOpenChange:a=>!Q&&J(a),open:I,children:(0,b.jsxs)(o.d,{className:"sm:max-w-xl",children:[(0,b.jsxs)(o.s,{children:[(0,b.jsx)(o.F,{children:v("autoMergeTitle")}),(0,b.jsx)(o.C,{children:v("autoMergeDescription")})]}),!O&&(U||S)?(0,b.jsxs)("div",{className:"space-y-4",children:[(S||D?.lastError)&&(0,b.jsx)(l.J,{variant:"destructive",children:(0,b.jsx)(l.p,{children:S||D?.lastError})}),U&&(0,b.jsxs)(b.Fragment,{children:[D?.autoSync&&(0,b.jsx)(i.r,{state:D.state}),(0,b.jsx)(i.y,{checked:$,onChange:_,disabled:Q||ak,unavailableReason:U.autoSyncBlockedReason}),(0,b.jsxs)("div",{children:[(0,b.jsx)(q.f,{className:"mb-1.5 block",children:w("mergeType")}),(0,b.jsxs)(r.d,{disabled:Q||ak,onValueChange:a=>X(a),value:W,children:[(0,b.jsx)(r.P,{children:(0,b.jsx)(r.U,{})}),(0,b.jsx)(r.r,{children:U.availableMethods.map(a=>(0,b.jsx)(r.T,{value:a,children:w(`mergeTypes.${a}`)},a))})]})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)(q.f,{className:"mb-1.5 block",children:w("commitMessage")}),(0,b.jsx)(p.f,{disabled:Q||ak,onChange:a=>Z(a.target.value),value:Y})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)(q.f,{className:"mb-1.5 block",children:w("commitDescription")}),(0,b.jsx)(t.f,{className:"min-h-24",disabled:Q||ak,onChange:a=>ab(a.target.value),value:aa})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)(q.f,{className:"mb-1.5 block",children:w("commitEmail")}),(0,b.jsxs)(r.d,{disabled:Q||ak,onValueChange:ad,value:ac,children:[(0,b.jsx)(r.P,{children:(0,b.jsx)(r.U,{})}),(0,b.jsxs)(r.r,{children:[(0,b.jsx)(r.T,{value:B,children:w("githubDefaultEmail")}),U.commitEmails.map(a=>(0,b.jsx)(r.T,{value:a,children:a},a))]})]})]}),(0,b.jsx)(g.y,{options:U,selectedWorktreeIds:ae,onSelectedWorktreeIdsChange:af,disabled:Q||ak,deleteWorktree:ag,moveTicketToDone:ai,onDeleteWorktreeChange:ah,onMoveTicketToDoneChange:aj})]})]}):(0,b.jsxs)("div",{className:"flex items-center gap-2 py-6 text-sm text-muted-foreground",children:[(0,b.jsx)(s.f,{})," ",w("loadingMergeOptions")]}),(0,b.jsxs)(o.c,{children:[(D||G)&&(0,b.jsx)(m.K,{disabled:Q||!D&&!U?.viewerCanDisableAutoMerge,onClick:()=>void am(),type:"button",variant:"destructive",children:v("cancelAutoMerge")}),(0,b.jsx)(m.K,{disabled:Q,onClick:()=>J(!1),type:"button",variant:"outline",children:v("cancel")}),(0,b.jsxs)(m.K,{disabled:O||Q||!!(D?.autoSync&&["SYNCING","WAITING_CI","WAITING_REQUIREMENTS","MERGING"].includes(D.state))||!W||!Y.trim()||!ak&&ai&&!U?.ticketDoneStatusConfigured||($?!U?.canAutoMergeWithSync:!D&&!U?.canEnableAutoMerge),onClick:()=>void al(),type:"button",children:[Q&&(0,b.jsx)(s.f,{}),v(an?"resumeAutoMerge":"saveAutoMerge")]})]})]})})]})}a.s(["o",0,function(a){return a.worktree.sourceControlRequest?.provider==="GITLAB"?(0,b.jsx)(D,{...a}):(0,b.jsx)(E,{...a})},"b",0,function({worktree:a,conflictWorkflows:c,disabled:g,onCompleted:h,onError:i}){let j=(0,e.f)("worktrees"),k=a.autoSync,[p,t]=(0,f.useState)(!1),[w,x]=(0,f.useState)(!1),[y,z]=(0,f.useState)(!1),[B,D]=(0,f.useState)(null),[E,F]=(0,f.useState)(!1),[G,H]=(0,f.useState)(A),[I,J]=(0,f.useState)(A),K=(0,f.useMemo)(()=>c.find(a=>a.id===G),[c,G]),L=async()=>{x(!0),D(null);try{await (0,u.W)(`mutation ConfigureWorktreeAutoSync(
|
|
91
91
|
$input: ConfigureWorktreeAutoSyncInput!
|
|
92
92
|
) {
|
|
93
93
|
configureWorktreeAutoSync(input: $input) {
|
|
@@ -15,7 +15,10 @@
|
|
|
15
15
|
cacheReadTokens cacheWriteTokens toolCallCount parentRunId parentRunNumber
|
|
16
16
|
parentRun { ${b} }
|
|
17
17
|
followUps { ${b} }
|
|
18
|
-
attempts {
|
|
18
|
+
attempts {
|
|
19
|
+
id generation nativeId status resumeStrategy startedAt finishedAt supersededAt
|
|
20
|
+
sessionInfo { nativeTranscriptPath activityLogPath workingDirectory }
|
|
21
|
+
}
|
|
19
22
|
inputs {
|
|
20
23
|
id sequence kind prompt createdAt
|
|
21
24
|
attachments { id filename contentType size sha256 downloadPath createdAt }
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(()=>{"use strict";module.exports=[564447,a=>{var b=a.i(164831);let c={name:"check-check",size:24,node:[["path",{d:"M18 6 7 17l-5-5",key:"116fxf"}],["path",{d:"m22 10-7.5 7.5L13 16",key:"ke71qq"}]]};c.node;let d=(0,b.f)(c);a.s(["f",0,d],564447)},209001,a=>{var b=a.i(187924),c=a.i(572131),d=a.i(564447),e=a.i(641544),f=a.i(239315),g=a.i(993492),h=a.i(933434),i=a.i(853410),j=a.i(474215),k=a.i(130294),l=a.i(415925),m=a.i(105606),n=a.i(205956),o=a.i(314395),p=a.i(786304),q=a.i(699570),r=a.i(112613),s=a.i(368114),t=a.i(201334);function u({item:a,compact:c=!1,children:d}){let e=(0,l.f)("actionCenter"),f=a.request;if(!f)return null;let g="APPROVED"===f.approvalStatus,h="SUCCESS"===f.pipelineStatus?"success":/FAIL|ERROR|CANCEL|TIMED_OUT/i.test(f.pipelineStatus)?"destructive":"outline",i="border-amber-500/40 bg-amber-500/10 text-amber-700 dark:text-amber-300",j=c?"h-4 px-1.5 py-0 text-[9px] leading-none":void 0,k=(0,b.jsx)(p.f,{className:(0,s.f)(j,"outline"===h&&i),variant:h,children:(0,r.B)(f.pipelineStatus)});return(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5","data-slot":"action-center-request-status",children:[f.pipelineUrl?(0,b.jsx)("a",{className:"inline-flex shrink-0 items-center",href:f.pipelineUrl,target:"_blank",rel:"noreferrer",children:k}):k,(0,b.jsx)(p.f,{className:(0,s.f)(j,!g&&i),variant:g?"success":"outline",children:e(g?"approved":"notApproved")}),d,(f.needsRebase||(f.behindCount??0)>0)&&(0,b.jsx)(p.f,{variant:"outline",className:(0,s.f)(j,i),children:e(f.needsRebase?"needsRebase":"behindTarget")})]})}function v({item:a,compact:d=!1}){let e=(0,l.f)("actionCenter"),{refreshRequests:f}=(0,t.Y)(),[g,h]=(0,c.useState)(!1),i=a.request;return!i?.canMerge||i.draft?null:(0,b.jsxs)(b.Fragment,{children:["GITHUB"===i.provider?(0,b.jsx)("span",{className:"[&_button]:bg-emerald-600 [&_button]:text-white [&_button]:hover:bg-emerald-700",children:(0,b.jsx)(n.f,{pullRequest:{number:i.number,repositoryNameWithOwner:i.repositoryName},requestSource:"PULL_REQUESTS_PAGE",worktreeId:a.worktree?.id,onMerged:async()=>{await f()},size:d?"xs":"sm"})}):(0,b.jsxs)(q.K,{className:"bg-emerald-600 text-white hover:bg-emerald-700",onClick:()=>h(!0),size:d?"xs":"sm",children:[(0,b.jsx)(m.f,{}),e("merge")]}),"GITLAB"===i.provider&&(0,b.jsx)(o.f,{mergeRequest:{projectId:i.repositoryId,iid:i.number,title:a.label},worktreeId:a.worktree?.id,open:g,onOpenChange:h,onMerged:async()=>{await f()}})]})}var w=a.i(600729),x=a.i(657068),y=a.i(638168),z=a.i(124348),A=a.i(591119),B=a.i(668684),C=a.i(277096),D=a.i(555027),E=a.i(700621),F=a.i(674746),G=a.i(315055),H=a.i(134353),I=a.i(779711),J=a.i(48468),K=a.i(429246);function L({item:a,batch:d}){let e=(0,l.f)("actionCenter"),{answerQuestion:f}=(0,t.Y)(),[g,h]=(0,c.useState)({}),[i,j]=(0,c.useState)({}),[k,m]=(0,c.useState)(!1),[n,o]=(0,c.useState)(null),p=d.questions.every(a=>(g[a.id]?.length??0)>0||!!i[a.id]?.trim()),s=async()=>{m(!0),o(null);try{await f(a,d,Object.fromEntries(d.questions.map(a=>{let b=[...g[a.id]??[]],c=i[a.id]?.trim();return c&&b.push(c),[a.id,{answers:b}]})))}catch(a){o(a instanceof Error?a.message:String(a))}finally{m(!1)}};return(0,b.jsxs)("div",{className:"space-y-4 rounded-lg border border-amber-500/40 bg-amber-500/5 p-4",children:[d.sourceKind&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:e("questionFrom",{source:(0,r.Z)(d.sourceKind)})}),n&&(0,b.jsx)(z.J,{variant:"destructive",children:(0,b.jsx)(z.p,{children:n})}),d.questions.map(a=>(0,b.jsxs)(H.G,{children:[(0,b.jsx)(H.f,{children:a.header||a.prompt}),a.header&&(0,b.jsx)(H.H,{children:a.prompt}),a.options.length>0&&a.multiSelect&&(0,b.jsx)(H.e,{className:"gap-2","data-slot":"checkbox-group",children:a.options.map(c=>{let e=`action-answer-${d.id}-${a.id}-${c.id}`,f=g[a.id]?.includes(c.label)??!1;return(0,b.jsx)(H.u,{className:"w-full cursor-pointer",htmlFor:e,children:(0,b.jsxs)(I.M,{size:"sm",variant:"outline",children:[(0,b.jsx)(G.f,{checked:f,id:e,onCheckedChange:b=>h(d=>{let e=new Set(d[a.id]??[]);return b?e.add(c.label):e.delete(c.label),{...d,[a.id]:[...e]}})}),(0,b.jsxs)(I.H,{children:[(0,b.jsx)(I.$,{children:c.label}),c.description&&(0,b.jsx)(I.B,{children:c.description})]})]})},c.id)})}),a.options.length>0&&!a.multiSelect&&(0,b.jsx)(J.x,{onValueChange:b=>{h(c=>({...c,[a.id]:[b]})),j(b=>({...b,[a.id]:""}))},value:g[a.id]?.[0]??"",children:a.options.map(c=>{let e=`action-answer-${d.id}-${a.id}-${c.id}`;return(0,b.jsx)(H.u,{className:"w-full cursor-pointer",htmlFor:e,children:(0,b.jsxs)(I.M,{size:"sm",variant:"outline",children:[(0,b.jsx)(J.a,{id:e,value:c.label}),(0,b.jsxs)(I.H,{children:[(0,b.jsx)(I.$,{children:c.label}),c.description&&(0,b.jsx)(I.B,{children:c.description})]})]})},c.id)})}),a.allowCustom&&(0,b.jsx)(K.f,{"aria-label":e("customAnswerFor",{question:a.header||a.prompt}),className:"min-h-20",onChange:b=>{j(c=>({...c,[a.id]:b.target.value})),!a.multiSelect&&b.target.value&&h(b=>({...b,[a.id]:[]}))},placeholder:e("customAnswer"),value:i[a.id]??""})]},a.id)),(0,b.jsxs)(q.K,{disabled:!p||k,onClick:()=>void s(),children:[k?(0,b.jsx)(B.f,{}):(0,b.jsx)(F.f,{})," ",e("submitAnswer")]})]})}let M={PLAN:e.f,SESSION:i.f,BUILD:h.f,WORKFLOW:k.f,PULL_REQUEST:g.f,MERGE_REQUEST:g.f};a.s(["f",0,function({item:a,compact:e=!1}){var g,h;let i=(0,l.f)("actionCenter"),k=(0,y.f)(),{acknowledge:m,dismiss:n,refresh:o,reportError:F}=(0,t.Y)(),[G,H]=(0,c.useState)(!1),[I,J]=(0,c.useState)(!1),K=M[a.resourceKind],N=i(`kinds.${a.resourceKind}`),O="PLAN"===a.resourceKind||"SESSION"===a.resourceKind?`${N} #${a.displayNumber}`:"WORKFLOW"===a.resourceKind&&null!==a.displayNumber?`${a.label} #${a.displayNumber}`:a.request?`${"GITHUB"===a.request.provider?"#":"!"}${a.request.number} ${a.label}`:a.label,P=a.worktree?.highlightColor,Q=a.worktree?a.worktree.relativePath??((g=a.worktree.folder).replaceAll("\\","/").replace(/\/+$/,"").split("/").pop()||g):null,R=a.worktree?`${Q}${a.worktree.branch?` \xb7 ${a.worktree.branch}`:""}`:null,S=a.request?.branch??a.worktree?.branch,T="WORKFLOW"===a.resourceKind&&a.worktree&&a.summary===`WORKTREE:${a.worktree.id}`,U="PLAN"===a.resourceKind||"SESSION"===a.resourceKind,V=U?k.status(a.status):(0,r.B)(a.status),W=a.phase?U?k.phase(a.phase):(0,r.B)(a.phase):null,X=(0,b.jsx)(p.f,{className:(0,s.f)(e&&"h-4 px-1.5 py-0 text-[9px] leading-none","QUESTION"===(h=a.reason)||"REVIEW_REQUIRED"===h?"border-amber-500/40 bg-amber-500/10 text-amber-700 dark:text-amber-300":"UNRUN_BUILD"===h?"border-blue-500/40 bg-blue-500/10 text-blue-700 dark:text-blue-300":"ACTIVE"===h||"READY_TO_MERGE"===h?"border-emerald-500/40 bg-emerald-500/10 text-emerald-700 dark:text-emerald-300":void 0),variant:"FAILED"===a.reason?"destructive":"outline",children:i(`reasons.${a.reason}`)}),Y=async()=>{H(!0);try{await m(a)}catch{}finally{H(!1)}},Z=async()=>{J(!0);try{await n(a)}catch{}finally{J(!1)}},$=(0,b.jsxs)("div",{className:"flex shrink-0 flex-wrap items-center gap-2",children:[a.request&&(0,b.jsx)(v,{item:a,compact:e}),a.buildRun&&(0,b.jsx)(x.f,{buildId:a.buildRun.buildId,compact:e,destinationType:a.buildRun.destinationType,onCompleted:o,onError:F,preferredDestination:a.buildRun.preferredDestination,size:e?"xs":"sm"}),a.failureFingerprint&&(0,b.jsxs)(q.K,{"aria-label":e?i("acknowledgeNamed",{name:O}):void 0,disabled:G,onClick:()=>void Y(),size:e?"icon-xs":"sm",title:e?i("acknowledge"):void 0,type:"button",variant:"outline",children:[G?(0,b.jsx)(B.f,{}):(0,b.jsx)(d.f,{}),!e&&i("acknowledge")]}),a.dismissalFingerprint&&(0,b.jsxs)(q.K,{"aria-label":e?i("dismissNamed",{name:O}):void 0,disabled:I,onClick:()=>void Z(),size:e?"icon-xs":"sm",title:e?i("dismiss"):void 0,type:"button",variant:"outline",children:[I?(0,b.jsx)(B.f,{}):(0,b.jsx)(j.X,{}),!e&&i("dismiss")]})]}),_=(a.worktree||e&&a.request)&&(0,b.jsxs)(D.L,{className:"flex min-w-0 max-w-full items-center gap-1 overflow-hidden font-mono text-xs text-muted-foreground hover:text-foreground hover:underline",href:a.worktree?`/dashboard/worktrees/${a.worktree.id}`:a.href,title:e?void 0:R??void 0,children:[(0,b.jsx)(f.f,{className:"size-3 shrink-0"}),(0,b.jsx)("span",{className:"min-w-0 truncate",children:e?S??"—":R})]}),aa=e&&_?(0,b.jsxs)(C.c,{openDelay:200,children:[(0,b.jsx)(C.b,{asChild:!0,children:_}),(0,b.jsxs)(C.P,{align:"start",className:"w-72 max-w-[calc(100vw-2rem)] space-y-1 break-words",side:"right",children:[a.request&&(0,b.jsx)("p",{className:"text-xs font-medium",children:a.request.repositoryName}),(0,b.jsx)("p",{className:"font-mono text-xs break-all",children:S??"—"}),Q&&(0,b.jsx)("p",{className:"font-mono text-xs break-all text-muted-foreground",children:Q})]})]}):_;if(e){let c=a.questionBatches[0]?.questions[0];return(0,b.jsxs)("div",{className:(0,s.f)("space-y-1.5 overflow-hidden border-b border-l-4 px-2 py-1.5 last:border-b-0",P?(0,s.f)(E._[P],E.x[P]):"border-l-border bg-sidebar-accent/30 hover:bg-sidebar-accent/60"),"data-slot":"action-center-compact-item",children:[(0,b.jsxs)("div",{className:"flex items-start gap-1.5",children:[(0,b.jsx)(K,{className:"mt-0.5 size-3.5 shrink-0 text-muted-foreground"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)(D.L,{className:"block truncate text-sm font-medium hover:underline",href:a.href,children:O}),"WORKFLOW"!==a.resourceKind&&a.label!==O&&(0,b.jsx)("p",{className:"line-clamp-2 break-words text-xs leading-tight text-muted-foreground",children:a.label})]}),!a.request&&X]}),a.request&&(0,b.jsx)(u,{item:a,compact:!0,children:X}),c&&(0,b.jsx)("p",{className:"line-clamp-2 break-words text-xs leading-tight font-medium",children:c.header||c.prompt}),U&&"QUEUED"===a.status&&(0,b.jsxs)("p",{className:"truncate text-xs leading-tight text-muted-foreground",children:[V,W&&a.phase!==a.status?` \xb7 ${W}`:""]}),a.error&&(0,b.jsx)("p",{className:"line-clamp-2 break-words text-xs leading-tight text-destructive",children:a.error}),(0,b.jsxs)("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)_auto] items-center gap-1.5",children:[(0,b.jsx)("div",{className:"min-w-0 overflow-hidden",children:aa}),$]})]})}return(0,b.jsxs)(A.N,{className:(0,s.f)("min-w-0",P&&"border-l-4",P&&E._[P],P&&E.x[P]),children:[(0,b.jsxs)(A.Y,{children:[(0,b.jsxs)("div",{className:"flex min-w-0 items-start gap-3",children:[(0,b.jsx)("div",{className:"mt-0.5 shrink-0 rounded-md border bg-background p-2",children:(0,b.jsx)(K,{className:"size-4"})}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)(A.v,{className:"min-w-0 text-base",children:a.request?(0,b.jsxs)("span",{className:"flex min-w-0 gap-1.5",children:[(0,b.jsxs)("a",{className:"shrink-0 hover:underline",href:a.request.url,target:"_blank",rel:"noreferrer",children:["GITHUB"===a.request.provider?"#":"!",a.request.number]}),(0,b.jsx)(D.L,{"aria-label":O,className:"min-w-0 truncate hover:underline",href:a.href,children:a.label})]}):(0,b.jsx)(D.L,{className:"block truncate hover:underline",href:a.href,children:O})}),(0,b.jsx)(A.u,{className:(0,s.f)("mt-1 break-words",!a.request&&"line-clamp-2"),children:a.request?a.request.repositoryName:T&&a.worktree?(0,b.jsx)(D.L,{className:"block max-w-full truncate font-mono hover:text-foreground hover:underline",href:`/dashboard/worktrees/${a.worktree.id}`,title:R??void 0,children:Q}):"PLAN"===a.resourceKind||"SESSION"===a.resourceKind?a.label:a.summary||a.label})]})]}),(0,b.jsx)(A.e,{children:$})]}),(0,b.jsxs)(A.O,{className:"space-y-4",children:[a.request?(0,b.jsxs)(u,{item:a,children:[X,(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:(0,b.jsx)(w.f,{value:a.updatedAt})})]}):(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[X,(0,b.jsx)(p.f,{variant:"secondary",children:V}),a.phase&&a.phase!==a.status&&(0,b.jsx)(p.f,{variant:"outline",children:W}),(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:(0,b.jsx)(w.f,{value:a.updatedAt})})]}),aa,a.error&&(0,b.jsx)(z.J,{variant:"destructive",children:(0,b.jsx)(z.p,{className:"break-words",children:a.error})}),a.questionBatches.map(c=>(0,b.jsx)(L,{batch:c,item:a},c.id))]})]})}],209001)},201334,a=>{var b=a.i(187924),c=a.i(572131),d=a.i(460280),e=a.i(432158),f=a.i(592360);let g=`
|
|
1
|
+
(()=>{"use strict";module.exports=[564447,a=>{var b=a.i(164831);let c={name:"check-check",size:24,node:[["path",{d:"M18 6 7 17l-5-5",key:"116fxf"}],["path",{d:"m22 10-7.5 7.5L13 16",key:"ke71qq"}]]};c.node;let d=(0,b.f)(c);a.s(["f",0,d],564447)},209001,a=>{var b=a.i(187924),c=a.i(572131),d=a.i(564447),e=a.i(641544),f=a.i(239315),g=a.i(993492),h=a.i(933434),i=a.i(853410),j=a.i(474215),k=a.i(130294),l=a.i(415925),m=a.i(105606),n=a.i(205956),o=a.i(314395),p=a.i(786304),q=a.i(699570),r=a.i(112613),s=a.i(368114),t=a.i(201334);function u({item:a,compact:c=!1,children:d}){let e=(0,l.f)("actionCenter"),f=a.request;if(!f)return null;let g="APPROVED"===f.approvalStatus,h="SUCCESS"===f.pipelineStatus?"success":/FAIL|ERROR|CANCEL|TIMED_OUT/i.test(f.pipelineStatus)?"destructive":"outline",i="border-amber-500/40 bg-amber-500/10 text-amber-700 dark:text-amber-300",j=c?"h-4 px-1.5 py-0 text-[9px] leading-none":void 0,k=(0,b.jsx)(p.f,{className:(0,s.f)(j,"outline"===h&&i),variant:h,children:(0,r.B)(f.pipelineStatus)});return(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5","data-slot":"action-center-request-status",children:[f.pipelineUrl?(0,b.jsx)("a",{className:"inline-flex shrink-0 items-center",href:f.pipelineUrl,target:"_blank",rel:"noreferrer",children:k}):k,(0,b.jsx)(p.f,{className:(0,s.f)(j,!g&&i),variant:g?"success":"outline",children:e(g?"approved":"notApproved")}),d,(f.needsRebase||(f.behindCount??0)>0)&&(0,b.jsx)(p.f,{variant:"outline",className:(0,s.f)(j,i),children:e(f.needsRebase?"needsRebase":"behindTarget")})]})}function v({item:a,compact:d=!1}){let e=(0,l.f)("actionCenter"),{refreshRequests:f}=(0,t.Y)(),[g,h]=(0,c.useState)(!1),i=a.request;return!i?.canMerge||i.draft?null:(0,b.jsxs)(b.Fragment,{children:["GITHUB"===i.provider?(0,b.jsx)("span",{className:"[&_button]:bg-emerald-600 [&_button]:text-white [&_button]:hover:bg-emerald-700",children:(0,b.jsx)(n.f,{pullRequest:{number:i.number,repositoryNameWithOwner:i.repositoryName},requestSource:"PULL_REQUESTS_PAGE",worktreeId:a.worktree?.id,onMerged:async()=>{await f()},size:d?"xs":"sm"})}):(0,b.jsxs)(q.K,{className:"bg-emerald-600 text-white hover:bg-emerald-700",onClick:()=>h(!0),size:d?"xs":"sm",children:[(0,b.jsx)(m.f,{}),e("merge")]}),"GITLAB"===i.provider&&(0,b.jsx)(o.f,{mergeRequest:{projectId:i.repositoryId,iid:i.number,title:a.label},worktreeId:a.worktree?.id,open:g,onOpenChange:h,onMerged:async()=>{await f()}})]})}var w=a.i(600729),x=a.i(657068),y=a.i(638168),z=a.i(124348),A=a.i(591119),B=a.i(668684),C=a.i(277096),D=a.i(555027),E=a.i(700621),F=a.i(674746),G=a.i(315055),H=a.i(134353),I=a.i(779711),J=a.i(48468),K=a.i(429246);function L({item:a,batch:d}){let e=(0,l.f)("actionCenter"),{answerQuestion:f}=(0,t.Y)(),[g,h]=(0,c.useState)({}),[i,j]=(0,c.useState)({}),[k,m]=(0,c.useState)(!1),[n,o]=(0,c.useState)(null),p=d.questions.every(a=>(g[a.id]?.length??0)>0||!!i[a.id]?.trim()),s=async()=>{m(!0),o(null);try{await f(a,d,Object.fromEntries(d.questions.map(a=>{let b=[...g[a.id]??[]],c=i[a.id]?.trim();return c&&b.push(c),[a.id,{answers:b}]})))}catch(a){o(a instanceof Error?a.message:String(a))}finally{m(!1)}};return(0,b.jsxs)("div",{className:"space-y-4 rounded-lg border border-amber-500/40 bg-amber-500/5 p-4",children:[d.sourceKind&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:e("questionFrom",{source:(0,r.Z)(d.sourceKind)})}),n&&(0,b.jsx)(z.J,{variant:"destructive",children:(0,b.jsx)(z.p,{children:n})}),d.questions.map(a=>(0,b.jsxs)(H.G,{children:[(0,b.jsx)(H.f,{children:a.header||a.prompt}),a.header&&(0,b.jsx)(H.H,{children:a.prompt}),a.options.length>0&&a.multiSelect&&(0,b.jsx)(H.e,{className:"gap-2","data-slot":"checkbox-group",children:a.options.map(c=>{let e=`action-answer-${d.id}-${a.id}-${c.id}`,f=g[a.id]?.includes(c.label)??!1;return(0,b.jsx)(H.u,{className:"w-full cursor-pointer",htmlFor:e,children:(0,b.jsxs)(I.M,{size:"sm",variant:"outline",children:[(0,b.jsx)(G.f,{checked:f,id:e,onCheckedChange:b=>h(d=>{let e=new Set(d[a.id]??[]);return b?e.add(c.label):e.delete(c.label),{...d,[a.id]:[...e]}})}),(0,b.jsxs)(I.H,{children:[(0,b.jsx)(I.$,{children:c.label}),c.description&&(0,b.jsx)(I.B,{children:c.description})]})]})},c.id)})}),a.options.length>0&&!a.multiSelect&&(0,b.jsx)(J.x,{onValueChange:b=>{h(c=>({...c,[a.id]:[b]})),j(b=>({...b,[a.id]:""}))},value:g[a.id]?.[0]??"",children:a.options.map(c=>{let e=`action-answer-${d.id}-${a.id}-${c.id}`;return(0,b.jsx)(H.u,{className:"w-full cursor-pointer",htmlFor:e,children:(0,b.jsxs)(I.M,{size:"sm",variant:"outline",children:[(0,b.jsx)(J.a,{id:e,value:c.label}),(0,b.jsxs)(I.H,{children:[(0,b.jsx)(I.$,{children:c.label}),c.description&&(0,b.jsx)(I.B,{children:c.description})]})]})},c.id)})}),a.allowCustom&&(0,b.jsx)(K.f,{"aria-label":e("customAnswerFor",{question:a.header||a.prompt}),className:"min-h-20",onChange:b=>{j(c=>({...c,[a.id]:b.target.value})),!a.multiSelect&&b.target.value&&h(b=>({...b,[a.id]:[]}))},placeholder:e("customAnswer"),value:i[a.id]??""})]},a.id)),(0,b.jsxs)(q.K,{disabled:!p||k,onClick:()=>void s(),children:[k?(0,b.jsx)(B.f,{}):(0,b.jsx)(F.f,{})," ",e("submitAnswer")]})]})}let M={PLAN:e.f,SESSION:i.f,BUILD:h.f,WORKFLOW:k.f,PULL_REQUEST:g.f,MERGE_REQUEST:g.f};a.s(["f",0,function({item:a,compact:e=!1}){var g,h;let i=(0,l.f)("actionCenter"),k=(0,y.f)(),{acknowledge:m,dismiss:n,refresh:o,reportError:F}=(0,t.Y)(),[G,H]=(0,c.useState)(!1),[I,J]=(0,c.useState)(!1),K=M[a.resourceKind],N=i(`kinds.${a.resourceKind}`),O="PLAN"===a.resourceKind||"SESSION"===a.resourceKind?`${N} #${a.displayNumber}`:"WORKFLOW"===a.resourceKind&&null!==a.displayNumber?`${a.label} #${a.displayNumber}`:a.request?`${"GITHUB"===a.request.provider?"#":"!"}${a.request.number} ${a.label}`:a.label,P=a.worktree?.highlightColor,Q=a.worktree?a.worktree.relativePath??((g=a.worktree.folder).replaceAll("\\","/").replace(/\/+$/,"").split("/").pop()||g):null,R=a.worktree?`${Q}${a.worktree.branch?` \xb7 ${a.worktree.branch}`:""}`:null,S=a.request?.branch??a.worktree?.branch,T="WORKFLOW"===a.resourceKind&&a.worktree&&a.summary===`WORKTREE:${a.worktree.id}`,U="PLAN"===a.resourceKind||"SESSION"===a.resourceKind,V=U?k.status(a.status):(0,r.B)(a.status),W=a.phase?U?k.phase(a.phase):(0,r.B)(a.phase):null,X=(0,b.jsx)(p.f,{className:(0,s.f)(e&&"h-4 px-1.5 py-0 text-[9px] leading-none","QUESTION"===(h=a.reason)||"REVIEW_REQUIRED"===h?"border-amber-500/40 bg-amber-500/10 text-amber-700 dark:text-amber-300":"UNRUN_BUILD"===h?"border-blue-500/40 bg-blue-500/10 text-blue-700 dark:text-blue-300":"ACTIVE"===h||"READY_TO_MERGE"===h?"border-emerald-500/40 bg-emerald-500/10 text-emerald-700 dark:text-emerald-300":void 0),variant:"FAILED"===a.reason?"destructive":"outline",children:i(`reasons.${a.reason}`)}),Y=async()=>{H(!0);try{await m(a)}catch{}finally{H(!1)}},Z=async()=>{J(!0);try{await n(a)}catch{}finally{J(!1)}},$=(0,b.jsxs)("div",{className:(0,s.f)("flex shrink-0 flex-wrap items-center",e?"gap-1":"gap-2"),children:[a.request&&(0,b.jsx)(v,{item:a,compact:e}),a.buildRun&&(0,b.jsx)(x.f,{buildId:a.buildRun.buildId,compact:e,destinationType:a.buildRun.destinationType,onCompleted:o,onError:F,preferredDestination:a.buildRun.preferredDestination,size:e?"xs":"sm"}),a.failureFingerprint&&(0,b.jsxs)(q.K,{"aria-label":e?i("acknowledgeNamed",{name:O}):void 0,disabled:G,onClick:()=>void Y(),size:e?"icon-xs":"sm",title:e?i("acknowledge"):void 0,type:"button",variant:"outline",children:[G?(0,b.jsx)(B.f,{}):(0,b.jsx)(d.f,{}),!e&&i("acknowledge")]}),a.dismissalFingerprint&&(0,b.jsxs)(q.K,{"aria-label":e?i("dismissNamed",{name:O}):void 0,disabled:I,onClick:()=>void Z(),size:e?"icon-xs":"sm",title:e?i("dismiss"):void 0,type:"button",variant:"outline",children:[I?(0,b.jsx)(B.f,{}):(0,b.jsx)(j.X,{}),!e&&i("dismiss")]})]}),_=(a.worktree||e&&a.request)&&(0,b.jsxs)(D.L,{className:"flex min-w-0 max-w-full items-center gap-1 overflow-hidden font-mono text-xs text-muted-foreground hover:text-foreground hover:underline",href:a.worktree?`/dashboard/worktrees/${a.worktree.id}`:a.href,title:e?void 0:R??void 0,children:[(0,b.jsx)(f.f,{className:"size-3 shrink-0"}),(0,b.jsx)("span",{className:"min-w-0 truncate",children:e?S??"—":R})]}),aa=e&&_?(0,b.jsxs)(C.c,{openDelay:200,children:[(0,b.jsx)(C.b,{asChild:!0,children:_}),(0,b.jsxs)(C.P,{align:"start",className:"w-72 max-w-[calc(100vw-2rem)] space-y-1 break-words",side:"right",children:[a.request&&(0,b.jsx)("p",{className:"text-xs font-medium",children:a.request.repositoryName}),(0,b.jsx)("p",{className:"font-mono text-xs break-all",children:S??"—"}),Q&&(0,b.jsx)("p",{className:"font-mono text-xs break-all text-muted-foreground",children:Q})]})]}):_;if(e){let c=a.questionBatches[0]?.questions[0];return(0,b.jsxs)("div",{className:(0,s.f)("space-y-1.5 overflow-hidden border-b border-l-4 px-2 py-1.5 last:border-b-0",P?(0,s.f)(E._[P],E.x[P]):"border-l-border bg-sidebar-accent/30 hover:bg-sidebar-accent/60"),"data-slot":"action-center-compact-item",children:[(0,b.jsxs)("div",{className:"flex items-start gap-1.5",children:[(0,b.jsx)(K,{className:"mt-0.5 size-3.5 shrink-0 text-muted-foreground"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)(D.L,{className:"block truncate text-sm font-medium hover:underline",href:a.href,children:O}),"WORKFLOW"!==a.resourceKind&&a.label!==O&&(0,b.jsx)("p",{className:"line-clamp-2 break-words text-xs leading-tight text-muted-foreground",children:a.label})]}),!a.request&&X]}),a.request&&(0,b.jsx)(u,{item:a,compact:!0,children:X}),c&&(0,b.jsx)("p",{className:"line-clamp-2 break-words text-xs leading-tight font-medium",children:c.header||c.prompt}),U&&"QUEUED"===a.status&&(0,b.jsxs)("p",{className:"truncate text-xs leading-tight text-muted-foreground",children:[V,W&&a.phase!==a.status?` \xb7 ${W}`:""]}),a.error&&(0,b.jsx)("p",{className:"line-clamp-2 break-words text-xs leading-tight text-destructive",children:a.error}),(0,b.jsxs)("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)_auto] items-center gap-1.5",children:[(0,b.jsx)("div",{className:"min-w-0 overflow-hidden",children:aa}),$]})]})}return(0,b.jsxs)(A.N,{className:(0,s.f)("min-w-0",P&&"border-l-4",P&&E._[P],P&&E.x[P]),children:[(0,b.jsxs)(A.Y,{children:[(0,b.jsxs)("div",{className:"flex min-w-0 items-start gap-3",children:[(0,b.jsx)("div",{className:"mt-0.5 shrink-0 rounded-md border bg-background p-2",children:(0,b.jsx)(K,{className:"size-4"})}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)(A.v,{className:"min-w-0 text-base",children:a.request?(0,b.jsxs)("span",{className:"flex min-w-0 gap-1.5",children:[(0,b.jsxs)("a",{className:"shrink-0 hover:underline",href:a.request.url,target:"_blank",rel:"noreferrer",children:["GITHUB"===a.request.provider?"#":"!",a.request.number]}),(0,b.jsx)(D.L,{"aria-label":O,className:"min-w-0 truncate hover:underline",href:a.href,children:a.label})]}):(0,b.jsx)(D.L,{className:"block truncate hover:underline",href:a.href,children:O})}),(0,b.jsx)(A.u,{className:(0,s.f)("mt-1 break-words",!a.request&&"line-clamp-2"),children:a.request?a.request.repositoryName:T&&a.worktree?(0,b.jsx)(D.L,{className:"block max-w-full truncate font-mono hover:text-foreground hover:underline",href:`/dashboard/worktrees/${a.worktree.id}`,title:R??void 0,children:Q}):"PLAN"===a.resourceKind||"SESSION"===a.resourceKind?a.label:a.summary||a.label})]})]}),(0,b.jsx)(A.e,{children:$})]}),(0,b.jsxs)(A.O,{className:"space-y-4",children:[a.request?(0,b.jsxs)(u,{item:a,children:[X,(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:(0,b.jsx)(w.f,{value:a.updatedAt})})]}):(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[X,(0,b.jsx)(p.f,{variant:"secondary",children:V}),a.phase&&a.phase!==a.status&&(0,b.jsx)(p.f,{variant:"outline",children:W}),(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:(0,b.jsx)(w.f,{value:a.updatedAt})})]}),aa,a.error&&(0,b.jsx)(z.J,{variant:"destructive",children:(0,b.jsx)(z.p,{className:"break-words",children:a.error})}),a.questionBatches.map(c=>(0,b.jsx)(L,{batch:c,item:a},c.id))]})]})}],209001)},201334,a=>{var b=a.i(187924),c=a.i(572131),d=a.i(460280),e=a.i(432158),f=a.i(592360);let g=`
|
|
2
2
|
key resourceKind reason resourceId href displayNumber label summary status phase error
|
|
3
3
|
createdAt updatedAt failureFingerprint dismissalFingerprint
|
|
4
4
|
request { provider repositoryId repositoryName number branch headSha url draft pipelineStatus pipelineUrl approvalStatus isMine requiresMyApproval canMerge mergeBlockedReason behindCount needsRebase }
|