@mndrk/agx 2.0.56 → 2.1.0
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/cloud-runtime/standalone/apps/local/.next/BUILD_ID +1 -1
- package/cloud-runtime/standalone/apps/local/.next/app-path-routes-manifest.json +2 -0
- package/cloud-runtime/standalone/apps/local/.next/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/prerender-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/routes-manifest.json +15 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.html +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/agent-specs/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/agent-specs/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/[id]/profile/route.js +4 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/[id]/profile/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/export/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/export/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/automations/create/route.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/automations/create/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/automations/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/automations/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat/route.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/daemon/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/daemon/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/file-search/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/filesystem/analyze/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/filesystem/analyze/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/graphs/[graphId]/nodes/[nodeId]/route.js +2 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/graphs/[graphId]/nodes/[nodeId]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/context/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/options/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/scripted/route.js +5 -4
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/scripted/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/status/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/worker/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/worker/route/build-manifest.json +9 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/worker/route/server-reference-manifest.json +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/worker/route.js +13 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/worker/route.js.map +5 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/worker/route.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/worker/route_client-reference-manifest.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/participants/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/participants/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/activities/route.js +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/activities/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/linear-issues/route.js +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/linear-issues/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/notes/[noteId]/route.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/notes/[noteId]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/notes/route.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/notes/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/route.js +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.js +14 -13
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/validate/route.js +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/validate/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route/build-manifest.json +9 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route/server-reference-manifest.json +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route.js +28 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route.js.map +5 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route_client-reference-manifest.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/route.js +9 -5
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/search/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/search/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/route.js +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/[id]/cancel/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/[id]/cancel/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/[id]/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/[id]/runs/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/[id]/runs/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js +16 -15
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/route.js +5 -5
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/check/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/debug/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/debug/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/poll/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/poll/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/route.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/assign/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/available/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/detail/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/history/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/learn/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/unlearn/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/status/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/summarize/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/events/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/history/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/metrics/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/pause/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/replan/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/restart/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/resume/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/rollback/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/schedule/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/graph/stop/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/logs/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/comments/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/complete/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/fail/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/resume/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/start/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/stop/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/extract/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js +5 -4
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/terminal/sessions/[id]/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/terminal/sessions/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/knowledge/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/knowledge/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.rsc +14 -14
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_full.segment.rsc +14 -14
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/automations/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/automations.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/board/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/board/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/board/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/board/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/board.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/execution-graph/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/execution-graph.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/folders/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/folders.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page/react-loadable-manifest.json +6 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects/orphans/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects/orphans.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/settings.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/skills.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/status/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/status/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/status/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/thread/[id]/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/thread/[id]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/thread/[id]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app-paths-manifest.json +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/0jps_app_api_projects_[id]_objectives_[objectiveId]_worker_route_actions_0v8q3zz.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[externals]__0_au5u1._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[externals]__13x93ar._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0_10qfd._.js → [root-of-the-server]__0.6yz1u._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__01lsgl~._.js +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0205scg._.js → [root-of-the-server]__03.9arn._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__03h0gqp._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__08jo91s._.js +9 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0o315az._.js → [root-of-the-server]__09j9jpf._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0-nye63._.js → [root-of-the-server]__09jghbu._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0_7hiof._.js +43 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0.jam.l._.js → [root-of-the-server]__0a0cq38._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0asvfdo._.js +54 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0c86535._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0cj1krd._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0aa-88e._.js → [root-of-the-server]__0dy3h2i._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0touqng._.js → [root-of-the-server]__0e8-2k_._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0enhv5p._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0f9byr.._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0t2jk2r._.js → [root-of-the-server]__0g7hc1-._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0g7p6pw._.js +55 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__019q25b._.js → [root-of-the-server]__0gj~dap._.js} +7 -7
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0e6cj2y._.js → [root-of-the-server]__0hc45jw._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0hkcw03._.js +49 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0hmw36u._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0l53ok5._.js +54 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0n.momw._.js +8 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0tjo9we._.js +7 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__0-~t2br._.js → [root-of-the-server]__0v7jjvl._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0x6w64i._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__11nke7t._.js → [root-of-the-server]__0y3qxv1._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__10z8f9h._.js → [root-of-the-server]__0ygidxe._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0z82z0-._.js +49 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0zsv-tb._.js +8 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0~nnfjr._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0~x4jbk._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__10d.dhd._.js +229 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__12qy318._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/_039.xxy._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/_06oeti1._.js +49 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0dyy7h.._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0gi7c9x._.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0gr.psg._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0sd8z0i._.js +21 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0y42h_~._.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0~ah49q._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_01kqgle._.js +11 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_06qet8g._.js +36 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0_0m2ly._.js +397 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0_a~bj0._.js +25 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0a15wtk._.js +397 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0bjdpen._.js +29 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0fr1qq6._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0g.q2r6._.js +41 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0h7wd0e._.js +29 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0i7fs.i._.js +397 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0ipg-p6._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0npxy21._.js +11 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0uhfa93._.js +21 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_12wpldq._.js +25 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_linear_worker_route_actions_116303i.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_01hd2_5._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_01pvj2g._.js +34 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_0ik933l._.js +55 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_0o1v.j4._.js +79 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_0pxj122._.js +55 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_automations_index_ts_0_8ch28._.js +10 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_graph_082u-ls._.js +41 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_0.xgxyl._.js +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_0yu3--n._.js +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_0ze8hzc._.js +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_get-store_ts_0p0aod1._.js +5 -5
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_linear-worker_ts_0ycjwem._.js +5 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0gips_c.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0u_5kfo.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_0tvwux2._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_icons_0hvpc.y._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__006vr7.._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0d18x53._.js +18 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0j9m72.._.js +18 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{[root-of-the-server]__02.r909._.js → [root-of-the-server]__0n5g8ml._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0w.zmt6._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0w1mm2j._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0z7nw_r._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__10h_7t0._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__13h-0om._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_00trrg8._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ejzn1e._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0wk3skw._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0yeuuy1._.js +25 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{apps_local_075cq2j._.js → apps_local_0k4~c1x._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0t6p.qm._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{apps_local_0_4hk8x._.js → apps_local_0v~bvwg._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_agents_[id]_page_tsx_06n47n~._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_graph_[taskId]_page_tsx_0bctfd-._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_linear_page_tsx_0a~n5y8._.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_page_tsx_0kcaeqi._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_new_page_tsx_0yqd0a5._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_page_tsx_06czvz-._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_terminal_page_tsx_01n9qk.._.js +12 -12
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_orphans_page_tsx_0sdv.11._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_setup_page_tsx_0ql2qmr._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_PromptJobBoard_tsx_06zob36._.js +8 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_projects_ProjectObjectivesWorkspace_tsx_0k4tfip._.js +6 -6
- package/cloud-runtime/standalone/apps/local/.next/server/functions-config-manifest.json +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/middleware-build-manifest.js +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/middleware-manifest.json +5 -5
- package/cloud-runtime/standalone/apps/local/.next/server/pages/404.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/pages/500.html +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/003q-y3exxalk.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/00po4v2x~0x_z.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/013gtut17~fne.js +23 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/014z_yruiincl.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/041-dhls9zkl1.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/04yoml2rqnuot.js +16 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0_mrpyqcoyb_5.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{11-u35xqxu~i-.js → 0aewbg0i704w7.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{08~pgzjb13k_v.js → 0dnw31436wd~..js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0jonp-o8lh-4j.js → 0e307b-0c2jbx.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0edewt9l~cs~k.css +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0o9cxba_5mv2c.js → 0fonouj2i9qnb.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0gj98094p~zn4.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0jrkacz_dyem6.js +37 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{02zcxdul-1jaf.js → 0mig99af4~uos.js} +3 -3
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0pdrpsy-zdxp0.js +5 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0p~l5ap6qqx2o.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0stvi5btlxl4m.js +20 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0rey9zfvm3yhd.js → 0tt1oh112yv-l.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0w94x-v00osq0.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0mvqoz13v0o2a.js → 0wh6p5~ft5rma.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0zw85-xl9ysjs.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{00lise4d-u8d1.js → 1011~1x9nj4ny.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/119v0-idpg-cv.js +16 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/11l2tww5f0hsk.js +20 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/16d~es6h6k~rj.js +6 -0
- package/cloud-runtime/standalone/apps/local/app/agents/[id]/page.tsx +40 -5
- package/cloud-runtime/standalone/apps/local/app/api/agents/[id]/profile/route.ts +10 -0
- package/cloud-runtime/standalone/apps/local/app/api/linear/worker/route.ts +151 -0
- package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/objectives/[objectiveId]/route.ts +0 -8
- package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.ts +6 -27
- package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/objectives/[objectiveId]/worker/route.ts +89 -0
- package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/route.ts +13 -0
- package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/search/route.ts +4 -4
- package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/teams/route.ts +5 -3
- package/cloud-runtime/standalone/apps/local/app/api/prompt-jobs/route.ts +7 -4
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/teams/new/page.tsx +236 -10
- package/cloud-runtime/standalone/apps/local/app/setup/page.tsx +9 -1
- package/cloud-runtime/standalone/apps/local/components/FloatingPanel.tsx +36 -8
- package/cloud-runtime/standalone/apps/local/components/LinearBoard.tsx +53 -24
- package/cloud-runtime/standalone/apps/local/components/PromptJobBoard.tsx +73 -0
- package/cloud-runtime/standalone/apps/local/components/graph/NodeDetailPanel.tsx +17 -12
- package/cloud-runtime/standalone/apps/local/components/linear/LinearSettingsModal.tsx +105 -0
- package/cloud-runtime/standalone/apps/local/components/linear/LinearWorkerConfig.tsx +367 -0
- package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveHealthTrend.tsx +215 -0
- package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveScheduledTasksPanel.tsx +170 -46
- package/cloud-runtime/standalone/apps/local/components/projects/ProjectHome.tsx +8 -2
- package/cloud-runtime/standalone/apps/local/components/projects/ProjectObjectivesWorkspace.tsx +211 -368
- package/cloud-runtime/standalone/apps/local/components/projects/RecentlyCompletedCard.tsx +213 -0
- package/cloud-runtime/standalone/apps/local/components/projects/TeamsView.tsx +121 -6
- package/cloud-runtime/standalone/apps/local/components/scheduling/ScheduleConditionPicker.tsx +1 -1
- package/cloud-runtime/standalone/apps/local/components/setup/McpSetupStep.tsx +242 -0
- package/cloud-runtime/standalone/apps/local/components/setup/ProjectStep.tsx +2 -2
- package/cloud-runtime/standalone/apps/local/components/setup/ProviderStep.tsx +1 -1
- package/cloud-runtime/standalone/apps/local/components/setup/TeamsStep.tsx +288 -15
- package/cloud-runtime/standalone/apps/local/components/terminal/ProjectTerminal.tsx +24 -14
- package/cloud-runtime/standalone/apps/local/hooks/useSetupFlow.ts +16 -2
- package/cloud-runtime/standalone/apps/local/lib/objective-health-history.ts +198 -0
- package/cloud-runtime/standalone/apps/local/lib/project-objective-context.ts +10 -0
- package/cloud-runtime/standalone/apps/local/lib/project-objectives.ts +0 -9
- package/cloud-runtime/standalone/apps/local/skills-lock.json +20 -0
- package/cloud-runtime/standalone/apps/local/src/automations/adapters.ts +5 -0
- package/cloud-runtime/standalone/apps/local/src/automations/types.ts +5 -0
- package/cloud-runtime/standalone/apps/local/src/automations/validation.ts +12 -5
- package/cloud-runtime/standalone/apps/local/src/objectives/parser.ts +0 -2
- package/cloud-runtime/standalone/apps/local/src/objectives/serializer.ts +0 -2
- package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/linear-worker-constants.ts +38 -0
- package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/linear-worker-job.ts +47 -0
- package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/linear-worker.ts +482 -0
- package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/objective-worker-job.ts +47 -0
- package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/objective-worker.ts +511 -0
- package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/processor.ts +51 -417
- package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/store.ts +19 -4
- package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/types.ts +12 -8
- package/cloud-runtime/standalone/apps/local/state/terminalTabs.ts +182 -106
- package/cloud-runtime/standalone/apps/local/worker/index.js +12 -13
- package/package.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0-0479y._.js +0 -54
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__08oj_ky._.js +0 -49
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__08y2lkj._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__09joc_o._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0g50c6p._.js +0 -237
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0gtv0rq._.js +0 -8
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0ksbs9p._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0pz~m67._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0q93mk3._.js +0 -7
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0tdixb0._.js +0 -49
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0vhcrdv._.js +0 -229
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0xdp_8-._.js +0 -237
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__11s20j6._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__12xhcor._.js +0 -54
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/_01rag2f._.js +0 -49
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/_03y4xss._.js +0 -21
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0cm4i3i._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0ijzgnb._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/_0~fjhfa._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/_12yasaj._.js +0 -9
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_03q7_.q._.js +0 -21
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0m3e2d~._.js +0 -30
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0r-oiga._.js +0 -30
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_00cwfvi._.js +0 -34
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_0hx7xyz._.js +0 -34
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_0rqcat4._.js +0 -55
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_0sc_lek._.js +0 -79
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_135ddsu._.js +0 -55
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_graph_store_ts_0h.2qy9._.js +0 -43
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_processor_ts_022nz2u._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_prompt-scheduler_processor_ts_0i1av_r._.js +0 -475
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0yvelwy.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_0qzjdog._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_icons_0a-mbbj._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__07johgg._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0bf346q._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0r3w68h._.js +0 -18
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0x7k~pk._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0y8j6el._.js +0 -18
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0yme9fy._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0~7q5sw._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__13eqcxp._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_09~glsn._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0n80y4_._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ndrb_0._.js +0 -8
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ut3k~7._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0vibfch._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0yffwm4._.js +0 -8
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_04hvzn_._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0.4d8rshxivwh.js +0 -20
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/02p3n7faotpr9.js +0 -16
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/051-7k0nnm-vm.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/055bzj5jfgzr0.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/05c-~4v_jrblf.css +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/09wzd7y~tk-3~.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0brmd4~76pthy.js +0 -20
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0hudzktaaxr4g.js +0 -6
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0hzq698w6f4m6.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0i.su2yr26wb6.js +0 -37
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0jsbvcyub73d9.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0l2pt2td_87wr.js +0 -5
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0p7s38p3bcffh.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0q2dgbluvgxf2.js +0 -16
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ucg8e2wkd8gf.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/104xjvrf6y-zq.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/15jlly_p-g4c8.js +0 -6
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/16nozeadjid9-.js +0 -5
- /package/cloud-runtime/standalone/apps/local/.next/static/{fPVnk_kTRzrxXr7U3TRFW → RnYHmEXBwXJjVrVVx2CuP}/_buildManifest.js +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/static/{fPVnk_kTRzrxXr7U3TRFW → RnYHmEXBwXJjVrVVx2CuP}/_clientMiddlewareManifest.js +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/static/{fPVnk_kTRzrxXr7U3TRFW → RnYHmEXBwXJjVrVVx2CuP}/_ssgManifest.js +0 -0
|
@@ -1,475 +0,0 @@
|
|
|
1
|
-
module.exports=[845248,e=>{"use strict";var t=e.i(522734),i=e.i(814747),r=e.i(446786),a=e.i(254799),n=e.i(233405),s=e.i(224361),o=e.i(796283);e.i(219233);var l=e.i(862411),d=e.i(356942),u=e.i(774553),c=e.i(923715),p=e.i(214870),m=e.i(821083);let f=(0,s.promisify)(n.execFile);function h(e){let t=e.trim().split(/\s+/)[0]??"";return(0,i.basename)(t)}async function g(e){let t=new Set;if(0===e.length)return t;let i=e.filter(({pid:e})=>{try{return process.kill(e,0),!0}catch{return!1}});if(0===i.length)return t;let r=i.map(e=>e.pid).join(",");try{let{stdout:e}=await f("ps",["-p",r,"-o","pid=,command="],{timeout:o.PS_COMMAND_TIMEOUT_MS}),a=new Map;for(let t of e.split("\n")){let e=t.trim();if(!e)continue;let i=e.match(/^(\d+)\s+(.+)$/);i&&a.set(Number(i[1]),h(i[2]))}for(let{pid:e,expectedCommand:r}of i){let i=a.get(e);i&&i===h(r)&&t.add(e)}}catch{}return t}function _(e){let t="objective_linear_ticket"===e.execution_mode?"objective_linear_ticket":m.DEFAULT_PROMPT_JOB_EXECUTION_MODE;return{id:e.id,name:e.name,prompt:e.prompt,agentId:e.agent_id||"",projectId:e.project_id||"",objectiveId:e.objective_id||null,objectiveKey:e.objective_key||null,provider:e.provider||e.cli||"claude",model:e.model||"",cliArgs:e.cli_args||"",cronExpr:e.cron_expr,cadence:e.cadence||e.cron_expr||"",state:e.state,overlapPolicy:e.overlap_policy,catchUpPolicy:e.catch_up_policy||"fire_once",cancelCheckSec:e.cancel_check_sec,executionMode:t,condition:e.condition||"",nextRunAt:e.next_run_at,lastRunAt:e.last_run_at,lastOutcome:e.last_outcome,createdAt:e.created_at,updatedAt:e.updated_at}}function y(e){return{id:e.id,jobId:e.job_id,status:e.status,output:e.output,error:e.error,durationMs:e.duration_ms,startedAt:e.started_at,finishedAt:e.finished_at,cancelledAt:e.cancelled_at,hostPid:e.host_pid,hostCommand:e.host_command,createdAt:e.created_at}}function b(e){return Object.values(e).some(e=>void 0!==e)}function E(e){let t=e.cadence?.trim(),i=e.cronExpr?.trim();if(t){if(i)return{cadence:t,cronExpr:i,legacyIntervalMs:e.checkEveryMs??l.DEFAULT_CONDITION_CHECK_EVERY_MS};let r=(0,p.parseCadence)(t);return r?{cadence:r.cadence,cronExpr:r.cronExpr,legacyIntervalMs:e.checkEveryMs??l.DEFAULT_CONDITION_CHECK_EVERY_MS}:null}if("condition"===e.triggerType){let t=(0,p.normalizeLegacyConditionSchedule)(e.checkEveryMs??l.DEFAULT_CONDITION_CHECK_EVERY_MS);return{cadence:t.cadence,cronExpr:t.cronExpr,legacyIntervalMs:t.intervalMs}}return null}class j{db;automationRepository;constructor(e,t){this.db=e,this.automationRepository=t}getAutomationRepo(){return this.automationRepository??=(0,u.getAutomationRepository)(),this.automationRepository}createJob(e){let t=E(e);if(!t)throw Error("Prompt jobs require a valid cadence or convertible legacy condition interval.");if(!(0,u.isAutomationFrontmatterEnabled)())return this.createLegacyJob(e,t);let i=(0,a.randomUUID)(),r=new Date().toISOString(),n=this.getAutomationRepo().createAutomation({id:i,name:e.name,...e.projectId?{projectId:e.projectId}:{},state:"active",trigger:{type:"scheduled",cadence:t.cadence,cronExpr:t.cronExpr},execution:{overlapPolicy:e.overlapPolicy,catchUpPolicy:e.catchUpPolicy,cancelCheckSec:e.cancelCheckSec,...e.condition?.trim()?{condition:e.condition.trim()}:{}},target:{type:"prompt_job",...e.agentId?{agentId:e.agentId}:{},...e.objectiveId?{objectiveId:e.objectiveId}:{},...e.objectiveKey?{objectiveKey:e.objectiveKey}:{},...e.executionMode&&e.executionMode!==m.DEFAULT_PROMPT_JOB_EXECUTION_MODE?{executionMode:e.executionMode}:{},...e.provider?{provider:e.provider}:{},...e.model?{model:e.model}:{},...void 0!==e.cliArgs?{cliArgs:e.cliArgs}:{}},createdAt:r,body:e.prompt}),s=(0,d.automationRecordToPromptJob)(n);return this.upsertLegacyJobRow(s),s}getJob(e){if(!(0,u.isAutomationFrontmatterEnabled)())return this.getLegacyJob(e);let t=this.getPromptJobRecord(e,!1);if(t?.archived)return null;if(t?.definition.target.type==="prompt_job"){let e=(0,d.automationRecordToPromptJob)(t);return this.ensureLegacyJobRow(e),e}return(0,u.isAutomationDualReadEnabled)()?this.getLegacyJob(e):null}listJobs(e){if(!(0,u.isAutomationFrontmatterEnabled)())return this.listLegacyJobs(e);let t=new Map;for(let i of this.getAutomationRepo().listVisibleAutomations({targetType:"prompt_job",...e?.state?{state:e.state}:{},...e?.projectId?{projectId:e.projectId}:{}})){let r=this.normalizePromptJobRecord(i);if(!r)continue;let a=(0,d.automationRecordToPromptJob)(r);e?.objectiveId&&a.objectiveId!==e.objectiveId||(e?.includeObjectiveJobs!==!1||e.objectiveId||!a.objectiveId)&&(t.set(a.id,a),this.ensureLegacyJobRow(a))}if((0,u.isAutomationDualReadEnabled)())for(let i of this.listLegacyJobs(e))t.has(i.id)||t.set(i.id,i);return[...t.values()].sort((e,t)=>{let i=Date.parse(e.createdAt);return Date.parse(t.createdAt)-i})}updateJob(e,t){if(!(0,u.isAutomationFrontmatterEnabled)())return this.updateLegacyJob(e,t);let i=this.getPromptJobRecord(e,!1);if(!i)return(0,u.isAutomationDualReadEnabled)()?this.updateLegacyJob(e,t):null;if("prompt_job"!==i.definition.target.type)return null;let r=i,a=this.buildDefinitionPatch(r,t);if(b(a)){let t=this.getAutomationRepo().updateAutomation(e,a);if(!t)return null;r=t}let n=this.buildStatePatch(t);if(b(n)){let t=this.getAutomationRepo().updateAutomationState(e,n);if(!t)return null;r=t}let s=(0,d.automationRecordToPromptJob)(r);return this.upsertLegacyJobRow(s),s}deleteJob(e){(0,u.isAutomationFrontmatterEnabled)()&&(this.getAutomationRepo().archiveAutomation(e)||this.getAutomationRepo().deleteAutomation(e)),this.db.prepare("DELETE FROM prompt_jobs WHERE id = ?").run(e)}getDueJobs(e=Date.now()){if(!(0,u.isAutomationFrontmatterEnabled)())return this.getLegacyDueJobs(e);let t=new Map;for(let i of this.getAutomationRepo().listVisibleAutomations({targetType:"prompt_job",state:"active"})){let r=this.normalizePromptJobRecord(i);if(!r)continue;let a=(0,d.automationRecordToPromptJob)(r);null===a.nextRunAt||a.nextRunAt>e||(t.set(a.id,a),this.ensureLegacyJobRow(a))}if((0,u.isAutomationDualReadEnabled)())for(let i of this.getLegacyDueJobs(e))t.has(i.id)||t.set(i.id,i);return[...t.values()].sort((e,t)=>(e.nextRunAt??Number.MAX_SAFE_INTEGER)-(t.nextRunAt??Number.MAX_SAFE_INTEGER))}createRun(e){this.ensureLegacyJobRowById(e);let t=(0,a.randomUUID)();return this.db.prepare("INSERT INTO prompt_runs (id, job_id) VALUES (?, ?)").run(t,e),this.getRun(t)}getRun(e){let t=this.db.prepare("SELECT * FROM prompt_runs WHERE id = ?").get(e);return t?y(t):null}listRuns(e,t=50){return this.db.prepare("SELECT * FROM prompt_runs WHERE job_id = ? ORDER BY created_at DESC LIMIT ?").all(e,t).map(y)}listQueuedRuns(e=50){return this.db.prepare("SELECT * FROM prompt_runs WHERE status = 'queued' ORDER BY created_at ASC LIMIT ?").all(e).map(y)}updateRun(e,t){let i={status:"status",output:"output",error:"error",durationMs:"duration_ms",startedAt:"started_at",finishedAt:"finished_at",cancelledAt:"cancelled_at",hostPid:"host_pid",hostCommand:"host_command"},r=[],a=[];for(let[e,n]of Object.entries(t)){let t=i[e];t&&(r.push(`${t} = ?`),a.push(n??null))}return 0===r.length||(a.push(e),this.db.prepare(`UPDATE prompt_runs SET ${r.join(", ")} WHERE id = ?`).run(...a.map(e=>e))),this.getRun(e)}hasRunningRun(e){return void 0!==this.db.prepare("SELECT id FROM prompt_runs WHERE job_id = ? AND status IN ('queued', 'running') LIMIT 1").get(e)}async reapStaleRuns(e=18e5){let t=this.db.prepare(`SELECT id, job_id, host_pid, host_command, started_at, created_at
|
|
2
|
-
FROM prompt_runs
|
|
3
|
-
WHERE status = 'running'`).all(),i=Date.now(),r=t.filter(e=>null!=e.host_pid&&null!=e.host_command).map(e=>({pid:e.host_pid,expectedCommand:e.host_command})),a=await g(r),n=0;for(let r of t){var s;let t,o=(s=r.started_at||r.created_at)?/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(s)?Date.parse(s.replace(" ","T")+"Z"):Date.parse(s):NaN,l=Number.isFinite(o)?i-o:0,d=!1;null!=r.host_pid&&r.host_command?!a.has(r.host_pid)&&l>e?(d=!0,t=`Host process (pid ${r.host_pid}) is no longer running`):t="":l>e?(d=!0,t=`No host PID recorded; stuck for ${Math.round(l/6e4)} minutes`):t="",d&&(this.db.prepare(`UPDATE prompt_runs
|
|
4
|
-
SET status = 'failed',
|
|
5
|
-
error = ?,
|
|
6
|
-
duration_ms = ?,
|
|
7
|
-
finished_at = ?
|
|
8
|
-
WHERE id = ?`).run(`Reaped: ${t}`,l,new Date().toISOString(),r.id),n++)}return n}isRunCancelled(e){let t=this.db.prepare("SELECT status FROM prompt_runs WHERE id = ?").get(e);return t?.status==="cancelled"}normalizePromptJobRecord(e){if("prompt_job"!==e.definition.target.type||"condition"!==e.definition.trigger.type)return e;let t=(0,p.normalizeLegacyConditionSchedule)(e.definition.trigger.checkEveryMs);return this.getAutomationRepo().updateAutomation(e.definition.id,{trigger:{type:"scheduled",cadence:t.cadence,cronExpr:t.cronExpr},execution:{...e.definition.execution??{},condition:e.definition.execution?.condition??e.definition.trigger.condition}})}getPromptJobRecord(e,t){let i=this.getAutomationRepo().getAutomation(e),r=i?this.normalizePromptJobRecord(i):null;if(r?.definition.target.type==="prompt_job")return r;if(!t||!(0,u.isAutomationDualReadEnabled)())return null;let a=this.getLegacyJob(e);return a?this.materializeLegacyJob(a):null}materializeLegacyJob(e){let t=(0,d.promptJobToAutomationDefinition)(e),i=(0,d.promptJobToAutomationRuntimeState)(e),r=this.getAutomationRepo().upsertAutomation(t);return this.getAutomationRepo().updateAutomationState(e.id,{nextRunAt:i.nextRunAt,lastRunAt:i.lastRunAt,lastOutcome:i.lastOutcome,lastError:i.lastError,updatedAt:i.updatedAt})??r}buildDefinitionPatch(e,t){let i={},r={},a={},n={};void 0!==t.name&&(i.name=t.name),void 0!==t.projectId&&(i.projectId=t.projectId||null),void 0!==t.state&&(i.state=t.state),void 0!==t.prompt&&(i.body=t.prompt);let s=E(t);if(s)r.type="scheduled",r.cadence=s.cadence,r.cronExpr=s.cronExpr,r.intervalMs="scheduled"===e.definition.trigger.type?e.definition.trigger.intervalMs:void 0;else if(""===t.cadence)r.type="scheduled",r.cadence="scheduled"===e.definition.trigger.type?e.definition.trigger.cadence:void 0,r.cronExpr="scheduled"===e.definition.trigger.type?e.definition.trigger.cronExpr:void 0,r.intervalMs="scheduled"===e.definition.trigger.type?e.definition.trigger.intervalMs:void 0;else if(void 0!==t.cronExpr||void 0!==t.cadence){let i=e.definition.trigger;r.type="scheduled",r.cadence=t.cadence??("scheduled"===i.type?i.cadence:void 0),r.cronExpr=t.cronExpr??("scheduled"===i.type?i.cronExpr:void 0),r.intervalMs="scheduled"===i.type?i.intervalMs:void 0}return void 0!==t.overlapPolicy&&(a.overlapPolicy=t.overlapPolicy),void 0!==t.catchUpPolicy&&(a.catchUpPolicy=t.catchUpPolicy),void 0!==t.cancelCheckSec&&(a.cancelCheckSec=t.cancelCheckSec),void 0!==t.condition&&(a.condition=t.condition||void 0),void 0!==t.agentId&&(n.agentId=t.agentId||void 0),void 0!==t.objectiveId&&(n.objectiveId=t.objectiveId||void 0),void 0!==t.objectiveKey&&(n.objectiveKey=t.objectiveKey||void 0),void 0!==t.executionMode&&(n.executionMode=t.executionMode===m.DEFAULT_PROMPT_JOB_EXECUTION_MODE?void 0:t.executionMode),void 0!==t.provider&&(n.provider=t.provider||void 0),void 0!==t.model&&(n.model=t.model||void 0),void 0!==t.cliArgs&&(n.cliArgs=t.cliArgs),{...Object.keys(i).length>0?i:{},...Object.keys(r).length>0?{trigger:r}:{},...Object.keys(a).length>0?{execution:a}:{},...Object.keys(n).length>0?{target:n}:{}}}buildStatePatch(e){let t={};return void 0!==e.nextRunAt&&(t.nextRunAt=e.nextRunAt),void 0!==e.lastRunAt&&(t.lastRunAt=e.lastRunAt),void 0!==e.lastOutcome&&(t.lastOutcome=e.lastOutcome),t}ensureLegacyJobRowById(e){if(this.legacyJobRowExists(e))return;let t=this.getJob(e);t&&this.upsertLegacyJobRow(t)}ensureLegacyJobRow(e){this.legacyJobRowExists(e.id)||this.upsertLegacyJobRow(e)}legacyJobRowExists(e){return void 0!==this.db.prepare("SELECT 1 FROM prompt_jobs WHERE id = ?").get(e)}upsertLegacyJobRow(e){this.db.prepare(`INSERT INTO prompt_jobs (
|
|
9
|
-
id, name, prompt, cli, agent_id, project_id, objective_id, objective_key, provider, model, cli_args,
|
|
10
|
-
execution_mode,
|
|
11
|
-
cron_expr, cadence, state, overlap_policy, catch_up_policy, cancel_check_sec,
|
|
12
|
-
trigger_type, condition, check_every_ms, next_run_at, last_run_at, last_outcome,
|
|
13
|
-
created_at, updated_at
|
|
14
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
15
|
-
ON CONFLICT (id) DO UPDATE SET
|
|
16
|
-
name = excluded.name,
|
|
17
|
-
prompt = excluded.prompt,
|
|
18
|
-
cli = excluded.cli,
|
|
19
|
-
agent_id = excluded.agent_id,
|
|
20
|
-
project_id = excluded.project_id,
|
|
21
|
-
objective_id = excluded.objective_id,
|
|
22
|
-
objective_key = excluded.objective_key,
|
|
23
|
-
provider = excluded.provider,
|
|
24
|
-
model = excluded.model,
|
|
25
|
-
cli_args = excluded.cli_args,
|
|
26
|
-
execution_mode = excluded.execution_mode,
|
|
27
|
-
cron_expr = excluded.cron_expr,
|
|
28
|
-
cadence = excluded.cadence,
|
|
29
|
-
state = excluded.state,
|
|
30
|
-
overlap_policy = excluded.overlap_policy,
|
|
31
|
-
catch_up_policy = excluded.catch_up_policy,
|
|
32
|
-
cancel_check_sec = excluded.cancel_check_sec,
|
|
33
|
-
trigger_type = excluded.trigger_type,
|
|
34
|
-
condition = excluded.condition,
|
|
35
|
-
check_every_ms = excluded.check_every_ms,
|
|
36
|
-
next_run_at = excluded.next_run_at,
|
|
37
|
-
last_run_at = excluded.last_run_at,
|
|
38
|
-
last_outcome = excluded.last_outcome,
|
|
39
|
-
created_at = excluded.created_at,
|
|
40
|
-
updated_at = excluded.updated_at`).run(e.id,e.name,e.prompt,e.provider||"claude",e.agentId||null,e.projectId||null,e.objectiveId||null,e.objectiveKey||null,e.provider||"claude",e.model||"",e.cliArgs||"",e.executionMode||m.DEFAULT_PROMPT_JOB_EXECUTION_MODE,e.cronExpr||"",e.cadence||"",e.state,e.overlapPolicy,e.catchUpPolicy,e.cancelCheckSec,"scheduled",e.condition||"",l.DEFAULT_CONDITION_CHECK_EVERY_MS,e.nextRunAt??null,e.lastRunAt??null,e.lastOutcome??null,e.createdAt,e.updatedAt)}createLegacyJob(e,t){let i=(0,a.randomUUID)(),r=e.provider??"claude",n=(0,c.computeNextTickFromCron)(t.cronExpr)??null;return this.db.prepare(`INSERT INTO prompt_jobs (
|
|
41
|
-
id, name, prompt, cli, agent_id, project_id, objective_id, objective_key, provider, model, cli_args,
|
|
42
|
-
execution_mode,
|
|
43
|
-
cron_expr, cadence, overlap_policy, catch_up_policy, cancel_check_sec,
|
|
44
|
-
trigger_type, condition, check_every_ms, next_run_at
|
|
45
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(i,e.name,e.prompt,r,e.agentId||null,e.projectId||null,e.objectiveId||null,e.objectiveKey||null,r,e.model??"",e.cliArgs??"",e.executionMode??m.DEFAULT_PROMPT_JOB_EXECUTION_MODE,t.cronExpr,t.cadence,e.overlapPolicy??"skip",e.catchUpPolicy??"fire_once",e.cancelCheckSec??5,"scheduled",e.condition??"",t.legacyIntervalMs,n),this.getLegacyJob(i)}normalizeLegacyJobRow(e){if("condition"!==(e.trigger_type||"scheduled"))return e;let t=(0,p.normalizeLegacyConditionSchedule)(e.check_every_ms||l.DEFAULT_CONDITION_CHECK_EVERY_MS),i=(0,c.computeNextTickFromCron)(t.cronExpr)??null;return this.db.prepare(`UPDATE prompt_jobs
|
|
46
|
-
SET trigger_type = 'scheduled',
|
|
47
|
-
cadence = ?,
|
|
48
|
-
cron_expr = ?,
|
|
49
|
-
next_run_at = ?,
|
|
50
|
-
updated_at = datetime('now')
|
|
51
|
-
WHERE id = ?`).run(t.cadence,t.cronExpr,i,e.id),{...e,trigger_type:"scheduled",cadence:t.cadence,cron_expr:t.cronExpr,next_run_at:i}}getLegacyJob(e){let t=this.db.prepare("SELECT * FROM prompt_jobs WHERE id = ?").get(e);return t?_(this.normalizeLegacyJobRow(t)):null}listLegacyJobs(e){let t="SELECT * FROM prompt_jobs",i=[],r=[];return e?.state&&(i.push("state = ?"),r.push(e.state)),e?.projectId&&(i.push("project_id = ?"),r.push(e.projectId)),e?.objectiveId?(i.push("objective_id = ?"),r.push(e.objectiveId)):e?.includeObjectiveJobs===!1&&i.push("(objective_id IS NULL OR objective_id = '')"),i.length>0&&(t+=` WHERE ${i.join(" AND ")}`),t+=" ORDER BY created_at DESC",this.db.prepare(t).all(...r).map(e=>_(this.normalizeLegacyJobRow(e)))}updateLegacyJob(e,t){let i={name:"name",prompt:"prompt",cli:"cli",agentId:"agent_id",projectId:"project_id",objectiveId:"objective_id",objectiveKey:"objective_key",executionMode:"execution_mode",provider:"provider",cronExpr:"cron_expr",model:"model",cliArgs:"cli_args",cadence:"cadence",state:"state",overlapPolicy:"overlap_policy",catchUpPolicy:"catch_up_policy",cancelCheckSec:"cancel_check_sec",condition:"condition",nextRunAt:"next_run_at",lastRunAt:"last_run_at",lastOutcome:"last_outcome"},r=[],a=[],n=E(t);for(let[e,s]of Object.entries(t)){if(n&&("cadence"===e||"cronExpr"===e||"triggerType"===e||"checkEveryMs"===e))continue;let t=i[e];t&&void 0!==s&&(r.push(`${t} = ?`),a.push(s))}if(n)r.push("cadence = ?"),a.push(n.cadence),r.push("cron_expr = ?"),a.push(n.cronExpr),r.push("trigger_type = ?"),a.push("scheduled"),r.push("check_every_ms = ?"),a.push(n.legacyIntervalMs),void 0===t.nextRunAt&&(r.push("next_run_at = ?"),a.push((0,c.computeNextTickFromCron)(n.cronExpr)??null));else if(""===t.cadence)return this.getLegacyJob(e);return 0===r.length||(r.push("updated_at = datetime('now')"),a.push(e),this.db.prepare(`UPDATE prompt_jobs SET ${r.join(", ")} WHERE id = ?`).run(...a.map(e=>e))),this.getLegacyJob(e)}getLegacyDueJobs(e){return this.db.prepare(`SELECT * FROM prompt_jobs
|
|
52
|
-
WHERE state = 'active'
|
|
53
|
-
AND next_run_at IS NOT NULL
|
|
54
|
-
AND next_run_at <= ?
|
|
55
|
-
ORDER BY next_run_at ASC`).all(e).map(e=>_(this.normalizeLegacyJobRow(e))).filter(t=>null!==t.nextRunAt&&t.nextRunAt<=e)}}var I=e.i(633211);let v=null;function T(e){return e.replace(/^\s*--.*$/gm,"").split(";").map(e=>e.trim()).filter(Boolean)}function A(){if(!v){let e=(0,I.getSQLiteDb)();if(e.prepare("SELECT 1 FROM sqlite_master WHERE type='table' AND name='prompt_jobs'").get()){if(!e.prepare("SELECT 1 FROM pragma_table_info('prompt_jobs') WHERE name='catch_up_policy'").get())for(let r of T((0,t.readFileSync)(i.default.join(process.cwd(),"db/sqlite/003_prompt_scheduler_v2.sql"),"utf-8")))try{e.exec(r)}catch(e){if(!e.message?.includes("duplicate column"))throw e}}else{let r=(0,t.readFileSync)(i.default.join(process.cwd(),"db/sqlite/002_prompt_scheduler_schema.sql"),"utf-8");e.exec(r)}if(!e.prepare("SELECT 1 FROM pragma_table_info('prompt_runs') WHERE name='host_pid'").get())for(let r of T((0,t.readFileSync)(i.default.join(process.cwd(),"db/sqlite/004_prompt_runs_host_pid.sql"),"utf-8")))try{e.exec(r)}catch(e){if(!e.message?.includes("duplicate column"))throw e}if(!e.prepare("SELECT 1 FROM pragma_table_info('prompt_jobs') WHERE name='objective_id'").get())for(let r of T((0,t.readFileSync)(i.default.join(process.cwd(),"db/sqlite/005_prompt_jobs_objectives.sql"),"utf-8")))try{e.exec(r)}catch(e){if(!e.message?.includes("duplicate column"))throw e}if(!e.prepare("SELECT 1 FROM pragma_table_info('prompt_jobs') WHERE name='execution_mode'").get())for(let r of T((0,t.readFileSync)(i.default.join(process.cwd(),"db/sqlite/006_prompt_jobs_execution_mode.sql"),"utf-8")))try{e.exec(r)}catch(e){if(!e.message?.includes("duplicate column"))throw e}v=new j(e)}return v}async function S(e,t=Date.now()){let i=await e.reapStaleRuns();for(let r of(i>0&&console.log(`[prompt-jobs] reaped ${i} stale run(s)`),e.listJobs({state:"active"})))if(null===r.nextRunAt){let i=r.cronExpr||(0,p.parseCadence)(r.cadence)?.cronExpr||"";if(!i)continue;let a=w({cronExpr:i},t);a&&e.updateJob(r.id,{nextRunAt:a})}let r=e.getDueJobs(t),a=[],n=[];for(let i of r){if("skip"===i.overlapPolicy&&e.hasRunningRun(i.id)){n.push({jobId:i.id,reason:"overlap_skip"});let r=w(i,t);e.updateJob(i.id,{nextRunAt:r});continue}let r=function(e,t){if(!e.nextRunAt)return 1;let i=0,r=e.nextRunAt;for(;r<=t&&i<100;){i++;let t=(0,p.computeNextRun)(e.cronExpr,r);if(!t||t<=r)break;r=t}return Math.max(1,i)}(i,t);if("skip"===i.catchUpPolicy&&r>1){n.push({jobId:i.id,reason:`catch_up_skip (${r} missed)`});let a=w(i,t);e.updateJob(i.id,{nextRunAt:a,lastRunAt:t});continue}if("replay_all"===i.catchUpPolicy&&r>1)for(let t=0;t<r;t++){let t=e.createRun(i.id);a.push(t)}else{let t=e.createRun(i.id);a.push(t)}let s=w(i,t);e.updateJob(i.id,{nextRunAt:s,lastRunAt:t})}return{queued:a,skipped:n}}function w(e,t){return(0,p.computeNextRun)(e.cronExpr,t)}var R=e.i(623775),N=e.i(864075),L=e.i(133439),k=e.i(374371);function O(e,t){return e.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||t}function D(e){var t;let i,r,a=e.issue.identifier.trim()||"TICKET-ID",n=e.issue.title.trim()||"Untitled ticket",s=String(e.issue.status??"").trim()||"Unknown",o=String(e.issue.assignee??"").trim()||"Unassigned",l=function(e){let t=String(e?.slug??"").trim();if(t)return O(t,"project");let i=String(e?.name??"").trim();return i?O(i,"project"):"project"}(e.project),d=String(e.project?.name??"").trim()||l,u=String(e.runtime?.knowledgeBaseRoot??"").trim()||`~/.agx/vault/${l}`,c=String(e.runtime?.issueKnowledgePath??"").trim()||`${u}/issues/${a}/`,p=String(e.runtime?.isolatedWorktreePath??"").trim()||`/tmp/agx-${O(a,"ticket")}`;return{issue:{identifier:a,title:n,status:s,assignee:o},project:{name:d,slug:l,label:(t=e.project,i=String(t?.name??"").trim(),r=String(t?.slug??"").trim(),i&&r?`${i} (${r})`:i||r||"current project"),repos:e.project?.repos?[...e.project.repos]:[]},runtime:{knowledgeBaseRoot:u,issueKnowledgePath:c,isolatedWorktreePath:p}}}var x=e.x("node:sqlite",()=>require("node:sqlite"),!0),$=e.i(801243);let C=process.env.AGX_GROUP_CHAT_DIR?.trim()||i.default.join(r.default.homedir(),".agx","group-chat"),M=i.default.join(C,"history.sqlite");function P(e){return e?.trim()||null}function U(e){return"scripted"===e?"scripted":"chat"}function F(e){let t,i=e.chat_created_at??e.created_at,r=e.chat_completed_at??null,a=function(e,t){switch(e){case"queued":return"queued";case"running":case"awaiting_user":case"blocked":return"running";case"completed":return"success";case"failed":return"failed";case"cancelled":return"cancelled";default:return t}}(e.chat_status,e.status);return{id:e.id,projectId:e.project_id,projectSlug:e.project_slug,issueId:e.issue_id,issueIdentifier:e.issue_identifier,issueTitle:e.issue_title,issueStatus:e.issue_status,issueAssignee:e.issue_assignee,threadId:e.thread_id,rootMessageId:e.root_message_id,chatRunId:e.chat_run_id,agentId:e.agent_id,agentName:e.agent_name,mode:U(e.mode),sessionTitle:"chat"===U(e.mode)&&(t=String(e.root_content??"").replace(/\[reaction\s+[^\]]*\]/gi,"").replace(/\[agx:[^\]]*\]/g,"").replace(/\[checkpoint\]/g,"").replace(/\[criteria:\s*[^\]]*\]/g,"").replace(/\[done\]/g,"").replace(/\[blocked[^\]]*\]/g,"").replace(/^\[SKIP\]$/gm,"").replace(/\s+/g," ").trim())?t.length>72?`${t.slice(0,69).trimEnd()}...`:t:null,status:a,durationMs:null!=r?Math.max(r-i,0):null,lastError:e.chat_last_error??e.error,startedAt:new Date(i).toISOString(),updatedAt:new Date((e.chat_updated_at??e.updated_at)||e.updated_at).toISOString(),completedAt:"number"==typeof r?new Date(r).toISOString():null}}async function J(e){await t.promises.mkdir(C,{recursive:!0});let i=new x.DatabaseSync(M);(0,$.pragmaSet)(i,"journal_mode = WAL");try{return i.exec(`
|
|
56
|
-
CREATE TABLE IF NOT EXISTS chat_runs (
|
|
57
|
-
id TEXT PRIMARY KEY,
|
|
58
|
-
thread_id TEXT NOT NULL,
|
|
59
|
-
root_message_id TEXT,
|
|
60
|
-
user_id TEXT NOT NULL,
|
|
61
|
-
project_slug TEXT,
|
|
62
|
-
status TEXT NOT NULL,
|
|
63
|
-
current_step INTEGER NOT NULL DEFAULT 0,
|
|
64
|
-
max_steps INTEGER NOT NULL DEFAULT 10,
|
|
65
|
-
steps_used INTEGER NOT NULL DEFAULT 0,
|
|
66
|
-
last_error TEXT,
|
|
67
|
-
active_participant_ids TEXT NOT NULL DEFAULT '[]',
|
|
68
|
-
payload_json TEXT,
|
|
69
|
-
result_json TEXT,
|
|
70
|
-
created_at INTEGER NOT NULL,
|
|
71
|
-
updated_at INTEGER NOT NULL,
|
|
72
|
-
completed_at INTEGER
|
|
73
|
-
);
|
|
74
|
-
CREATE TABLE IF NOT EXISTS messages (
|
|
75
|
-
thread_id TEXT NOT NULL,
|
|
76
|
-
id TEXT NOT NULL,
|
|
77
|
-
role TEXT NOT NULL,
|
|
78
|
-
participant_id TEXT,
|
|
79
|
-
content TEXT NOT NULL,
|
|
80
|
-
timestamp INTEGER NOT NULL,
|
|
81
|
-
root_message_id TEXT,
|
|
82
|
-
parent_message_id TEXT,
|
|
83
|
-
depth INTEGER NOT NULL DEFAULT 0,
|
|
84
|
-
thread_status TEXT,
|
|
85
|
-
outcome_note TEXT,
|
|
86
|
-
PRIMARY KEY (thread_id, id)
|
|
87
|
-
);
|
|
88
|
-
CREATE TABLE IF NOT EXISTS linear_runs (
|
|
89
|
-
id TEXT PRIMARY KEY,
|
|
90
|
-
project_id TEXT,
|
|
91
|
-
project_slug TEXT,
|
|
92
|
-
issue_id TEXT NOT NULL,
|
|
93
|
-
issue_identifier TEXT NOT NULL,
|
|
94
|
-
issue_title TEXT NOT NULL,
|
|
95
|
-
issue_status TEXT NOT NULL,
|
|
96
|
-
issue_assignee TEXT,
|
|
97
|
-
thread_id TEXT NOT NULL,
|
|
98
|
-
root_message_id TEXT,
|
|
99
|
-
chat_run_id TEXT,
|
|
100
|
-
agent_id TEXT NOT NULL,
|
|
101
|
-
agent_name TEXT NOT NULL,
|
|
102
|
-
mode TEXT NOT NULL DEFAULT 'chat',
|
|
103
|
-
status TEXT NOT NULL DEFAULT 'queued',
|
|
104
|
-
error TEXT,
|
|
105
|
-
created_at INTEGER NOT NULL,
|
|
106
|
-
updated_at INTEGER NOT NULL
|
|
107
|
-
);
|
|
108
|
-
CREATE INDEX IF NOT EXISTS idx_linear_runs_issue_created
|
|
109
|
-
ON linear_runs (issue_id, created_at DESC);
|
|
110
|
-
CREATE INDEX IF NOT EXISTS idx_linear_runs_project_issue_created
|
|
111
|
-
ON linear_runs (project_id, issue_id, created_at DESC);
|
|
112
|
-
CREATE UNIQUE INDEX IF NOT EXISTS idx_linear_runs_chat_run_id
|
|
113
|
-
ON linear_runs (chat_run_id)
|
|
114
|
-
WHERE chat_run_id IS NOT NULL;
|
|
115
|
-
`),i.prepare("PRAGMA table_info(linear_runs)").all().some(e=>"mode"===e.name)||i.exec("ALTER TABLE linear_runs ADD COLUMN mode TEXT NOT NULL DEFAULT 'chat';"),e(i)}finally{i.close()}}async function X(e){let t=Date.now(),i=P(e.id)??crypto.randomUUID(),r=P(e.threadId)??`linear-run:${i}`,a=U(e.mode);return J(n=>{n.prepare(`INSERT INTO linear_runs (
|
|
116
|
-
id, project_id, project_slug, issue_id, issue_identifier, issue_title,
|
|
117
|
-
issue_status, issue_assignee, thread_id, root_message_id, chat_run_id,
|
|
118
|
-
agent_id, agent_name, mode, status, error, created_at, updated_at
|
|
119
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, NULL, NULL, ?, ?, ?, 'queued', NULL, ?, ?)`).run(i,P(e.projectId??null),P(e.projectSlug??null),e.issueId.trim(),e.issueIdentifier.trim(),e.issueTitle.trim(),e.issueStatus.trim(),P(e.issueAssignee??null),r,e.agentId.trim(),e.agentName.trim(),a,t,t);let s=n.prepare(`SELECT
|
|
120
|
-
lr.*,
|
|
121
|
-
cr.status AS chat_status,
|
|
122
|
-
cr.last_error AS chat_last_error,
|
|
123
|
-
cr.created_at AS chat_created_at,
|
|
124
|
-
cr.updated_at AS chat_updated_at,
|
|
125
|
-
cr.completed_at AS chat_completed_at,
|
|
126
|
-
msg.content AS root_content
|
|
127
|
-
FROM linear_runs lr
|
|
128
|
-
LEFT JOIN chat_runs cr ON cr.id = (
|
|
129
|
-
SELECT id FROM chat_runs WHERE thread_id = lr.thread_id ORDER BY updated_at DESC LIMIT 1
|
|
130
|
-
)
|
|
131
|
-
LEFT JOIN messages msg ON msg.thread_id = lr.thread_id AND msg.id = lr.root_message_id
|
|
132
|
-
WHERE lr.id = ?
|
|
133
|
-
LIMIT 1`).get(i);if(!s)throw Error(`Failed to create Linear run ${i}`);return F(s)})}async function W(e){return J(t=>{let i=["updated_at = ?"],r=[Date.now()];void 0!==e.rootMessageId&&(i.push("root_message_id = ?"),r.push(P(e.rootMessageId))),void 0!==e.chatRunId&&(i.push("chat_run_id = ?"),r.push(P(e.chatRunId))),void 0!==e.status&&(i.push("status = ?"),r.push(e.status)),void 0!==e.error&&(i.push("error = ?"),r.push(P(e.error))),r.push(e.id.trim()),t.prepare(`UPDATE linear_runs SET ${i.join(", ")} WHERE id = ?`).run(...r);let a=t.prepare(`SELECT
|
|
134
|
-
lr.*,
|
|
135
|
-
cr.status AS chat_status,
|
|
136
|
-
cr.last_error AS chat_last_error,
|
|
137
|
-
cr.created_at AS chat_created_at,
|
|
138
|
-
cr.updated_at AS chat_updated_at,
|
|
139
|
-
cr.completed_at AS chat_completed_at,
|
|
140
|
-
msg.content AS root_content
|
|
141
|
-
FROM linear_runs lr
|
|
142
|
-
LEFT JOIN chat_runs cr ON cr.id = (
|
|
143
|
-
SELECT id FROM chat_runs WHERE thread_id = lr.thread_id ORDER BY updated_at DESC LIMIT 1
|
|
144
|
-
)
|
|
145
|
-
LEFT JOIN messages msg ON msg.thread_id = lr.thread_id AND msg.id = lr.root_message_id
|
|
146
|
-
WHERE lr.id = ?
|
|
147
|
-
LIMIT 1`).get(e.id.trim());return a?F(a):null})}async function q(e){return J(t=>{let i=e?.trim(),r=i?`SELECT DISTINCT lr.issue_id, lr.agent_id, lr.agent_name
|
|
148
|
-
FROM linear_runs lr
|
|
149
|
-
LEFT JOIN chat_runs cr ON cr.id = (
|
|
150
|
-
SELECT id FROM chat_runs WHERE thread_id = lr.thread_id ORDER BY updated_at DESC LIMIT 1
|
|
151
|
-
)
|
|
152
|
-
WHERE (lr.status IN ('queued', 'running') OR cr.status IN ('queued', 'running'))
|
|
153
|
-
AND lr.project_id = ?`:`SELECT DISTINCT lr.issue_id, lr.agent_id, lr.agent_name
|
|
154
|
-
FROM linear_runs lr
|
|
155
|
-
LEFT JOIN chat_runs cr ON cr.id = (
|
|
156
|
-
SELECT id FROM chat_runs WHERE thread_id = lr.thread_id ORDER BY updated_at DESC LIMIT 1
|
|
157
|
-
)
|
|
158
|
-
WHERE (lr.status IN ('queued', 'running') OR cr.status IN ('queued', 'running'))`;return(i?t.prepare(r).all(e.trim()):t.prepare(r).all()).map(e=>({issueId:e.issue_id,agentId:e.agent_id,agentName:e.agent_name}))})}var B=e.i(200704),K=e.i(202322),H=e.i(295851),Y=e.i(251642);async function G(e){let t=(await (0,L.loadDbParticipants)()).find(t=>t.id===e.agentId)??null;if(!t)throw Error(`Agent "${e.agentId}" could not be resolved for scripted Linear work.`);let i=await X({projectId:e.projectId??null,projectSlug:e.projectSlug??null,issueId:e.issue.id,issueIdentifier:e.issue.identifier,issueTitle:e.issue.title,issueStatus:e.issue.status,issueAssignee:e.issue.assignee??null,agentId:t.id,agentName:t.name,mode:"scripted"});try{var r;let a,n,s,o,l,d,u,c,p,m,f,h={issue:{identifier:e.issue.identifier,title:e.issue.title,status:e.issue.status,assignee:e.issue.assignee??null},project:e.projectSlug?{slug:e.projectSlug}:null},{prompt:g,promptPrefix:_}=(n=(a=D(h)).issue.identifier,s=a.issue.title,o=a.issue.status,l=a.issue.assignee,d=a.runtime.knowledgeBaseRoot,u=a.runtime.issueKnowledgePath,c=a.runtime.isolatedWorktreePath,p=`LINEAR TASK EXECUTION
|
|
159
|
-
|
|
160
|
-
You are an engineer working through a single Linear ticket. Work like a careful teammate: continue existing work when present, investigate before coding, present a plan before implementation, ask clarifying questions when requirements are ambiguous, and stop cleanly when blocked instead of guessing.
|
|
161
|
-
|
|
162
|
-
INJECTED CONTEXT
|
|
163
|
-
- Ticket: ${n}
|
|
164
|
-
- Title: ${s}
|
|
165
|
-
- Current status: ${o}
|
|
166
|
-
- Current assignee: ${l}
|
|
167
|
-
- Project: ${a.project.label}
|
|
168
|
-
- Knowledge base root: ${d}
|
|
169
|
-
- Issue knowledge path: ${u}
|
|
170
|
-
- Suggested isolated worktree: ${c}
|
|
171
|
-
- Additional project resources such as repo knowledge, project memory, and project variables are injected separately by the active project context.
|
|
172
|
-
|
|
173
|
-
SOURCE REPOSITORIES
|
|
174
|
-
${!(r=a.project.repos)||0===r.length?"- Use the active project context to discover the right repository or workspace; do not hardcode paths.":r.map(e=>{let t=[e.name.trim()||"repository"],i=String(e.path??"").trim(),r=String(e.notes??"").trim();return i&&t.push(`path: ${i}`),r&&t.push(`notes: ${r}`),`- ${t.join(" | ")}`}).join("\n")}
|
|
175
|
-
|
|
176
|
-
WORKFLOW
|
|
177
|
-
1. Read the full Linear issue and comment thread before acting. Use Linear MCP for issue details, comments, state changes, and follow-up.
|
|
178
|
-
2. Prefer resuming existing work: existing knowledge-base notes, branches, PRs, or prior discussion.
|
|
179
|
-
3. If requirements are unclear, ask specific clarifying questions in Linear and stop.
|
|
180
|
-
4. If the ticket is fresh, investigate first, capture findings in the knowledge base, write a plan, and share the plan before implementation.
|
|
181
|
-
5. If a reviewed plan already exists or the ticket is explicitly ready for implementation, implement in an isolated worktree or equivalent isolated workspace rather than a shared checkout.
|
|
182
|
-
6. Validate with the appropriate tests, linting, type checks, and manual verification for the change.
|
|
183
|
-
7. Keep Linear accurate: comments, links, statuses, blockers, and PR references should match reality.
|
|
184
|
-
8. Keep the knowledge base current with what you learned, what changed, and what remains.
|
|
185
|
-
9. Work on exactly this ticket during this session.
|
|
186
|
-
|
|
187
|
-
RULES
|
|
188
|
-
- Use the injected project context instead of hardcoded repo-specific paths or conventions.
|
|
189
|
-
- Use knowledge base terminology; the filesystem path above is the storage location.
|
|
190
|
-
- If a PR already exists, focus on CI failures, reviewer feedback, merge status, or ticket follow-up instead of starting over.
|
|
191
|
-
- Leave the ticket and the knowledge base in a resumable state at the end of the session. Clean up temporary worktrees or session claims if your workflow created them.
|
|
192
|
-
|
|
193
|
-
`,{prompt:`Work on this Linear ticket: ${n} - ${s}`,promptPrefix:p}),y=e.scriptPrompt?.trim()??"",b=e.scriptName?.trim()??"",E=y&&(f={"ticket.identifier":(m=D(h)).issue.identifier,"ticket.title":m.issue.title,"ticket.status":m.issue.status,"ticket.assignee":m.issue.assignee,"project.name":m.project.name,"project.slug":m.project.slug,"project.label":m.project.label,"knowledge_base.root":m.runtime.knowledgeBaseRoot,"knowledge_base.issue_path":m.runtime.issueKnowledgePath,"worktree.path":m.runtime.isolatedWorktreePath},y.replace(/\{\{\s*([a-zA-Z0-9._-]+)\s*\}\}/g,(e,t)=>f[t]??"")).trim()||g,j=y?`${_}ACTIVE SESSION SCRIPT
|
|
194
|
-
- Name: ${b||"Custom script"}
|
|
195
|
-
|
|
196
|
-
`:_,{chatRunId:I,userMessageId:v}=await V({threadId:i.threadId,prompt:E,promptPrefix:j,projectSlug:e.projectSlug??null,participantId:t.id});return{run:i=await W({id:i.id,chatRunId:I,rootMessageId:v})??i,chatRunId:I,userMessageId:v}}catch(e){throw await W({id:i.id,status:"failed",error:e instanceof Error?e.message:String(e)}),e}}async function V(e){let t=(await (0,L.loadDbParticipants)()).find(t=>t.id===e.participantId)??null;if(!t)throw Error(`Participant "${e.participantId}" is unavailable.`);let i=(0,Y.normalizeProjectSlug)(e.projectSlug),r=await (0,Y.resolveProjectContext)(i,[],[t]),a=Date.now(),n=crypto.randomUUID(),s={id:n,role:"user",participantId:null,content:e.prompt,timestamp:a,rootMessageId:null,parentMessageId:null,depth:0};await (0,B.saveMessages)(e.threadId,[s]);let o=e.promptPrefix?`${e.promptPrefix}${e.prompt}`:e.prompt,l=crypto.randomUUID(),d={threadId:e.threadId,prompt:o,projectContext:r,mentionedIds:[],initialParallelIds:[],maxRounds:Math.min(Math.max(e.maxRounds??10,1),50),recentHistory:[],currentUserMessageId:n,rootMessageId:n,participantIds:[t.id]};await (0,B.createChatRun)({id:l,threadId:e.threadId,rootMessageId:n,userId:N.LOCAL_USER.id,projectSlug:i||null,maxSteps:d.maxRounds,activeParticipantIds:[t.id],payload:d}),await (0,K.ensureOrchestratorRuntime)();let u=await (0,H.getQueue)();return await u.send(H.QUEUE_NAMES.CHAT_RUN_PROCESS,{chatRunId:l,userId:N.LOCAL_USER.id,signal:"start"}),{chatRunId:l,userMessageId:n}}var z=e.i(902157),Z=e.i(750227),Q=e.i(180228),ee=e.i(660526);let et=Z.default.join((0,ee.homedir)(),".agx");function ei(){return Z.default.join(et,"linear-token.json")}function er(e){if(null===e)return"null";if(Array.isArray(e))return`[${e.map(er).join(", ")}]`;if("string"==typeof e)return JSON.stringify(e);if("number"==typeof e||"boolean"==typeof e)return String(e);if("object"==typeof e){let t=Object.entries(e).filter(([,e])=>void 0!==e);return`{ ${t.map(([e,t])=>`${e}: ${er(t)}`).join(", ")} }`}throw Error(`Unsupported GraphQL value: ${typeof e}`)}class ea{accessToken;constructor(e){this.accessToken=e}get viewer(){return this.request("query { viewer { id name email } }").then(e=>e.viewer)}async users(){return(await this.request(`query {
|
|
197
|
-
users(first: 100) {
|
|
198
|
-
nodes {
|
|
199
|
-
id
|
|
200
|
-
name
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
}`)).users.nodes.filter(e=>e.name.trim().length>0).map(e=>({id:e.id,name:e.name})).sort((e,t)=>e.name.localeCompare(t.name))}async teams(){return(await this.request(`query {
|
|
204
|
-
teams(first: 50) {
|
|
205
|
-
nodes {
|
|
206
|
-
id
|
|
207
|
-
name
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
}`)).teams.nodes.filter(e=>e.name.trim().length>0).map(e=>({id:e.id,name:e.name})).sort((e,t)=>e.name.localeCompare(t.name))}async issueLabels(){return(await this.request(`query {
|
|
211
|
-
issueLabels(first: 250, includeArchived: false) {
|
|
212
|
-
nodes {
|
|
213
|
-
id
|
|
214
|
-
name
|
|
215
|
-
color
|
|
216
|
-
team {
|
|
217
|
-
id
|
|
218
|
-
name
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
}`)).issueLabels.nodes.filter(e=>e.name.trim().length>0).map(e=>({id:e.id,name:e.name.trim(),color:e.color,teamId:e.team?.id??null,teamName:e.team?.name??null})).sort((e,t)=>e.name.localeCompare(t.name))}async createIssueLabel(e){let t=e.name.trim();if(!t)throw Error("Linear label name is required");let i={name:t,...e.description?.trim()?{description:e.description.trim()}:{},...e.color?.trim()?{color:e.color.trim()}:{},...e.teamId?.trim()?{teamId:e.teamId.trim()}:{}},r=await this.request(`mutation {
|
|
223
|
-
issueLabelCreate(input: ${er(i)}) {
|
|
224
|
-
success
|
|
225
|
-
issueLabel {
|
|
226
|
-
id
|
|
227
|
-
name
|
|
228
|
-
color
|
|
229
|
-
team {
|
|
230
|
-
id
|
|
231
|
-
name
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
}`).then(e=>e.issueLabelCreate);if(!r.success)throw Error(`Linear rejected the label creation for "${t}"`);return{id:r.issueLabel.id,name:r.issueLabel.name.trim(),color:r.issueLabel.color,teamId:r.issueLabel.team?.id??null,teamName:r.issueLabel.team?.name??null}}async issues(e){let t,i=(t=[`first: ${e.first}`],e.after&&t.push(`after: ${JSON.stringify(e.after)}`),e.orderBy&&t.push(`orderBy: ${e.orderBy}`),e.filter&&Object.keys(e.filter).length>0&&t.push(`filter: ${er(e.filter)}`),t.join(", ")),r=await this.request(`query {
|
|
236
|
-
issues(${i}) {
|
|
237
|
-
nodes {
|
|
238
|
-
id
|
|
239
|
-
identifier
|
|
240
|
-
title
|
|
241
|
-
description
|
|
242
|
-
url
|
|
243
|
-
updatedAt
|
|
244
|
-
state { name }
|
|
245
|
-
assignee { id name email }
|
|
246
|
-
team { id name key }
|
|
247
|
-
cycle { id number name }
|
|
248
|
-
labels(first: 20) {
|
|
249
|
-
nodes {
|
|
250
|
-
name
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
pageInfo {
|
|
255
|
-
hasNextPage
|
|
256
|
-
endCursor
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
}`);return{nodes:r.issues.nodes.map(e=>({id:e.id,identifier:e.identifier,title:e.title,description:e.description,url:e.url,updatedAt:e.updatedAt,state:Promise.resolve(e.state),assignee:Promise.resolve(e.assignee),team:Promise.resolve(e.team),cycle:Promise.resolve(e.cycle),labels:Promise.resolve((e.labels?.nodes??[]).map(e=>e.name.trim()).filter(Boolean))})),pageInfo:r.issues.pageInfo}}async createIssue(e){let t=e.title.trim(),i=e.teamId.trim();if(!t)throw Error("Linear issue title is required");if(!i)throw Error("Linear issue team is required");let r={title:t,teamId:i,...e.description?.trim()?{description:e.description.trim()}:{},...e.assigneeId?.trim()?{assigneeId:e.assigneeId.trim()}:{},...e.cycleId?.trim()?{cycleId:e.cycleId.trim()}:{},...e.projectId?.trim()?{projectId:e.projectId.trim()}:{},...e.stateId?.trim()?{stateId:e.stateId.trim()}:{},..."number"==typeof e.priority&&Number.isFinite(e.priority)?{priority:Math.trunc(e.priority)}:{},...e.labelIds?.length?{labelIds:Array.from(new Set(e.labelIds.map(e=>e.trim()).filter(Boolean)))}:{}},a=await this.request(`mutation {
|
|
260
|
-
issueCreate(input: ${er(r)}) {
|
|
261
|
-
success
|
|
262
|
-
issue {
|
|
263
|
-
id
|
|
264
|
-
identifier
|
|
265
|
-
title
|
|
266
|
-
description
|
|
267
|
-
url
|
|
268
|
-
updatedAt
|
|
269
|
-
state { name }
|
|
270
|
-
assignee { id name email }
|
|
271
|
-
team { id name key }
|
|
272
|
-
cycle { id number name }
|
|
273
|
-
labels(first: 20) {
|
|
274
|
-
nodes {
|
|
275
|
-
name
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
}`).then(e=>e.issueCreate);if(!a.success||!a.issue)throw Error(`Linear rejected the issue creation for "${t}"`);return{id:a.issue.id,identifier:a.issue.identifier,title:a.issue.title,description:a.issue.description,url:a.issue.url,updatedAt:a.issue.updatedAt,status:a.issue.state?.name??null,assignee:a.issue.assignee?.name??null,teamId:a.issue.team?.id??null,teamName:a.issue.team?.name??null,teamKey:a.issue.team?.key??null,labels:(a.issue.labels?.nodes??[]).map(e=>e.name.trim()).filter(Boolean)}}async cycles(){let e=await this.request(`query {
|
|
281
|
-
teams(first: 50) {
|
|
282
|
-
nodes {
|
|
283
|
-
id
|
|
284
|
-
name
|
|
285
|
-
activeCycle {
|
|
286
|
-
id
|
|
287
|
-
number
|
|
288
|
-
name
|
|
289
|
-
startsAt
|
|
290
|
-
endsAt
|
|
291
|
-
team {
|
|
292
|
-
id
|
|
293
|
-
name
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
cycles(first: 20) {
|
|
297
|
-
nodes {
|
|
298
|
-
id
|
|
299
|
-
number
|
|
300
|
-
name
|
|
301
|
-
startsAt
|
|
302
|
-
endsAt
|
|
303
|
-
team {
|
|
304
|
-
id
|
|
305
|
-
name
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
}`),t=new Map;for(let i of e.teams.nodes)for(let e of[...i.activeCycle?[i.activeCycle]:[],...i.cycles.nodes])t.has(e.id)||t.set(e.id,{id:e.id,number:e.number,name:e.name,startsAt:e.startsAt,endsAt:e.endsAt,teamId:e.team?.id??i.id,teamName:e.team?.name??i.name});return[...t.values()].sort((e,t)=>new Date(t.startsAt).getTime()-new Date(e.startsAt).getTime())}async updateIssueStatus(e,t){let i=e.trim(),r=t.trim();if(!i)throw Error("Issue id is required");if(!r)throw Error("Status name is required");let a=await this.request(`query {
|
|
312
|
-
issue(id: ${JSON.stringify(i)}) {
|
|
313
|
-
id
|
|
314
|
-
team { id }
|
|
315
|
-
state { id name }
|
|
316
|
-
}
|
|
317
|
-
}`).then(e=>e.issue?{id:e.issue.id,teamId:e.issue.team?.id??null,currentStateId:e.issue.state?.id??null,currentStatus:e.issue.state?.name??null}:null);if(!a)throw Error(`Issue "${i}" not found in Linear`);if(!a.teamId)throw Error(`Issue "${i}" is missing a team in Linear`);if(a.currentStatus?.trim().toLowerCase()===r.toLowerCase()){let e=a.currentStatus.trim();return await this.request(`query {
|
|
318
|
-
issue(id: ${JSON.stringify(i)}) {
|
|
319
|
-
id
|
|
320
|
-
identifier
|
|
321
|
-
title
|
|
322
|
-
url
|
|
323
|
-
updatedAt
|
|
324
|
-
state { name }
|
|
325
|
-
assignee { name }
|
|
326
|
-
}
|
|
327
|
-
}`).then(t=>{if(!t.issue)throw Error(`Issue "${i}" not found in Linear`);return{id:t.issue.id,identifier:t.issue.identifier,title:t.issue.title,url:t.issue.url,updatedAt:t.issue.updatedAt,status:t.issue.state?.name??e,assignee:t.issue.assignee?.name??null}})}let n=(await this.request(`query {
|
|
328
|
-
team(id: ${JSON.stringify(a.teamId)}) {
|
|
329
|
-
states {
|
|
330
|
-
nodes {
|
|
331
|
-
id
|
|
332
|
-
name
|
|
333
|
-
position
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
}`).then(e=>e.team?.states?.nodes??[])).slice().sort((e,t)=>e.position-t.position).find(e=>e.name.trim().toLowerCase()===r.toLowerCase());if(!n)throw Error(`Linear status "${r}" was not found for this issue's team`);let s=await this.request(`mutation {
|
|
338
|
-
issueUpdate(
|
|
339
|
-
id: ${JSON.stringify(i)},
|
|
340
|
-
input: { stateId: ${JSON.stringify(n.id)} }
|
|
341
|
-
) {
|
|
342
|
-
success
|
|
343
|
-
issue {
|
|
344
|
-
id
|
|
345
|
-
identifier
|
|
346
|
-
title
|
|
347
|
-
url
|
|
348
|
-
updatedAt
|
|
349
|
-
state { name }
|
|
350
|
-
assignee { name }
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
}`).then(e=>e.issueUpdate);if(!s.success||!s.issue)throw Error(`Linear rejected the status update for "${i}"`);return{id:s.issue.id,identifier:s.issue.identifier,title:s.issue.title,url:s.issue.url,updatedAt:s.issue.updatedAt,status:s.issue.state?.name??r,assignee:s.issue.assignee?.name??null}}async request(e){let t=await fetch("https://api.linear.app/graphql",{method:"POST",headers:{"Content-Type":"application/json",Authorization:this.accessToken},body:JSON.stringify({query:e}),cache:"no-store"}),i=await t.json();if(!t.ok||i.errors?.length)throw Error(i.errors?.map(e=>e.message).find(Boolean)??`Linear request failed with status ${t.status}`);if(!i.data)throw Error("Linear response did not include data");return i.data}}function en(){let e=function(){try{let e=(0,z.readFileSync)(ei(),"utf8");return JSON.parse(e)}catch{}try{var e;let t=Z.default.join(process.cwd(),".linear-token.json"),i=(0,z.readFileSync)(t,"utf8"),r=JSON.parse(i);e=r,(0,z.existsSync)(et)||(0,z.mkdirSync)(et,{recursive:!0}),(0,z.writeFileSync)(ei(),JSON.stringify(e,null,2));try{(0,z.unlinkSync)(t)}catch{}return r}catch{return null}}();return e?new ea(e.accessToken):null}var es=e.x("node:sqlite",()=>require("node:sqlite"),!0);let eo=process.env.AGX_LINEAR_DIR?.trim()||Z.default.join(process.env.AGX_DATA_DIR||Z.default.join(ee.default.homedir(),".agx"),"linear"),el=Z.default.join(eo,"issues.sqlite");function ed(e){return e?.trim()||null}function eu(e){return Array.isArray(e)?Array.from(new Set(e.map(e=>"string"==typeof e?e.trim():"").filter(Boolean))):[]}function ec(e){return new Date(e).toISOString()}function ep(e){return{id:e.issue_id,identifier:e.identifier,title:e.title,description:e.description,labels:function(e){if(!e)return[];try{return eu(JSON.parse(e))}catch{return[]}}(e.labels_json),url:e.url,status:e.status,assigneeId:e.assignee_id,assignee:e.assignee_name,assigneeEmail:e.assignee_email,isAssignedToMe:1===e.is_assigned_to_me,teamId:e.team_id,teamName:e.team_name,teamKey:e.team_key,cycleId:e.cycle_id,cycleName:e.cycle_name,cycleNumber:e.cycle_number,updatedAt:e.updated_at,pulledAt:ec(e.pulled_at)}}async function em(e){await z.promises.mkdir(eo,{recursive:!0});let t=new es.DatabaseSync(el);(0,$.pragmaSet)(t,"journal_mode = WAL");try{var i;return t.exec(`
|
|
354
|
-
CREATE TABLE IF NOT EXISTS linear_issues (
|
|
355
|
-
issue_id TEXT PRIMARY KEY,
|
|
356
|
-
identifier TEXT NOT NULL,
|
|
357
|
-
title TEXT NOT NULL,
|
|
358
|
-
description TEXT,
|
|
359
|
-
labels_json TEXT NOT NULL DEFAULT '[]',
|
|
360
|
-
url TEXT,
|
|
361
|
-
status TEXT NOT NULL,
|
|
362
|
-
assignee_id TEXT,
|
|
363
|
-
assignee_name TEXT,
|
|
364
|
-
assignee_email TEXT,
|
|
365
|
-
is_assigned_to_me INTEGER NOT NULL DEFAULT 0,
|
|
366
|
-
team_id TEXT,
|
|
367
|
-
team_name TEXT,
|
|
368
|
-
team_key TEXT,
|
|
369
|
-
cycle_id TEXT,
|
|
370
|
-
cycle_name TEXT,
|
|
371
|
-
cycle_number INTEGER,
|
|
372
|
-
updated_at TEXT NOT NULL,
|
|
373
|
-
pulled_at INTEGER NOT NULL
|
|
374
|
-
);
|
|
375
|
-
CREATE INDEX IF NOT EXISTS idx_linear_issues_updated
|
|
376
|
-
ON linear_issues (updated_at DESC, identifier ASC);
|
|
377
|
-
CREATE INDEX IF NOT EXISTS idx_linear_issues_cycle
|
|
378
|
-
ON linear_issues (cycle_id, updated_at DESC);
|
|
379
|
-
CREATE INDEX IF NOT EXISTS idx_linear_issues_assignee_me
|
|
380
|
-
ON linear_issues (is_assigned_to_me, updated_at DESC);
|
|
381
|
-
CREATE TABLE IF NOT EXISTS linear_issue_sync_state (
|
|
382
|
-
scope_key TEXT PRIMARY KEY,
|
|
383
|
-
last_pulled_at INTEGER NOT NULL,
|
|
384
|
-
issue_count INTEGER NOT NULL
|
|
385
|
-
);
|
|
386
|
-
`),i="linear_issues",t.prepare(`PRAGMA table_info(${i})`).all().some(e=>"labels_json"===e.name)||t.exec(`ALTER TABLE ${i} ADD COLUMN labels_json TEXT NOT NULL DEFAULT '[]'`),e(t)}finally{t.close()}}async function ef(e){let t=e.pulledAtMs??Date.now();return em(i=>{i.exec("BEGIN");try{let n=i.prepare(`
|
|
387
|
-
INSERT INTO linear_issues (
|
|
388
|
-
issue_id, identifier, title, description, labels_json, url, status,
|
|
389
|
-
assignee_id, assignee_name, assignee_email, is_assigned_to_me,
|
|
390
|
-
team_id, team_name, team_key, cycle_id, cycle_name, cycle_number,
|
|
391
|
-
updated_at, pulled_at
|
|
392
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
393
|
-
ON CONFLICT(issue_id) DO UPDATE SET
|
|
394
|
-
identifier = excluded.identifier,
|
|
395
|
-
title = excluded.title,
|
|
396
|
-
description = excluded.description,
|
|
397
|
-
labels_json = excluded.labels_json,
|
|
398
|
-
url = excluded.url,
|
|
399
|
-
status = excluded.status,
|
|
400
|
-
assignee_id = excluded.assignee_id,
|
|
401
|
-
assignee_name = excluded.assignee_name,
|
|
402
|
-
assignee_email = excluded.assignee_email,
|
|
403
|
-
is_assigned_to_me = excluded.is_assigned_to_me,
|
|
404
|
-
team_id = excluded.team_id,
|
|
405
|
-
team_name = excluded.team_name,
|
|
406
|
-
team_key = excluded.team_key,
|
|
407
|
-
cycle_id = excluded.cycle_id,
|
|
408
|
-
cycle_name = excluded.cycle_name,
|
|
409
|
-
cycle_number = excluded.cycle_number,
|
|
410
|
-
updated_at = excluded.updated_at,
|
|
411
|
-
pulled_at = excluded.pulled_at
|
|
412
|
-
`);for(let i of e.issues){var r,a;n.run(i.id.trim(),i.identifier.trim(),i.title.trim(),ed(i.description??null),(r=i.labels,JSON.stringify(eu(r??[]))),ed(i.url??null),i.status.trim(),ed(i.assigneeId??null),ed(i.assignee??null),ed(i.assigneeEmail??null),+!!i.isAssignedToMe,ed(i.teamId??null),ed(i.teamName??null),ed(i.teamKey??null),ed(i.cycleId??null),ed(i.cycleName??null),(a=i.cycleNumber??null,"number"==typeof a&&Number.isFinite(a)?a:null),i.updatedAt.trim(),t)}if(e.complete)if(0===e.issues.length)i.exec("DELETE FROM linear_issues");else{let t=e.issues.map(()=>"?").join(", ");i.prepare(`DELETE FROM linear_issues WHERE issue_id NOT IN (${t})`).run(...e.issues.map(e=>e.id.trim()))}i.exec("COMMIT")}catch(e){throw i.exec("ROLLBACK"),e}})}async function eh(e,t,i=Date.now()){let r=e.trim()||"global";return em(e=>{e.prepare(`
|
|
413
|
-
INSERT INTO linear_issue_sync_state (scope_key, last_pulled_at, issue_count)
|
|
414
|
-
VALUES (?, ?, ?)
|
|
415
|
-
ON CONFLICT(scope_key) DO UPDATE SET
|
|
416
|
-
last_pulled_at = excluded.last_pulled_at,
|
|
417
|
-
issue_count = excluded.issue_count
|
|
418
|
-
`).run(r,i,t)})}async function eg(e="global"){let t=e.trim()||"global";return em(e=>{let i=e.prepare(`SELECT scope_key, last_pulled_at, issue_count
|
|
419
|
-
FROM linear_issue_sync_state
|
|
420
|
-
WHERE scope_key = ?
|
|
421
|
-
LIMIT 1`).get(t);return i?{scopeKey:i.scope_key,lastPulledAt:ec(i.last_pulled_at),issueCount:i.issue_count}:null})}async function e_(){return em(e=>{let t=e.prepare("SELECT COUNT(*) AS count FROM linear_issues").get();return t?.count??0})}async function ey(e={}){let t=Number.isFinite(e.limit)?Math.min(Math.max(Number(e.limit),1),500):50,i=Number.isFinite(Number(e.cursor))?Math.max(Number(e.cursor),0):0;return em(r=>{let a,n=[],s=[],o=ed(e.search??null);if(o){let e=`%${o.toLowerCase().replace(/[\\%_]/g,"\\$&")}%`;n.push("(LOWER(identifier) LIKE ? ESCAPE '\\' OR LOWER(title) LIKE ? ESCAPE '\\' OR LOWER(COALESCE(description, '')) LIKE ? ESCAPE '\\')"),s.push(e,e,e)}let l=Array.from(new Set((e.statuses??[]).map(e=>ed(e)).filter(e=>!!e).map(e=>e.toLowerCase())));l.length>0&&(n.push(`LOWER(status) IN (${l.map(()=>"?").join(", ")})`),s.push(...l));let d=Array.from(new Set((e.assigneeIds??[]).map(e=>ed(e)).filter(e=>!!e)));d.length>0&&(n.push(`assignee_id IN (${d.map(()=>"?").join(", ")})`),s.push(...d)),e.assignedToMe&&n.push("is_assigned_to_me = 1");let u=ed(e.teamId??null);u&&(n.push("team_id = ?"),s.push(u));let c=ed(e.cycleId??null);if(c&&(n.push("cycle_id = ?"),s.push(c)),e.hasActivity&&e.activityMap){let t=Array.from(e.activityMap.keys());if(0===t.length)return{issues:[],pageInfo:{hasNextPage:!1,endCursor:null}};n.push(`issue_id IN (${t.map(()=>"?").join(", ")})`),s.push(...t)}let p=n.length>0?`WHERE ${n.join(" AND ")}`:"",m=e.sortBy??"activity",f=e.sortDir??"desc",h="asc"===f?"ASC":"DESC";if("activity"===m&&e.activityMap&&e.activityMap.size>0){let a=Array.from(e.activityMap.keys()),n=a.map(()=>"?").join(", "),o=p?`${p} AND issue_id IN (${n})`:`WHERE issue_id IN (${n})`,l=r.prepare(`SELECT * FROM linear_issues ${o} ORDER BY updated_at DESC, identifier ASC`).all(...s,...a),d=e.activityMap;l.sort((e,t)=>{let i=d.get(e.issue_id)??"",r=d.get(t.issue_id)??"";return"desc"===f?r.localeCompare(i):i.localeCompare(r)});let u=[];if(!e.hasActivity){let e=p?`${p} AND issue_id NOT IN (${n})`:`WHERE issue_id NOT IN (${n})`;u=r.prepare(`SELECT * FROM linear_issues ${e} ORDER BY updated_at DESC, identifier ASC`).all(...s,...a)}let c=[...l,...u].slice(i,i+t+1),m=c.length>t,h=m?c.slice(0,t):c,g=m?String(i+t):null;return{issues:h.map(ep),pageInfo:{hasNextPage:m,endCursor:g}}}switch(m){case"identifier":a=`ORDER BY identifier ${h}`;break;case"status":a=`ORDER BY LOWER(status) ${h}, identifier ASC`;break;case"created":a=`ORDER BY pulled_at ${h}, identifier ASC`;break;default:a=`ORDER BY updated_at ${h}, identifier ASC`}let g=r.prepare(`SELECT *
|
|
422
|
-
FROM linear_issues
|
|
423
|
-
${p}
|
|
424
|
-
${a}
|
|
425
|
-
LIMIT ? OFFSET ?`).all(...s,t+1,i),_=g.length>t,y=_?g.slice(0,t):g,b=_?String(i+t):null;return{issues:y.map(ep),pageInfo:{hasNextPage:_,endCursor:b}}})}var eb=e.i(341902);let eE="global";function ej(e){let t=String(e??"").trim().toLowerCase();return t?`project:${t}`:eE}function eI(e){z.default.mkdirSync(e,{recursive:!0})}function ev(e,t){eI(Z.default.dirname(e));let i=`${e}.tmp-${process.pid}-${Date.now()}`;z.default.writeFileSync(i,t,"utf8"),z.default.renameSync(i,e)}function eT(e){return{id:e.id,identifier:e.identifier,title:e.title,url:e.url,status:e.status,assignee:e.assignee,updatedAt:e.updatedAt,labels:e.labels??[]}}function eA(e,t){return e.trim().replace(/[\\/]/g,"-")||t}async function eS(e={}){let t,i=en();if(!i)throw Error("Not connected");let r=await i.viewer,a=Date.now(),n=new Date(a).toISOString(),s=0,o=!0,l=[];for(;s<500;){let e=500-s,a=await i.issues({first:Math.min(100,e),after:t,orderBy:"updatedAt"}),n=await Promise.all(a.nodes.map(async e=>{let[t,i,a,n,s]=await Promise.all([e.labels,e.state,e.assignee,e.team,e.cycle]);return{id:e.id,identifier:e.identifier,title:e.title,description:e.description??null,labels:t,url:e.url,status:i?.name??"Unknown",assigneeId:a?.id??null,assignee:a?.name??null,assigneeEmail:a?.email??null,isAssignedToMe:!!(a?.id&&a.id===r.id),teamId:n?.id??null,teamName:n?.name??null,teamKey:n?.key??null,cycleId:s?.id??null,cycleName:s?.name??null,cycleNumber:s?.number??null,updatedAt:e.updatedAt}}));if(l.push(...n),s+=n.length,!a.pageInfo.hasNextPage||!a.pageInfo.endCursor)break;if(s>=500){o=!1;break}t=a.pageInfo.endCursor}await ef({issues:l,complete:o,pulledAtMs:a}),await eh(eE,l.length,a);let d=ej(e.projectSlug);return d!==eE&&await eh(d,l.length,a),!function(e,t,i){let r=function(e){let t=eb.vaultStore.getRootDir(),i=String(e??"").trim();if(i){let e=eb.vaultStore.getProjectWithRepos(i),r=e?.slug??i;return Z.default.join(t,r,"issues")}return Z.default.join(t,"_global","Linear","issues")}(i);eI(r);let a=["# Linear Issues","",`Last pulled: ${t}`,""];for(let i of e){let e=Z.default.join(r,eA(i.identifier,i.id));!function(e,t,i){let r=(0,Q.dump)(t,{lineWidth:120,noRefs:!0,sortKeys:!0}).trimEnd(),a=String(i||"").replace(/\r\n/g,"\n").split("\n").map(e=>e.replace(/\s+$/g,"")).join("\n").trim();ev(e,a?`---
|
|
426
|
-
${r}
|
|
427
|
-
---
|
|
428
|
-
${a}
|
|
429
|
-
`:`---
|
|
430
|
-
${r}
|
|
431
|
-
---
|
|
432
|
-
`)}(Z.default.join(e,"README.md"),{type:"linear-issue",issue_id:i.id,identifier:i.identifier,title:i.title,status:i.status,assignee_id:i.assigneeId??null,assignee_name:i.assignee??null,assignee_email:i.assigneeEmail??null,team_id:i.teamId??null,team_name:i.teamName??null,team_key:i.teamKey??null,cycle_id:i.cycleId??null,cycle_name:i.cycleName??null,cycle_number:i.cycleNumber??null,url:i.url??null,updated_at:i.updatedAt,pulled_at:t},[`# ${i.identifier}: ${i.title}`,"",`- Status: ${i.status}`,`- Assignee: ${i.assignee??"Unassigned"}`,i.teamName?`- Team: ${i.teamName}`:null,i.cycleName||null!=i.cycleNumber?`- Cycle: ${i.cycleName??`Cycle ${i.cycleNumber}`}`:null,i.labels?.length?`- Labels: ${i.labels.join(", ")}`:null,`- Updated in Linear: ${i.updatedAt}`,`- Pulled locally: ${t}`,i.url?`- URL: ${i.url}`:null,"","## Description","",i.description?.trim()||"_No description provided._"].filter(e=>null!==e).join("\n")),a.push(`- [${i.identifier}](${encodeURIComponent(eA(i.identifier,i.id))}/README.md) - ${i.title} (${i.status})`)}ev(Z.default.join(r,"_index.md"),`${a.join("\n")}
|
|
433
|
-
`)}(l,n,e.projectSlug),{issueCount:l.length,complete:o,pulledAt:n}}async function ew(e={}){let t=!!e.refresh,i=ej(e.projectSlug);if(!t){let[e,t]=await Promise.all([e_(),eg(i)]);if(e>0&&t)return null}return en()?eS({projectSlug:e.projectSlug}):null}async function eR(e={}){let[t,i]=await Promise.all([ey(e),eg(eE)]);return{issues:t.issues.map(eT),pageInfo:t.pageInfo,syncState:{lastPulledAt:i?.lastPulledAt??null}}}let eN=new Set(["done","cancelled","canceled","duplicate"]);function eL(e){return eN.has(String(e??"").trim().toLowerCase())}async function ek(e){let t=await ew({refresh:e.refresh,projectSlug:e.projectSlug}),{issues:i}=await eR({limit:e.limit??500});return{issues:i.filter(t=>(t.labels??[]).some(t=>{var i;return i=e.objectiveKey,t.trim().toLowerCase()===i.trim().toLowerCase()})),refreshedAt:t?.pulledAt??null}}var eO=e.i(929160);let eD="project_objectives_workspace",ex="project_goals_workspace",e$="project_health_snapshot",eC=new Set(["on_track","at_risk","off_track","done"]);function eM(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}function eP(e){return`${e}_${Math.random().toString(36).slice(2,10)}`}function eU(e){return[...e].sort((e,t)=>Date.parse(t.updatedAt)-Date.parse(e.updatedAt))}function eF(e){return[...e].sort((e,t)=>Date.parse(e.createdAt)-Date.parse(t.createdAt))}function eJ(e){return[...e].sort((e,t)=>Date.parse(t.createdAt)-Date.parse(e.createdAt))}function eX(e,t=""){return"string"==typeof e?e:t}function eW(e,t="1970-01-01T00:00:00.000Z"){if("string"!=typeof e)return t;let i=Date.parse(e);return Number.isNaN(i)?t:new Date(i).toISOString()}function eq(e){return"number"==typeof e&&Number.isFinite(e)?Math.max(0,Math.min(100,Math.round(e))):0}function eB(e){return"string"==typeof e&&eC.has(e)?e:"on_track"}function eK(e,t="objective"){let i=e.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-").slice(0,32);return i||t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"objective"}function eH(e){var t;if(!eM(e))return null;let i=eW(e.updatedAt??e.createdAt),r=eW(e.createdAt,i);return{id:eX(e.id,eP("objective")),title:eX(e.title,"Untitled objective"),teamId:eX(e.teamId??e.team_id??e.ownerTeamId),key:eK(eX(e.key??e.slug??e.label),eX(e.title??e.id,"objective")),threadId:eX(e.threadId)||null,chatSessionVersion:function(e,t=0){return"number"==typeof e&&Number.isFinite(e)?Math.max(0,Math.floor(e)):t}(e.chatSessionVersion,0),scheduledTaskIds:Array.isArray(t=e.scheduledTaskIds??e.promptJobIds)?Array.from(new Set(t.map(e=>"string"==typeof e?e.trim():"").filter(Boolean))):[],summary:eX(e.summary),cadence:eX(e.cadence),condition:eX(e.condition),progress:eq(e.progress),status:eB(e.status),createdAt:r,updatedAt:i}}function eY(e){if(!eM(e))return null;let t=eW(e.updatedAt??e.createdAt),i=eW(e.createdAt,t),r=eX(e.objectiveId??e.goalId);return r?{id:eX(e.id,eP("objective_activity")),objectiveId:r,sourceType:"note",sourceLabel:eX(e.sourceLabel,"Update"),title:eX(e.title,"Untitled activity"),body:eX(e.body),createdAt:i,updatedAt:t,relatedTaskId:eX(e.relatedTaskId)||null}:null}function eG(e){if(!eM(e))return null;let t=eX(e.activityId);return t?{id:eX(e.id,eP("objective_thread_message")),activityId:t,author:eX(e.author,"You"),body:eX(e.body),createdAt:eW(e.createdAt)}:null}function eV(){return{objectives:[],activities:[],activityThreads:{}}}function ez(e){let t;if(!eM(e))return eV();let i=Array.isArray(e.objectives)?e.objectives.map(e=>eH(e)).filter(e=>null!==e):[],r=Array.isArray(e.activities)?e.activities.map(e=>eY(e)).filter(e=>null!==e):[],a=eM(e.activityThreads)?Object.fromEntries(Object.entries(e.activityThreads).map(([e,t])=>[e,eF(Array.isArray(t)?t.map(e=>eG(e)).filter(e=>null!==e):[])])):{};return{objectives:eU((t=new Set,i.map(e=>{let i=function(e,t,i="objective"){let r=eK(i),a=eK(e,r),n=a,s=2;for(;t.has(n);){let e=`-${s}`,t=Math.max(1,32-e.length);n=`${a.slice(0,t)}${e}`,s+=1}return t.add(n),n}(e.key||e.title||e.id,t,e.id||e.title||"objective");return e.key===i?e:{...e,key:i}}))),activities:eJ(r),activityThreads:a}}function eZ(e,t){let i={...e};return t?i[e$]={progress:eq(t.progress),status:eB(t.status),updatedAt:eW(t.updatedAt),...t.source?{source:t.source.trim()}:{},...t.objectiveId?{objectiveId:t.objectiveId}:{},...t.objectiveKey?{objectiveKey:t.objectiveKey}:{},...t.note?{note:t.note.trim()}:{}}:delete i[e$],i}let eQ=/^---\s*\n([\s\S]*?)\n---\s*(?:\n([\s\S]*))?$/;function e0(e,t=""){return"string"==typeof e?e:t}function e1(e,t="1970-01-01T00:00:00.000Z"){if("string"!=typeof e)return t;let i=Date.parse(e);return Number.isNaN(i)?t:new Date(i).toISOString()}let e2=new Set(["on_track","at_risk","off_track","done"]);function e8(e,t={}){var i,r,a,n;let s,o,l=e.match(eQ);if(!l)throw Error(`Objective file is missing YAML frontmatter${t.filePath?` (${t.filePath})`:""}.`);let[,d,u=""]=l,c=!(i=(0,Q.load)(d,{...t.filePath?{filename:t.filePath}:{}}))||"object"!=typeof i||Array.isArray(i)?{}:i,{summary:p,activities:m,activityThreads:f}=function(e,t){let i=e.split(/(?=^## )/m),r="",a=[],n={};for(let e of i){let i=e.trim();if(i){if(i.startsWith("## Notes")){r=i.replace(/^## Notes\s*/,"").trim();continue}if(i.startsWith("## Activities")){for(let e of i.split(/(?=^### )/m).slice(1)){let i=function(e,t){let i=e.split("\n"),r=i[0];if(!r)return null;let a=r.replace(/^###\s+/,"").trim();if(!a)return null;let n="",s="Update",o="",l="",d=null,u=[],c=!1;for(let e=1;e<i.length;e++){let t=i[e];if(t.startsWith("#### Replies")){c=!0;continue}if(c){let e=t.match(/^- \*\*(.+?)\*\*\s+\((\d{4}-\S+)\):\s*(.+)$/);if(e){let[,t,i,r]=e;u.push({id:`reply_${Math.random().toString(36).slice(2,10)}`,activityId:n,author:t,body:r,createdAt:e1(i)})}continue}let r=t.match(/^- \*\*(\w+):\*\*\s*(.+)$/);if(r){let[,e,t]=r;switch(e){case"id":n=t.trim();break;case"source":s=t.trim();break;case"created":o=e1(t.trim());break;case"body":l=t.trim();break;case"relatedTaskId":d=t.trim()||null}continue}}for(let e of(n||(n=`objective_activity_${Math.random().toString(36).slice(2,10)}`),o||(o=new Date().toISOString()),u))e.activityId=n;return{activity:{id:n,objectiveId:t,sourceType:"note",sourceLabel:s,title:a,body:l,createdAt:o,updatedAt:o,relatedTaskId:d},replies:u}}(e.trim(),t);i&&(a.push(i.activity),i.replies.length>0&&(n[i.activity.id]=i.replies))}continue}i.startsWith("## ")||(r=i)}}return{summary:r,activities:a,activityThreads:n}}(u,e0(c.id));return{objective:(s=e1(c.updatedAt??c.createdAt),o=e1(c.createdAt,s),{id:e0(c.id),title:e0(c.title,"Untitled objective"),teamId:e0(c.teamId),key:e0(c.key),threadId:e0(c.threadId)||null,chatSessionVersion:function(e,t=0){return"number"==typeof e&&Number.isFinite(e)?Math.max(0,Math.floor(e)):t}(c.chatSessionVersion,0),scheduledTaskIds:Array.isArray(r=c.scheduledTaskIds)?r.map(e=>"string"==typeof e?e.trim():"").filter(Boolean):[],summary:p,cadence:e0(c.cadence),condition:e0(c.condition),progress:"number"==typeof(a=c.progress)&&Number.isFinite(a)?Math.max(0,Math.min(100,Math.round(a))):0,status:"string"==typeof(n=c.status)&&e2.has(n)?n:"on_track",createdAt:o,updatedAt:s}),activities:m,activityThreads:f}}let e5=/^---\s*\n([\s\S]*?)\n---\s*(?:\n([\s\S]*))?$/;function e3(e,t=""){return"string"==typeof e?e:t}function e4(e,t="1970-01-01T00:00:00.000Z"){if("string"!=typeof e)return t;let i=Date.parse(e);return Number.isNaN(i)?t:new Date(i).toISOString()}function e7(e,t={}){let i=e.match(e5);if(!i)throw Error(`Note file is missing YAML frontmatter${t.filePath?` (${t.filePath})`:""}.`);let[,r,a=""]=i,n=(0,Q.load)(r,{...t.filePath?{filename:t.filePath}:{}}),s=n&&"object"==typeof n&&!Array.isArray(n)?n:{},o=e4(s.createdAt),l=e4(s.updatedAt,o);return{id:e3(s.id),title:e3(s.title,"Untitled"),objectiveId:e3(s.objectiveId),createdAt:o,updatedAt:l,body:a.trim()}}function e9(e){let t={id:e.id,title:e.title,objectiveId:e.objectiveId,createdAt:e.createdAt,updatedAt:e.updatedAt},i=(0,Q.dump)(t,{lineWidth:120,noRefs:!0,sortKeys:!1}).trimEnd(),r=e.body.trim();return r?`---
|
|
434
|
-
${i}
|
|
435
|
-
---
|
|
436
|
-
|
|
437
|
-
${r}
|
|
438
|
-
`:`---
|
|
439
|
-
${i}
|
|
440
|
-
---
|
|
441
|
-
`}function e6(e){let t=e.createdAt.replace(/[:.]/g,"-").replace("T","-").replace("Z",""),i=e.title.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,48);return`${t}-${i}.md`}class te{rootDir;constructor(e){this.rootDir=i.default.resolve(e)}ensureDir(){t.default.mkdirSync(this.rootDir,{recursive:!0})}readAll(){if(!t.default.existsSync(this.rootDir))return[];let e=t.default.readdirSync(this.rootDir).filter(e=>e.endsWith(".md")),r=[];for(let a of e){let e=i.default.join(this.rootDir,a);try{let i=t.default.readFileSync(e,"utf8");r.push(e7(i,{filePath:e}))}catch(t){console.error(`[notes] failed to read ${e}:`,t)}}return r.sort((e,t)=>Date.parse(t.createdAt)-Date.parse(e.createdAt))}list(e={}){let t=this.readAll(),i=t.length,r=Math.max(1,e.page??1),a=Math.min(100,Math.max(1,e.limit??25)),n=(r-1)*a;return{notes:t.slice(n,n+a),total:i,page:r,limit:a,hasMore:n+a<i}}append(e){this.ensureDir();let r=e6(e),a=i.default.join(this.rootDir,r),n=e9(e);return t.default.writeFileSync(a,n,"utf8"),a}findById(e){return this.readAll().find(t=>t.id===e)??null}update(e,r){if(!t.default.existsSync(this.rootDir))return null;for(let a of t.default.readdirSync(this.rootDir).filter(e=>e.endsWith(".md"))){let n,s,o=i.default.join(this.rootDir,a);try{n=t.default.readFileSync(o,"utf8")}catch{continue}try{s=e7(n,{filePath:o})}catch{continue}if(s.id!==e)continue;let l={...s,title:r.title??s.title,body:r.body??s.body,updatedAt:new Date().toISOString()},d=e6(l),u=i.default.join(this.rootDir,d);return t.default.writeFileSync(u,e9(l),"utf8"),u!==o&&t.default.unlinkSync(o),l}return null}delete(e){if(!t.default.existsSync(this.rootDir))return!1;for(let r of t.default.readdirSync(this.rootDir).filter(e=>e.endsWith(".md"))){let a,n,s=i.default.join(this.rootDir,r);try{a=t.default.readFileSync(s,"utf8")}catch{continue}try{n=e7(a,{filePath:s})}catch{continue}if(n.id===e)return t.default.unlinkSync(s),!0}return!1}}class tt{rootDir;constructor(e){this.rootDir=i.default.resolve(e)}ensureDir(){t.default.mkdirSync(this.rootDir,{recursive:!0})}readWorkspace(){if(!t.default.existsSync(this.rootDir))return{objectives:[],activities:[],activityThreads:{}};let e=t.default.readdirSync(this.rootDir).filter(e=>e.endsWith(".md")),r=[],a=[],n={};for(let s of e){let e=i.default.join(this.rootDir,s);try{let s=t.default.readFileSync(e,"utf8"),o=e8(s,{filePath:e}),l=o.objective,d=new te(i.default.join(this.rootDir,l.key,"notes")),u=d.readAll();if(0===u.length&&l.summary.trim()){let e=new Date().toISOString(),t={id:`note_${Math.random().toString(36).slice(2,10)}`,title:"Notes",objectiveId:l.id,createdAt:e,updatedAt:e,body:l.summary};d.append(t),u=[t]}l.notes=u,u.length>0&&(l.summary=u[0].body),r.push(l),a.push(...o.activities),Object.assign(n,o.activityThreads)}catch(t){console.error(`[objectives] failed to read ${e}:`,t)}}return{objectives:r,activities:a,activityThreads:n}}writeWorkspace(e){this.ensureDir();let r=t.default.existsSync(this.rootDir)?new Set(t.default.readdirSync(this.rootDir).filter(e=>e.endsWith(".md"))):new Set,a=new Set;for(let r of e.objectives){let n=`${r.key}.md`,s=i.default.join(this.rootDir,n),o=function(e,t,i){let r,a=(r=function(e){let t={};for(let[i,r]of Object.entries(e))null!=r&&""!==r&&(Array.isArray(r)&&0===r.length||(t[i]=r));return t}({id:e.id,title:e.title,teamId:e.teamId,key:e.key,status:e.status,progress:e.progress||void 0,cadence:e.cadence,condition:e.condition,threadId:e.threadId,chatSessionVersion:e.chatSessionVersion||void 0,scheduledTaskIds:e.scheduledTaskIds.length>0?e.scheduledTaskIds:void 0,createdAt:e.createdAt,updatedAt:e.updatedAt}),(0,Q.dump)(r,{lineWidth:120,noRefs:!0,sortKeys:!1}).trimEnd()),n=[],s=t.filter(t=>t.objectiveId===e.id).sort((e,t)=>Date.parse(t.createdAt)-Date.parse(e.createdAt));if(s.length>0){let e=["## Activities"];for(let t of s){let r=function(e){let t=[];return t.push(`### ${e.title}`),t.push(`- **id:** ${e.id}`),t.push(`- **source:** ${e.sourceLabel}`),t.push(`- **created:** ${e.createdAt}`),e.body&&t.push(`- **body:** ${e.body}`),e.relatedTaskId&&t.push(`- **relatedTaskId:** ${e.relatedTaskId}`),t.join("\n")}(t),a=function(e){if(0===e.length)return"";let t=["#### Replies"];for(let i of e)t.push(`- **${i.author}** (${i.createdAt}): ${i.body}`);return t.join("\n")}(i[t.id]??[]);e.push(a?`${r}
|
|
442
|
-
|
|
443
|
-
${a}`:r)}n.push(e.join("\n\n"))}let o=n.join("\n\n");return o.length>0?`---
|
|
444
|
-
${a}
|
|
445
|
-
---
|
|
446
|
-
|
|
447
|
-
${o}
|
|
448
|
-
`:`---
|
|
449
|
-
${a}
|
|
450
|
-
---
|
|
451
|
-
`}(r,e.activities,e.activityThreads);t.default.writeFileSync(s,o,"utf8"),a.add(n)}for(let n of r)if(!a.has(n)){let r=i.default.join(this.rootDir,n);try{let a=t.default.readFileSync(r,"utf8"),s=e8(a,{filePath:r}),o=n.replace(/\.md$/,""),l=e.objectives.find(e=>e.id===s.objective.id);if(l&&l.key!==o){let e=i.default.join(this.rootDir,o),r=i.default.join(this.rootDir,l.key);t.default.existsSync(e)&&t.default.renameSync(e,r)}t.default.rmSync(r,{force:!0})}catch{t.default.rmSync(r,{force:!0})}}}findObjectiveByKey(e){let r=i.default.join(this.rootDir,`${e}.md`);if(!t.default.existsSync(r))return null;try{let e=t.default.readFileSync(r,"utf8");return e8(e,{filePath:r}).objective}catch{return null}}findObjectiveById(e){if(!t.default.existsSync(this.rootDir))return null;for(let r of t.default.readdirSync(this.rootDir).filter(e=>e.endsWith(".md"))){let a=i.default.join(this.rootDir,r);try{let i=t.default.readFileSync(a,"utf8"),r=e8(i,{filePath:a});if(r.objective.id===e)return r.objective}catch{continue}}return null}deleteObjective(e){let r=i.default.join(this.rootDir,`${e}.md`);return!!t.default.existsSync(r)&&(t.default.rmSync(r,{force:!0}),!0)}hasFiles(){return!!t.default.existsSync(this.rootDir)&&t.default.readdirSync(this.rootDir).some(e=>e.endsWith(".md"))}}let ti=new Map;function tr(e){let t,a=i.default.join((t=process.env.AGX_DATA_DIR?.trim())?i.default.resolve(t):i.default.join((0,r.homedir)(),".agx"),"projects",e,"objectives"),n=ti.get(a);return n||(n=new tt(a),ti.set(a,n)),n}async function ta(e,t){var i;let r,a=await eO.db.getProjectWithRepos(e,N.LOCAL_USER.id);if(!a)return null;let n=(r=tr((i=a).slug??i.id)).hasFiles()?r.readWorkspace():function(e){if(!eM(e))return eV();let t=e[eD];if(void 0!==t){let e=ez(t);if(e.objectives.length>0||e.activities.length>0||Object.keys(e.activityThreads).length>0)return e}let i=e[ex];if(void 0!==i){if(!eM(i))return eV();let e=Array.isArray(i.goals)?i.goals.map(e=>(function(e){if(!eM(e))return null;let t=eX(e.target),i=[eX(e.summary),t?`Measure: ${t}`:""].filter(Boolean).join("\n\n");return eH({...e,summary:i,cadence:""})})(e)).filter(e=>null!==e):[],t=Array.isArray(i.manualActivities)?i.manualActivities.map(e=>eY({...e,sourceLabel:"Update"})).filter(e=>null!==e):[],r=eM(i.activityThreads)?Object.fromEntries(Object.entries(i.activityThreads).map(([e,t])=>[e,eF(Array.isArray(t)?t.map(t=>eG({...t,activityId:e})).filter(e=>null!==e):[])])):{};return{objectives:eU(e),activities:eJ(t),activityThreads:r}}return eV()}(i.metadata),s=n.objectives.find(e=>e.id===t)??null;return s?{project:a,workspace:n,objective:s}:null}async function tn(e){var t,i;let r,a=await eO.db.getProjectWithRepos(e.projectId,N.LOCAL_USER.id);tr(a?.slug??e.projectId).writeWorkspace(e.workspace);let n=(t=e.currentMetadata??{},i=e.workspace,r={...t},delete r[ex],r[eD]=ez(i),r),s=e.transformMetadata?e.transformMetadata(n):n;return eO.db.updateProject(e.projectId,N.LOCAL_USER.id,{metadata:s})}async function ts(e){return eO.db.updateProject(e.projectId,N.LOCAL_USER.id,{metadata:eZ(e.currentMetadata??{},e.snapshot)})}let to=/^---\s*\n([\s\S]*?)\n---\s*(?:\n([\s\S]*))?$/,tl=new Set(["metric-check","status-update","milestone","note"]);function td(e,t=""){return"string"==typeof e?e:t}class tu{rootDir;constructor(e){this.rootDir=i.default.resolve(e)}ensureDir(){t.default.mkdirSync(this.rootDir,{recursive:!0})}readAll(){if(!t.default.existsSync(this.rootDir))return[];let e=t.default.readdirSync(this.rootDir).filter(e=>e.endsWith(".md")),r=[];for(let a of e){let e=i.default.join(this.rootDir,a);try{let i=t.default.readFileSync(e,"utf8");r.push(function(e,t={}){var i;let r=e.match(to);if(!r)throw Error(`Activity file is missing YAML frontmatter${t.filePath?` (${t.filePath})`:""}.`);let[,a,n=""]=r,s=(0,Q.load)(a,{...t.filePath?{filename:t.filePath}:{}}),o=s&&"object"==typeof s&&!Array.isArray(s)?s:{};return{id:td(o.id),source:td(o.source,"manual"),objectiveLabel:td(o.objectiveLabel),createdAt:function(e,t="1970-01-01T00:00:00.000Z"){if("string"!=typeof e)return t;let i=Date.parse(e);return Number.isNaN(i)?t:new Date(i).toISOString()}(o.createdAt),type:"string"==typeof(i=o.type)&&tl.has(i)?i:"note",body:n.trim()}}(i,{filePath:e}))}catch(t){console.error(`[activities] failed to read ${e}:`,t)}}return r.sort((e,t)=>Date.parse(t.createdAt)-Date.parse(e.createdAt))}list(e={}){let t=this.readAll();if(e.type&&(t=t.filter(t=>t.type===e.type)),e.source&&(t=t.filter(t=>t.source===e.source)),e.from){let i=Date.parse(e.from);Number.isNaN(i)||(t=t.filter(e=>Date.parse(e.createdAt)>=i))}if(e.to){let i=Date.parse(e.to);Number.isNaN(i)||(t=t.filter(e=>Date.parse(e.createdAt)<=i))}let i=t.length,r=Math.max(1,e.page??1),a=Math.min(100,Math.max(1,e.limit??25)),n=(r-1)*a;return{activities:t.slice(n,n+a),total:i,page:r,limit:a,hasMore:n+a<i}}append(e){var r;let a,n,s,o,l;this.ensureDir();let d=(o=(r=e).createdAt.replace(/[:.]/g,"-").replace("T","-").replace("Z",""),l=r.type.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,48),`${o}-${l}.md`),u=i.default.join(this.rootDir,d),c=(a={id:e.id,source:e.source,objectiveLabel:e.objectiveLabel,createdAt:e.createdAt,type:e.type},n=(0,Q.dump)(a,{lineWidth:120,noRefs:!0,sortKeys:!1}).trimEnd(),(s=e.body.trim())?`---
|
|
452
|
-
${n}
|
|
453
|
-
---
|
|
454
|
-
|
|
455
|
-
${s}
|
|
456
|
-
`:`---
|
|
457
|
-
${n}
|
|
458
|
-
---
|
|
459
|
-
`);return t.default.writeFileSync(u,c,"utf8"),u}}let tc=new Map,tp=null,tm=!1,tf=!1,th=!1,tg=(0,i.join)((0,r.homedir)(),".agx","agents"),t_={on_track:"On track",at_risk:"At risk",off_track:"Off track",done:"Done"};function ty(e,t){let i=(0,k.buildCliAttempts)({provider:e,model:t,prompt:"",systemPrompt:void 0});if(i.length>0){let{command:e,args:t}=i[0];return`${e} ${t.slice(0,3).join(" ")}`}return e}async function tb(e){let r,a,n,s=await (0,R.getAgent)(e,N.LOCAL_USER.id);if(!s)return{provider:"claude",model:null,identity:void 0,self:void 0,skills:void 0};let o=(0,i.join)(tg,e),l=[];s.name&&l.push(`Name: ${s.name}`),s.description&&l.push(s.description),s.voice&&l.push(`Voice: ${s.voice}`),l.length>0&&(r=l.join("\n"));let d=(0,i.join)(o,"self.md");if((0,t.existsSync)(d)){let e=(0,t.readFileSync)(d,"utf-8"),i=e.match(/^---[\s\S]*?---\s*\n?([\s\S]*)$/);(a=i?i[1].trim():e.trim())||(a=void 0)}let u=await (0,R.getAgentSkills)(e);if(u.length>0){let e=[];for(let r of u){let a=r.file.startsWith("/")?r.file:(0,i.join)(o,r.file);if((0,t.existsSync)(a))try{let i=(0,t.readFileSync)(a,"utf-8");e.push(`## ${r.file}
|
|
460
|
-
${i}`)}catch(e){console.error("[prompt-jobs/processor] failed to read skill file:",e)}}e.length>0&&(n=e.join("\n\n"))}return{provider:s.provider||"claude",model:s.model||null,identity:r,self:a,skills:n}}async function tE(e){return tj(e,e.agentId)}async function tj(e,t){return t?tb(t):{provider:e.provider||"claude",model:e.model||null,identity:void 0,self:void 0,skills:void 0}}async function tI(e){let t=Date.now(),i="";try{return await (0,k.runCliResponse)({provider:e.provider,model:e.model,prompt:e.prompt,identity:e.identity,self:e.self,skills:e.skills,systemContext:e.systemContext,passthroughArgs:e.cliArgs?e.cliArgs.split(/\s+/).filter(Boolean):void 0,onDelta:e=>{i+=e},onSpawn:e.onSpawn}),{output:i,error:"",durationMs:Date.now()-t,status:"success"}}catch(e){return{output:i,error:e instanceof Error?e.message:String(e),durationMs:Date.now()-t,status:"failed"}}}function tv(e){try{let t=JSON.parse(e);return t&&"object"==typeof t&&!Array.isArray(t)?t:null}catch{return null}}function tT(e){return[`- id: ${e.id}`,` identifier: ${e.identifier}`,` title: ${e.title}`,` status: ${e.status}`,` assignee: ${e.assignee??"Unassigned"}`,e.url?` url: ${e.url}`:null].filter(e=>!!e).join("\n")}function tA(e,t,i){return`${e}: ${t}% ${t_[i]}`}function tS(e){return"number"==typeof e&&Number.isFinite(e)?eq(e):null}function tw(e){return"string"==typeof e&&e.trim()?eB(e):null}async function tR(e,t){let i=await (0,L.loadDbParticipants)();if(e.agentId){let t=i.find(t=>t.id===e.agentId)??null;if(!t)throw Error(`Objective worker agent "${e.agentId}" is no longer available.`);return t}if(t){for(let e of(await (0,R.getTeamAgents)(t))){let t=i.find(t=>t.id===e.agent_id)??null;if(t)return t}throw Error("No agent in the assigned team is available to work this objective.")}if(!e.projectId)throw Error("Objective Linear worker requires a project context to resolve an agent.");for(let t of(await (0,R.getProjectAgents)(e.projectId))){let e=i.find(e=>e.id===t.agent_id)??null;if(e)return e}throw Error("No project agent is available to work objective Linear tickets.")}async function tN(e){var t,a;let n,s,o;(t=e.projectSlug,a=e.objectiveKey,s=i.default.join((n=process.env.AGX_DATA_DIR?.trim())?i.default.resolve(n):i.default.join((0,r.homedir)(),".agx"),"projects",t,"objectives",a,"activities"),!(o=tc.get(s))&&(o=new tu(s),tc.set(s,o)),o).append({id:crypto.randomUUID(),source:`scheduled-task:${e.jobId}`,objectiveLabel:e.objectiveKey,createdAt:new Date().toISOString(),type:"status-update",body:e.body})}async function tL(e,t){try{let i=await ta(t.projectId,t.objectiveId);if(!i)return;let r=[`**${e.jobName}** — ${e.status}`,"",e.result];e.reason&&r.push("",`Reason: ${e.reason}`),e.linearRunId&&r.push("",`Linear run: ${e.linearRunId}`),e.chatRunId&&r.push("",`Chat run: ${e.chatRunId}`),await tN({jobId:t.jobId,projectSlug:i.project.slug,objectiveKey:i.objective.key,body:r.join("\n")})}catch{}}async function tk(e){let t=Date.now();try{var i,r,a;let n,s;if(!e.job.projectId||!e.job.objectiveId)throw Error("Objective Linear worker jobs require projectId and objectiveId.");let o=await ta(e.job.projectId,e.job.objectiveId);if(!o)throw Error("Objective context could not be resolved for this scheduled task.");let[{issues:l},d]=await Promise.all([ek({objectiveKey:o.objective.key,projectSlug:o.project.slug,refresh:!0}),q(e.job.projectId)]),u=new Set(l.map(e=>e.id)),c=d.filter(e=>u.has(e.issueId)),p=c.map(e=>`- ${e.issueId}: already running with ${e.agentName}`),m=function(e,t=[]){let i=new Set(Array.from(t,e=>e.trim()).filter(Boolean));return e.filter(e=>!eL(e.status)&&!i.has(e.id))}(l,c.map(e=>e.issueId)),f=(i={jobPrompt:e.job.prompt,objective:{title:o.objective.title,key:o.objective.key,summary:o.objective.summary,progress:o.objective.progress,status:o.objective.status},projectObjectives:o.workspace.objectives.map(e=>({title:e.title,key:e.key,progress:e.progress,status:e.status})),allIssues:l,eligibleIssues:m,activeIssueNotes:p},n=["OBJECTIVE",`- Title: ${i.objective.title}`,`- Label key: ${i.objective.key}`,`- Summary: ${i.objective.summary.trim()||"No summary provided."}`,`- Current progress: ${i.objective.progress}%`,`- Current health: ${i.objective.status}`,"","PROJECT OBJECTIVES",i.projectObjectives.length>0?i.projectObjectives.map(e=>`- ${e.title} (${e.key}) | ${e.progress}% | ${e.status}`).join("\n"):"- No project objectives found.","","ALL OBJECTIVE TICKETS",i.allIssues.length>0?i.allIssues.map(e=>tT(e)).join("\n\n"):"- None.","","SCHEDULER GUIDANCE",i.jobPrompt.trim()||"No additional guidance provided.","","ELIGIBLE TICKETS",i.eligibleIssues.length>0?i.eligibleIssues.map(e=>tT(e)).join("\n\n"):"- None."],i.activeIssueNotes.length>0&&n.push("","ALREADY ACTIVE ELSEWHERE",i.activeIssueNotes.join("\n")),n.push("",'Choose "work_ticket" when one listed ticket is clearly the right next ticket to start now.','Choose "run_prompt" when the objective needs work not captured by an existing ticket (e.g. creating tickets, drafting docs, reviewing PRs).','Choose "stop" when no action should be taken right now.','If you choose "work_ticket", ticketId must exactly match one of the listed ids.','If you choose "run_prompt", provide a detailed prompt the executing agent will follow.'),n.join("\n")),h=await tI({...e.controllerContext,prompt:f,systemContext:'You are deciding what action an objective worker should take next.\nReturn ONLY raw JSON with no markdown fences or commentary.\nValid responses:\n{"action":"work_ticket","ticketId":"ticket-id-from-list","reason":"short reason","objectiveProgress":42,"objectiveStatus":"at_risk","projectProgress":35,"projectStatus":"at_risk"}\n{"action":"run_prompt","prompt":"detailed instructions for the agent to execute","reason":"short reason","objectiveProgress":42,"objectiveStatus":"at_risk","projectProgress":35,"projectStatus":"at_risk"}\n{"action":"stop","reason":"short reason","objectiveProgress":42,"objectiveStatus":"at_risk","projectProgress":35,"projectStatus":"at_risk"}\nRules:\n- "work_ticket": Use when a specific eligible Linear ticket should be worked now. ticketId must exactly match one of the listed ids in ELIGIBLE TICKETS.\n- "run_prompt": Use when the objective needs work not captured by an existing ticket — creating new tickets, drafting docs, reviewing PRs, research, or other non-ticket work. Provide a detailed prompt.\n- "stop": Use when no action should be taken right now.\nPercentages must be integers from 0 to 100.\nStatuses must be one of: on_track, at_risk, off_track, done.',cliArgs:e.cliArgs,onSpawn:e.onSpawn});if("success"!==h.status)return{...h,output:h.output||"Objective controller failed before selecting an action."};let g=function(e){let t=e.trim();if(!t)return null;let i=tv(t);if(i)return i;let r=t.indexOf("{"),a=t.lastIndexOf("}");return -1===r||a<=r?null:tv(t.slice(r,a+1))}(h.output),_="string"==typeof g?.action?g.action.trim().toLowerCase():"string"==typeof g?.decision?g.decision.trim().toLowerCase():"",y="string"==typeof g?.reason?g.reason.trim():"",b=tS(g?.objectiveProgress),E=tw(g?.objectiveStatus),j=tS(g?.projectProgress),I=tw(g?.projectStatus),v="string"==typeof g?.projectNote?g.projectNote.trim():"",T="string"==typeof g?.objectiveNote?g.objectiveNote.trim():"",A=new Date().toISOString(),S=null!==b&&E?tA("Objective health",b,E):null,w=null!==j&&I?tA("Project health",j,I):null,R=null!==b&&null!==E&&(b!==o.objective.progress||E!==o.objective.status),N=R?(r=o.workspace,a={...o.objective,progress:b,status:E,updatedAt:A},s=r.objectives.findIndex(e=>e.id===a.id)>=0?r.objectives.map(e=>e.id===a.id?a:e):[a,...r.objectives],{...r,objectives:eU(s)}):o.workspace,L=null!==j&&null!==I?{progress:j,status:I,updatedAt:A,source:`scheduled-task:${e.job.id}`,objectiveId:o.objective.id,objectiveKey:o.objective.key,note:v||void 0}:null;R?await tn({projectId:o.project.id,currentMetadata:o.project.metadata,workspace:N,transformMetadata:e=>L?eZ(e,L):e}):L&&await ts({projectId:o.project.id,currentMetadata:o.project.metadata,snapshot:L});let k=await tO({action:"work"===_?"work_ticket":_,parsed:g,reason:y,job:e.job,controllerContext:e.controllerContext,sessionAgent:e.sessionAgent,objectiveContext:o,eligibleIssues:m,issues:l,healthSummaries:{objectiveHealthSummary:S,projectHealthSummary:w,objectiveNote:T,projectNote:v},cliArgs:e.cliArgs,onSpawn:e.onSpawn,startMs:t});return await tL(k,{jobId:e.job.id,projectId:e.job.projectId,objectiveId:e.job.objectiveId}),{output:k.result,error:"failed"===k.status?k.result:"",durationMs:Date.now()-t,status:k.status}}catch(e){return{output:"",error:e instanceof Error?e.message:String(e),durationMs:Date.now()-t,status:"failed"}}}async function tO(e){let{action:t,parsed:i,reason:r,healthSummaries:a}=e;if("stop"===t){let t=e.issues.some(e=>!eL(e.status)),i=0===e.issues.length?"No objective-labeled Linear tickets were found.":0===e.eligibleIssues.length?t?"All actionable objective tickets already have active sessions.":"All objective tickets are already in a terminal state.":"The controller decided that no ticket should be started right now.",n=r||i;return{action:"stop",jobName:e.job.name,reason:n,result:["No action taken.",`Reason: ${n}`,a.objectiveHealthSummary,a.objectiveNote||null,a.projectHealthSummary,a.projectNote||null].filter(e=>!!e).join("\n\n"),durationMs:Date.now()-e.startMs,status:"success"}}if("run_prompt"===t){let t="string"==typeof i?.prompt?i.prompt.trim():"";if(!t)return{action:"run_prompt",jobName:e.job.name,reason:r,result:"Controller returned run_prompt but provided no prompt text.",durationMs:Date.now()-e.startMs,status:"failed"};let n=await tI({...e.controllerContext,prompt:t,cliArgs:e.cliArgs,onSpawn:e.onSpawn}),s="success"===n.status?(n.output||"").split("\n").filter(Boolean).slice(0,10).join("\n")||"Prompt completed.":`Prompt failed: ${n.error||"unknown error"}`;return{action:"run_prompt",jobName:e.job.name,reason:r,result:[s,a.objectiveHealthSummary,a.projectHealthSummary].filter(e=>!!e).join("\n\n"),durationMs:Date.now()-e.startMs,status:n.status}}if("work_ticket"===t){let t="string"==typeof i?.ticketId?i.ticketId.trim():"",n=e.eligibleIssues.find(e=>e.id===t)??null;if(!n)return{action:"work_ticket",jobName:e.job.name,reason:r,result:`Controller selected an unknown ticket: ${t||"(empty)"}`,durationMs:Date.now()-e.startMs,status:"failed"};let s=await G({projectId:e.objectiveContext.project.id,projectSlug:e.objectiveContext.project.slug,issue:{id:n.id,identifier:n.identifier,title:n.title,status:n.status,assignee:n.assignee},agentId:e.sessionAgent.id}),o=n.url?`[${n.identifier}](${n.url})`:n.identifier;return{action:"work_ticket",jobName:e.job.name,reason:r,result:[`Started work on ${o}: ${n.title}`,r?`Reason: ${r}`:null,a.objectiveHealthSummary,a.objectiveNote||null,a.projectHealthSummary,a.projectNote||null,`Linear run: ${s.run.id}`].filter(e=>!!e).join("\n\n"),linearRunId:s.run.id,chatRunId:s.chatRunId,durationMs:Date.now()-e.startMs,status:"success"}}return{action:t||"unknown",jobName:e.job.name,reason:r,result:`Controller returned an invalid action: ${t||"(empty)"}`,durationMs:Date.now()-e.startMs,status:"failed"}}async function tD(e,t,i={}){if("objective_linear_ticket"===e.executionMode){let t=null;if(e.projectId&&e.objectiveId){let i=await ta(e.projectId,e.objectiveId);if(!(t=i?.objective.teamId??null))return await tL({action:"team_gate",jobName:e.name,status:"failed",result:"Execution blocked: no team assigned to this objective.",reason:"Assign a team before scheduled work can run.",durationMs:0},{jobId:e.id,projectId:e.projectId,objectiveId:e.objectiveId}),{output:"",error:"Execution blocked: no team assigned to this objective.",durationMs:0,status:"failed"}}let r=await tR(e,t),a=await tj(e,r.id);return tk({job:e,controllerContext:a,sessionAgent:r,cliArgs:e.cliArgs,onSpawn:i.onSpawn})}return tI({...t,prompt:e.prompt,cliArgs:e.cliArgs,onSpawn:i.onSpawn})}async function tx(e,t){let i=A(),r=new Date().toISOString(),a=ty(e.provider||"claude",e.model||null);i.updateRun(t.id,{status:"running",startedAt:r,hostCommand:a});let n=await tE(e),s=`You are a condition gate. Your job is to determine whether the following condition expression evaluates to "yes" (pass) or "no" (fail).
|
|
461
|
-
|
|
462
|
-
Rules:
|
|
463
|
-
- If the condition is a boolean literal or expression (e.g. "true", "return True", "1 == 1"), evaluate it as code and respond based on its result.
|
|
464
|
-
- If the condition is a natural-language statement, judge whether it holds.
|
|
465
|
-
- If the condition is an instruction (e.g. "say yes", "always pass"), follow it.
|
|
466
|
-
- Respond with ONLY "yes" or "no" (lowercase, nothing else).
|
|
467
|
-
|
|
468
|
-
Condition: ${e.condition}`,o=ty(n.provider,n.model);o!==a&&i.updateRun(t.id,{hostCommand:o});let l=await tI({...n,prompt:s,cliArgs:e.cliArgs,onSpawn:e=>{i.updateRun(t.id,{hostPid:e})}}),d=l.output.trim().toLowerCase(),u=/\byes\b/.test(d);if("success"!==l.status||!u){i.updateRun(t.id,{status:"success",output:`Gate: ${d}
|
|
469
|
-
(condition not met — skipped action)`,durationMs:l.durationMs,finishedAt:new Date().toISOString()}),i.updateJob(e.id,{lastOutcome:"success",lastRunAt:Date.now()}),e.objectiveId&&e.projectId&&await tL({action:"gated_skip",jobName:e.name,reason:"condition not met",result:`Gate: ${d}
|
|
470
|
-
(condition not met — skipped action)`,durationMs:l.durationMs,status:"success"},{jobId:e.id,projectId:e.projectId,objectiveId:e.objectiveId});return}i.updateRun(t.id,{output:`Gate: yes
|
|
471
|
-
Executing action prompt...`,hostPid:null});let c=await tD(e,n,{onSpawn:e=>{i.updateRun(t.id,{hostPid:e})}});i.updateRun(t.id,{status:c.status,output:`Gate: yes
|
|
472
|
-
---
|
|
473
|
-
${c.output}`,error:c.error||void 0,durationMs:l.durationMs+c.durationMs,finishedAt:new Date().toISOString()}),i.updateJob(e.id,{lastOutcome:c.status,lastRunAt:Date.now()}),e.objectiveId&&e.projectId&&await tL({action:"prompt",jobName:e.name,reason:"condition gate passed",result:"success"===c.status?(c.output||"").split("\n").filter(Boolean).slice(0,3).join("\n")||"Task completed successfully.":`Task failed: ${c.error||"unknown error"}`,durationMs:l.durationMs+c.durationMs,status:c.status},{jobId:e.id,projectId:e.projectId,objectiveId:e.objectiveId})}async function t$(e,t){let i=A(),r=new Date().toISOString(),a=ty(e.provider||"claude",e.model||null);i.updateRun(t.id,{status:"running",startedAt:r,hostCommand:a});let n=await tE(e),s=ty(n.provider,n.model);s!==a&&i.updateRun(t.id,{hostCommand:s});let o=await tD(e,n,{onSpawn:e=>{i.updateRun(t.id,{hostPid:e})}});i.updateRun(t.id,{status:o.status,output:o.output,error:o.error||void 0,durationMs:o.durationMs,finishedAt:new Date().toISOString()}),i.updateJob(e.id,{lastOutcome:o.status,lastRunAt:Date.now()}),e.objectiveId&&e.projectId&&await tL({action:"prompt",jobName:e.name,reason:"",result:"success"===o.status?(o.output||"").split("\n").filter(Boolean).slice(0,3).join("\n")||"Task completed successfully.":`Task failed: ${o.error||"unknown error"}`,durationMs:o.durationMs,status:o.status},{jobId:e.id,projectId:e.projectId,objectiveId:e.objectiveId})}function tC(){tp&&!tf&&(tf=!0,setTimeout(()=>{tf=!1,tM()},0))}async function tM(){if(tp&&!th){th=!0;try{for(;tm;)tm=!1,await tp()}finally{th=!1,tm&&tC()}}}async function tP(){let e=A(),t=await S(e),i=e.listQueuedRuns(200),r=0;for(let t of i){let i=e.getJob(t.jobId);i&&(!function(e,t){(e.condition?tx:t$)(e,t).catch(i=>{let r=A();r.updateRun(t.id,{status:"failed",error:`Dispatch error: ${i instanceof Error?i.message:String(i)}`,finishedAt:new Date().toISOString()}),r.updateJob(e.id,{lastOutcome:"failed"})})}(i,t),r++)}return{queued:t.queued,skipped:t.skipped,dispatched:r}}e.s(["processPromptJobs",0,tP,"registerPromptJobPump",0,function(e){tp=e,tm&&tC()},"requestPromptJobPump",0,function(){return tm=!0,!!tp&&(tC(),!0)}],845248)}];
|
|
474
|
-
|
|
475
|
-
//# sourceMappingURL=apps_local_src_prompt-scheduler_processor_ts_0i1av_r._.js.map
|