@chorus-aidlc/chorus 0.16.3 → 0.16.4
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/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-build-manifest.json +386 -386
- package/.next/standalone/.next/app-path-routes-manifest.json +50 -50
- package/.next/standalone/.next/build-manifest.json +5 -5
- package/.next/standalone/.next/prerender-manifest.json +24 -24
- package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +2 -2
- package/.next/standalone/.next/server/app/_not-found.rsc +1 -1
- package/.next/standalone/.next/server/app/admin/companies/[uuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin/companies/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin/companies/new.html +2 -2
- package/.next/standalone/.next/server/app/admin/companies/new.rsc +1 -1
- package/.next/standalone/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin/companies.html +2 -2
- package/.next/standalone/.next/server/app/admin/companies.rsc +1 -1
- package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin.html +2 -2
- package/.next/standalone/.next/server/app/admin.rsc +1 -1
- package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/companies/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agent-connections/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent-connections/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/company-oidc/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/comments/route.js +1 -1
- package/.next/standalone/.next/server/app/api/comments/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/connection-heartbeat/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/connection-heartbeat/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/control/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/directory-request/report/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/directory-request/report/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/execution-state/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/execution-state/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/executions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/executions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/pending-turns/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/resume/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/resume/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/transcript/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/transcript/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/transcript/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/turn-advance/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-directory-requests/[uuid]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon-directory-requests/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-directory-requests/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon-directory-requests/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route.js +1 -1
- package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/events/notifications/route.js +1 -1
- package/.next/standalone/.next/server/app/api/events/notifications/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/events/route.js +1 -1
- package/.next/standalone/.next/server/app/api/events/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/conversational/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/conversational/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/conversational/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mcp/route.js +1 -1
- package/.next/standalone/.next/server/app/api/mcp/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/me/assignments/route.js +1 -1
- package/.next/standalone/.next/server/app/api/me/assignments/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mentionables/route.js +1 -1
- package/.next/standalone/.next/server/app/api/mentionables/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/preferences/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/preferences/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/read-all/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/read-all/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-visits/pin/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-visits/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-visits/visit/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/agent-cwds/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/agent-cwds/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/agent-cwd-options/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/agent-cwd-options/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/references/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/references/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/session/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/index.html +2 -2
- package/.next/standalone/.next/server/app/index.rsc +1 -1
- package/.next/standalone/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/admin.html +2 -2
- package/.next/standalone/.next/server/app/login/admin.rsc +1 -1
- package/.next/standalone/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/callback.html +2 -2
- package/.next/standalone/.next/server/app/login/callback.rsc +1 -1
- package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/pick-workspace/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/pick-workspace.html +2 -2
- package/.next/standalone/.next/server/app/login/pick-workspace.rsc +1 -1
- package/.next/standalone/.next/server/app/login.html +2 -2
- package/.next/standalone/.next/server/app/login.rsc +1 -1
- package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/onboarding.html +2 -2
- package/.next/standalone/.next/server/app/onboarding.rsc +2 -2
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects.html +2 -2
- package/.next/standalone/.next/server/app/projects.rsc +2 -2
- package/.next/standalone/.next/server/app/settings.html +2 -2
- package/.next/standalone/.next/server/app/settings.rsc +3 -3
- package/.next/standalone/.next/server/app-paths-manifest.json +50 -50
- package/.next/standalone/.next/server/chunks/2572.js +1 -1
- package/.next/standalone/.next/server/chunks/2618.js +1 -1
- package/.next/standalone/.next/server/chunks/2961.js +1 -1
- package/.next/standalone/.next/server/chunks/4827.js +1 -1
- package/.next/standalone/.next/server/chunks/5205.js +1 -0
- package/.next/standalone/.next/server/chunks/5245.js +1 -1
- package/.next/standalone/.next/server/chunks/5351.js +3 -2
- package/.next/standalone/.next/server/chunks/6113.js +1 -1
- package/.next/standalone/.next/server/chunks/6506.js +2 -2
- package/.next/standalone/.next/server/chunks/7368.js +1 -1
- package/.next/standalone/.next/server/chunks/7530.js +1 -1
- package/.next/standalone/.next/server/chunks/920.js +1 -1
- package/.next/standalone/.next/server/chunks/9213.js +1 -1
- package/.next/standalone/.next/server/chunks/9378.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/.next/standalone/.next/server/middleware-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/404.html +2 -2
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/static/chunks/{11595.97e534422c57aee1.js → 11595.a6268c75ca8a2163.js} +1 -1
- package/.next/standalone/.next/static/chunks/{19887-c0bb297a78a1c7cd.js → 19887-b805e1dcee8c367b.js} +1 -1
- package/.next/standalone/.next/static/chunks/{33456.6dc44a6aca1a01fd.js → 33456.16ff7edf00137539.js} +1 -1
- package/.next/standalone/.next/static/chunks/{4860.7873ebc9ba435c8c.js → 4860.9e06848eb531e667.js} +1 -1
- package/.next/standalone/.next/static/chunks/{94643-01be319472d751b3.js → 94643-ffa140f765c73daf.js} +1 -1
- package/.next/standalone/.next/static/chunks/{99373.d0e808c18408b8da.js → 99373.81b79c91858f9099.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/{page-6b3fb08d53826d02.js → page-b9eb4e0692996657.js} +1 -1
- package/.next/standalone/.next/static/chunks/{webpack-fa066d7ff9ab2b29.js → webpack-4d1cc14b13e247b6.js} +1 -1
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/public/chorus-plugin/.claude-plugin/plugin.json +1 -1
- package/.next/standalone/public/chorus-plugin/skills/brainstorm/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/chorus/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/docs/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/openspec-aware/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/orchestrate/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/proposal/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/quick-dev/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/review/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/yolo/SKILL.md +1 -1
- package/.next/standalone/public/dsh-credentials.sh +137 -0
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-brainstorm/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-develop/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-docs/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-idea/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-openspec-aware/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-orchestrate/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-proposal/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-quick-dev/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-review/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-yolo/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/bin/chorus-api.sh +1 -1
- package/.next/standalone/public/skill/brainstorm-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/code-reviewer-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/develop-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/docs-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/idea-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/orchestrate-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/proposal-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/proposal-reviewer-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/quick-dev-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/review-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/task-reviewer-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/yolo-chorus/SKILL.md +1 -1
- package/.next/standalone/public/test-dsh-credentials.sh +55 -0
- package/README.ja.md +3 -1
- package/README.ko.md +3 -1
- package/README.md +3 -1
- package/README.zh.md +3 -1
- package/cli/agent-backend-prompt.mjs +93 -0
- package/cli/client-args.mjs +11 -5
- package/cli/daemon-agent.mjs +6 -5
- package/cli/daemon-banner.mjs +3 -3
- package/cli/daemon-config.mjs +1 -1
- package/cli/daemon-install-config.mjs +21 -14
- package/cli/daemon-rest-client.mjs +31 -8
- package/cli/daemon.mjs +47 -6
- package/cli/dsh-managed-config.mjs +407 -0
- package/cli/dsh-spawner.mjs +438 -0
- package/cli/login.mjs +26 -4
- package/cli/spawner-select.mjs +10 -1
- package/cli/turn-reporter.mjs +5 -2
- package/cli/upload-hooks.mjs +31 -1
- package/cli/waker.mjs +49 -6
- package/package.json +1 -1
- package/prisma/migrations/20260818024700_add_turn_backend_session_id/migration.sql +1 -0
- package/prisma/schema.prisma +3 -0
- package/.next/standalone/.next/server/chunks/1114.js +0 -1
- /package/.next/standalone/.next/static/{K8qIdwvKoIWbwQ_f01mnM → 6sHDgeKioa0SJR1MAbcYG}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{K8qIdwvKoIWbwQ_f01mnM → 6sHDgeKioa0SJR1MAbcYG}/_ssgManifest.js +0 -0
package/cli/waker.mjs
CHANGED
|
@@ -509,6 +509,7 @@ export class Waker {
|
|
|
509
509
|
// pending→ended transition. There is no separate turn registry — the turn is
|
|
510
510
|
// identified server-side by `sessionId`, which the waker already has here.
|
|
511
511
|
let turnAdvancedToRunning = false;
|
|
512
|
+
let runningTurnUuidPromise = Promise.resolve(null);
|
|
512
513
|
|
|
513
514
|
// Track the session id the stream reports so the transcript hook can use
|
|
514
515
|
// it even before spawner.wake() returns. (Do NOT reference the awaited
|
|
@@ -535,7 +536,16 @@ export class Waker {
|
|
|
535
536
|
// The coalescedCount rides this → running edge so the server settles the
|
|
536
537
|
// (count − 1) same-session pending turns coalesced into this one (a single
|
|
537
538
|
// wake reports 1, which the client omits from the wire).
|
|
538
|
-
this.#advanceTurn(
|
|
539
|
+
runningTurnUuidPromise = this.#advanceTurn(
|
|
540
|
+
sessionId,
|
|
541
|
+
"running",
|
|
542
|
+
entity,
|
|
543
|
+
null,
|
|
544
|
+
null,
|
|
545
|
+
null,
|
|
546
|
+
null,
|
|
547
|
+
coalescedCount,
|
|
548
|
+
);
|
|
539
549
|
}
|
|
540
550
|
},
|
|
541
551
|
onMessage: (message) => {
|
|
@@ -615,14 +625,38 @@ export class Waker {
|
|
|
615
625
|
// never-spawned wake left the turn `pending`; a pending→<terminal> skip is
|
|
616
626
|
// rejected server-side as invalid_transition). Swallow-safe; never throws.
|
|
617
627
|
if (sessionId && turnAdvancedToRunning) {
|
|
628
|
+
// Correlate the terminal report to the exact row resolved by →running. Awaiting
|
|
629
|
+
// here does not delay child spawn: the request started in onChild and ran in
|
|
630
|
+
// parallel with the subprocess.
|
|
631
|
+
const runningTurnUuid = await runningTurnUuidPromise;
|
|
618
632
|
if (cleanExit) {
|
|
619
633
|
// A clean exit with a KNOWN relay drop is the exact #444 signature: the reply
|
|
620
634
|
// ran but its transcript never landed. Annotate the (still-clean) `ended` turn.
|
|
621
635
|
// `turnUsage` rides the same terminal advance (daemon-token-usage).
|
|
622
|
-
await this.#advanceTurn(
|
|
636
|
+
await this.#advanceTurn(
|
|
637
|
+
sessionId,
|
|
638
|
+
"ended",
|
|
639
|
+
entity,
|
|
640
|
+
null,
|
|
641
|
+
transcriptRelayError,
|
|
642
|
+
turnUsage,
|
|
643
|
+
result?.backendSessionId,
|
|
644
|
+
1,
|
|
645
|
+
runningTurnUuid,
|
|
646
|
+
);
|
|
623
647
|
} else {
|
|
624
648
|
const reason = wasInterrupting ? "user" : this.shuttingDown ? "shutdown" : "crash";
|
|
625
|
-
await this.#advanceTurn(
|
|
649
|
+
await this.#advanceTurn(
|
|
650
|
+
sessionId,
|
|
651
|
+
"interrupted",
|
|
652
|
+
entity,
|
|
653
|
+
reason,
|
|
654
|
+
transcriptRelayError,
|
|
655
|
+
turnUsage,
|
|
656
|
+
result?.backendSessionId,
|
|
657
|
+
1,
|
|
658
|
+
runningTurnUuid,
|
|
659
|
+
);
|
|
626
660
|
}
|
|
627
661
|
}
|
|
628
662
|
|
|
@@ -662,13 +696,17 @@ export class Waker {
|
|
|
662
696
|
} catch (err) {
|
|
663
697
|
this.logger.warn(`[Chorus] wake failed for ${key}: ${err}`);
|
|
664
698
|
if (sessionId && requestedRuntimeCwd && typeof err?.code === "string") {
|
|
665
|
-
await this.#advanceTurn(sessionId, "running", entity);
|
|
699
|
+
const invalidPathTurnUuid = await this.#advanceTurn(sessionId, "running", entity);
|
|
666
700
|
await this.#advanceTurn(
|
|
667
701
|
sessionId,
|
|
668
702
|
"interrupted",
|
|
669
703
|
entity,
|
|
670
704
|
"invalid_path",
|
|
671
705
|
`${err.code}: ${err.message ?? "Runtime cwd validation failed"}`,
|
|
706
|
+
null,
|
|
707
|
+
null,
|
|
708
|
+
1,
|
|
709
|
+
invalidPathTurnUuid,
|
|
672
710
|
);
|
|
673
711
|
}
|
|
674
712
|
} finally {
|
|
@@ -735,11 +773,14 @@ export class Waker {
|
|
|
735
773
|
* @param {number} [coalescedCount] Number of wakes coalesced into this turn
|
|
736
774
|
* (add-daemon-wake-coalescing); forwarded only on the → running edge and only when > 1,
|
|
737
775
|
* so a single wake (default 1) leaves the field absent — byte-identical to before.
|
|
776
|
+
* @param {string|null} [turnUuid] Exact server turn correlation returned by → running.
|
|
777
|
+
* @returns {Promise<string|null>} The resolved turn UUID on → running, else null.
|
|
738
778
|
*/
|
|
739
|
-
async #advanceTurn(sessionId, status, entity, interruptedReason = null, transcriptRelayError = null, usage = null, backendSessionId = null, coalescedCount = 1) {
|
|
779
|
+
async #advanceTurn(sessionId, status, entity, interruptedReason = null, transcriptRelayError = null, usage = null, backendSessionId = null, coalescedCount = 1, turnUuid = null) {
|
|
740
780
|
try {
|
|
741
|
-
await this.advanceTurn({
|
|
781
|
+
const outcome = await this.advanceTurn({
|
|
742
782
|
sessionId,
|
|
783
|
+
...(turnUuid ? { turnUuid } : {}),
|
|
743
784
|
status,
|
|
744
785
|
entityType: entity?.entityType ?? null,
|
|
745
786
|
entityUuid: entity?.entityUuid ?? null,
|
|
@@ -749,10 +790,12 @@ export class Waker {
|
|
|
749
790
|
...(backendSessionId ? { backendSessionId } : {}),
|
|
750
791
|
...(status === "running" && coalescedCount > 1 ? { coalescedCount } : {}),
|
|
751
792
|
});
|
|
793
|
+
return typeof outcome?.data?.turnUuid === "string" ? outcome.data.turnUuid : null;
|
|
752
794
|
} catch (err) {
|
|
753
795
|
this.logger.warn(
|
|
754
796
|
`[Chorus] advanceTurn failed for session ${sessionId} → ${status}: ${err}`
|
|
755
797
|
);
|
|
798
|
+
return null;
|
|
756
799
|
}
|
|
757
800
|
}
|
|
758
801
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chorus-aidlc/chorus",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.4",
|
|
4
4
|
"description": "The Agent Harness for AI-Human Collaboration — session lifecycle, task state, sub-agent orchestration, observability, and failure recovery",
|
|
5
5
|
"homepage": "https://github.com/Chorus-AIDLC/Chorus",
|
|
6
6
|
"repository": {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ALTER TABLE "DaemonSessionTurn" ADD COLUMN "backendSessionId" TEXT;
|
package/prisma/schema.prisma
CHANGED
|
@@ -715,6 +715,9 @@ model DaemonSessionTurn {
|
|
|
715
715
|
uuid String @unique @default(uuid())
|
|
716
716
|
sessionUuid String
|
|
717
717
|
session DaemonSession @relation(fields: [sessionUuid], references: [uuid], onDelete: Cascade)
|
|
718
|
+
// Backend-owned identity for this wake. DaemonSession.backendSessionId remains the
|
|
719
|
+
// immutable first-wake compatibility anchor.
|
|
720
|
+
backendSessionId String?
|
|
718
721
|
seq Int // monotonic per session
|
|
719
722
|
trigger String // task_assigned | mentioned | elaboration | elaboration_verified | start_development | yolo_requested | resume | human_instruction
|
|
720
723
|
promptText String? // free-text body for human_instruction; null otherwise (canonical source)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=1114,exports.ids=[1114],exports.modules={8777:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Cs:()=>o,Nn:()=>s,YE:()=>n,lC:()=>l,lU:()=>r,ui:()=>p,yZ:()=>m});var e=c(52618),f=c(76872),g=c(42558),h=c(88437),i=c(65582),j=a([e,f,h]);[e,f,h]=j.then?(await j)():j;let t=i.default.child({module:"document.service"});async function k(a,b=!1){let c=await (0,f.LS)(a.createdByUuid),d={uuid:a.uuid,type:a.type,title:a.title,version:a.version,proposalUuid:a.proposalUuid,createdBy:c,createdAt:a.createdAt.toISOString(),updatedAt:a.updatedAt.toISOString()};return b&&void 0!==a.content&&(d.content=a.content),a.project&&(d.project=a.project),d}async function l({companyUuid:a,projectUuid:b,skip:c,take:d,type:f}){let g={projectUuid:b,companyUuid:a,...f&&{type:f}},[h,i]=await Promise.all([e.z.document.findMany({where:g,skip:c,take:d,orderBy:{updatedAt:"desc"},select:{uuid:!0,type:!0,title:!0,version:!0,proposalUuid:!0,createdByUuid:!0,createdAt:!0,updatedAt:!0}}),e.z.document.count({where:g})]);return{documents:await Promise.all(h.map(a=>k(a))),total:i}}async function m(a,b,c){if(0===b.length)return[];let d={companyUuid:a,proposalUuid:{in:b},...c&&{type:c}},f=await e.z.document.findMany({where:d,orderBy:{createdAt:"desc"},select:{uuid:!0,type:!0,title:!0,content:!0,version:!0,proposalUuid:!0,createdByUuid:!0,createdAt:!0,updatedAt:!0}});return Promise.all(f.map(a=>k(a,!0)))}async function n(a,b){let c=await e.z.document.findFirst({where:{uuid:b,companyUuid:a},include:{project:{select:{uuid:!0,name:!0}}}});return c?k(c,!0):null}async function o(a,b){return e.z.document.findFirst({where:{uuid:b,companyUuid:a}})}async function p(a){let b=await e.z.document.create({data:{companyUuid:a.companyUuid,projectUuid:a.projectUuid,type:a.type,title:a.title,content:a.content,version:1,proposalUuid:a.proposalUuid,createdByUuid:a.createdByUuid},select:{uuid:!0,type:!0,title:!0,content:!0,version:!0,proposalUuid:!0,createdByUuid:!0,createdAt:!0,updatedAt:!0}});return"report"===a.type&&await q(a,b.uuid),k(b,!0)}async function q(a,b){try{g.B.emitChange({companyUuid:a.companyUuid,projectUuid:a.projectUuid,entityType:"document",entityUuid:b,action:"created",actorUuid:a.createdByUuid})}catch(c){t.warn({err:c,reportUuid:b,proposalUuid:a.proposalUuid},"Failed to emit document/created event for report")}if(!a.proposalUuid)return;let c=null;try{let b=await e.z.proposal.findFirst({where:{uuid:a.proposalUuid,companyUuid:a.companyUuid},select:{inputType:!0,inputUuids:!0}});if(b&&"idea"===b.inputType&&Array.isArray(b.inputUuids)){let a=b.inputUuids[0];"string"==typeof a&&a.length>0&&(c=a)}}catch(c){t.warn({err:c,reportUuid:b,proposalUuid:a.proposalUuid},"Failed to resolve parent Idea for report side effects");return}if(c){try{g.B.emitChange({companyUuid:a.companyUuid,projectUuid:a.projectUuid,entityType:"idea",entityUuid:c,action:"updated",actorUuid:a.createdByUuid})}catch(d){t.warn({err:d,reportUuid:b,ideaUuid:c,proposalUuid:a.proposalUuid},"Failed to emit idea/updated event for report")}try{let d=await (0,f.LS)(a.createdByUuid),e=d?.type??"agent";await h.createActivity({companyUuid:a.companyUuid,projectUuid:a.projectUuid,targetType:"idea",targetUuid:c,actorType:e,actorUuid:a.createdByUuid,action:"report_created",value:{reportUuid:b,proposalUuid:a.proposalUuid,reportTitle:a.title}})}catch(d){t.warn({err:d,reportUuid:b,ideaUuid:c,proposalUuid:a.proposalUuid},"Failed to record report_created Activity")}}}async function r(a,{title:b,content:c,incrementVersion:d}){let f={};void 0!==b&&(f.title=b),void 0!==c&&(f.content=c),d&&(f.version={increment:1});let g=await e.z.document.update({where:{uuid:a},data:f,include:{project:{select:{uuid:!0,name:!0}}}});return k(g,!0)}async function s(a){return e.z.document.delete({where:{uuid:a}})}d()}catch(a){d(a)}})},14120:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Wy:()=>t});var e=c(65582),f=c(52618),g=c(34853),h=c(97515),i=c(70369),j=c(35205),k=a([f,g,h,i,j]);[f,g,h,i,j]=k.then?(await k)():k;let u=e.default.child({module:"notification-turn"}),v={mentioned:"mentioned",elaboration_requested:"elaboration",elaboration_answered:"elaboration",elaboration_verified:"elaboration_verified",start_development:"start_development",yolo_requested:"yolo_requested",human_instruction:"human_instruction",task_assigned:"task_assigned",task_reopened:"task_assigned",task_verified:"task_assigned",idea_claimed:"task_assigned",proposal_approved:"task_assigned",proposal_rejected:"task_assigned"},w=new Set(["task","document","proposal","idea"]),x=new Set(["task_assigned","elaboration","elaboration_verified","start_development","yolo_requested"]),y=new Set([...x,"mentioned"]);async function l(a,b){return await f.z.agentInstance.findFirst({where:{uuid:b,companyUuid:a},select:{host:!0,cwd:!0,agentUuid:!0}})??null}function m(a,b,c){return(null==a||""===a)&&(null==b||""===b)?null:{host:a??"",cwd:null!=b&&""!==b?b:null,soft:c}}async function n(a,b){if(a.resolvedCwdSource&&"unconfigured"!==a.resolvedCwdSource)return{host:"invalid"===a.resolvedCwdAvailability?"\0invalid-project-cwd":a.resolvedCwdHost??"",cwd:null,runtimeCwd:a.resolvedRuntimeCwd,soft:!1};if(a.temporaryHost&&a.temporaryRuntimeCwd)return{host:a.temporaryHost,cwd:null,runtimeCwd:a.temporaryRuntimeCwd,soft:!1};if("mentioned"===b)return m(a.pinnedHost,a.pinnedCwd,!1);if(!w.has(a.entityType))return null;if("task"===a.entityType){let b=await f.z.task.findFirst({where:{uuid:a.entityUuid,companyUuid:a.companyUuid},select:{assigneeType:!0,assigneeUuid:!0,cwdHost:!0,runtimeCwd:!0}});if(b?.assigneeType==="agent_instance"&&b.assigneeUuid){let c=await l(a.companyUuid,b.assigneeUuid);if(c){let a=b.runtimeCwd?{host:b.cwdHost?.trim()?b.cwdHost:c.host,cwd:null,runtimeCwd:b.runtimeCwd,soft:!1}:m(c.host,c.cwd,!1);if(a)return a}}}if("idea"===a.entityType){let b=await (0,g.resolveDirectIdeaUuid)(a.companyUuid,a.entityType,a.entityUuid),c=await p(a,b);if(c)return c}let c=await q(a);return p(a,c)}async function o(a,b,c){try{let d=await f.z.agent.findFirst({where:{uuid:b,companyUuid:a},select:{ownerUuid:!0}});if(!d?.ownerUuid)return null;let e=await f.z.projectAgentCwdPreference.findFirst({where:{companyUuid:a,userUuid:d.ownerUuid,projectUuid:c,agentUuid:b},select:{host:!0,cwd:!0}});if(!e)return null;return m(e.host,e.cwd,!1)}catch(d){return u.warn({err:d,companyUuid:a,agentUuid:b,projectUuid:c},"resolveProjectOwnerCwdPin failed; degrading to online-first"),null}}async function p(a,b){if(!b)return null;let c=await f.z.idea.findFirst({where:{uuid:b,companyUuid:a.companyUuid},select:{assigneeType:!0,assigneeUuid:!0,cwdHost:!0,runtimeCwd:!0}});if(c?.assigneeType==="agent_instance"&&c.assigneeUuid){let b=await l(a.companyUuid,c.assigneeUuid);if(b&&b.agentUuid===a.recipientUuid)return c.runtimeCwd?{host:c.cwdHost?.trim()?c.cwdHost:b.host,cwd:null,runtimeCwd:c.runtimeCwd,soft:!1}:m(b.host,b.cwd,!1)}return null}async function q(a){return(await (0,j.resolveRootIdea)(a.companyUuid,a.entityType,a.entityUuid)).rootIdeaUuid}function r(a,b){if(b){let c=a.find(a=>a.host===b.host&&(!!b.runtimeCwd||a.cwd===b.cwd)&&"online"===a.effectiveStatus);if(c)return{kind:"directed",connection:c};if(!b.soft)return{kind:"offline_pin"}}let c=a.find(a=>"online"===a.effectiveStatus);return c?{kind:"online_first",connection:c}:{kind:"none"}}async function s(a,b,c,d){if(!c)return null;let e=await f.z.daemonSession.findFirst({where:{companyUuid:a,agentUuid:b,sessionId:c},select:{originConnectionUuid:!0}});return e?d.find(a=>a.uuid===e.originConnectionUuid&&"online"===a.effectiveStatus)??null:null}async function t(a){let b={turn:null,targetConnectionUuid:null,runtimeCwd:null,suppressWake:!1},c=v[a.action]??null;if(!c||"agent"!==a.recipientType)return b;try{let d=await (0,h._R)(a.companyUuid,a.recipientUuid),e=await n(a,c),j=r(d,e),k=null;if(w.has(a.entityType)&&(k=await (0,g.resolveDirectIdeaUuid)(a.companyUuid,a.entityType,a.entityUuid)),y.has(c)&&"online_first"===j.kind){let b=await s(a.companyUuid,a.recipientUuid,k,d);b&&(j={kind:"directed",connection:b})}if("online_first"===j.kind&&y.has(c)&&a.projectUuid){let b=await o(a.companyUuid,a.recipientUuid,a.projectUuid);b&&(e=b,j=r(d,b))}if(y.has(c)&&"online_first"===j.kind&&(j={kind:"directed",connection:j.connection}),"offline_pin"===j.kind)return{turn:null,targetConnectionUuid:null,runtimeCwd:e?.runtimeCwd??null,suppressWake:!0};if("none"===j.kind)return b;let l=j.connection,m="directed"===j.kind,p=e?.runtimeCwd??null,q=m?p??l.cwd??null:p,t=k??a.entityUuid,u=k;if(m&&k){let b=await f.z.daemonSession.findFirst({where:{companyUuid:a.companyUuid,agentUuid:a.recipientUuid,sessionId:k},select:{uuid:!0,originConnectionUuid:!0}});b&&b.originConnectionUuid!==l.uuid&&await f.z.daemonSession.update({where:{uuid:b.uuid,companyUuid:a.companyUuid},data:{originConnectionUuid:l.uuid,...q?{runtimeCwd:q}:{}}})}let v=await (0,g.resolveOrCreateSession)({companyUuid:a.companyUuid,agentUuid:a.recipientUuid,sessionId:t,directIdeaUuid:u,originConnectionUuid:l.uuid,...q?{runtimeCwd:q}:{}}),x=q??v.runtimeCwd??null,z="human_instruction"===c?a.instructionText??null:null,A="human_instruction"===c&&z?await (0,g.findReusablePendingInstructionTurn)(v.uuid,z):null;if(A||(A=await (0,g.createPendingTurn)({sessionUuid:v.uuid,trigger:c,promptText:z})),m)return(0,i.N_)({companyUuid:a.companyUuid,originConnectionUuid:l.uuid,turnUuid:A.uuid,...x?{runtimeCwd:x}:{}}),{turn:A,targetConnectionUuid:l.uuid,runtimeCwd:x,suppressWake:!1};return{turn:A,targetConnectionUuid:null,runtimeCwd:null,suppressWake:!1}}catch(c){return u.error({err:c,companyUuid:a.companyUuid,agentUuid:a.recipientUuid,action:a.action,entityType:a.entityType,entityUuid:a.entityUuid},"Failed to create DaemonSessionTurn for wake notification (notification was still created)"),b}}d()}catch(a){d(a)}})},25736:(a,b,c)=>{c.d(b,{vE:()=>d});function d(a){if(!a)return{pinnedHost:null,pinnedCwd:null};let b=new URLSearchParams(a),c=b.has("cwd"),d=b.has("host");if(!c&&!d)return{pinnedHost:null,pinnedCwd:null};let e=b.get("cwd")??"",f=b.get("host"),g={pinnedCwd:c&&""!==e?e:null,pinnedHost:d?f??"":null};return"1"===b.get("runtime")&&(g.runtimeCwd=!0),g}},28792:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{K1:()=>k,Ll:()=>i,U_:()=>h,s7:()=>j});var e=c(52618),f=c(42558),g=a([e]);e=(g.then?(await g)():g)[0];let k=["task","idea","proposal","document","daemon_session"];async function h(a,b){let c=await e.z.daemonConnection.findFirst({where:{uuid:b,companyUuid:a},select:{agentUuid:!0,agent:{select:{ownerUuid:!0}}}});return c?{agentUuid:c.agentUuid,ownerUuid:c.agent?.ownerUuid??null}:null}async function i(a){let b=await h(a.companyUuid,a.connectionUuid);return b?null!=b.ownerUuid&&a.actorUuid===b.ownerUuid||a.hasTaskAdmin?{ok:!0,target:b}:{ok:!1,reason:"forbidden"}:{ok:!1,reason:"not_found"}}function j(a){let b="deliver_turn"===a.command?{type:"control",command:"deliver_turn",targetConnectionUuid:a.targetConnectionUuid,turnUuid:a.turnUuid,...a.runtimeCwd?{runtimeCwd:a.runtimeCwd}:{}}:{type:"control",command:a.command,targetConnectionUuid:a.targetConnectionUuid,entityType:a.entityType,entityUuid:a.entityUuid,...a.runtimeCwd?{runtimeCwd:a.runtimeCwd}:{},...a.resumeReason?{resumeReason:a.resumeReason}:{},..."resume"===a.command?{orchestrator:a.orchestrator??null}:{}};f.B.emit((0,f.T)(a.targetConnectionUuid),b)}d()}catch(a){d(a)}})},34853:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{CONVERSATION_NAME_MAX:()=>i.VM,DAEMON_REPORTABLE_INTERRUPT_REASONS:()=>K,DEFAULT_TRANSCRIPT_MESSAGE_PAGE:()=>P,MAX_TRANSCRIPT_MESSAGES_PER_SESSION:()=>N,MERGED_TURN_STATUS:()=>I,SESSION_STATUSES:()=>L,STALE_THRESHOLD_MS:()=>h.BP,SessionReadOnlyError:()=>Q,TRANSCRIPT_ROLES:()=>M,TURN_INTERRUPT_REASONS:()=>J,TURN_STATUSES:()=>H,TURN_TRIGGERS:()=>G,advanceTurn:()=>t,advanceTurnForWake:()=>E,appendTranscriptMessages:()=>C,assertContinuable:()=>A,conversationNameFromInstruction:()=>i.Ff,createPendingTurn:()=>r,findReusablePendingInstructionTurn:()=>s,getFirstInstructionBySessionUuid:()=>i.L0,getPendingTurnsForConnection:()=>F,getSessionDetail:()=>z,getSessionTurns:()=>x,getVisibleSessions:()=>w,isSessionVisibleToCaller:()=>y,publishTranscriptEvent:()=>o,reconcileOrphanTurns:()=>u,resolveDirectIdeaUuid:()=>q,resolveOrCreateSession:()=>p,transcriptEventName:()=>n});var e=c(52618),f=c(42558),g=c(35205),h=c(97515),i=c(22137),j=a([e,g,h,i]);[e,g,h,i]=j.then?(await j)():j;let G=["task_assigned","mentioned","elaboration","elaboration_verified","start_development","yolo_requested","resume","human_instruction"],H=["pending","running","ended","interrupted"],I="merged",J=["user","crash","shutdown","offline","invalid_path"],K=["user","crash","shutdown","invalid_path"],L=["active","ended"],M=["user","assistant"],N=200;function k(a){return{uuid:a.uuid,agentUuid:a.agentUuid,sessionId:a.sessionId,backendSessionId:a.backendSessionId,directIdeaUuid:a.directIdeaUuid,originConnectionUuid:a.originConnectionUuid,runtimeCwd:a.runtimeCwd??null,status:a.status,title:a.title,lastTurnAt:a.lastTurnAt.toISOString(),totalInputTokens:a.totalInputTokens,totalOutputTokens:a.totalOutputTokens,totalCacheReadTokens:a.totalCacheReadTokens,totalCacheCreationTokens:a.totalCacheCreationTokens,createdAt:a.createdAt.toISOString(),updatedAt:a.updatedAt.toISOString()}}function l(a){return{uuid:a.uuid,sessionUuid:a.sessionUuid,seq:a.seq,trigger:a.trigger,promptText:a.promptText,status:a.status,interruptedReason:a.interruptedReason,relayError:a.relayError,usage:function(a){if(!a||"object"!=typeof a||Array.isArray(a)||"string"!=typeof a.source||!a.source)return null;let b=a=>"number"==typeof a&&Number.isFinite(a)?a:null;return{inputTokens:b(a.inputTokens),outputTokens:b(a.outputTokens),cacheCreationTokens:b(a.cacheCreationTokens),cacheReadTokens:b(a.cacheReadTokens),model:"string"==typeof a.model?a.model:null,source:a.source}}(a.usage),executionUuid:a.executionUuid,startedAt:a.startedAt?a.startedAt.toISOString():null,endedAt:a.endedAt?a.endedAt.toISOString():null,createdAt:a.createdAt.toISOString()}}function m(a){return"agent"===a.type?{agentUuid:a.actorUuid}:{agent:{ownerUuid:a.actorUuid}}}function n(a){return`transcript:${a}`}function o(a){f.B.emit(n(a.sessionUuid),a)}async function p(a){let b=await e.z.daemonSession.upsert({where:{agentUuid_sessionId:{agentUuid:a.agentUuid,sessionId:a.sessionId}},create:{companyUuid:a.companyUuid,agentUuid:a.agentUuid,sessionId:a.sessionId,directIdeaUuid:a.directIdeaUuid??null,originConnectionUuid:a.originConnectionUuid,runtimeCwd:a.runtimeCwd??null,status:"active"},update:{companyUuid:a.companyUuid,...void 0!==a.runtimeCwd?{runtimeCwd:a.runtimeCwd}:{}}});return k(b)}async function q(a,b,c){return(await (0,g.resolveRootIdea)(a,b,c)).directIdeaUuid}async function r(a){let b=await e.z.daemonSession.findUnique({where:{uuid:a.sessionUuid},select:{uuid:!0,companyUuid:!0}});if(!b)throw Error(`DaemonSession ${a.sessionUuid} not found`);let c=null;for(let b=0;b<5;b++){let d=await e.z.daemonSessionTurn.findFirst({where:{sessionUuid:a.sessionUuid},orderBy:{seq:"desc"},select:{seq:!0}}),f=(d?.seq??0)+1;try{c=await e.z.daemonSessionTurn.create({data:{sessionUuid:a.sessionUuid,seq:f,trigger:a.trigger,promptText:a.promptText??null,status:"pending",executionUuid:a.executionUuid??null}});break}catch(a){if("object"==typeof a&&null!==a&&"code"in a&&"P2002"===a.code&&b<4)continue;throw a}}if(!c)throw Error(`createPendingTurn: could not allocate a unique seq for session ${a.sessionUuid} after 5 attempts`);await e.z.daemonSession.update({where:{uuid:a.sessionUuid},data:{lastTurnAt:new Date}});let d=l(c);return o({companyUuid:b.companyUuid,sessionUuid:a.sessionUuid,trigger:"turn_created",turn:d,messages:[]}),d}async function s(a,b){let c=await e.z.daemonSessionTurn.findFirst({where:{sessionUuid:a,status:"pending",trigger:"human_instruction",promptText:b},orderBy:{seq:"asc"}});return c?l(c):null}let O={pending:["running"],running:["ended","interrupted"],ended:[],interrupted:[]};async function t(a,b,c={}){let d,f=await e.z.daemonSessionTurn.findUnique({where:{uuid:a},select:{uuid:!0,sessionUuid:!0,status:!0}});if(!f)return{ok:!1,reason:"not_found"};if(!(O[f.status]??[]).includes(b))return{ok:!1,reason:"invalid_transition",from:f.status,to:b};let g={status:b};void 0!==c.startedAt&&(g.startedAt=c.startedAt),void 0!==c.endedAt&&(g.endedAt=c.endedAt),void 0!==c.executionUuid&&(g.executionUuid=c.executionUuid),"interrupted"===b&&void 0!==c.interruptedReason&&(g.interruptedReason=c.interruptedReason);let h="ended"===b||"interrupted"===b;h&&void 0!==c.relayError&&(g.relayError=c.relayError);let i=h&&null!=c.usage?c.usage:null;if(i&&(g.usage=i),i){let[b]=await e.z.$transaction([e.z.daemonSessionTurn.update({where:{uuid:a},data:g}),e.z.daemonSession.update({where:{uuid:f.sessionUuid},data:{totalInputTokens:{increment:c.usage?.inputTokens??0},totalOutputTokens:{increment:c.usage?.outputTokens??0},totalCacheReadTokens:{increment:c.usage?.cacheReadTokens??0},totalCacheCreationTokens:{increment:c.usage?.cacheCreationTokens??0}}})]);d=b}else d=await e.z.daemonSessionTurn.update({where:{uuid:a},data:g});let j=await e.z.daemonSession.findUnique({where:{uuid:f.sessionUuid},select:{companyUuid:!0}});if(!j)throw Error(`advanceTurn: session ${f.sessionUuid} missing for just-updated turn ${a}`);let k=l(d);return o({companyUuid:j.companyUuid,sessionUuid:f.sessionUuid,trigger:"turn_status_changed",turn:k,messages:[]}),{ok:!0,turn:k}}async function u(a,b,d={}){try{let f=await e.z.daemonSessionTurn.findMany({where:{status:"running",session:{companyUuid:a,originConnectionUuid:b}},select:{uuid:!0}});if(0===f.length)return 0;if(!d.force){let c=await e.z.daemonConnection.findFirst({where:{companyUuid:a,uuid:b},select:{lastSeenAt:!0}});if(!function(a,b=Date.now()){return!a||b-a.lastSeenAt.getTime()>h.BP}(c))return 0}let g=new Date,i=0;for(let a of f){let b=await t(a.uuid,"interrupted",{interruptedReason:"offline",endedAt:g});if(b.ok)i+=1;else if("invalid_transition"===b.reason){let{default:d}=await Promise.resolve().then(c.bind(c,65582));d.info({turnUuid:a.uuid,from:b.from,to:b.to},"Orphan-turn reconcile lost the race to a concurrent terminal transition")}}return i}catch(e){let{default:d}=await Promise.resolve().then(c.bind(c,65582));return d.error({err:e,companyUuid:a,connectionUuid:b},"Failed to reconcile orphaned running turns"),0}}async function v(a,b){if(0===b.length)return 0;try{let c=await e.z.daemonSessionTurn.findMany({where:{status:"running",sessionUuid:{in:b.map(a=>a.uuid)}},select:{sessionUuid:!0}});if(0===c.length)return 0;let d=new Set(c.map(a=>a.sessionUuid)),f=[...new Set(b.filter(a=>d.has(a.uuid)).map(a=>a.originConnectionUuid))],g=0;for(let b of f)g+=await u(a,b);return g}catch(d){let{default:b}=await Promise.resolve().then(c.bind(c,65582));return b.error({err:d,companyUuid:a},"Read-time orphan-turn fallback failed (read continues unconverged)"),0}}async function w(a){let b=await e.z.daemonSession.findMany({where:{companyUuid:a.companyUuid,...m(a)},orderBy:{lastTurnAt:"desc"}});return await v(a.companyUuid,b),b.map(k)}async function x(a,b){return await e.z.daemonSession.findFirst({where:{uuid:b,companyUuid:a.companyUuid,...m(a)},select:{uuid:!0}})?(await e.z.daemonSessionTurn.findMany({where:{sessionUuid:b},orderBy:{seq:"asc"}})).map(l):null}async function y(a,b){let c=await e.z.daemonSession.findFirst({where:{uuid:b,companyUuid:a.companyUuid,...m(a)},select:{uuid:!0}});return null!=c}let P=20;async function z(a,b,c={}){let d=await e.z.daemonSession.findFirst({where:{uuid:b,companyUuid:a.companyUuid,...m(a)}});if(!d)return null;await v(a.companyUuid,[d]);let f=Math.min(Math.max(1,Math.floor(c.limit??P)),200),g="number"==typeof c.beforeTurnSeq&&Number.isFinite(c.beforeTurnSeq)?c.beforeTurnSeq:null,h="number"==typeof c.beforeMsgSeq&&Number.isFinite(c.beforeMsgSeq)?c.beforeMsgSeq:null,i=await e.z.daemonSessionTurn.findMany({where:{sessionUuid:b,...null!==g?{seq:{lte:g}}:{}},orderBy:{seq:"desc"}}),j=i.map(a=>a.uuid),n=j.length>0?await e.z.daemonTranscriptMessage.findMany({where:{turnUuid:{in:j}},orderBy:[{turnUuid:"asc"},{seq:"asc"}]}):[],o=new Map;for(let a of n){let b=B(a),c=o.get(b.turnUuid);c?c.push(b):o.set(b.turnUuid,[b])}let p=[];for(let a of i){let b=o.get(a.uuid)??[];for(let c=b.length-1;c>=0;c--)p.push({turnSeq:a.seq,msgSeq:b[c].seq,rendered:b[c]});let c=a.promptText,d="string"==typeof c&&c.length>0;p.push({turnSeq:a.seq,msgSeq:0,rendered:d?{uuid:`synthetic:${a.uuid}`,turnUuid:a.uuid,role:"user",text:c,seq:0,createdAt:a.createdAt.toISOString()}:null})}let q=null!==g?p.filter(a=>a.turnSeq<g||a.turnSeq===g&&a.msgSeq<(h??0)):p,r=q.length>f,s=r?q.slice(0,f):q,t=[...s].reverse(),u=s.length>0?s[s.length-1]:null,w=new Map;for(let a of i)w.set(a.uuid,a);let x=new Map;for(let a of i)x.set(a.seq,a.uuid);let y=new Map,A=[];for(let a of t)y.has(a.turnSeq)||(y.set(a.turnSeq,[]),A.push(a.turnSeq)),a.rendered&&y.get(a.turnSeq).push(a.rendered);let C=A.map(a=>{let b=x.get(a);return{...l(w.get(b)),messages:y.get(a)??[]}});return{session:k(d),turns:C,hasMore:r,oldestTurnSeq:u?u.turnSeq:null,oldestMsgSeq:u?u.msgSeq:null}}class Q extends Error{constructor(a){super("This session is read-only: its origin connection is offline. A daemon session can only be continued on the connection that holds its on-disk transcript (claude --resume is cwd/machine-bound), so it is never routed to another connection."),this.code="session_read_only",this.name="SessionReadOnlyError",this.originConnectionUuid=a}}async function A(a,b){let c=await e.z.daemonSession.findFirst({where:{uuid:b,companyUuid:a},select:{originConnectionUuid:!0}});if(!c)throw Error(`DaemonSession ${b} not found`);let d=await e.z.daemonConnection.findFirst({where:{uuid:c.originConnectionUuid,companyUuid:a},select:{status:!0,lastSeenAt:!0,cwd:!0}});if(!(null!=d&&"online"===d.status&&Date.now()-d.lastSeenAt.getTime()<=h.BP))throw new Q(c.originConnectionUuid);return c.originConnectionUuid}function B(a){return{uuid:a.uuid,turnUuid:a.turnUuid,role:a.role,text:a.text,seq:a.seq,createdAt:a.createdAt.toISOString()}}async function C(a){let b=null;if(a.turnUuid)b=await e.z.daemonSessionTurn.findFirst({where:{uuid:a.turnUuid,session:{agentUuid:a.agentUuid,companyUuid:a.companyUuid}},select:{uuid:!0,sessionUuid:!0}});else if(a.sessionId){let c=await e.z.daemonSession.findFirst({where:{agentUuid:a.agentUuid,companyUuid:a.companyUuid,sessionId:a.sessionId},select:{uuid:!0}});c&&(b=await e.z.daemonSessionTurn.findFirst({where:{sessionUuid:c.uuid,status:"running"},orderBy:{seq:"asc"},select:{uuid:!0,sessionUuid:!0}})??await e.z.daemonSessionTurn.findFirst({where:{sessionUuid:c.uuid},orderBy:{seq:"desc"},select:{uuid:!0,sessionUuid:!0}}))}if(!b)return{ok:!1,reason:"not_found"};let c=b.sessionUuid,d=a.messages.filter(a=>M.includes(a.role)&&"string"==typeof a.text&&a.text.trim().length>0),f=[];if(d.length>0){let a=await e.z.daemonTranscriptMessage.findFirst({where:{turnUuid:b.uuid},orderBy:{seq:"desc"},select:{seq:!0}}),g=(a?.seq??0)+1,h=[];for(let a of d){let c=await e.z.daemonTranscriptMessage.create({data:{turnUuid:b.uuid,role:a.role,text:a.text,seq:g}});h.push(c),g+=1}f=h.map(B),await D(c)}let g=await e.z.daemonTranscriptMessage.count({where:{turn:{sessionUuid:c}}});if(f.length>0){let d=await e.z.daemonSessionTurn.findUnique({where:{uuid:b.uuid}}),g=await e.z.daemonSession.findUnique({where:{uuid:c},select:{companyUuid:!0}});d&&o({companyUuid:g?.companyUuid??a.companyUuid,sessionUuid:c,trigger:"transcript_appended",turn:l(d),messages:f})}return{ok:!0,appended:f.length,stored:g,messages:f}}async function D(a){let b=await e.z.daemonTranscriptMessage.count({where:{turn:{sessionUuid:a}}})-N;if(b<=0)return;let c=await e.z.daemonTranscriptMessage.findMany({where:{turn:{sessionUuid:a}},orderBy:[{createdAt:"asc"},{id:"asc"}],take:b,select:{uuid:!0}});0!==c.length&&await e.z.daemonTranscriptMessage.deleteMany({where:{uuid:{in:c.map(a=>a.uuid)}}})}async function E(a){let b,c=await e.z.daemonSession.findFirst({where:{agentUuid:a.agentUuid,companyUuid:a.companyUuid,sessionId:a.sessionId},select:{uuid:!0}});if(!c)return{ok:!1,reason:"not_found"};if(a.backendSessionId){let b=await e.z.daemonSession.updateMany({where:{uuid:c.uuid,OR:[{backendSessionId:null},{backendSessionId:a.backendSessionId}]},data:{backendSessionId:a.backendSessionId}});if(0===b.count)return{ok:!1,reason:"backend_session_conflict"}}let d="running"===a.status?"pending":"ended"===a.status||"interrupted"===a.status?"running":null,f=await e.z.daemonSessionTurn.findFirst({where:{sessionUuid:c.uuid,...d?{status:d}:{}},orderBy:{seq:"asc"},select:{uuid:!0,seq:!0}});if(!f)return{ok:!1,reason:"not_found"};if(a.entityType&&a.entityUuid){let c=await e.z.daemonExecution.findFirst({where:{companyUuid:a.companyUuid,connectionUuid:a.connectionUuid,entityType:a.entityType,entityUuid:a.entityUuid},select:{uuid:!0}});b=c?.uuid??null}let g=new Date,h=void 0!==a.startedAt?a.startedAt:"running"===a.status?g:void 0,i=void 0!==a.endedAt?a.endedAt:"ended"===a.status||"interrupted"===a.status?g:void 0,j=await t(f.uuid,a.status,{...void 0!==h?{startedAt:h}:{},...void 0!==i?{endedAt:i}:{},...void 0!==b?{executionUuid:b}:{},...void 0!==a.interruptedReason?{interruptedReason:a.interruptedReason}:{},...void 0!==a.relayError?{relayError:a.relayError}:{},...void 0!==a.usage?{usage:a.usage}:{}});if(!j.ok)return"not_found"===j.reason?{ok:!1,reason:"not_found"}:{ok:!1,reason:"invalid_transition",from:j.from,to:j.to};let k=a.coalescedCount??1;if("running"===a.status&&k>1){let b=await e.z.daemonSessionTurn.findMany({where:{sessionUuid:c.uuid,status:"pending",seq:{gt:f.seq}},orderBy:{seq:"asc"},take:k-1});if(b.length>0)for(let d of(await e.z.daemonSessionTurn.updateMany({where:{uuid:{in:b.map(a=>a.uuid)}},data:{status:I}}),b))o({companyUuid:a.companyUuid,sessionUuid:c.uuid,trigger:"turn_status_changed",turn:l({...d,status:I}),messages:[]})}return{ok:!0,turn:j.turn}}async function F(a){return(await e.z.daemonSessionTurn.findMany({where:{status:"pending",session:{companyUuid:a.companyUuid,agentUuid:a.agentUuid,originConnectionUuid:a.connectionUuid}},orderBy:[{session:{createdAt:"asc"}},{seq:"asc"}],select:{uuid:!0,sessionUuid:!0,seq:!0,trigger:!0,promptText:!0,session:{select:{sessionId:!0,directIdeaUuid:!0,runtimeCwd:!0}}}})).map(a=>({turnUuid:a.uuid,sessionUuid:a.sessionUuid,sessionId:a.session.sessionId,directIdeaUuid:a.session.directIdeaUuid,runtimeCwd:a.session.runtimeCwd,seq:a.seq,trigger:a.trigger,promptText:a.promptText}))}d()}catch(a){d(a)}})},35205:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{resolveRootIdea:()=>j});var e=c(71165),f=c(57578),g=c(8777),h=c(66643),i=a([e,f,g,h]);async function j(a,b,c){let d=await k(a,b,c),e=d.lineage.find(a=>"idea"===a.type)?.uuid??null;return{...d,directIdeaUuid:e}}async function k(a,b,c){switch(b){case"idea":return l(a,c);case"proposal":return o(a,c,"proposal");case"task":return m(a,c);case"document":return n(a,c);default:return{rootIdeaUuid:null,lineage:[],resolvedVia:"not_found"}}}async function l(a,b){let c=[],d=await p(a,b,c);return null===d?{rootIdeaUuid:null,lineage:[],resolvedVia:"not_found"}:{rootIdeaUuid:d,lineage:c,resolvedVia:"root_idea"}}async function m(a,b){let c=await (0,e.K4)(a,b);if(!c)return{rootIdeaUuid:null,lineage:[],resolvedVia:"not_found"};let d={type:"task",uuid:c.uuid,title:c.title};return c.proposalUuid?o(a,c.proposalUuid,"via_proposal",d):{rootIdeaUuid:null,lineage:[d],resolvedVia:"no_proposal"}}async function n(a,b){let c=await (0,g.Cs)(a,b);if(!c)return{rootIdeaUuid:null,lineage:[],resolvedVia:"not_found"};let d={type:"document",uuid:c.uuid,title:c.title};return c.proposalUuid?o(a,c.proposalUuid,"via_document_proposal",d):{rootIdeaUuid:null,lineage:[d],resolvedVia:"standalone_document"}}async function o(a,b,c,d){var e;let g=d?[d]:[],h=await (0,f.PK)(a,b);if(!h)return{rootIdeaUuid:null,lineage:g,resolvedVia:"not_found"};if(g.push({type:"proposal",uuid:h.uuid,title:h.title}),"idea"!==h.inputType)return{rootIdeaUuid:null,lineage:g,resolvedVia:"proposal_input_not_idea"};let i=(e=h.inputUuids,Array.isArray(e)?e.filter(a=>"string"==typeof a):[]);if(0===i.length)return{rootIdeaUuid:null,lineage:g,resolvedVia:"proposal_input_not_idea"};let j=await p(a,i[0],g);if(null===j)return{rootIdeaUuid:null,lineage:g,resolvedVia:"not_found"};let k="via_document_proposal"===c?"via_document_proposal":"via_proposal"===c?"via_proposal":"root_idea";if(1===i.length)return{rootIdeaUuid:j,lineage:g,resolvedVia:k};let l=[j];for(let b of i.slice(1)){let c=await p(a,b);null!==c&&l.push(c)}return{rootIdeaUuid:j,lineage:g,resolvedVia:k,ambiguous:!0,candidates:l}}async function p(a,b,c){let d=await (0,h.MY)(a,b);if(!d)return null;c?.push({type:"idea",uuid:d.uuid,title:d.title});let e=new Set([d.uuid]);for(let b=0;b<50;b++){let b=d.parentUuid;if(!b||e.has(b))break;e.add(b);let f=await (0,h.MY)(a,b);if(!f)break;c?.push({type:"idea",uuid:f.uuid,title:f.title}),d=f}return d.uuid}[e,f,g,h]=i.then?(await i)():i,d()}catch(a){d(a)}})},37943:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{$M:()=>o,Ip:()=>p,NL:()=>q,Ug:()=>u,Xm:()=>m,aF:()=>l,lX:()=>t,p_:()=>n,rD:()=>r,y1:()=>s});var e=c(52618),f=c(42558),g=c(14120),h=c(77716),i=a([e,g,h]);function j(a){return"idea"!==a.entityType&&"task"!==a.entityType?null:`${a.companyUuid}:${a.entityType}:${a.entityUuid}`}async function k(a){let b=new Map;for(let c of a){let a=j(c);a&&!b.has(a)&&b.set(a,{companyUuid:c.companyUuid,entityType:c.entityType,entityUuid:c.entityUuid})}let c=new Map;return await Promise.all([...b.entries()].map(async([a,b])=>{c.set(a,await (0,h.V)(b.companyUuid,b.entityType,b.entityUuid))})),a.map(a=>{var b,d;let e=j(a);return b=a,d=e?c.get(e)??null:null,{uuid:b.uuid,projectUuid:b.projectUuid,projectName:b.projectName,recipientType:b.recipientType,recipientUuid:b.recipientUuid,entityType:b.entityType,entityUuid:b.entityUuid,entityTitle:b.entityTitle,action:b.action,message:b.message,actorType:b.actorType,actorUuid:b.actorUuid,actorName:b.actorName,readAt:b.readAt?.toISOString()??null,archivedAt:b.archivedAt?.toISOString()??null,createdAt:b.createdAt.toISOString(),instructionText:b.instructionText??null,orchestrator:d}})}async function l(a){let b=await e.z.notification.create({data:{companyUuid:a.companyUuid,projectUuid:a.projectUuid,recipientType:a.recipientType,recipientUuid:a.recipientUuid,entityType:a.entityType,entityUuid:a.entityUuid,entityTitle:a.entityTitle,projectName:a.projectName,action:a.action,message:a.message,actorType:a.actorType,actorUuid:a.actorUuid,actorName:a.actorName,instructionText:a.instructionText??null}}),c=await o(a.companyUuid,a.recipientType,a.recipientUuid),{turn:d,targetConnectionUuid:h,runtimeCwd:i,suppressWake:j}=await (0,g.Wy)(a);f.B.emit(`notification:${a.recipientType}:${a.recipientUuid}`,{type:"new_notification",notificationUuid:b.uuid,unreadCount:c,action:a.action,actorName:a.actorName,entityTitle:a.entityTitle,entityType:a.entityType,entityUuid:a.entityUuid,projectUuid:a.projectUuid,targetConnectionUuid:h,runtimeCwd:i,suppressWake:j});let[l]=await k([b]);return{notification:l,turn:d}}async function m(a){let b=await Promise.all(a.map(a=>e.z.notification.create({data:{companyUuid:a.companyUuid,projectUuid:a.projectUuid,recipientType:a.recipientType,recipientUuid:a.recipientUuid,entityType:a.entityType,entityUuid:a.entityUuid,entityTitle:a.entityTitle,projectName:a.projectName,action:a.action,message:a.message,actorType:a.actorType,actorUuid:a.actorUuid,actorName:a.actorName,instructionText:a.instructionText??null}}))),c=new Map;for(let b of a){let{targetConnectionUuid:a,runtimeCwd:d,suppressWake:e}=await (0,g.Wy)(b);c.set(b,{targetConnectionUuid:a,runtimeCwd:d,suppressWake:e})}let d=new Set;for(let b of a)d.add(`${b.recipientType}:${b.recipientUuid}:${b.companyUuid}`);for(let e of d){let[d,g,h]=e.split(":"),i=await o(h,d,g),j=b.find(a=>a.recipientType===d&&a.recipientUuid===g),k=a.find(a=>a.recipientType===d&&a.recipientUuid===g);f.B.emit(`notification:${d}:${g}`,{type:"new_notification",notificationUuid:j?.uuid,unreadCount:i,action:k?.action,actorName:k?.actorName,entityTitle:k?.entityTitle,entityType:k?.entityType,entityUuid:k?.entityUuid,projectUuid:k?.projectUuid,targetConnectionUuid:k?c.get(k)?.targetConnectionUuid??null:null,runtimeCwd:k?c.get(k)?.runtimeCwd??null:null,suppressWake:!!k&&(c.get(k)?.suppressWake??!1)})}return k(b)}async function n(a){let{companyUuid:b,recipientType:c,recipientUuid:d,projectUuid:f,readFilter:g,archived:h}=a,i=a.skip??0,j=a.take??20,l={companyUuid:b,recipientType:c,recipientUuid:d,...f&&{projectUuid:f},..."unread"===g&&{readAt:null},..."read"===g&&{readAt:{not:null}},...!1===h&&{archivedAt:null},...!0===h&&{archivedAt:{not:null}}},[m,n,p]=await Promise.all([e.z.notification.findMany({where:l,skip:i,take:j,orderBy:{createdAt:"desc"}}),e.z.notification.count({where:l}),o(b,c,d)]);return{notifications:await k(m),total:n,unreadCount:p}}async function o(a,b,c){return e.z.notification.count({where:{companyUuid:a,recipientType:b,recipientUuid:c,readAt:null,archivedAt:null}})}async function p(a,b,c,d){await e.z.notification.updateMany({where:{uuid:a,companyUuid:b,recipientType:c,recipientUuid:d,readAt:null},data:{readAt:new Date}});let g=await e.z.notification.findFirst({where:{uuid:a,companyUuid:b}});if(!g)throw Error("Notification not found");let h=await o(b,c,d);f.B.emit(`notification:${c}:${d}`,{type:"count_update",unreadCount:h});let[i]=await k([g]);return i}async function q(a,b,c,d){let g=await e.z.notification.updateMany({where:{companyUuid:a,recipientType:b,recipientUuid:c,readAt:null,...d&&{projectUuid:d}},data:{readAt:new Date}}),h=await o(a,b,c);return f.B.emit(`notification:${b}:${c}`,{type:"count_update",unreadCount:h}),{count:g.count}}async function r(a,b,c,d){await e.z.notification.updateMany({where:{uuid:a,companyUuid:b,recipientType:c,recipientUuid:d,archivedAt:null},data:{archivedAt:new Date}});let g=await e.z.notification.findFirst({where:{uuid:a,companyUuid:b}});if(!g)throw Error("Notification not found");let h=await o(b,c,d);f.B.emit(`notification:${c}:${d}`,{type:"count_update",unreadCount:h});let[i]=await k([g]);return i}function s(a){f.B.emit(`notification:user:${a.ownerUuid}`,{type:"new_notification",action:"agent_checkin",entityType:"agent",entityUuid:a.agentUuid,entityTitle:a.agentName,actorName:a.agentName})}async function t(a,b,c){let d=await e.z.notificationPreference.findUnique({where:{ownerType_ownerUuid:{ownerType:b,ownerUuid:c}}});return d||(d=await e.z.notificationPreference.create({data:{companyUuid:a,ownerType:b,ownerUuid:c}})),{uuid:d.uuid,ownerType:d.ownerType,ownerUuid:d.ownerUuid,taskAssigned:d.taskAssigned,taskStatusChanged:d.taskStatusChanged,taskVerified:d.taskVerified,taskReopened:d.taskReopened,proposalSubmitted:d.proposalSubmitted,proposalApproved:d.proposalApproved,proposalRejected:d.proposalRejected,ideaClaimed:d.ideaClaimed,commentAdded:d.commentAdded,elaborationRequested:d.elaborationRequested,elaborationAnswered:d.elaborationAnswered,mentioned:d.mentioned}}async function u(a,b,c,d){let f=await e.z.notificationPreference.upsert({where:{ownerType_ownerUuid:{ownerType:b,ownerUuid:c}},create:{companyUuid:a,ownerType:b,ownerUuid:c,...d},update:d});return{uuid:f.uuid,ownerType:f.ownerType,ownerUuid:f.ownerUuid,taskAssigned:f.taskAssigned,taskStatusChanged:f.taskStatusChanged,taskVerified:f.taskVerified,taskReopened:f.taskReopened,proposalSubmitted:f.proposalSubmitted,proposalApproved:f.proposalApproved,proposalRejected:f.proposalRejected,ideaClaimed:f.ideaClaimed,commentAdded:f.commentAdded,elaborationRequested:f.elaborationRequested,elaborationAnswered:f.elaborationAnswered,mentioned:f.mentioned}}[e,g,h]=i.then?(await i)():i,d()}catch(a){d(a)}})},48873:(a,b,c)=>{c.d(b,{Ik:()=>f,Yy:()=>d,nm:()=>e});class d extends Error{constructor(a){super(`${a} is already claimed`),this.name="AlreadyClaimedError"}}class e extends Error{constructor(a){super(`${a} is not currently claimed`),this.name="NotClaimedError"}}function f(a){return"object"==typeof a&&null!==a&&"code"in a&&"P2025"===a.code}},54349:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Hu:()=>p,eT:()=>o,fg:()=>m,uA:()=>s});var e=c(52618),f=c(76872),g=c(90494),h=c(88437),i=c(42558),j=c(65582),k=a([e,f,g,h]);[e,f,g,h]=k.then?(await k)():k;let t={uuid:!0,targetType:!0,targetUuid:!0,content:!0,authorType:!0,authorUuid:!0,createdAt:!0,updatedAt:!0};async function l(a){return Promise.all(a.map(async a=>{let b=await (0,f.lR)(a.authorType,a.authorUuid);return{uuid:a.uuid,targetType:a.targetType,targetUuid:a.targetUuid,content:a.content,author:{type:a.authorType,uuid:a.authorUuid,name:b??"Unknown"},createdAt:a.createdAt.toISOString(),updatedAt:a.updatedAt.toISOString()}}))}async function m(a){let{companyUuid:b,targetType:c,targetUuid:d,limit:g}=a;if(!await (0,f._9)(c,d,b))return void 0!==g?{comments:[],total:0,nextCursor:null,hasMore:!1}:{comments:[],total:0};if(void 0!==g)return n(a,g);let{skip:h,take:i}=a,j={companyUuid:b,targetType:c,targetUuid:d},[k,m]=await Promise.all([e.z.comment.findMany({where:j,skip:h,take:i,orderBy:[{createdAt:"desc"},{id:"desc"}],select:t}),e.z.comment.count({where:j})]);return{comments:await l(k),total:m}}async function n(a,b){let{companyUuid:c,targetType:d,targetUuid:f,cursor:g}=a,h={companyUuid:c,targetType:d,targetUuid:f},i=!1;if(g){let a=await e.z.comment.findFirst({where:{...h,uuid:g},select:{uuid:!0}});i=null!==a}let[j,k]=await Promise.all([e.z.comment.findMany({where:h,orderBy:[{createdAt:"desc"},{id:"desc"}],take:b+1,...i?{cursor:{uuid:g},skip:1}:{},select:t}),e.z.comment.count({where:h})]),m=j.length>b,n=m?j.slice(0,b):j,o=m?n[n.length-1].uuid:null;return{comments:await l(n),total:k,nextCursor:o,hasMore:m}}async function o({companyUuid:a,targetType:b,targetUuid:c,content:d,authorType:g,authorUuid:h}){if(!await (0,f._9)(b,c,a))throw Error(`Target ${b} with UUID ${c} not found`);let k=await e.z.comment.create({data:{companyUuid:a,targetType:b,targetUuid:c,content:d,authorType:g,authorUuid:h},select:{uuid:!0,targetType:!0,targetUuid:!0,content:!0,authorType:!0,authorUuid:!0,createdAt:!0,updatedAt:!0}}),l=await (0,f.lR)(k.authorType,k.authorUuid);return p(b,c).then(d=>{d&&i.B.emitChange({companyUuid:a,projectUuid:d,entityType:b,entityUuid:c,action:"updated",actorUuid:h})}).catch(()=>{}),r(a,b,c,k.uuid,d,g,h).catch(a=>j.default.error({err:a},"Failed to process comment mentions")),{uuid:k.uuid,targetType:k.targetType,targetUuid:k.targetUuid,content:k.content,author:{type:k.authorType,uuid:k.authorUuid,name:l??"Unknown"},createdAt:k.createdAt.toISOString(),updatedAt:k.updatedAt.toISOString()}}async function p(a,b,c){let d=c?{companyUuid:c}:{};switch(a){case"task":{let a=await e.z.task.findFirst({where:{uuid:b,...d},select:{projectUuid:!0}});return a?.projectUuid??null}case"idea":{let a=await e.z.idea.findFirst({where:{uuid:b,...d},select:{projectUuid:!0}});return a?.projectUuid??null}case"proposal":{let a=await e.z.proposal.findFirst({where:{uuid:b,...d},select:{projectUuid:!0}});return a?.projectUuid??null}case"document":{let a=await e.z.document.findFirst({where:{uuid:b,...d},select:{projectUuid:!0}});return a?.projectUuid??null}default:return null}}async function q(a,b){switch(a){case"task":{let a=await e.z.task.findUnique({where:{uuid:b},select:{title:!0}});return a?.title??"Unknown Task"}case"idea":{let a=await e.z.idea.findUnique({where:{uuid:b},select:{title:!0}});return a?.title??"Unknown Idea"}case"proposal":{let a=await e.z.proposal.findUnique({where:{uuid:b},select:{title:!0}});return a?.title??"Unknown Proposal"}case"document":{let a=await e.z.document.findUnique({where:{uuid:b},select:{title:!0}});return a?.title??"Unknown Document"}default:return"Unknown"}}async function r(a,b,c,d,e,f,i){let j=g.Xs(e);if(0===j.length)return;let k=await p(b,c);if(!k)return;let l=await q(b,c);for(let m of(await g.AM({companyUuid:a,sourceType:"comment",sourceUuid:d,content:e,actorType:f,actorUuid:i,projectUuid:k,entityTitle:l}),j))(m.type!==f||m.uuid!==i)&&await h.createActivity({companyUuid:a,projectUuid:k,targetType:b,targetUuid:c,actorType:f,actorUuid:i,action:"mentioned",value:{mentionedType:m.type,mentionedUuid:m.uuid,mentionedName:m.displayName,sourceType:"comment",sourceUuid:d}})}async function s(a,b,c){if(0===c.length)return{};let d=await e.z.comment.groupBy({by:["targetUuid"],where:{companyUuid:a,targetType:b,targetUuid:{in:c}},_count:{targetUuid:!0}}),f={};for(let a of c)f[a]=0;for(let a of d)f[a.targetUuid]=a._count.targetUuid;return f}d()}catch(a){d(a)}})},66643:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{BB:()=>u,EZ:()=>B,JF:()=>z,MY:()=>x,Nm:()=>G,Q7:()=>w,XB:()=>L,Xo:()=>D,bO:()=>q,bY:()=>H,h_:()=>E,i1:()=>y,jJ:()=>I,w9:()=>C,xo:()=>J,yM:()=>K});var e=c(52618),f=c(76872),g=c(42558),h=c(48873),i=c(27473),j=c(90494),k=c(88437),l=c(8777),m=c(57578),n=c(65582),o=a([e,f,j,k,l,m]);[e,f,j,k,l,m]=o.then?(await o)():o;let M={open:["elaborating"],elaborating:["elaborated"],elaborated:[]};function p(a){switch(a){case"assigned":case"in_progress":return"elaborating";case"proposal_created":case"completed":case"closed":case"pending_review":return"elaborated";default:return a}}function q(a,b){return(M[p(a)]||[]).includes(b)}async function r(a,b,c,d){if(!d)return{assigneeType:b,assigneeUuid:c};let f=await e.z.agentInstance.findFirst({where:{uuid:d,companyUuid:a},select:{uuid:!0}});if(!f)throw Error("Agent instance not found");return{assigneeType:"agent_instance",assigneeUuid:f.uuid}}function s(a,b){if(!a&&!b)return{};if(!a||!b)throw Error("Assignment provenance type and UUID must be provided together");return{assignedByType:a,assignedByUuid:b}}async function t(a){let[b,c]=await Promise.all([(0,f.ir)(a.assigneeType,a.assigneeUuid,a.assignedAt,a.assignedByUuid,a.assignedByType,a.companyUuid),(0,f.LS)(a.createdByUuid)]);return{uuid:a.uuid,title:a.title,content:a.content,attachments:a.attachments,status:p(a.status),isContainer:a.isContainer,assignee:b,...a.project&&{project:a.project},...null!=a.elaborationStatus&&{elaborationStatus:a.elaborationStatus},...null!=a.elaborationDepth&&{elaborationDepth:a.elaborationDepth},createdBy:c,createdAt:a.createdAt.toISOString(),updatedAt:a.updatedAt.toISOString()}}async function u({companyUuid:a,projectUuid:b,skip:c,take:d,status:g,assignedToMe:h,actorUuid:i,actorType:j,ownerUuid:k}){let l={projectUuid:b,companyUuid:a,...g&&{status:g}};h&&i&&j&&(l.OR=await (0,f.zl)({type:"agent"===j?"agent":"user",companyUuid:a,actorUuid:i,ownerUuid:k}));let[m,n]=await Promise.all([e.z.idea.findMany({where:l,skip:c,take:d,orderBy:{createdAt:"desc"},select:{uuid:!0,title:!0,content:!0,attachments:!0,status:!0,elaborationStatus:!0,elaborationDepth:!0,companyUuid:!0,assigneeType:!0,assigneeUuid:!0,assignedAt:!0,assignedByType:!0,assignedByUuid:!0,parentUuid:!0,isContainer:!0,createdByUuid:!0,createdAt:!0,updatedAt:!0}}),e.z.idea.count({where:l})]),o=await Promise.all(m.map(t));if(m.forEach((a,b)=>{o[b].parentUuid=a.parentUuid??null}),o.length>0){let c=await v(a,b,o.map(a=>a.uuid));for(let a of o)a.reportCount=c.get(a.uuid)??0;let d=await e.z.idea.groupBy({by:["parentUuid"],where:{companyUuid:a,projectUuid:b,parentUuid:{not:null}},_count:{_all:!0}})??[],f=new Map;for(let a of d)a.parentUuid&&f.set(a.parentUuid,a._count._all);for(let a of o)a.childCount=f.get(a.uuid)??0}return{ideas:o,total:n}}let N=["approved","closed"];async function v(a,b,c){let d=new Map;if(0===c.length)return d;let f=await e.z.proposal.findMany({where:{projectUuid:b,companyUuid:a,status:{in:[...N]},inputType:"idea"},select:{uuid:!0,inputUuids:!0}});if(0===f.length)return d;let g=new Set(c),h=new Map;for(let a of f){if(!Array.isArray(a.inputUuids))continue;let b=a.inputUuids.filter(a=>g.has(a));b.length>0&&h.set(a.uuid,b)}if(0===h.size)return d;for(let b of(await e.z.document.groupBy({by:["proposalUuid"],where:{companyUuid:a,type:"report",proposalUuid:{in:Array.from(h.keys())}},_count:{_all:!0}}))){if(!b.proposalUuid)continue;let a=h.get(b.proposalUuid);if(a)for(let c of a)d.set(c,(d.get(c)??0)+b._count._all)}return d}async function w(a,b){let c=await e.z.idea.findFirst({where:{uuid:b,companyUuid:a},include:{project:{select:{uuid:!0,name:!0}},parent:{select:{uuid:!0,title:!0,status:!0}},children:{select:{uuid:!0,title:!0,status:!0,elaborationStatus:!0},orderBy:{createdAt:"asc"}}}});if(!c)return null;let d=await t(c);d.parentUuid=c.parentUuid??null,d.parent=c.parent?{uuid:c.parent.uuid,title:c.parent.title,status:p(c.parent.status)}:null;let f=c.children??[];if(f.length>0){let b=await K(a,c.projectUuid),e=new Map(b.map(a=>[a.uuid,a.derivedStatus]));d.children=f.map(a=>({uuid:a.uuid,title:a.title,status:p(a.status),derivedStatus:e.get(a.uuid)??"todo"}))}else d.children=[];d.descendantUuids=await A(b,a);let g=(await m.fS(a,c.projectUuid,b)).filter(a=>N.includes(a.status));return 0===g.length?d.reports=[]:d.reports=await l.yZ(a,g.map(a=>a.uuid),"report"),d}async function x(a,b){return e.z.idea.findFirst({where:{uuid:b,companyUuid:a}})}async function y(a){if(a.parentUuid){let b=await e.z.idea.findFirst({where:{uuid:a.parentUuid,companyUuid:a.companyUuid},select:{projectUuid:!0}});if(!b)throw Error("Parent idea not found");if(b.projectUuid!==a.projectUuid)throw Error("Parent idea must be in the same project")}let b=await e.z.idea.create({data:{companyUuid:a.companyUuid,projectUuid:a.projectUuid,title:a.title,content:a.content,attachments:a.attachments||void 0,status:"open",createdByUuid:a.createdByUuid,parentUuid:a.parentUuid??void 0,isContainer:a.isContainer??void 0},select:{uuid:!0,title:!0,content:!0,attachments:!0,status:!0,elaborationStatus:!0,elaborationDepth:!0,companyUuid:!0,assigneeType:!0,assigneeUuid:!0,assignedAt:!0,assignedByType:!0,assignedByUuid:!0,parentUuid:!0,isContainer:!0,createdByUuid:!0,createdAt:!0,updatedAt:!0}});g.B.emitChange({companyUuid:a.companyUuid,projectUuid:a.projectUuid,entityType:"idea",entityUuid:b.uuid,action:"created"});let c=await t(b);return c.parentUuid=b.parentUuid,c}async function z(a,b,c,d){let f=null;if(void 0!==c.content&&d){let b=await e.z.idea.findUnique({where:{uuid:a},select:{content:!0}});f=b?.content??null}let h=await e.z.idea.update({where:{uuid:a},data:c,include:{project:{select:{uuid:!0,name:!0}}}});if(g.B.emitChange({companyUuid:h.companyUuid,projectUuid:h.project.uuid,entityType:"idea",entityUuid:h.uuid,action:"updated"}),d){let a=["title","content"].filter(a=>void 0!==c[a]);a.length>0&&await k.createActivity({companyUuid:h.companyUuid,projectUuid:h.project.uuid,targetType:"idea",targetUuid:h.uuid,actorType:d.actorType,actorUuid:d.actorUuid,action:"edited",value:{changedFields:a}})}return void 0!==c.content&&d&&c.content&&F(h.companyUuid,h.project.uuid,h.uuid,h.title,f,c.content,d.actorType,d.actorUuid).catch(a=>n.default.error({err:a},"Failed to process idea mentions")),t(h)}async function A(a,b){let c=new Set,d=[a];for(;d.length>0;){let f=await e.z.idea.findMany({where:{companyUuid:b,parentUuid:{in:d}},select:{uuid:!0}})??[],g=[];for(let b of f)b.uuid!==a&&(c.has(b.uuid)||(c.add(b.uuid),g.push(b.uuid)));d=g}return[...c]}async function B(a,b,c,d){let f=await e.z.idea.findFirst({where:{uuid:a,companyUuid:c},select:{uuid:!0,projectUuid:!0,parentUuid:!0}});if(!f)throw Error("Idea not found");let h=f.parentUuid??null;if(b){if(b===a)throw Error("An idea cannot be its own parent");let d=await e.z.idea.findFirst({where:{uuid:b,companyUuid:c},select:{uuid:!0,projectUuid:!0,parentUuid:!0}});if(!d)throw Error("Parent idea not found");if(d.projectUuid!==f.projectUuid)throw Error("Parent idea must be in the same project");let g=new Set,h=d.parentUuid;for(;h;){if(h===a)throw Error("Cannot set parent: would create a cycle");if(g.has(h))break;g.add(h);let b=await e.z.idea.findFirst({where:{uuid:h,companyUuid:c},select:{parentUuid:!0}});h=b?.parentUuid??null}}let i=await e.z.idea.update({where:{uuid:a},data:{parentUuid:b??null},include:{project:{select:{uuid:!0,name:!0}}}});g.B.emitChange({companyUuid:i.companyUuid,projectUuid:i.projectUuid,entityType:"idea",entityUuid:i.uuid,action:"updated"});let j=i.parentUuid??null;d&&j!==h&&await k.createActivity({companyUuid:i.companyUuid,projectUuid:i.projectUuid,targetType:"idea",targetUuid:i.uuid,actorType:d.actorType,actorUuid:d.actorUuid,action:"reparented",value:{fromParentUuid:h,toParentUuid:j}});let l=await t(i);return l.parentUuid=i.parentUuid,l}async function C({ideaUuid:a,companyUuid:b,assigneeType:c,assigneeUuid:d,assignedByUuid:f,assignedByType:i,instanceUuid:j,cwdSource:k,cwdHost:l,runtimeCwd:m}){let n=await e.z.idea.findFirst({where:{uuid:a,companyUuid:b}});if(!n||n.assigneeUuid)throw new h.Yy("Idea");let o=p(n.status);if("elaborated"===o)throw Error("Cannot claim an elaborated Idea");let q=await r(b,c,d,j),u=s(i,f),v=await e.z.idea.update({where:{uuid:a},data:{status:"elaborating",assigneeType:q.assigneeType,assigneeUuid:q.assigneeUuid,cwdSource:m&&k?.trim()?k:null,cwdHost:m?l:null,runtimeCwd:m??null,assignedAt:new Date,...u},include:{project:{select:{uuid:!0,name:!0}}}});return g.B.emitChange({companyUuid:v.companyUuid,projectUuid:v.project.uuid,entityType:"idea",entityUuid:v.uuid,action:"updated"}),t(v)}async function D({ideaUuid:a,companyUuid:b,assigneeType:c,assigneeUuid:d,assignedByUuid:f,assignedByType:h,instanceUuid:i,cwdSource:j,cwdHost:k,runtimeCwd:l}){let m=await e.z.idea.findFirst({where:{uuid:a,companyUuid:b}});if(!m)throw Error("Idea not found");let n="open"===m.status?"elaborating":m.status,o=await r(b,c,d,i),p=s(h,f),q=await e.z.idea.update({where:{uuid:a},data:{status:n,assigneeType:o.assigneeType,assigneeUuid:o.assigneeUuid,cwdSource:l&&j?.trim()?j:null,cwdHost:l?k:null,runtimeCwd:l??null,assignedAt:new Date,...p},include:{project:{select:{uuid:!0,name:!0}}}});return g.B.emitChange({companyUuid:q.companyUuid,projectUuid:q.project.uuid,entityType:"idea",entityUuid:q.uuid,action:"updated"}),t(q)}async function E(a){let b=await e.z.idea.findUnique({where:{uuid:a}});if(!b)throw Error("Idea not found");let c=p(b.status),d=await e.z.idea.update({where:{uuid:a},data:{..."elaborated"!==c&&{status:"open",elaborationDepth:null,elaborationStatus:null},assigneeType:null,assigneeUuid:null,cwdSource:null,cwdHost:null,runtimeCwd:null,assignedAt:null,assignedByType:null,assignedByUuid:null},include:{project:{select:{uuid:!0,name:!0}}}});return g.B.emitChange({companyUuid:d.companyUuid,projectUuid:d.project.uuid,entityType:"idea",entityUuid:d.uuid,action:"updated"}),t(d)}async function F(a,b,c,d,e,f,g,h){let i=e?j.Xs(e):[],l=j.Xs(f),m=new Set(i.map(a=>`${a.type}:${a.uuid}`)),n=l.filter(a=>!m.has(`${a.type}:${a.uuid}`));if(0!==n.length)for(let e of(await j.AM({companyUuid:a,sourceType:"idea",sourceUuid:c,content:f,actorType:g,actorUuid:h,projectUuid:b,entityTitle:d}),n))(e.type!==g||e.uuid!==h)&&await k.createActivity({companyUuid:a,projectUuid:b,targetType:"idea",targetUuid:c,actorType:g,actorUuid:h,action:"mentioned",value:{mentionedType:e.type,mentionedUuid:e.uuid,mentionedName:e.displayName,sourceType:"idea",sourceUuid:c}})}async function G(a){let b=await e.z.idea.findUnique({where:{uuid:a},select:{companyUuid:!0}});b&&await e.z.idea.updateMany({where:{companyUuid:b.companyUuid,parentUuid:a},data:{parentUuid:null}});let c=await e.z.idea.delete({where:{uuid:a}});return g.B.emitChange({companyUuid:c.companyUuid,projectUuid:c.projectUuid,entityType:"idea",entityUuid:c.uuid,action:"deleted"}),c}async function H(a,b,c,d,f="user"){let h=await e.z.idea.findFirst({where:{uuid:b,companyUuid:a},include:{project:{select:{uuid:!0,name:!0}}}});if(!h)throw new i.hD("NOT_FOUND","Idea not found",404);let j=await e.z.project.findFirst({where:{uuid:c,companyUuid:a},select:{uuid:!0,name:!0}});if(!j)throw new i.hD("NOT_FOUND","Target project not found",404);if(h.projectUuid===c)throw new i.hD("BAD_REQUEST","Idea is already in the target project",400);let l=h.projectUuid,m=await A(b,a),n=[b,...m],o=await e.z.$transaction(async d=>{let e=(await d.proposal.findMany({where:{companyUuid:a,inputType:"idea",OR:n.map(a=>({inputUuids:{array_contains:[a]}}))},select:{uuid:!0}})).map(a=>a.uuid),f=(await d.idea.updateMany({where:{companyUuid:a,uuid:{in:n}},data:{projectUuid:c}})).count;h.parentUuid&&await d.idea.update({where:{uuid:b},data:{parentUuid:null}});let g=0,i=0,j=0,k=[],l=[];if(e.length>0){let[b,f]=await Promise.all([d.document.findMany({where:{companyUuid:a,proposalUuid:{in:e}},select:{uuid:!0}}),d.task.findMany({where:{companyUuid:a,proposalUuid:{in:e}},select:{uuid:!0}})]);k=b.map(a=>a.uuid),l=f.map(a=>a.uuid),g=(await d.proposal.updateMany({where:{companyUuid:a,uuid:{in:e}},data:{projectUuid:c}})).count,i=(await d.document.updateMany({where:{companyUuid:a,proposalUuid:{in:e}},data:{projectUuid:c}})).count,j=(await d.task.updateMany({where:{companyUuid:a,proposalUuid:{in:e}},data:{projectUuid:c}})).count}let m=await d.activity.updateMany({where:{companyUuid:a,OR:[{targetType:"idea",targetUuid:{in:n}},{targetType:"proposal",targetUuid:{in:e}},{targetType:"task",targetUuid:{in:l}},{targetType:"document",targetUuid:{in:k}}]},data:{projectUuid:c}});return{ideas:f,proposals:g,documents:i,tasks:j,activities:m.count}});await k.createActivity({companyUuid:a,projectUuid:c,targetType:"idea",targetUuid:b,actorType:f,actorUuid:d,action:"moved",value:{fromProjectUuid:l,fromProjectName:h.project.name,toProjectUuid:c,toProjectName:j.name,moved:o}}),g.B.emitChange({companyUuid:a,projectUuid:l,entityType:"idea",entityUuid:b,action:"updated"}),g.B.emitChange({companyUuid:a,projectUuid:c,entityType:"idea",entityUuid:b,action:"updated"});let p=await e.z.idea.findFirst({where:{uuid:b,companyUuid:a},include:{project:{select:{uuid:!0,name:!0}}}});return{...await t(p),moved:o}}async function I(a,b,c){let d=await e.z.idea.findFirst({where:{uuid:b,companyUuid:a},select:{uuid:!0,projectUuid:!0}});if(!d)throw new i.hD("NOT_FOUND","Idea not found",404);if(!await e.z.project.findFirst({where:{uuid:c,companyUuid:a},select:{uuid:!0}}))throw new i.hD("NOT_FOUND","Target project not found",404);if(d.projectUuid===c)throw new i.hD("BAD_REQUEST","Idea is already in the target project",400);let f=await A(b,a),g=[b,...f],h=(await e.z.proposal.findMany({where:{companyUuid:a,inputType:"idea",OR:g.map(a=>({inputUuids:{array_contains:[a]}}))},select:{uuid:!0}})).map(a=>a.uuid),j=0,k=0,l=[],m=[];if(h.length>0){let[b,c]=await Promise.all([e.z.document.findMany({where:{companyUuid:a,proposalUuid:{in:h}},select:{uuid:!0}}),e.z.task.findMany({where:{companyUuid:a,proposalUuid:{in:h}},select:{uuid:!0}})]);l=b.map(a=>a.uuid),m=c.map(a=>a.uuid),j=l.length,k=m.length}let n=await e.z.activity.count({where:{companyUuid:a,OR:[{targetType:"idea",targetUuid:{in:g}},{targetType:"proposal",targetUuid:{in:h}},{targetType:"task",targetUuid:{in:m}},{targetType:"document",targetUuid:{in:l}}]}});return{moved:{ideas:g.length,proposals:h.length,documents:j,tasks:k,activities:n}}}function J(a){switch(p(a.ideaStatus)){case"open":default:return{derivedStatus:"todo",badgeHint:"open"};case"elaborating":if("pending_answers"===a.elaborationStatus)return{derivedStatus:"human_conduct_required",badgeHint:"answer_questions"};return{derivedStatus:"in_progress",badgeHint:"researching"};case"elaborated":if(a.hasPendingProposal)return{derivedStatus:"human_conduct_required",badgeHint:"review_proposal"};if(a.hasApprovedProposal){if(a.taskStatuses.some(a=>"to_verify"===a))return{derivedStatus:"human_conduct_required",badgeHint:"verify_work"};if(a.taskStatuses.length>0&&a.taskStatuses.every(a=>"done"===a||"closed"===a))return{derivedStatus:"done",badgeHint:"done"};return{derivedStatus:"in_progress",badgeHint:"building"}}return{derivedStatus:"in_progress",badgeHint:"planning"}}}async function K(a,b){let c=await e.z.idea.findMany({where:{companyUuid:a,projectUuid:b},select:{uuid:!0,title:!0,status:!0,elaborationStatus:!0,parentUuid:!0,isContainer:!0,createdAt:!0,updatedAt:!0},orderBy:{createdAt:"desc"}}),d=await e.z.idea.groupBy({by:["parentUuid"],where:{companyUuid:a,projectUuid:b,parentUuid:{not:null}},_count:{_all:!0}})??[],f=new Map;for(let a of d)a.parentUuid&&f.set(a.parentUuid,a._count._all);let g=new Map;if(c.length>0)for(let b of await e.z.referenceArtifact.groupBy({by:["targetUuid"],where:{companyUuid:a,targetType:"idea",targetUuid:{in:c.map(a=>a.uuid)}},_count:{_all:!0}})??[])g.set(b.targetUuid,b._count._all);let h=await e.z.proposal.findMany({where:{companyUuid:a,projectUuid:b,status:{in:["approved","pending"]}},select:{uuid:!0,status:!0,inputUuids:!0,createdAt:!0},orderBy:{createdAt:"desc"}}),i=new Map,j=new Set,k=new Map;for(let a of h){let b=a.inputUuids;if(Array.isArray(b)){for(let c of b)if(k.set(c,(k.get(c)??0)+1),"pending"===a.status)j.add(c);else if("approved"===a.status){let b=i.get(c);(!b||a.createdAt>b.createdAt)&&i.set(c,{uuid:a.uuid,createdAt:a.createdAt})}}}let l=[...new Set([...i.values()].map(a=>a.uuid))],m=new Map;if(l.length>0)for(let b of(await e.z.task.findMany({where:{companyUuid:a,proposalUuid:{in:l}},select:{proposalUuid:!0,status:!0}}))){if(!b.proposalUuid)continue;let a=m.get(b.proposalUuid)||[];a.push(b.status),m.set(b.proposalUuid,a)}let n=c.map(a=>{let c=i.get(a.uuid),d=c&&m.get(c.uuid)||[],{derivedStatus:e,badgeHint:h}=J({ideaStatus:a.status,elaborationStatus:a.elaborationStatus,hasPendingProposal:j.has(a.uuid),hasApprovedProposal:!!c,taskStatuses:d});return{uuid:a.uuid,title:a.title,status:a.status,derivedStatus:e,badgeHint:h,createdAt:a.createdAt,updatedAt:a.updatedAt,projectUuid:b,proposalCount:k.get(a.uuid)??0,taskCount:d.length,parentUuid:a.parentUuid??null,childCount:f.get(a.uuid)??0,isContainer:a.isContainer,childProgress:null,referenceCount:g.get(a.uuid)??0}}),o=new Map;for(let a of n){if(!a.parentUuid)continue;let b=o.get(a.parentUuid)??[];b.push(a.derivedStatus),o.set(a.parentUuid,b)}for(let a of n){if(!a.isContainer)continue;let b=o.get(a.uuid)??[];if(0===b.length)continue;let c=function(a){let b=a.length,c=a.filter(a=>"done"===a).length,d={done:c,total:b};return 0===b?{derivedStatus:"todo",badgeHint:"open",childProgress:d}:c===b?{derivedStatus:"done",badgeHint:"done",childProgress:d}:a.some(a=>"todo"!==a)?{derivedStatus:"in_progress",badgeHint:"building",childProgress:d}:{derivedStatus:"todo",badgeHint:"open",childProgress:d}}(b);a.derivedStatus=c.derivedStatus,a.badgeHint=c.badgeHint,a.childProgress=c.childProgress}return n}let O=["todo","in_progress","human_conduct_required","done"];async function L(a,b){let c=await K(a,b),d={},e={};for(let a of O)d[a]=[],e[a]=0;for(let a of c){let b=a.derivedStatus,c={uuid:a.uuid,title:a.title,status:a.status,derivedStatus:b,badgeHint:a.badgeHint,createdAt:a.createdAt.toISOString(),parentUuid:a.parentUuid,childCount:a.childCount,isContainer:a.isContainer,childProgress:a.childProgress??null,referenceCount:a.referenceCount??0};d[b]&&(d[b].push(c),e[b]++)}return{groups:d,counts:e}}d()}catch(a){d(a)}})},70369:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Bp:()=>v,Ld:()=>G,N_:()=>r,OQ:()=>z,Oi:()=>x,Rk:()=>s,Uc:()=>D,Vn:()=>E,i2:()=>C,k3:()=>F,mX:()=>A,sB:()=>u,ub:()=>t,y9:()=>B});var e=c(55511),f=c(52618),g=c(65582),h=c(42558),i=c(37943),j=c(28792),k=c(34853),l=c(93419),m=c(81722),n=a([f,i,j,k,l,m]);[f,i,j,k,l,m]=n.then?(await n)():n;let y=g.default.child({module:"daemon-instruction.service"});class z extends Error{constructor(){super("Daemon session not found"),this.code="session_not_visible",this.name="SessionNotVisibleError"}}class A extends Error{constructor(){super("Connection not found"),this.code="connection_not_visible",this.name="ConnectionNotVisibleError"}}class B extends Error{constructor(a){super("The chosen connection is offline. An instruction can only run on an online daemon connection (claude --resume is cwd/machine-bound)."),this.code="connection_offline",this.name="ConnectionOfflineError",this.connectionUuid=a}}class C extends Error{constructor(a){super("This conversation's origin is still online, so it cannot be re-pointed. Re-pointing only rescues a read-only conversation whose origin went offline; send to the live origin instead."),this.code="repoint_origin_live",this.name="RepointOriginLiveError",this.originConnectionUuid=a}}class D extends Error{constructor(a){super("empty"===a?"Instruction text must not be empty.":"Instruction text exceeds the maximum of 4000 characters."),this.code="invalid_instruction_text",this.name="InstructionTextError",this.reason=a}}function o(a){let b=(a??"").trim();if(0===b.length)throw new D("empty");if(b.length>4e3)throw new D("too_long");return b}async function p(a,b){let c="agent"===a.type?{agentUuid:a.actorUuid}:{agent:{ownerUuid:a.actorUuid}};return await f.z.daemonSession.findFirst({where:{uuid:b,companyUuid:a.companyUuid,...c},select:{agentUuid:!0,sessionId:!0,directIdeaUuid:!0,originConnectionUuid:!0}})}async function q(a){let{auth:b,agentUuid:c,sessionUuid:d,sessionId:e,directIdeaUuid:f,instructionText:g}=a,{turn:h}=await i.aF({companyUuid:b.companyUuid,projectUuid:"",projectName:"",recipientType:"agent",recipientUuid:c,entityType:null!=f?"idea":"daemon_session",entityUuid:null!=f?f:e,entityTitle:"",action:"human_instruction",message:"Human instruction",actorType:"agent"===b.type?"agent":"user",actorUuid:b.actorUuid,actorName:"",instructionText:g});if(!h)throw Error(`Instruction turn was not created on session ${d} (no online origin at chokepoint).`);return h}function r(a){try{(0,j.s7)({companyUuid:a.companyUuid,targetConnectionUuid:a.originConnectionUuid,command:"deliver_turn",turnUuid:a.turnUuid,...a.runtimeCwd?{runtimeCwd:a.runtimeCwd}:{}})}catch(b){y.warn({err:b,originConnectionUuid:a.originConnectionUuid,turnUuid:a.turnUuid},"deliver_turn live ping failed; the turn is persisted and will be recovered by the daemon's reconnect-backfill")}}async function s(a,b){let c=o(b.instructionText),d=await p(a,b.sessionUuid);if(!d)throw new z;await (0,k.assertContinuable)(a.companyUuid,b.sessionUuid);let e=await q({auth:a,agentUuid:d.agentUuid,sessionUuid:b.sessionUuid,sessionId:d.sessionId,directIdeaUuid:d.directIdeaUuid,instructionText:c});return r({companyUuid:a.companyUuid,originConnectionUuid:d.originConnectionUuid,turnUuid:e.uuid}),{turn:e}}async function t(a,b){let c=o(b.instructionText),d=await w(a,b.agentUuid),f=await (0,l.HC)(a.companyUuid,b.agentUuid,b.connectionUuid);if(!d||!f)throw new A;if(!await (0,l.j8)(a.companyUuid,b.connectionUuid))throw new B(b.connectionUuid);let g=(0,e.randomUUID)(),h=await (0,k.resolveOrCreateSession)({companyUuid:a.companyUuid,agentUuid:b.agentUuid,sessionId:g,directIdeaUuid:null,originConnectionUuid:b.connectionUuid}),i=await q({auth:a,agentUuid:b.agentUuid,sessionUuid:h.uuid,sessionId:g,directIdeaUuid:null,instructionText:c});return r({companyUuid:a.companyUuid,originConnectionUuid:b.connectionUuid,turnUuid:i.uuid}),{session:h,turn:i}}class E extends Error{constructor(){super("Project not found"),this.code="project_not_visible",this.name="ProjectNotVisibleError"}}class F extends Error{constructor(a){super("The chosen connection has no registered agent instance yet. Wait for the daemon to finish its handshake and retry."),this.code="connection_instance_missing",this.name="ConnectionInstanceMissingError",this.connectionUuid=a}}class G extends Error{constructor(a){super(`Project fixed working directory is ${a}`),this.availability=a,this.code="project_cwd_target_unavailable"}}async function u(a,b){let c=b.mode??"elaborate";if(!await w(a,b.agentUuid))throw new A;let d=await f.z.project.findFirst({where:{uuid:b.projectUuid,companyUuid:a.companyUuid},select:{uuid:!0,name:!0}});if(!d)throw new E;let g="user"===a.type?a.actorUuid:(await f.z.agent.findFirst({where:{uuid:a.actorUuid,companyUuid:a.companyUuid},select:{ownerUuid:!0}}))?.ownerUuid;if(!g)throw new A;let i=await (0,m.gt)({companyUuid:a.companyUuid,actorUserUuid:g,projectUuid:d.uuid,agentUuid:b.agentUuid}),j=b.connectionUuid,n=null,p=null,q=null,s=null;if("project_fixed"===i.source){if("ready"!==i.availability||!i.connectionUuid||!i.agentInstanceUuid)throw new G("offline"===i.availability?"offline":"invalid");j=i.connectionUuid,n=i.agentInstanceUuid,p="project_fixed",q=i.host,s=i.cwd}else{if(!await (0,l.HC)(a.companyUuid,b.agentUuid,b.connectionUuid))throw new A;if(!await (0,l.j8)(a.companyUuid,b.connectionUuid))throw new B(b.connectionUuid);let c=await f.z.daemonConnection.findFirst({where:{uuid:b.connectionUuid,companyUuid:a.companyUuid},select:{agentInstanceUuid:!0}});if(!c?.agentInstanceUuid)throw new F(b.connectionUuid);n=c.agentInstanceUuid}let t=b.descriptionText?.trim()??"";if(0===t.length)throw new D("empty");let u=(0,e.randomUUID)(),v=o(function(a){let b=a.projectName?.trim()?`"${a.projectName.trim()}" (projectUuid: ${a.projectUuid})`:`projectUuid: ${a.projectUuid}`;return"decompose"===a.mode?[`[Chorus container-decompose entry] A new CONTAINER idea has been PRE-CREATED for project ${b} from the user's description below, and it is already assigned to you (status: elaborating, isContainer: true).`,` ideaUuid: ${a.ideaUuid}`,"\nThis conversation IS that container idea's root session. The user wants help DECOMPOSING it into child ideas. Do the following, in order:\n1. Edit the container via chorus_edit_idea: derive a concise title from the description and polish the content (keep the user's meaning). The current title is a placeholder.",`2. Ensure it stays a container: it was pre-created with isContainer=true — do NOT clear that flag (a container groups its child ideas and MUST NOT get a proposal of its own).`,`3. Run ONE lightweight elaboration round (chorus_pm_start_elaboration) to clarify the decomposition scope/dimension — how to slice the work into children. Keep it short; you may self-answer in headless or ask the user, then continue.`,`4. Propose the candidate child ideas AS A STRUCTURED ELABORATION ROUND (chorus_pm_start_elaboration) for the user to review/edit/confirm — use ONE elaboration question PER proposed child (the child's title as the question text, a short rationale as its description), single-select. Elaboration questions are single-select and a round is capped at 15 questions, so propose at most 15 candidates per round and NEVER a single multi-select question; if you need more children, propose them across additional rounds. Do NOT create any child ideas yet — this round is the preview the user accepts/edits/declines per child.`,"5. End the turn. The user's answers in the idea's elaboration panel will wake this same conversation (the existing elaboration-answered wake).",`6. On that re-wake, create each ACCEPTED child via chorus_pm_create_idea with parentUuid=${a.ideaUuid}. Each child starts in the "open" state — do NOT auto-elaborate them. The container's OWN status stays "elaborated"; creating children does not advance or alter it.`,"",`Reference reflex: whenever an external link is evidence for this work (a precedent issue/PR, a reference implementation, official docs, a paper/blog), attach it via references — prefer the inline references[] param at creation time over a post-hoc chorus_add_reference.`,"\n--- User's idea description ---",a.descriptionText].join("\n"):[`[Chorus conversational idea entry] A new idea has been PRE-CREATED for project ${b} from the user's description below, and it is already assigned to you (status: elaborating).`,` ideaUuid: ${a.ideaUuid}`,"",`This conversation IS that idea's root session — its elaboration and lifecycle wakes will continue here. Do the following, in order:`,"1. Edit the idea via chorus_edit_idea: derive a concise title from the description and polish the content (keep the user's meaning; you may restructure). The current title is a placeholder.",`2. Immediately start elaboration on the idea (chorus_pm_start_elaboration), following the idea skill — do NOT wait for another wake. Post a short summary of your questions in this conversation and direct the user to answer in the idea's elaboration panel.`,"3. End the turn. The user's panel answers will wake this same conversation.\n",`Reference reflex: whenever an external link is evidence for this idea (a precedent issue/PR, a reference implementation, official docs, a paper/blog), attach it via references — prefer the inline references[] param at creation time over a post-hoc chorus_add_reference.`,"\n--- User's idea description ---",a.descriptionText].join("\n")}({ideaUuid:u,projectUuid:d.uuid,projectName:d.name,descriptionText:t,mode:c})),{ideaRow:x,sessionRow:y,turnRow:z}=await f.z.$transaction(async e=>{let f=await e.idea.create({data:{uuid:u,companyUuid:a.companyUuid,projectUuid:d.uuid,title:function(a){let b=(a??"").split("\n").map(a=>a.trim()).find(a=>a.length>0)??"";return 0===b.length?"-":b.length<=60?b:`${b.slice(0,59)}…`}(t),content:t,isContainer:"decompose"===c,status:"elaborating",assigneeType:"agent_instance",assigneeUuid:n,cwdSource:p,cwdHost:q,runtimeCwd:s,assignedAt:new Date,assignedByType:"agent"===a.type?"agent":"user",assignedByUuid:a.actorUuid,createdByUuid:a.actorUuid},select:{uuid:!0,title:!0,content:!0,status:!0,projectUuid:!0,createdAt:!0}}),g=await e.daemonSession.create({data:{companyUuid:a.companyUuid,agentUuid:b.agentUuid,sessionId:u,directIdeaUuid:u,originConnectionUuid:j,runtimeCwd:s,status:"active"}}),h=await e.daemonSessionTurn.create({data:{sessionUuid:g.uuid,seq:1,trigger:"human_instruction",promptText:v,status:"pending"}});return{ideaRow:f,sessionRow:g,turnRow:h}}),C={uuid:y.uuid,agentUuid:y.agentUuid,sessionId:y.sessionId,backendSessionId:y.backendSessionId,directIdeaUuid:y.directIdeaUuid,originConnectionUuid:y.originConnectionUuid,runtimeCwd:y.runtimeCwd,status:y.status,title:y.title,lastTurnAt:y.lastTurnAt.toISOString(),totalInputTokens:y.totalInputTokens,totalOutputTokens:y.totalOutputTokens,totalCacheReadTokens:y.totalCacheReadTokens,totalCacheCreationTokens:y.totalCacheCreationTokens,createdAt:y.createdAt.toISOString(),updatedAt:y.updatedAt.toISOString()},H={uuid:z.uuid,sessionUuid:z.sessionUuid,seq:z.seq,trigger:z.trigger,promptText:z.promptText,status:z.status,interruptedReason:z.interruptedReason,relayError:z.relayError,usage:null,executionUuid:z.executionUuid,startedAt:z.startedAt?z.startedAt.toISOString():null,endedAt:z.endedAt?z.endedAt.toISOString():null,createdAt:z.createdAt.toISOString()},I={uuid:x.uuid,title:x.title,content:x.content,status:x.status,projectUuid:x.projectUuid,createdAt:x.createdAt.toISOString()};return(0,k.publishTranscriptEvent)({companyUuid:a.companyUuid,sessionUuid:C.uuid,trigger:"turn_created",turn:H,messages:[]}),h.B.emitChange({companyUuid:a.companyUuid,projectUuid:d.uuid,entityType:"idea",entityUuid:I.uuid,action:"created"}),r({companyUuid:a.companyUuid,originConnectionUuid:j,turnUuid:H.uuid}),{idea:I,session:C,turn:H}}async function v(a,b){let c=o(b.instructionText),d=await p(a,b.sessionUuid);if(!d)throw new z;if(await (0,l.j8)(a.companyUuid,d.originConnectionUuid))throw new C(d.originConnectionUuid);if(!await (0,l.HC)(a.companyUuid,d.agentUuid,b.connectionUuid))throw new A;if(!await (0,l.j8)(a.companyUuid,b.connectionUuid))throw new B(b.connectionUuid);await f.z.daemonSession.update({where:{uuid:b.sessionUuid,companyUuid:a.companyUuid},data:{originConnectionUuid:b.connectionUuid}});let e=await q({auth:a,agentUuid:d.agentUuid,sessionUuid:b.sessionUuid,sessionId:d.sessionId,directIdeaUuid:d.directIdeaUuid,instructionText:c});r({companyUuid:a.companyUuid,originConnectionUuid:b.connectionUuid,turnUuid:e.uuid});let g=await f.z.daemonSession.findUnique({where:{uuid:b.sessionUuid}});if(!g)throw Error(`repointSessionOriginAndSend: session ${b.sessionUuid} missing after re-point`);return{session:{uuid:g.uuid,agentUuid:g.agentUuid,sessionId:g.sessionId,backendSessionId:g.backendSessionId,directIdeaUuid:g.directIdeaUuid,originConnectionUuid:g.originConnectionUuid,runtimeCwd:g.runtimeCwd,status:g.status,title:g.title,lastTurnAt:g.lastTurnAt.toISOString(),totalInputTokens:g.totalInputTokens,totalOutputTokens:g.totalOutputTokens,totalCacheReadTokens:g.totalCacheReadTokens,totalCacheCreationTokens:g.totalCacheCreationTokens,createdAt:g.createdAt.toISOString(),updatedAt:g.updatedAt.toISOString()},turn:e}}async function w(a,b){return"agent"===a.type?b===a.actorUuid:await f.z.agent.count({where:{uuid:b,companyUuid:a.companyUuid,ownerUuid:a.actorUuid}})>0}async function x(a){let b=await (0,k.getVisibleSessions)(a);if(0===b.length)return[];let c=[...new Set(b.map(a=>a.originConnectionUuid))],d=await f.z.daemonConnection.findMany({where:{companyUuid:a.companyUuid,uuid:{in:c}},select:{uuid:!0,status:!0,lastSeenAt:!0}}),e=Date.now(),g=new Set(d.filter(a=>"online"===a.status&&e-a.lastSeenAt.getTime()<=k.STALE_THRESHOLD_MS).map(a=>a.uuid)),h=[...new Set(b.map(a=>a.directIdeaUuid).filter(a=>!!a))],i=(0,k.getFirstInstructionBySessionUuid)(b.map(a=>a.uuid)),j=h.length>0?f.z.idea.findMany({where:{companyUuid:a.companyUuid,uuid:{in:h}},select:{uuid:!0,title:!0}}):Promise.resolve([]),l=await i,m=await j,n=new Map(m.map(a=>[a.uuid,a.title]));return b.map(a=>({...a,originOnline:g.has(a.originConnectionUuid),firstInstruction:l.get(a.uuid)??null,ideaTitle:a.directIdeaUuid?n.get(a.directIdeaUuid)??null:null}))}d()}catch(a){d(a)}})},71165:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{AY:()=>N,Cm:()=>P,Ew:()=>H,Fp:()=>A,IM:()=>O,K4:()=>w,LQ:()=>C,Pf:()=>D,QK:()=>z,QL:()=>K,UT:()=>x,Vk:()=>u,_T:()=>E,cn:()=>F,gg:()=>v,j9:()=>L,lC:()=>y,vQ:()=>M,vq:()=>B,xI:()=>o});var e=c(52618),f=c(76872),g=c(42558),h=c(48873),i=c(54349),j=c(90494),k=c(88437),l=c(65582),m=c(68775),n=a([e,f,i,j,k]);[e,f,i,j,k]=n.then?(await n)():n;let Q={open:["assigned","closed"],assigned:["open","in_progress","closed"],in_progress:["to_verify","closed"],to_verify:["done","in_progress","closed"],done:["closed"],closed:[]};function o(a,b){return(Q[a]||[]).includes(b)}let R={total:0,required:0,passed:0,failed:0,pending:0,requiredPassed:0,requiredFailed:0,requiredPending:0};function p(a){if(0===a.length)return{status:"not_started",summary:{...R}};let b={...R,total:a.length};for(let c of a)c.required&&b.required++,"passed"===c.status?(b.passed++,c.required&&b.requiredPassed++):"failed"===c.status?(b.failed++,c.required&&b.requiredFailed++):(b.pending++,c.required&&b.requiredPending++);return b.requiredFailed>0?{status:"failed",summary:b}:b.requiredPassed===b.required&&b.required>0?{status:"passed",summary:b}:b.passed>0||b.failed>0?{status:"in_progress",summary:b}:{status:"not_started",summary:b}}function q(a){return{uuid:a.uuid,description:a.description,required:a.required,devStatus:a.devStatus,devEvidence:a.devEvidence,devMarkedByType:a.devMarkedByType,devMarkedBy:a.devMarkedBy,devMarkedAt:a.devMarkedAt?.toISOString()??null,status:a.status,evidence:a.evidence,markedByType:a.markedByType,markedBy:a.markedBy,markedAt:a.markedAt?.toISOString()??null,sortOrder:a.sortOrder}}async function r(a,b,c,d){if(!d)return{assigneeType:b,assigneeUuid:c};let f=await e.z.agentInstance.findFirst({where:{uuid:d,companyUuid:a},select:{uuid:!0}});if(!f)throw Error("Agent instance not found");return{assigneeType:"agent_instance",assigneeUuid:f.uuid}}async function s(a,b=0){let[c,d]=await Promise.all([(0,f.ir)(a.assigneeType,a.assigneeUuid,a.assignedAt,a.assignedByUuid,a.assignedByType,a.companyUuid),(0,f.LS)(a.createdByUuid)]),e=(a.dependsOn||[]).map(a=>({uuid:a.dependsOn.uuid,title:a.dependsOn.title,status:a.dependsOn.status})),g=(a.dependedBy||[]).map(a=>({uuid:a.task.uuid,title:a.task.title,status:a.task.status})),h=(a.acceptanceCriteriaItems||[]).map(q),{status:i,summary:j}=p(a.acceptanceCriteriaItems||[]);return{uuid:a.uuid,title:a.title,description:a.description,status:a.status,priority:a.priority,storyPoints:a.storyPoints,acceptanceCriteria:a.acceptanceCriteria,acceptanceCriteriaItems:h,acceptanceStatus:i,acceptanceSummary:j,assignee:c,proposalUuid:a.proposalUuid,...a.project&&{project:a.project},createdBy:d,dependsOn:e,dependedBy:g,commentCount:b,createdAt:a.createdAt.toISOString(),updatedAt:a.updatedAt.toISOString()}}async function t(a,b){if(0===a.length)return[];let c=[],d=[],e=[];for(let b of a)b.assigneeType&&b.assigneeUuid&&(c.push({type:b.assigneeType,uuid:b.assigneeUuid}),"agent_instance"===b.assigneeType&&e.push(b.assigneeUuid)),d.push(b.createdByUuid);let[g,h,i,j]=await Promise.all([(0,f.Uo)(c),(0,f.Xx)(d),(0,f.dI)(e),(0,f.O3)(a[0].companyUuid,a.map(a=>({assignedByType:a.assignedByType,assignedByUuid:a.assignedByUuid})))]);return a.map((a,c)=>{let d=null;if(a.assigneeType&&a.assigneeUuid){let b=g.get(a.assigneeUuid);if(b){let e=j[c],f="agent_instance"===a.assigneeType?i.get(a.assigneeUuid):void 0;d={type:a.assigneeType,uuid:a.assigneeUuid,name:b,assignedAt:a.assignedAt?.toISOString()??null,assignedBy:e,...f?{instance:f}:{}}}}let e=h.get(a.createdByUuid)??null,f=(a.dependsOn||[]).map(a=>({uuid:a.dependsOn.uuid,title:a.dependsOn.title,status:a.dependsOn.status})),k=(a.dependedBy||[]).map(a=>({uuid:a.task.uuid,title:a.task.title,status:a.task.status})),l=(a.acceptanceCriteriaItems||[]).map(q),{status:m,summary:n}=p(a.acceptanceCriteriaItems||[]);return{uuid:a.uuid,title:a.title,description:a.description,status:a.status,priority:a.priority,storyPoints:a.storyPoints,acceptanceCriteria:a.acceptanceCriteria,acceptanceCriteriaItems:l,acceptanceStatus:m,acceptanceSummary:n,assignee:d,proposalUuid:a.proposalUuid,...a.project&&{project:a.project},createdBy:e,dependsOn:f,dependedBy:k,commentCount:b[a.uuid]??0,createdAt:a.createdAt.toISOString(),updatedAt:a.updatedAt.toISOString()}})}let S={dependsOn:{select:{dependsOn:{select:{uuid:!0,title:!0,status:!0}}}},dependedBy:{select:{task:{select:{uuid:!0,title:!0,status:!0}}}},acceptanceCriteriaItems:{orderBy:{sortOrder:"asc"}}};async function u({companyUuid:a,projectUuid:b,skip:c,take:d,status:f,priority:g,proposalUuids:h}){let j={projectUuid:b,companyUuid:a,...f&&{status:f},...g&&{priority:g},...h&&h.length>0&&{proposalUuid:{in:h}}},[k,l]=await Promise.all([e.z.task.findMany({where:j,skip:c,take:d,orderBy:[{priority:"desc"},{createdAt:"desc"}],select:{uuid:!0,title:!0,description:!0,status:!0,priority:!0,storyPoints:!0,acceptanceCriteria:!0,companyUuid:!0,assigneeType:!0,assigneeUuid:!0,assignedAt:!0,assignedByType:!0,assignedByUuid:!0,proposalUuid:!0,createdByUuid:!0,createdAt:!0,updatedAt:!0,...S}}),e.z.task.count({where:j})]),m=await (0,i.uA)(a,"task",k.map(a=>a.uuid));return{tasks:await t(k,m),total:l}}async function v(a,b){let c=await e.z.task.findFirst({where:{uuid:b,companyUuid:a},include:{project:{select:{uuid:!0,name:!0}},...S}});if(!c)return null;let d=await e.z.comment.count({where:{companyUuid:a,targetType:"task",targetUuid:b}});return s(c,d)}async function w(a,b){return e.z.task.findFirst({where:{uuid:b,companyUuid:a}})}async function x(a){let b=await e.z.task.create({data:{companyUuid:a.companyUuid,projectUuid:a.projectUuid,title:a.title,description:a.description,status:"open",priority:a.priority||"medium",storyPoints:a.storyPoints,acceptanceCriteria:a.acceptanceCriteria,proposalUuid:a.proposalUuid,createdByUuid:a.createdByUuid},select:{uuid:!0,title:!0,description:!0,status:!0,priority:!0,storyPoints:!0,acceptanceCriteria:!0,companyUuid:!0,assigneeType:!0,assigneeUuid:!0,assignedAt:!0,assignedByType:!0,assignedByUuid:!0,proposalUuid:!0,createdByUuid:!0,createdAt:!0,updatedAt:!0}});return g.B.emitChange({companyUuid:a.companyUuid,projectUuid:a.projectUuid,entityType:"task",entityUuid:b.uuid,action:"created"}),s(b)}async function y(a,b,c){let d=null;if(void 0!==b.description&&c){let b=await e.z.task.findUnique({where:{uuid:a},select:{description:!0}});d=b?.description??null}let f=await e.z.$transaction(async c=>{if(b.status&&"done"!==b.status){let b=await c.task.findUnique({where:{uuid:a},select:{status:!0}});b?.status==="to_verify"&&await c.acceptanceCriterion.updateMany({where:{taskUuid:a},data:{status:"pending",evidence:null,markedByType:null,markedBy:null,markedAt:null,devStatus:"pending",devEvidence:null,devMarkedByType:null,devMarkedBy:null,devMarkedAt:null}})}return c.task.update({where:{uuid:a},data:b,include:{project:{select:{uuid:!0,name:!0}}}})});return g.B.emitChange({companyUuid:f.companyUuid,projectUuid:f.project.uuid,entityType:"task",entityUuid:f.uuid,action:"updated"}),void 0!==b.description&&c&&b.description&&I(f.companyUuid,f.project.uuid,"task",f.uuid,f.title,d,b.description,c.actorType,c.actorUuid).catch(a=>l.default.error({err:a},"Failed to process task mentions")),s(f)}async function z({taskUuid:a,companyUuid:b,assigneeType:c,assigneeUuid:d,assignedByUuid:f,assignedByType:i,instanceUuid:j,cwdSource:k,cwdHost:l,runtimeCwd:m}){try{let h=await r(b,c,d,j),n=function(a,b){if(!a&&!b)return{};if(!a||!b)throw Error("Assignment provenance type and UUID must be provided together");return{assignedByType:a,assignedByUuid:b}}(i,f),o=await e.z.task.update({where:{uuid:a,status:{in:["open","assigned"]}},data:{status:"assigned",assigneeType:h.assigneeType,assigneeUuid:h.assigneeUuid,cwdSource:m&&k?.trim()?k:null,cwdHost:m?l:null,runtimeCwd:m??null,assignedAt:new Date,...n},include:{project:{select:{uuid:!0,name:!0}}}});return g.B.emitChange({companyUuid:o.companyUuid,projectUuid:o.project.uuid,entityType:"task",entityUuid:o.uuid,action:"updated"}),s(o)}catch(a){if((0,h.Ik)(a))throw new h.Yy("Task");throw a}}async function A(a){try{let b=await e.z.task.update({where:{uuid:a,status:"assigned"},data:{status:"open",assigneeType:null,assigneeUuid:null,cwdSource:null,cwdHost:null,runtimeCwd:null,assignedAt:null,assignedByType:null,assignedByUuid:null},include:{project:{select:{uuid:!0,name:!0}}}});return g.B.emitChange({companyUuid:b.companyUuid,projectUuid:b.project.uuid,entityType:"task",entityUuid:b.uuid,action:"updated"}),s(b)}catch(a){if((0,h.Ik)(a))throw new h.nm("Task");throw a}}async function B(a){let b=await e.z.task.delete({where:{uuid:a}});return g.B.emitChange({companyUuid:b.companyUuid,projectUuid:b.projectUuid,entityType:"task",entityUuid:b.uuid,action:"deleted"}),b}async function C(a,b){if(0===b.length)return[];let c=b.map((b,c)=>e.z.acceptanceCriterion.create({data:{taskUuid:a,description:b.description,required:b.required??!0,sortOrder:b.sortOrder??c}}));return(await Promise.all(c)).map(q)}async function D(a,b,c){let d=await e.z.task.findFirst({where:{uuid:b,companyUuid:a}});if(!d)throw Error("Task not found");if(!(0,m.hY)(c))throw Error(m.se);let f=(0,m.Ch)(c),h=await e.z.$transaction(async a=>(await a.acceptanceCriterion.deleteMany({where:{taskUuid:b}}),f.length>0&&await a.acceptanceCriterion.createMany({data:f.map((a,c)=>({taskUuid:b,description:a.description,required:a.required,sortOrder:c}))}),a.acceptanceCriterion.findMany({where:{taskUuid:b},orderBy:{sortOrder:"asc"}})));return g.B.emitChange({companyUuid:a,projectUuid:d.projectUuid,entityType:"task",entityUuid:b,action:"updated"}),h.map(q)}async function E(a,b,c,d){let f=await e.z.task.findFirst({where:{uuid:b,companyUuid:a}});if(!f)throw Error("Task not found");let h=new Set((await e.z.acceptanceCriterion.findMany({where:{taskUuid:b},select:{uuid:!0}})).map(a=>a.uuid));for(let a of c)if(!h.has(a.uuid))throw Error(`Criterion ${a.uuid} does not belong to task ${b}`);for(let a of c)await e.z.acceptanceCriterion.update({where:{uuid:a.uuid},data:{status:a.status,evidence:a.evidence??null,markedByType:d.type,markedBy:d.actorUuid,markedAt:new Date}});return g.B.emitChange({companyUuid:a,projectUuid:f.projectUuid,entityType:"task",entityUuid:b,action:"updated"}),G(a,b)}async function F(a,b,c,d){let f=await e.z.task.findFirst({where:{uuid:b,companyUuid:a}});if(!f)throw Error("Task not found");let h=new Set((await e.z.acceptanceCriterion.findMany({where:{taskUuid:b},select:{uuid:!0}})).map(a=>a.uuid));for(let a of c)if(!h.has(a.uuid))throw Error(`Criterion ${a.uuid} does not belong to task ${b}`);for(let a of c)await e.z.acceptanceCriterion.update({where:{uuid:a.uuid},data:{devStatus:a.devStatus,devEvidence:a.devEvidence??null,devMarkedByType:d.type,devMarkedBy:d.actorUuid,devMarkedAt:new Date}});return g.B.emitChange({companyUuid:a,projectUuid:f.projectUuid,entityType:"task",entityUuid:b,action:"updated"}),G(a,b)}async function G(a,b){if(!await e.z.task.findFirst({where:{uuid:b,companyUuid:a}}))throw Error("Task not found");let c=await e.z.acceptanceCriterion.findMany({where:{taskUuid:b},orderBy:{sortOrder:"asc"}}),d=c.map(q),{status:f,summary:g}=p(c);return{items:d,status:f,summary:g}}async function H(a){let b=await e.z.acceptanceCriterion.findMany({where:{taskUuid:a},orderBy:{sortOrder:"asc"}});if(0===b.length||b.filter(a=>a.required).every(a=>"passed"===a.status))return{allowed:!0};let{summary:c}=p(b),d=b.filter(a=>a.required&&"passed"!==a.status).map(q);return{allowed:!1,reason:`Not all required acceptance criteria are passed. Required: ${c.required}, Passed: ${c.requiredPassed}, Failed: ${c.requiredFailed}, Pending: ${c.requiredPending}`,summary:c,unresolvedCriteria:d}}async function I(a,b,c,d,e,f,g,h,i){let l=f?j.Xs(f):[],m=j.Xs(g),n=new Set(l.map(a=>`${a.type}:${a.uuid}`)),o=m.filter(a=>!n.has(`${a.type}:${a.uuid}`));if(0!==o.length)for(let f of(await j.AM({companyUuid:a,sourceType:c,sourceUuid:d,content:g,actorType:h,actorUuid:i,projectUuid:b,entityTitle:e}),o))(f.type!==h||f.uuid!==i)&&await k.createActivity({companyUuid:a,projectUuid:b,targetType:c,targetUuid:d,actorType:h,actorUuid:i,action:"mentioned",value:{mentionedType:f.type,mentionedUuid:f.uuid,mentionedName:f.displayName,sourceType:c,sourceUuid:d}})}async function J(a,b){let c=await e.z.taskDependency.findMany({select:{taskUuid:!0,dependsOnUuid:!0}}),d=new Map;for(let a of c)d.has(a.taskUuid)||d.set(a.taskUuid,[]),d.get(a.taskUuid).push(a.dependsOnUuid);let f=new Set,g=[a];for(;g.length>0;){let a=g.pop();if(a===b)return!0;if(!f.has(a))for(let b of(f.add(a),d.get(a)||[]))f.has(b)||g.push(b)}return!1}async function K(a,b,c){if(b===c)throw Error("A task cannot depend on itself");let[d,f]=await Promise.all([e.z.task.findFirst({where:{uuid:b,companyUuid:a}}),e.z.task.findFirst({where:{uuid:c,companyUuid:a}})]);if(!d)throw Error("Task not found");if(!f)throw Error("Dependency task not found");if(d.projectUuid!==f.projectUuid)throw Error("Tasks must belong to the same project");if(await J(c,b))throw Error("Adding this dependency would create a cycle");let h=await e.z.taskDependency.create({data:{taskUuid:b,dependsOnUuid:c}});return g.B.emitChange({companyUuid:d.companyUuid,projectUuid:d.projectUuid,entityType:"task",entityUuid:b,action:"updated"}),g.B.emitChange({companyUuid:f.companyUuid,projectUuid:f.projectUuid,entityType:"task",entityUuid:c,action:"updated"}),{taskUuid:h.taskUuid,dependsOnUuid:h.dependsOnUuid,createdAt:h.createdAt}}async function L(a,b,c){let d=await e.z.task.findFirst({where:{uuid:b,companyUuid:a}});if(!d)throw Error("Task not found");let f=await e.z.task.findFirst({where:{uuid:c,companyUuid:a}});await e.z.taskDependency.deleteMany({where:{taskUuid:b,dependsOnUuid:c}}),g.B.emitChange({companyUuid:d.companyUuid,projectUuid:d.projectUuid,entityType:"task",entityUuid:b,action:"updated"}),f&&g.B.emitChange({companyUuid:f.companyUuid,projectUuid:f.projectUuid,entityType:"task",entityUuid:c,action:"updated"})}async function M(a,b){let c=await e.z.task.findFirst({where:{uuid:b,companyUuid:a},include:S});if(!c)throw Error("Task not found");return{dependsOn:c.dependsOn.map(a=>({uuid:a.dependsOn.uuid,title:a.dependsOn.title,status:a.dependsOn.status})),dependedBy:c.dependedBy.map(a=>({uuid:a.task.uuid,title:a.task.title,status:a.task.status}))}}async function N({companyUuid:a,projectUuid:b,proposalUuids:c,skip:d,take:f}){let g={projectUuid:b,companyUuid:a,status:{in:["open","assigned"]},...c&&c.length>0&&{proposalUuid:{in:c}},NOT:{dependsOn:{some:{dependsOn:{status:{notIn:["done","closed"]}}}}}},[h,j]=await Promise.all([e.z.task.findMany({where:g,skip:d,take:f,orderBy:[{priority:"desc"},{createdAt:"desc"}],select:{uuid:!0,title:!0,description:!0,status:!0,priority:!0,storyPoints:!0,acceptanceCriteria:!0,companyUuid:!0,assigneeType:!0,assigneeUuid:!0,assignedAt:!0,assignedByType:!0,assignedByUuid:!0,proposalUuid:!0,createdByUuid:!0,createdAt:!0,updatedAt:!0,...S}}),e.z.task.count({where:g})]),k=await (0,i.uA)(a,"task",h.map(a=>a.uuid));return{tasks:await t(h,k),total:j}}async function O(a){let b=await e.z.taskDependency.findMany({where:{taskUuid:a},select:{dependsOn:{select:{uuid:!0,title:!0,status:!0,assigneeType:!0,assigneeUuid:!0}}}});if(0===b.length)return{resolved:!0,blockers:[]};let c=b.filter(a=>"done"!==a.dependsOn.status&&"closed"!==a.dependsOn.status);if(0===c.length)return{resolved:!0,blockers:[]};let d=c.map(a=>a.dependsOn.uuid),[g,h]=await Promise.all([e.z.sessionTaskCheckin.findMany({where:{taskUuid:{in:d},checkoutAt:null},select:{taskUuid:!0,sessionUuid:!0,session:{select:{name:!0}}}}),(0,f.Uo)(c.filter(a=>a.dependsOn.assigneeType&&a.dependsOn.assigneeUuid).map(a=>({type:a.dependsOn.assigneeType,uuid:a.dependsOn.assigneeUuid})))]),i=new Map;for(let a of g)i.set(a.taskUuid,{sessionUuid:a.sessionUuid,sessionName:a.session.name});let j=c.map(a=>{let b=a.dependsOn,c=null;if(b.assigneeType&&b.assigneeUuid){let a=h.get(b.assigneeUuid);a&&(c={type:b.assigneeType,uuid:b.assigneeUuid,name:a})}return{uuid:b.uuid,title:b.title,status:b.status,assignee:c,sessionCheckin:i.get(b.uuid)??null}});return{resolved:!1,blockers:j}}async function P(a,b){let[c,d]=await Promise.all([e.z.task.findMany({where:{companyUuid:a,projectUuid:b},select:{uuid:!0,title:!0,status:!0,priority:!0,proposalUuid:!0}}),e.z.taskDependency.findMany({where:{task:{companyUuid:a,projectUuid:b}},select:{taskUuid:!0,dependsOnUuid:!0}})]);return{nodes:c.map(a=>({uuid:a.uuid,title:a.title,status:a.status,priority:a.priority,proposalUuid:a.proposalUuid??null})),edges:d.map(a=>({from:a.taskUuid,to:a.dependsOnUuid}))}}d()}catch(a){d(a)}})},77716:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{V:()=>h});var e=c(52618),f=c(76872),g=a([e,f]);async function h(a,b,c){let d=null;if("idea"===b)d=await e.z.idea.findFirst({where:{uuid:c,companyUuid:a},select:{assignedByType:!0,assignedByUuid:!0}});else{if("task"!==b)return null;d=await e.z.task.findFirst({where:{uuid:c,companyUuid:a},select:{assignedByType:!0,assignedByUuid:!0}})}if(!d?.assignedByUuid||"user"===d.assignedByType)return null;let g=await (0,f.b)(a,d.assignedByType,d.assignedByUuid);return g?.type==="agent"?{type:"agent",uuid:g.uuid,name:g.name}:null}[e,f]=g.then?(await g)():g,d()}catch(a){d(a)}})},88437:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{createActivity:()=>k,listActivities:()=>i,listActivitiesWithActorNames:()=>j});var e=c(52618),f=c(42558),g=c(76872),h=a([e,g]);async function i({companyUuid:a,projectUuid:b,skip:c,take:d,targetType:f,targetUuid:g}){let h={projectUuid:b,companyUuid:a,...f&&{targetType:f},...g&&{targetUuid:g}},[i,j]=await Promise.all([e.z.activity.findMany({where:h,skip:c,take:d,orderBy:{createdAt:"desc"},select:{uuid:!0,targetType:!0,targetUuid:!0,actorType:!0,actorUuid:!0,action:!0,value:!0,sessionUuid:!0,sessionName:!0,createdAt:!0}}),e.z.activity.count({where:h})]);return{activities:i,total:j}}async function j(a){let{activities:b,total:c}=await i(a);return{activities:await Promise.all(b.map(async a=>{let b=await (0,g.lR)(a.actorType,a.actorUuid);return{uuid:a.uuid,targetType:a.targetType,targetUuid:a.targetUuid,action:a.action,actorType:a.actorType,actorName:b||"Unknown",value:a.value,sessionUuid:a.sessionUuid,sessionName:a.sessionName,createdAt:a.createdAt.toISOString()}})),total:c}}async function k({companyUuid:a,projectUuid:b,targetType:c,targetUuid:d,actorType:g,actorUuid:h,action:i,value:j,sessionUuid:k,sessionName:l}){let m=await e.z.activity.create({data:{companyUuid:a,projectUuid:b,targetType:c,targetUuid:d,actorType:g,actorUuid:h,action:i,value:j||void 0,sessionUuid:k||void 0,sessionName:l||void 0}});return f.B.emit("activity",{companyUuid:a,projectUuid:b,targetType:c,targetUuid:d,actorType:g,actorUuid:h,action:i,value:j,sessionUuid:k,sessionName:l,uuid:m.uuid}),m}[e,g]=h.then?(await h)():h,d()}catch(a){d(a)}})},90494:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{AM:()=>q,Xs:()=>p,_L:()=>x});var e=c(52618),f=c(76872),g=c(37943),h=c(25736),i=c(97515),j=c(93419),k=c(81722),l=a([e,f,g,i,j,k]);[e,f,g,i,j,k]=l.then?(await l)():l;let z=/@\[([^\]]+)\]\((user|agent):([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})(?:\?([^)]*))?\)/gi;async function m(a,b,c){if("user"===b)return c;let d=await e.z.agent.findFirst({where:{uuid:c,companyUuid:a},select:{ownerUuid:!0}});return d?.ownerUuid??null}async function n(a,b,c){return"idea"===b?(await e.z.idea.findFirst({where:{uuid:c,companyUuid:a},select:{projectUuid:!0}}))?.projectUuid??null:"task"===b?(await e.z.task.findFirst({where:{uuid:c,companyUuid:a},select:{projectUuid:!0}}))?.projectUuid??null:"proposal"===b?(await e.z.proposal.findFirst({where:{uuid:c,companyUuid:a},select:{projectUuid:!0}}))?.projectUuid??null:(await e.z.document.findFirst({where:{uuid:c,companyUuid:a},select:{projectUuid:!0}}))?.projectUuid??null}async function o(a){let b=await m(a.companyUuid,a.actorType,a.actorUuid);if(!b)return null;let d=null,g=null,h=null,i=null;if(a.entityType&&a.entityUuid){let{resolveRootIdea:b}=await Promise.resolve().then(c.bind(c,35205)),{directIdeaUuid:j}=await b(a.companyUuid,a.entityType,a.entityUuid);if(j){let b=await e.z.idea.findFirst({where:{uuid:j,companyUuid:a.companyUuid},select:{assigneeType:!0,assigneeUuid:!0,cwdSource:!0,cwdHost:!0,runtimeCwd:!0}}),c=b?await (0,f.wo)(a.companyUuid,b.assigneeType,b.assigneeUuid):null;b?.assigneeType==="agent_instance"&&b.assigneeUuid&&c===a.agentUuid&&(d=b.assigneeUuid,g="project_fixed"===b.cwdSource?"project_fixed":"registered_instance",h=b.cwdHost,i=b.runtimeCwd)}}return(0,k.gt)({companyUuid:a.companyUuid,actorUserUuid:b,projectUuid:a.projectUuid,agentUuid:a.agentUuid,registeredInstanceUuid:d,registeredSource:g,registeredHost:h,registeredRuntimeCwd:i})}function p(a){let b,c=[],d=new Set;for(z.lastIndex=0;null!==(b=z.exec(a))&&!(c.length>=10);){let a=b[1],e=b[2].toLowerCase(),f=b[3].toLowerCase(),{pinnedHost:g,pinnedCwd:i,runtimeCwd:j}=(0,h.vE)(b[4]),k=`${e}:${f}`;if(!d.has(k)){d.add(k);let b={type:e,uuid:f,displayName:a};(null!==g||null!==i)&&(b.pinnedHost=g,b.pinnedCwd=i,j&&(b.runtimeCwd=!0)),c.push(b)}}return c}async function q(a){let{companyUuid:b,sourceType:c,sourceUuid:d,content:h,actorType:i,actorUuid:j,projectUuid:k,entityTitle:l}=a,m=p(h);if(0===m.length)return;let n=m.filter(a=>a.type!==i||a.uuid!==j);if(0===n.length)return;let q=[];for(let a of n)await y(b,a.type,a.uuid)&&q.push(a);if(0===q.length)return;await e.z.mention.createMany({data:q.map(a=>({companyUuid:b,sourceType:c,sourceUuid:d,mentionedType:a.type,mentionedUuid:a.uuid,actorType:i,actorUuid:j}))});let r=await (0,f.lR)(i,j)??"Someone",s=await e.z.project.findUnique({where:{uuid:k},select:{name:!0}}),t=s?.name??"Unknown Project",u=function(a){let b=a.replace(z,"@$1");return b.length<=120?b:b.substring(0,117)+"..."}(h),v=c,w=d;if("comment"===c){let a=await e.z.comment.findUnique({where:{uuid:d},select:{targetType:!0,targetUuid:!0}});a&&(v=a.targetType,w=a.targetUuid)}let x=[];for(let a of q){if(!(await g.lX(b,a.type,a.uuid)).mentioned)continue;let c=`${r} mentioned you: "${u}"`,d=void 0!==a.pinnedHost||void 0!==a.pinnedCwd,e="agent"!==a.type||d&&!0!==a.runtimeCwd?null:await o({companyUuid:b,actorType:i,actorUuid:j,projectUuid:k,agentUuid:a.uuid,entityType:!0===a.runtimeCwd?void 0:["idea","task","proposal","document"].includes(v)?v:void 0,entityUuid:!0===a.runtimeCwd?void 0:w});x.push({companyUuid:b,projectUuid:k,recipientType:a.type,recipientUuid:a.uuid,entityType:v,entityUuid:w,entityTitle:l,projectName:t,action:"mentioned",message:c,actorType:i,actorUuid:j,actorName:r,pinnedHost:a.pinnedHost,pinnedCwd:a.pinnedCwd,...e?.source==="project_fixed"?{resolvedCwdSource:e.source,resolvedCwdHost:e.host,resolvedRuntimeCwd:e.cwd,resolvedCwdAvailability:e.availability}:e?.source==="registered_instance"?{pinnedHost:e.host,pinnedCwd:e.cwd}:{}})}x.length>0&&await g.Xm(x)}function r(a){return"agent"===a.type?+!a.online:2}function s(a,b){let c=r(a),d=r(b);if(c!==d)return c-d;if(0===c){let c=a.activeCount??0,d=b.activeCount??0;return c!==d?c-d:a.name.localeCompare(b.name)}return 0}async function t(a,b){let c=b.filter(a=>"agent"===a.type).map(a=>a.uuid);if(0===c.length)return;let d=Date.now(),f=await e.z.daemonConnection.findMany({where:{companyUuid:a,agentUuid:{in:c}},select:{agentUuid:!0,status:!0,lastSeenAt:!0}}),g=new Set;for(let a of f){let b=d-a.lastSeenAt.getTime()<=i.BP;"online"===a.status&&b&&g.add(a.agentUuid)}let h=await e.z.daemonExecution.groupBy({by:["agentUuid"],where:{companyUuid:a,agentUuid:{in:c},status:{in:[...j.PF]}},_count:{_all:!0}}),k=new Map;for(let a of h)k.set(a.agentUuid,a._count._all);for(let a of b){if("agent"!==a.type)continue;let b=g.has(a.uuid);a.online=b,a.activeCount=b?k.get(a.uuid)??0:0}}async function u(a,b){let c=b.filter(a=>"agent"===a.type);if(0===c.length)return;let d=await Promise.all(c.map(async b=>{let c=(await (0,i._R)(a,b.uuid)).map(a=>({connectionUuid:a.uuid,host:a.host,cwd:a.cwd,effectiveStatus:a.effectiveStatus}));return{uuid:b.uuid,instances:c}})),e=new Map;for(let{uuid:a,instances:b}of d)e.set(a,b);for(let a of b)"agent"===a.type&&(a.instances=e.get(a.uuid)??[])}async function v(a,b,d,g){if(!b.some(a=>"agent"===a.type))return;let{resolveRootIdea:h}=await Promise.resolve().then(c.bind(c,35205)),{directIdeaUuid:i}=await h(a,d,g);if(!i)return;let j=await e.z.idea.findFirst({where:{uuid:i,companyUuid:a},select:{assigneeType:!0,assigneeUuid:!0}});if(!j)return;let k=await (0,f.wo)(a,j.assigneeType,j.assigneeUuid),l="agent_instance"===j.assigneeType?await (0,f.Vj)(j.assigneeType,j.assigneeUuid):null;for(let a of b){if("agent"!==a.type)continue;let b=null!==k&&a.uuid===k;a.isIdeaAssignee=b,b&&l&&j.assigneeUuid&&(a.ideaPin={host:l.host,cwd:l.cwd,agentInstanceUuid:j.assigneeUuid})}}async function w(a){let b=a.results.filter(a=>"agent"===a.type);if(0===b.length)return;let c="user"===a.actorType?a.actorUuid:a.ownerUuid;if(!c)return;let d=await n(a.companyUuid,a.entityType,a.entityUuid);if(!d)return;let f=await e.z.projectAgentCwdPreference.findMany({where:{companyUuid:a.companyUuid,userUuid:c,projectUuid:d,agentUuid:{in:b.map(a=>a.uuid)}},select:{agentUuid:!0,host:!0,cwd:!0}}),g=new Map(f.map(a=>[a.agentUuid,a]));for(let a of b){let b=g.get(a.uuid);if(!b)continue;let c=(a.instances??[]).some(a=>a.host===b.host&&"online"===a.effectiveStatus);a.projectFixedCwd={host:b.host,cwd:b.cwd,availability:b.host&&b.cwd?c?"ready":"offline":"invalid"}}}async function x(a){let b,{companyUuid:c,query:d,actorType:f,actorUuid:g,ownerUuid:h,limit:i=10,withInstances:j=!1,entityType:k,entityUuid:l}=a,m=!!k&&!!l,n=Math.min(i,50),o=[];if("user"===f?b=g:"agent"===f&&h&&(b=h),!d){if(b)for(let a of(await e.z.agent.findMany({where:{companyUuid:c,ownerUuid:b},select:{uuid:!0,name:!0,roles:!0},orderBy:{createdAt:"desc"},take:n})))o.push({type:"agent",uuid:a.uuid,name:a.name,roles:a.roles});await t(c,o),o.sort(s);let a=o.slice(0,Math.min(5,n));return j&&await u(c,a),m&&(await v(c,a,k,l),await w({companyUuid:c,actorType:f,actorUuid:g,ownerUuid:h,results:a,entityType:k,entityUuid:l})),a}for(let a of(await e.z.user.findMany({where:{companyUuid:c,OR:[{name:{contains:d,mode:"insensitive"}},{email:{contains:d,mode:"insensitive"}}]},select:{uuid:!0,name:!0,email:!0,avatarUrl:!0},take:n})))o.push({type:"user",uuid:a.uuid,name:a.name??a.email??"Unknown",email:a.email,avatarUrl:a.avatarUrl});let p={companyUuid:c,name:{contains:d,mode:"insensitive"}};for(let a of(b&&(p.ownerUuid=b),await e.z.agent.findMany({where:p,select:{uuid:!0,name:!0,roles:!0},take:n})))o.push({type:"agent",uuid:a.uuid,name:a.name,roles:a.roles});await t(c,o),o.sort(s);let q=o.slice(0,n);return j&&await u(c,q),m&&(await v(c,q,k,l),await w({companyUuid:c,actorType:f,actorUuid:g,ownerUuid:h,results:q,entityType:k,entityUuid:l})),q}async function y(a,b,c){return"user"===b?!!await e.z.user.findFirst({where:{uuid:c,companyUuid:a},select:{uuid:!0}}):!!await e.z.agent.findFirst({where:{uuid:c,companyUuid:a},select:{uuid:!0}})}d()}catch(a){d(a)}})}};
|
|
File without changes
|
|
File without changes
|