@mndrk/agx 2.0.46 → 2.0.48
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/.next/BUILD_ID +1 -1
- package/cloud-runtime/standalone/.next/app-path-routes-manifest.json +1 -0
- package/cloud-runtime/standalone/.next/build-manifest.json +2 -2
- package/cloud-runtime/standalone/.next/prerender-manifest.json +27 -3
- package/cloud-runtime/standalone/.next/routes-manifest.json +6 -0
- package/cloud-runtime/standalone/.next/server/app/_global-error.html +2 -2
- package/cloud-runtime/standalone/.next/server/app/_global-error.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/_not-found.html +2 -2
- package/cloud-runtime/standalone/.next/server/app/_not-found.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/agents/[id]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/agents/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/agents.html +2 -2
- package/cloud-runtime/standalone/.next/server/app/agents.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/agents.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/agents.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/agents.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/agents.segments/agents.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/agent-specs/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/agent-specs/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/agents/[id]/profile/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/agents/[id]/profile/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/agents/export/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/agents/export/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/automations/create/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/automations/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/chat/route.js +2 -2
- package/cloud-runtime/standalone/.next/server/app/api/chat/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/file-search/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/graphs/[graphId]/nodes/[nodeId]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/health/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/health/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/knowledge-notes/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/knowledge-notes/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/learnings/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/learnings/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/linear/callback/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/linear/callback/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/linear/cycles/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/linear/cycles/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/linear/issues/context/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/linear/issues/context/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/linear/issues/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/linear/issues/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/linear/options/route.js +5 -2
- package/cloud-runtime/standalone/.next/server/app/api/linear/options/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/linear/status/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/linear/status/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/linear/token/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/linear/token/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/orchestrator/tasks/[taskId]/start/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/orchestrator/tasks/[taskId]/start/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/orchestrator/tasks/[taskId]/status/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/orchestrator/tasks/[taskId]/status/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/participants/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/participants/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/agents/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/agents/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/migrate-v1/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/migrate-v1/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/migrate-v2/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/migrate-v2/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/skills/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/skills/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/threads/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/threads/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/variables/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/projects/[id]/variables/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/projects/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/[id]/cancel/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/[id]/runs/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/agents/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/agents/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/poll/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/poll/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/prompt-jobs/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/providers/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/queue/complete/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/queue/complete/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/queue/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/queue/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/schedules/debug/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/schedules/poll/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/schedules/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/skills/assign/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/skills/assign/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/skills/available/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/skills/available/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/skills/detail/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/skills/detail/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/skills/history/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/skills/history/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/skills/learn/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/skills/learn/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/skills/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/skills/unlearn/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/skills/unlearn/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/status/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/summarize/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/summarize/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/comments/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/costs/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/costs/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/dependencies/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/dependencies/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/events/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/events/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/history/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/history/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/metrics/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/metrics/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/replan/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/replan/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/restart/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/restart/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/resume/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/resume/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/rollback/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/rollback/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/schedule/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/schedule/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/start/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/start/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/graph/stop/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/history/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/history/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/logs/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/logs/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/comments/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/complete/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/complete/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/fail/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/fail/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/resume/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/resume/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/start/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/start/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/stop/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/stop/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/assign-orphans/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/assign-orphans/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/extract/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/extract/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/tasks/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/threads/knowledge/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/threads/knowledge/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/threads/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/threads/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/user-settings/route.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/api/user-settings/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/automations/page/react-loadable-manifest.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/automations/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/automations/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/automations.html +2 -2
- package/cloud-runtime/standalone/.next/server/app/automations.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/automations.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/automations.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/automations.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/automations.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/automations.segments/automations/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/automations.segments/automations.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/board/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/board.html +2 -2
- package/cloud-runtime/standalone/.next/server/app/board.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/board.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/board.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/board.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/board.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/board.segments/board/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/board.segments/board.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/execution-graph/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/execution-graph/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/execution-graph.html +2 -2
- package/cloud-runtime/standalone/.next/server/app/execution-graph.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/execution-graph/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/execution-graph.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/folders/page/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/.next/server/app/folders/page/build-manifest.json +18 -0
- package/cloud-runtime/standalone/.next/server/app/folders/page/next-font-manifest.json +11 -0
- package/cloud-runtime/standalone/.next/server/app/folders/page/react-loadable-manifest.json +1 -0
- package/cloud-runtime/standalone/.next/server/app/folders/page/server-reference-manifest.json +4 -0
- package/cloud-runtime/standalone/.next/server/app/folders/page.js +15 -0
- package/cloud-runtime/standalone/.next/server/app/folders/page.js.map +5 -0
- package/cloud-runtime/standalone/.next/server/app/folders/page.js.nft.json +1 -0
- package/cloud-runtime/standalone/.next/server/app/folders/page_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/.next/server/app/folders.html +21 -0
- package/cloud-runtime/standalone/.next/server/app/folders.meta +15 -0
- package/cloud-runtime/standalone/.next/server/app/folders.rsc +24 -0
- package/cloud-runtime/standalone/.next/server/app/folders.segments/_full.segment.rsc +24 -0
- package/cloud-runtime/standalone/.next/server/app/folders.segments/_head.segment.rsc +5 -0
- package/cloud-runtime/standalone/.next/server/app/folders.segments/_index.segment.rsc +10 -0
- package/cloud-runtime/standalone/.next/server/app/folders.segments/_tree.segment.rsc +5 -0
- package/cloud-runtime/standalone/.next/server/app/folders.segments/folders/__PAGE__.segment.rsc +9 -0
- package/cloud-runtime/standalone/.next/server/app/folders.segments/folders.segment.rsc +4 -0
- package/cloud-runtime/standalone/.next/server/app/index.html +2 -2
- package/cloud-runtime/standalone/.next/server/app/index.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/[slug]/automations/page/react-loadable-manifest.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/[slug]/automations/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/[slug]/automations/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/[slug]/knowledge/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/[slug]/knowledge/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/[slug]/linear/page/react-loadable-manifest.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/[slug]/linear/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/[slug]/linear/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/orphans/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/orphans/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/orphans.html +2 -2
- package/cloud-runtime/standalone/.next/server/app/projects/orphans.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects/orphans/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects/orphans.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects.html +2 -2
- package/cloud-runtime/standalone/.next/server/app/projects.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/projects.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/projects.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/projects.segments/projects.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/settings.html +2 -2
- package/cloud-runtime/standalone/.next/server/app/settings.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/settings.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/settings.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/settings.segments/settings.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/skills.html +2 -2
- package/cloud-runtime/standalone/.next/server/app/skills.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/skills.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/skills.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/skills.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/skills.segments/skills.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/status/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/status.html +2 -2
- package/cloud-runtime/standalone/.next/server/app/status.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/status.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/status.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/status.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/status.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/status.segments/status/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/status.segments/status.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/thread/[id]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/thread/[id]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/welcome/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/welcome/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/welcome.html +2 -2
- package/cloud-runtime/standalone/.next/server/app/welcome.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/welcome.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/welcome.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/welcome.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/welcome.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/welcome.segments/welcome/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/welcome.segments/welcome.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app-paths-manifest.json +1 -0
- package/cloud-runtime/standalone/.next/server/chunks/{[externals]__31e26905._.js → [externals]__7b4c6b2b._.js} +1 -1
- package/cloud-runtime/standalone/.next/server/chunks/[externals]__a21cc96d._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__015d40a6._.js +67 -0
- package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__067034dd._.js +67 -0
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__5aaf8c25._.js → [root-of-the-server]__143fdf69._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__74a37ca4._.js → [root-of-the-server]__158df4bf._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__c029daab._.js → [root-of-the-server]__179cb224._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__3fd3c5b1._.js → [root-of-the-server]__1a1f66b1._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__20a2cb22._.js +150 -0
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__d2ac93f2._.js → [root-of-the-server]__23b075bd._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__3bf516b6._.js → [root-of-the-server]__3170b7bf._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__558389f7._.js → [root-of-the-server]__33865410._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__4c2d07e0._.js → [root-of-the-server]__36d15de5._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__37844df7._.js +67 -0
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__d9f2041b._.js → [root-of-the-server]__3a93931b._.js} +4 -4
- package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__3fae531a._.js +89 -0
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__76658fd6._.js → [root-of-the-server]__4cb22e4d._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__ebece93b._.js → [root-of-the-server]__4ce74056._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__635fe0f9._.js → [root-of-the-server]__538b0bdd._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__3b1431b6._.js → [root-of-the-server]__5c55f67a._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__e20922e8._.js → [root-of-the-server]__69a3c480._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__42804c1d._.js → [root-of-the-server]__6c53437e._.js} +1 -1
- package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__8cbd8c56._.js +79 -0
- package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__92ed2961._.js +48 -0
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__509b1dd2._.js → [root-of-the-server]__94499e9a._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__ddb3aa76._.js → [root-of-the-server]__a280fa63._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__8c7d1318._.js → [root-of-the-server]__a2d31df1._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__a3955224._.js +150 -0
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__4b0b5fe1._.js → [root-of-the-server]__a7b2350e._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__5b13e7a5._.js → [root-of-the-server]__ab655b9f._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__ac6326b6._.js +106 -0
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__0284ea89._.js → [root-of-the-server]__b2748382._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__e7be56ba._.js → [root-of-the-server]__b627cb83._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__0e98af48._.js → [root-of-the-server]__bab85495._.js} +63 -18
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__dca6026a._.js → [root-of-the-server]__c21747df._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__c22dd3a6._.js +179 -0
- package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__c8890cd6._.js +150 -0
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__aad349b4._.js → [root-of-the-server]__ca4987eb._.js} +1 -1
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__fcdaf6d8._.js → [root-of-the-server]__d16caed5._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__1f53e82e._.js → [root-of-the-server]__d324f8a1._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__6988985c._.js → [root-of-the-server]__da645a5e._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__d4f42f49._.js → [root-of-the-server]__e58e9f91._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__f4b3df16._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/{[root-of-the-server]__c8195768._.js → [root-of-the-server]__f7f336c7._.js} +1 -1
- package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__fcfa3690._.js +93 -0
- package/cloud-runtime/standalone/.next/server/chunks/_4d07f8db._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/lib_7f7835f1._.js +66 -21
- package/cloud-runtime/standalone/.next/server/chunks/lib_9f439b27._.js +61 -16
- package/cloud-runtime/standalone/.next/server/chunks/lib_f81d6da9._.js +70 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__4c9d0778._.js → [root-of-the-server]__01e1641e._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__0b2a2b86._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__32546242._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__4140bb73._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__ffbc2e98._.js → [root-of-the-server]__5e73414b._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__5ff9ead4._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__ec81a3d9._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__f2c3b7ab._.js +1 -1
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__a42e4555._.js → [root-of-the-server]__fbe1ab4a._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_1e9b9b1e._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_24fe6213._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_36a0c486._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_3b21d3b2._.js +95 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_3eeac8f9._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_48db42b7._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_59f30a73._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_7d3b0032._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_916950b3._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_b598ae8a._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_b7009996._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_cc8c8302._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_d972a4e1._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_dd7bb6fb._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_dd9880fb._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_e70d5625._.js +4 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_f02d786a._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_f53d31e0._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_fd8cafe9._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_next-internal_server_app_folders_page_actions_9c8dfb6c.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/app_projects_[slug]_linear_page_tsx_971a6ba7._.js +15 -12
- package/cloud-runtime/standalone/.next/server/chunks/ssr/components_chat-ui_bfeda794._.js +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/ssr/components_thread_WorkspaceSidebar_tsx_e660301b._.js +1 -1
- package/cloud-runtime/standalone/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_54bf563f._.js +3 -0
- package/cloud-runtime/standalone/.next/server/instrumentation.js +1 -1
- package/cloud-runtime/standalone/.next/server/middleware-manifest.json +5 -5
- package/cloud-runtime/standalone/.next/server/next-font-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/next-font-manifest.json +4 -0
- package/cloud-runtime/standalone/.next/server/pages/404.html +2 -2
- package/cloud-runtime/standalone/.next/server/pages/500.html +2 -2
- package/cloud-runtime/standalone/.next/server/server-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/server-reference-manifest.json +1 -1
- package/cloud-runtime/standalone/.next/static/chunks/04c135686161dbb1.js +40 -0
- package/cloud-runtime/standalone/.next/static/chunks/0d63db0c39c0a3b2.js +1 -0
- package/cloud-runtime/standalone/.next/static/chunks/136ed07d84b14632.js +1 -0
- package/cloud-runtime/standalone/.next/static/chunks/18866ed04ed3a063.css +1 -0
- package/cloud-runtime/standalone/.next/static/chunks/1b808cdaa28a10b4.js +16 -0
- package/cloud-runtime/standalone/.next/static/chunks/{ccaf68956da192f8.js → 1bb38e61d891453c.js} +1 -1
- package/cloud-runtime/standalone/.next/static/chunks/2c7c8259c2b56bf5.js +1 -0
- package/cloud-runtime/standalone/.next/static/chunks/2da1f13d50dc4e54.js +1 -0
- package/cloud-runtime/standalone/.next/static/chunks/442eb8ef62bef9f9.js +3 -0
- package/cloud-runtime/standalone/.next/static/chunks/5f33b52d582b0bb4.js +1 -0
- package/cloud-runtime/standalone/.next/static/chunks/{1fa91c34c99502bf.js → 64c2961edd3a3b13.js} +1 -1
- package/cloud-runtime/standalone/.next/static/chunks/{db131a0b6350e416.js → 692ce04abdbb3970.js} +1 -1
- package/cloud-runtime/standalone/.next/static/chunks/83be8569d298c6b0.js +1 -0
- package/cloud-runtime/standalone/.next/static/chunks/87b3afe828c8cc52.js +1 -0
- package/cloud-runtime/standalone/.next/static/chunks/{14922fd23cdc223b.js → 9328740727c6456d.js} +1 -1
- package/cloud-runtime/standalone/.next/static/chunks/95d47e285ae9c031.js +1 -0
- package/cloud-runtime/standalone/.next/static/chunks/b9bf5d3ee92a1313.js +1 -0
- package/cloud-runtime/standalone/.next/static/chunks/ea35fb870141bcff.js +1 -0
- package/cloud-runtime/standalone/.next/static/chunks/f59722264449b61c.js +1 -0
- package/cloud-runtime/standalone/.next/static/chunks/f727d2c8f039511d.js +1 -0
- package/cloud-runtime/standalone/.next/static/chunks/{f4360c3e4089263f.js → f8706212baa8ec67.js} +1 -1
- package/cloud-runtime/standalone/.next/static/chunks/fd823c9d1381335d.js +1 -0
- package/cloud-runtime/standalone/app/api/linear/issues/route.ts +9 -2
- package/cloud-runtime/standalone/app/api/linear/options/route.ts +16 -4
- package/cloud-runtime/standalone/app/automations/page.tsx +11 -1
- package/cloud-runtime/standalone/app/folders/page.tsx +318 -0
- package/cloud-runtime/standalone/app/projects/[slug]/layout.tsx +11 -1
- package/cloud-runtime/standalone/components/LinearBoard.tsx +211 -28
- package/cloud-runtime/standalone/components/chat-ui/ChatContainer.tsx +10 -0
- package/cloud-runtime/standalone/components/linear/RunScriptManager.tsx +356 -0
- package/cloud-runtime/standalone/components/thread/WorkspaceSidebar.tsx +55 -10
- package/cloud-runtime/standalone/hooks/useLinearIssues.ts +7 -3
- package/cloud-runtime/standalone/hooks/useLinearRunScripts.ts +115 -0
- package/cloud-runtime/standalone/instrumentation.ts +3 -0
- package/cloud-runtime/standalone/lib/cli-runner.ts +27 -6
- package/cloud-runtime/standalone/lib/linear-client.ts +33 -3
- package/cloud-runtime/standalone/lib/linear-execution-prompt.ts +92 -15
- package/cloud-runtime/standalone/lib/linear-issue-store.ts +33 -5
- package/cloud-runtime/standalone/lib/scheduled-task-skill.ts +119 -0
- package/cloud-runtime/standalone/state/automations/.state/c4300b01-1203-40fe-b3a9-b9fb9ec0c5cc.json +8 -0
- package/cloud-runtime/standalone/state/automations/active/c4300b01-1203-40fe-b3a9-b9fb9ec0c5cc.md +15 -0
- package/cloud-runtime/standalone/state/linearBoardFilters.ts +90 -0
- package/cloud-runtime/standalone/state/linearRunScripts.test.ts +99 -0
- package/cloud-runtime/standalone/state/linearRunScripts.ts +132 -0
- package/cloud-runtime/standalone/state/windowState.ts +21 -0
- package/cloud-runtime/standalone/tsconfig.tsbuildinfo +1 -1
- package/cloud-runtime/standalone/worker/index.js +147 -28
- package/package.json +1 -1
- package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__1154e5b3._.js +0 -67
- package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__3b83b657._.js +0 -147
- package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__6921fe3f._.js +0 -44
- package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__70327010._.js +0 -134
- package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__748c718f._.js +0 -147
- package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__76290829._.js +0 -67
- package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__79fa35e4._.js +0 -101
- package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__8d205f82._.js +0 -48
- package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__a7e0ac67._.js +0 -25
- package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__ad6d6402._.js +0 -67
- package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__b133856b._.js +0 -61
- package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__ce2a1672._.js +0 -67
- package/cloud-runtime/standalone/.next/server/chunks/[root-of-the-server]__f168c6dc._.js +0 -25
- package/cloud-runtime/standalone/.next/server/chunks/_a93e80e8._.js +0 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__1c4256ce._.js +0 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__69887882._.js +0 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/[root-of-the-server]__bb149a22._.js +0 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_11ce4c04._.js +0 -95
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_1d26be78._.js +0 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_22e99a52._.js +0 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_260b10ce._.js +0 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_32c878b9._.js +0 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_4bfdfb14._.js +0 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_52fe115d._.js +0 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_69164b06._.js +0 -95
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_77e1407a._.js +0 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_7f7a828a._.js +0 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_84a166cb._.js +0 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_ba5903a7._.js +0 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_cee3cf86._.js +0 -95
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_ed4fece9._.js +0 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_f51a3112._.js +0 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_e8bdedc5._.js +0 -3
- package/cloud-runtime/standalone/.next/static/chunks/2362d5c0dcaa5d64.js +0 -1
- package/cloud-runtime/standalone/.next/static/chunks/2730394502dd3664.js +0 -1
- package/cloud-runtime/standalone/.next/static/chunks/2a9c83f8211196e0.js +0 -1
- package/cloud-runtime/standalone/.next/static/chunks/34dd491bc4ce9561.js +0 -1
- package/cloud-runtime/standalone/.next/static/chunks/37f07896b044d69f.css +0 -1
- package/cloud-runtime/standalone/.next/static/chunks/3dc50de1c86e1ce9.js +0 -1
- package/cloud-runtime/standalone/.next/static/chunks/4ea8f08087116055.js +0 -1
- package/cloud-runtime/standalone/.next/static/chunks/98c20da4973991f0.js +0 -1
- package/cloud-runtime/standalone/.next/static/chunks/a72fbac84e32f665.js +0 -1
- package/cloud-runtime/standalone/.next/static/chunks/a9da98f883ac833b.js +0 -1
- package/cloud-runtime/standalone/.next/static/chunks/b2127dc67c5ade9f.js +0 -1
- package/cloud-runtime/standalone/.next/static/chunks/b3377e39d47c71cf.js +0 -3
- package/cloud-runtime/standalone/.next/static/chunks/b553dba1f51e709b.js +0 -16
- package/cloud-runtime/standalone/.next/static/chunks/bf2a2fafb710e63c.js +0 -1
- package/cloud-runtime/standalone/.next/static/chunks/c0d17e0c37ba8e7a.js +0 -1
- package/cloud-runtime/standalone/.next/static/chunks/cca7c8e4ade050f0.js +0 -37
- package/cloud-runtime/standalone/state/automations/.state/24a6a5db-3b14-49c4-841f-29f10f015fbb.json +0 -8
- package/cloud-runtime/standalone/state/automations/active/24a6a5db-3b14-49c4-841f-29f10f015fbb.md +0 -17
- /package/cloud-runtime/standalone/.next/static/{1Q0q2lXllTpqCvmNQYtpD → gty0FO80D_lbq3o9lSpQQ}/_buildManifest.js +0 -0
- /package/cloud-runtime/standalone/.next/static/{1Q0q2lXllTpqCvmNQYtpD → gty0FO80D_lbq3o9lSpQQ}/_clientMiddlewareManifest.json +0 -0
- /package/cloud-runtime/standalone/.next/static/{1Q0q2lXllTpqCvmNQYtpD → gty0FO80D_lbq3o9lSpQQ}/_ssgManifest.js +0 -0
|
@@ -5,6 +5,7 @@ import type { ChatProvider } from "./types";
|
|
|
5
5
|
import { createCliChunkSanitizer } from "./sanitize";
|
|
6
6
|
import { writeDebugLog } from "./debug-log";
|
|
7
7
|
import { buildSpawnEnv, commandExists } from "./shell-env";
|
|
8
|
+
import { buildScheduledTaskSkillPromptContext } from "./scheduled-task-skill";
|
|
8
9
|
|
|
9
10
|
const isNonEmptyString = (value: unknown): value is string =>
|
|
10
11
|
typeof value === "string" && value.trim().length > 0;
|
|
@@ -711,12 +712,12 @@ export async function runCliResponse({
|
|
|
711
712
|
if (cleaned) onDelta(cleaned);
|
|
712
713
|
};
|
|
713
714
|
|
|
714
|
-
const
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
715
|
+
const systemPrompt = buildCliSystemPrompt({
|
|
716
|
+
identity,
|
|
717
|
+
self,
|
|
718
|
+
skills,
|
|
719
|
+
systemContext,
|
|
720
|
+
});
|
|
720
721
|
const attempts = buildCliAttempts({
|
|
721
722
|
provider,
|
|
722
723
|
model,
|
|
@@ -789,3 +790,23 @@ export async function runCliResponse({
|
|
|
789
790
|
|
|
790
791
|
throw lastError || new Error("CLI execution failed.");
|
|
791
792
|
}
|
|
793
|
+
|
|
794
|
+
export function buildCliSystemPrompt({
|
|
795
|
+
identity,
|
|
796
|
+
self,
|
|
797
|
+
skills,
|
|
798
|
+
systemContext,
|
|
799
|
+
}: {
|
|
800
|
+
identity?: string;
|
|
801
|
+
self?: string;
|
|
802
|
+
skills?: string;
|
|
803
|
+
systemContext?: string;
|
|
804
|
+
}): string | undefined {
|
|
805
|
+
const systemParts: string[] = [];
|
|
806
|
+
if (systemContext) systemParts.push(systemContext);
|
|
807
|
+
systemParts.push(buildScheduledTaskSkillPromptContext());
|
|
808
|
+
if (identity) systemParts.push(`<identity>\n${identity}\n</identity>`);
|
|
809
|
+
if (self) systemParts.push(`<self>\n${self}\n</self>`);
|
|
810
|
+
if (skills) systemParts.push(`<skills>\n${skills}\n</skills>`);
|
|
811
|
+
return systemParts.length > 0 ? systemParts.join("\n\n") : undefined;
|
|
812
|
+
}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import "server-only";
|
|
2
2
|
|
|
3
|
-
import { readFileSync, unlinkSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from "node:fs";
|
|
4
|
+
import { homedir } from "node:os";
|
|
4
5
|
import path from "node:path";
|
|
5
6
|
|
|
6
|
-
const
|
|
7
|
+
const AGX_DIR = path.join(homedir(), ".agx");
|
|
8
|
+
const TOKEN_FILENAME = "linear-token.json";
|
|
9
|
+
const LEGACY_TOKEN_PATH = ".linear-token.json";
|
|
7
10
|
const LINEAR_GRAPHQL_URL = "https://api.linear.app/graphql";
|
|
8
11
|
|
|
9
12
|
interface LinearToken {
|
|
@@ -127,19 +130,40 @@ interface LinearIssueConnection {
|
|
|
127
130
|
}
|
|
128
131
|
|
|
129
132
|
function getTokenPath(): string {
|
|
130
|
-
return path.join(
|
|
133
|
+
return path.join(AGX_DIR, TOKEN_FILENAME);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
function getLegacyTokenPath(): string {
|
|
137
|
+
return path.join(process.cwd(), LEGACY_TOKEN_PATH);
|
|
131
138
|
}
|
|
132
139
|
|
|
133
140
|
export function getLinearToken(): LinearToken | null {
|
|
141
|
+
// Try the canonical path first
|
|
134
142
|
try {
|
|
135
143
|
const raw = readFileSync(getTokenPath(), "utf8");
|
|
136
144
|
return JSON.parse(raw) as LinearToken;
|
|
145
|
+
} catch {
|
|
146
|
+
// fall through
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// Migrate from legacy cwd-relative path
|
|
150
|
+
try {
|
|
151
|
+
const legacyPath = getLegacyTokenPath();
|
|
152
|
+
const raw = readFileSync(legacyPath, "utf8");
|
|
153
|
+
const token = JSON.parse(raw) as LinearToken;
|
|
154
|
+
// Save to new location and clean up old file
|
|
155
|
+
saveLinearToken(token);
|
|
156
|
+
try { unlinkSync(legacyPath); } catch { /* ignore */ }
|
|
157
|
+
return token;
|
|
137
158
|
} catch {
|
|
138
159
|
return null;
|
|
139
160
|
}
|
|
140
161
|
}
|
|
141
162
|
|
|
142
163
|
export function saveLinearToken(token: LinearToken): void {
|
|
164
|
+
if (!existsSync(AGX_DIR)) {
|
|
165
|
+
mkdirSync(AGX_DIR, { recursive: true });
|
|
166
|
+
}
|
|
143
167
|
writeFileSync(getTokenPath(), JSON.stringify(token, null, 2));
|
|
144
168
|
}
|
|
145
169
|
|
|
@@ -149,6 +173,12 @@ export function deleteLinearToken(): void {
|
|
|
149
173
|
} catch {
|
|
150
174
|
// already gone
|
|
151
175
|
}
|
|
176
|
+
// Also clean up legacy location
|
|
177
|
+
try {
|
|
178
|
+
unlinkSync(getLegacyTokenPath());
|
|
179
|
+
} catch {
|
|
180
|
+
// already gone
|
|
181
|
+
}
|
|
152
182
|
}
|
|
153
183
|
|
|
154
184
|
function serializeGraphQLValue(value: unknown): string {
|
|
@@ -29,6 +29,26 @@ export interface LinearExecutionPromptInput {
|
|
|
29
29
|
runtime?: LinearExecutionRuntimeContext | null;
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
+
export interface ResolvedLinearExecutionContext {
|
|
33
|
+
issue: {
|
|
34
|
+
identifier: string;
|
|
35
|
+
title: string;
|
|
36
|
+
status: string;
|
|
37
|
+
assignee: string;
|
|
38
|
+
};
|
|
39
|
+
project: {
|
|
40
|
+
name: string;
|
|
41
|
+
slug: string;
|
|
42
|
+
label: string;
|
|
43
|
+
repos: LinearExecutionProjectRepoContext[];
|
|
44
|
+
};
|
|
45
|
+
runtime: {
|
|
46
|
+
knowledgeBaseRoot: string;
|
|
47
|
+
issueKnowledgePath: string;
|
|
48
|
+
isolatedWorktreePath: string;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
32
52
|
function slugifySegment(value: string, fallback: string): string {
|
|
33
53
|
const slug = value
|
|
34
54
|
.trim()
|
|
@@ -95,19 +115,14 @@ export function buildLinearExecutionPrompt(input: LinearExecutionPromptInput): {
|
|
|
95
115
|
prompt: string;
|
|
96
116
|
promptPrefix: string;
|
|
97
117
|
} {
|
|
98
|
-
const
|
|
99
|
-
const
|
|
100
|
-
const
|
|
101
|
-
const
|
|
102
|
-
const
|
|
103
|
-
const knowledgeBaseRoot =
|
|
104
|
-
|
|
105
|
-
const
|
|
106
|
-
String(input.runtime?.issueKnowledgePath ?? "").trim() ||
|
|
107
|
-
`${knowledgeBaseRoot}/issues/${issueIdentifier}/`;
|
|
108
|
-
const isolatedWorktreePath =
|
|
109
|
-
String(input.runtime?.isolatedWorktreePath ?? "").trim() ||
|
|
110
|
-
`/tmp/agx-${slugifySegment(issueIdentifier, "ticket")}`;
|
|
118
|
+
const context = resolveLinearExecutionContext(input);
|
|
119
|
+
const issueIdentifier = context.issue.identifier;
|
|
120
|
+
const issueTitle = context.issue.title;
|
|
121
|
+
const issueStatus = context.issue.status;
|
|
122
|
+
const issueAssignee = context.issue.assignee;
|
|
123
|
+
const knowledgeBaseRoot = context.runtime.knowledgeBaseRoot;
|
|
124
|
+
const issueKnowledgePath = context.runtime.issueKnowledgePath;
|
|
125
|
+
const isolatedWorktreePath = context.runtime.isolatedWorktreePath;
|
|
111
126
|
|
|
112
127
|
const promptPrefix = [
|
|
113
128
|
"LINEAR TASK EXECUTION",
|
|
@@ -118,13 +133,13 @@ export function buildLinearExecutionPrompt(input: LinearExecutionPromptInput): {
|
|
|
118
133
|
`- Title: ${issueTitle}`,
|
|
119
134
|
`- Current status: ${issueStatus}`,
|
|
120
135
|
`- Current assignee: ${issueAssignee}`,
|
|
121
|
-
`- Project: ${
|
|
136
|
+
`- Project: ${context.project.label}`,
|
|
122
137
|
`- Knowledge base root: ${knowledgeBaseRoot}`,
|
|
123
138
|
`- Issue knowledge path: ${issueKnowledgePath}`,
|
|
124
139
|
`- Suggested isolated worktree: ${isolatedWorktreePath}`,
|
|
125
140
|
"- Additional project resources such as repo knowledge, project memory, and project variables are injected separately by the active project context.",
|
|
126
141
|
].join("\n"),
|
|
127
|
-
`SOURCE REPOSITORIES\n${formatRepositories(
|
|
142
|
+
`SOURCE REPOSITORIES\n${formatRepositories(context.project.repos)}`,
|
|
128
143
|
[
|
|
129
144
|
"WORKFLOW",
|
|
130
145
|
"1. Read the full Linear issue and comment thread before acting. Use Linear MCP for issue details, comments, state changes, and follow-up.",
|
|
@@ -151,3 +166,65 @@ export function buildLinearExecutionPrompt(input: LinearExecutionPromptInput): {
|
|
|
151
166
|
promptPrefix,
|
|
152
167
|
};
|
|
153
168
|
}
|
|
169
|
+
|
|
170
|
+
export function resolveLinearExecutionContext(
|
|
171
|
+
input: LinearExecutionPromptInput
|
|
172
|
+
): ResolvedLinearExecutionContext {
|
|
173
|
+
const issueIdentifier = input.issue.identifier.trim() || "TICKET-ID";
|
|
174
|
+
const issueTitle = input.issue.title.trim() || "Untitled ticket";
|
|
175
|
+
const issueStatus = String(input.issue.status ?? "").trim() || "Unknown";
|
|
176
|
+
const issueAssignee = String(input.issue.assignee ?? "").trim() || "Unassigned";
|
|
177
|
+
const projectSlug = toProjectSlug(input.project);
|
|
178
|
+
const projectName = String(input.project?.name ?? "").trim() || projectSlug;
|
|
179
|
+
const knowledgeBaseRoot =
|
|
180
|
+
String(input.runtime?.knowledgeBaseRoot ?? "").trim() || `~/.agx/vault/${projectSlug}`;
|
|
181
|
+
const issueKnowledgePath =
|
|
182
|
+
String(input.runtime?.issueKnowledgePath ?? "").trim() ||
|
|
183
|
+
`${knowledgeBaseRoot}/issues/${issueIdentifier}/`;
|
|
184
|
+
const isolatedWorktreePath =
|
|
185
|
+
String(input.runtime?.isolatedWorktreePath ?? "").trim() ||
|
|
186
|
+
`/tmp/agx-${slugifySegment(issueIdentifier, "ticket")}`;
|
|
187
|
+
|
|
188
|
+
return {
|
|
189
|
+
issue: {
|
|
190
|
+
identifier: issueIdentifier,
|
|
191
|
+
title: issueTitle,
|
|
192
|
+
status: issueStatus,
|
|
193
|
+
assignee: issueAssignee,
|
|
194
|
+
},
|
|
195
|
+
project: {
|
|
196
|
+
name: projectName,
|
|
197
|
+
slug: projectSlug,
|
|
198
|
+
label: toProjectLabel(input.project),
|
|
199
|
+
repos: input.project?.repos ? [...input.project.repos] : [],
|
|
200
|
+
},
|
|
201
|
+
runtime: {
|
|
202
|
+
knowledgeBaseRoot,
|
|
203
|
+
issueKnowledgePath,
|
|
204
|
+
isolatedWorktreePath,
|
|
205
|
+
},
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
export function renderLinearExecutionPromptTemplate(
|
|
210
|
+
template: string,
|
|
211
|
+
input: LinearExecutionPromptInput
|
|
212
|
+
): string {
|
|
213
|
+
const context = resolveLinearExecutionContext(input);
|
|
214
|
+
const values: Record<string, string> = {
|
|
215
|
+
"ticket.identifier": context.issue.identifier,
|
|
216
|
+
"ticket.title": context.issue.title,
|
|
217
|
+
"ticket.status": context.issue.status,
|
|
218
|
+
"ticket.assignee": context.issue.assignee,
|
|
219
|
+
"project.name": context.project.name,
|
|
220
|
+
"project.slug": context.project.slug,
|
|
221
|
+
"project.label": context.project.label,
|
|
222
|
+
"knowledge_base.root": context.runtime.knowledgeBaseRoot,
|
|
223
|
+
"knowledge_base.issue_path": context.runtime.issueKnowledgePath,
|
|
224
|
+
"worktree.path": context.runtime.isolatedWorktreePath,
|
|
225
|
+
};
|
|
226
|
+
|
|
227
|
+
return template.replace(/\{\{\s*([a-zA-Z0-9._-]+)\s*\}\}/g, (_match, key: string) => {
|
|
228
|
+
return values[key] ?? "";
|
|
229
|
+
});
|
|
230
|
+
}
|
|
@@ -87,7 +87,7 @@ export interface LinearIssueSyncState {
|
|
|
87
87
|
|
|
88
88
|
export interface ListCachedLinearIssuesInput {
|
|
89
89
|
search?: string;
|
|
90
|
-
|
|
90
|
+
statuses?: string[];
|
|
91
91
|
assigneeIds?: string[];
|
|
92
92
|
assignedToMe?: boolean;
|
|
93
93
|
teamId?: string;
|
|
@@ -104,6 +104,10 @@ export interface ListCachedLinearIssuesResult {
|
|
|
104
104
|
};
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
+
interface LinearIssueStatusRow {
|
|
108
|
+
status: string;
|
|
109
|
+
}
|
|
110
|
+
|
|
107
111
|
function toOptionalString(value: string | null | undefined): string | null {
|
|
108
112
|
const trimmed = value?.trim();
|
|
109
113
|
return trimmed ? trimmed : null;
|
|
@@ -343,10 +347,17 @@ export async function listCachedLinearIssues(
|
|
|
343
347
|
params.push(pattern, pattern, pattern);
|
|
344
348
|
}
|
|
345
349
|
|
|
346
|
-
const
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
+
const statuses = Array.from(
|
|
351
|
+
new Set(
|
|
352
|
+
(input.statuses ?? [])
|
|
353
|
+
.map((status) => toOptionalString(status))
|
|
354
|
+
.filter((status): status is string => Boolean(status))
|
|
355
|
+
.map((status) => status.toLowerCase())
|
|
356
|
+
)
|
|
357
|
+
);
|
|
358
|
+
if (statuses.length > 0) {
|
|
359
|
+
clauses.push(`LOWER(status) IN (${statuses.map(() => "?").join(", ")})`);
|
|
360
|
+
params.push(...statuses);
|
|
350
361
|
}
|
|
351
362
|
|
|
352
363
|
const assigneeIds = Array.from(
|
|
@@ -402,6 +413,23 @@ export async function listCachedLinearIssues(
|
|
|
402
413
|
});
|
|
403
414
|
}
|
|
404
415
|
|
|
416
|
+
export async function listCachedLinearIssueStatuses(): Promise<string[]> {
|
|
417
|
+
return withLinearIssueDatabase((db) => {
|
|
418
|
+
const rows = db
|
|
419
|
+
.prepare(
|
|
420
|
+
`SELECT DISTINCT status
|
|
421
|
+
FROM linear_issues
|
|
422
|
+
WHERE TRIM(status) <> ''
|
|
423
|
+
ORDER BY LOWER(status) ASC`
|
|
424
|
+
)
|
|
425
|
+
.all() as unknown as LinearIssueStatusRow[];
|
|
426
|
+
|
|
427
|
+
return rows
|
|
428
|
+
.map((row) => row.status.trim())
|
|
429
|
+
.filter(Boolean);
|
|
430
|
+
});
|
|
431
|
+
}
|
|
432
|
+
|
|
405
433
|
export async function getCachedLinearIssueContexts(issueIds: string[]): Promise<CachedLinearIssueRecord[]> {
|
|
406
434
|
const normalizedIds = Array.from(
|
|
407
435
|
new Set(
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
|
|
5
|
+
const SCHEDULED_TASK_SKILL_ID = "scheduled-task-manager";
|
|
6
|
+
|
|
7
|
+
type ScheduledTaskSkillOptions = {
|
|
8
|
+
agxDataDir?: string;
|
|
9
|
+
workspaceRoot?: string;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
function toDisplayPath(value: string): string {
|
|
13
|
+
return value.replace(/\\/g, "/");
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function resolveAgxDataDir(explicitDir?: string): string {
|
|
17
|
+
const trimmed = explicitDir?.trim();
|
|
18
|
+
if (trimmed) return trimmed;
|
|
19
|
+
const configured = process.env.AGX_DATA_DIR?.trim();
|
|
20
|
+
if (configured) return configured;
|
|
21
|
+
return path.join(os.homedir(), ".agx");
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function resolveWorkspaceRoot(explicitRoot?: string): string {
|
|
25
|
+
const trimmed = explicitRoot?.trim();
|
|
26
|
+
if (trimmed) return trimmed;
|
|
27
|
+
return process.cwd();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function getScheduledTaskSkillPath(options: ScheduledTaskSkillOptions = {}): string {
|
|
31
|
+
return path.join(
|
|
32
|
+
resolveAgxDataDir(options.agxDataDir),
|
|
33
|
+
"skills",
|
|
34
|
+
SCHEDULED_TASK_SKILL_ID,
|
|
35
|
+
"SKILL.md",
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export function buildScheduledTaskSkillContent(options: ScheduledTaskSkillOptions = {}): string {
|
|
40
|
+
const workspaceRoot = resolveWorkspaceRoot(options.workspaceRoot);
|
|
41
|
+
const specPath = toDisplayPath(path.join(workspaceRoot, "planning", "automation-frontmatter-migration-spec.md"));
|
|
42
|
+
const automationsDir = toDisplayPath(path.join(workspaceRoot, "src", "automations"));
|
|
43
|
+
const promptSchedulerDir = toDisplayPath(path.join(workspaceRoot, "src", "prompt-scheduler"));
|
|
44
|
+
const graphScheduleRunnerPath = toDisplayPath(path.join(workspaceRoot, "src", "graph", "schedule-runner.ts"));
|
|
45
|
+
const graphStorePath = toDisplayPath(path.join(workspaceRoot, "src", "graph", "store.ts"));
|
|
46
|
+
const automationsRoutePath = toDisplayPath(path.join(workspaceRoot, "app", "api", "automations", "route.ts"));
|
|
47
|
+
const promptJobsRoutePath = toDisplayPath(path.join(workspaceRoot, "app", "api", "prompt-jobs", "route.ts"));
|
|
48
|
+
|
|
49
|
+
return `---
|
|
50
|
+
name: scheduled-task-manager
|
|
51
|
+
description: Use when creating, editing, migrating, debugging, or reviewing AGX scheduled tasks, automations, prompt jobs, execution graph schedules, or frontmatter-backed automation definitions.
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
# Scheduled Task Manager
|
|
55
|
+
|
|
56
|
+
Use this skill whenever the task touches scheduled tasks, automations, prompt jobs, execution graph schedules, or automation frontmatter.
|
|
57
|
+
|
|
58
|
+
## Read First
|
|
59
|
+
|
|
60
|
+
- [automation-frontmatter-migration-spec](${specPath})
|
|
61
|
+
- Shared automation model lives in [src/automations](${automationsDir})
|
|
62
|
+
- Prompt-job scheduling lives in [src/prompt-scheduler](${promptSchedulerDir})
|
|
63
|
+
- Execution-graph scheduling flows through [schedule-runner.ts](${graphScheduleRunnerPath}) and [store.ts](${graphStorePath})
|
|
64
|
+
- API entry points are [app/api/automations/route.ts](${automationsRoutePath}) and [app/api/prompt-jobs/route.ts](${promptJobsRoutePath})
|
|
65
|
+
|
|
66
|
+
## Guardrails
|
|
67
|
+
|
|
68
|
+
- Reject malformed frontmatter. Do not coerce invalid enum values into defaults.
|
|
69
|
+
- Preserve stable automation ids. Renaming a task must not create a new id.
|
|
70
|
+
- Keep runtime state such as last run, next run, and archival flags out of frontmatter unless the spec explicitly says otherwise.
|
|
71
|
+
- Preserve sub-minute scheduled cadences when they are represented as \`intervalMs\`.
|
|
72
|
+
- For \`execution_graph\` targets, keep \`graphId\` and \`taskId\` resolution correct. Do not assume \`definition.id === taskId\`.
|
|
73
|
+
- Updating an automation definition should advance user-visible \`updatedAt\`.
|
|
74
|
+
- Avoid eager file-backed repository initialization on request paths that should stay lazy or rollout-gated.
|
|
75
|
+
- Keep parser and serializer behavior round-trippable unless the spec explicitly requires normalization.
|
|
76
|
+
|
|
77
|
+
## Working Pattern
|
|
78
|
+
|
|
79
|
+
1. Read the migration spec before changing storage, rollout, or validation behavior.
|
|
80
|
+
2. Trace the full path: parser -> validation -> repository -> scheduler -> API.
|
|
81
|
+
3. Add or update regression tests for parsing, serialization, due selection, and the affected API or runtime path.
|
|
82
|
+
4. Prefer small fixes in the shared automation layer over duplicating logic in adapters.
|
|
83
|
+
|
|
84
|
+
## Validation Checklist
|
|
85
|
+
|
|
86
|
+
- Scheduled triggers keep \`cronExpr\`, \`cadence\`, and sub-minute \`intervalMs\` semantics intact.
|
|
87
|
+
- Condition triggers validate required fields and reject unsupported polling intervals.
|
|
88
|
+
- Target-specific required fields are enforced.
|
|
89
|
+
- Invalid definitions fail closed and are excluded instead of silently rewritten.
|
|
90
|
+
- Prompt-job and execution-graph adapters preserve the same runtime meaning before and after frontmatter serialization.
|
|
91
|
+
`;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export function ensureScheduledTaskSkillInstalled(options: ScheduledTaskSkillOptions = {}): string {
|
|
95
|
+
const skillPath = getScheduledTaskSkillPath(options);
|
|
96
|
+
const skillContent = buildScheduledTaskSkillContent(options);
|
|
97
|
+
|
|
98
|
+
try {
|
|
99
|
+
fs.mkdirSync(path.dirname(skillPath), { recursive: true });
|
|
100
|
+
const existing = fs.existsSync(skillPath) ? fs.readFileSync(skillPath, "utf8") : null;
|
|
101
|
+
if (existing !== skillContent) {
|
|
102
|
+
fs.writeFileSync(skillPath, skillContent, "utf8");
|
|
103
|
+
}
|
|
104
|
+
} catch (error) {
|
|
105
|
+
console.warn("[scheduled-task-skill] Failed to install skill:", error);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return skillPath;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export function buildScheduledTaskSkillPromptContext(options: ScheduledTaskSkillOptions = {}): string {
|
|
112
|
+
const skillPath = ensureScheduledTaskSkillInstalled(options);
|
|
113
|
+
return [
|
|
114
|
+
"<scheduled-task-skill>",
|
|
115
|
+
`Path: ${toDisplayPath(skillPath)}`,
|
|
116
|
+
"Read this skill whenever the task involves scheduled tasks, automations, prompt jobs, execution graph schedules, or frontmatter-backed automation definitions.",
|
|
117
|
+
"</scheduled-task-skill>",
|
|
118
|
+
].join("\n");
|
|
119
|
+
}
|
package/cloud-runtime/standalone/state/automations/active/c4300b01-1203-40fe-b3a9-b9fb9ec0c5cc.md
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: c4300b01-1203-40fe-b3a9-b9fb9ec0c5cc
|
|
3
|
+
name: 'Agx Agent: Work On Linear Tickets'
|
|
4
|
+
projectId: f354bbf2-cfed-473f-890c-e592209313da
|
|
5
|
+
state: active
|
|
6
|
+
trigger:
|
|
7
|
+
type: scheduled
|
|
8
|
+
cadence: 15 * * * *
|
|
9
|
+
cronExpr: 15 * * * *
|
|
10
|
+
target:
|
|
11
|
+
type: prompt_job
|
|
12
|
+
provider: claude
|
|
13
|
+
createdAt: '2026-04-08T09:50:53.793Z'
|
|
14
|
+
---
|
|
15
|
+
Execute `/Users/mendrika/Projects/Agents/agx-game-vault/agx-game-vault/scheduled-tasks/work-linear-tickets.md`
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
const LINEAR_BOARD_FILTERS_STORAGE_PREFIX = "agx-linear:boardFilters";
|
|
2
|
+
|
|
3
|
+
export interface LinearBoardFilters {
|
|
4
|
+
search: string;
|
|
5
|
+
assigneeIds: string[];
|
|
6
|
+
statuses: string[];
|
|
7
|
+
teamId: string;
|
|
8
|
+
cycleId: string;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const DEFAULT_LINEAR_BOARD_FILTERS: LinearBoardFilters = {
|
|
12
|
+
search: "",
|
|
13
|
+
assigneeIds: [],
|
|
14
|
+
statuses: [],
|
|
15
|
+
teamId: "",
|
|
16
|
+
cycleId: "",
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
function isStorageAvailable(): boolean {
|
|
20
|
+
return typeof window !== "undefined" && typeof window.localStorage !== "undefined";
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function normalizeStringArray(value: unknown): string[] {
|
|
24
|
+
if (!Array.isArray(value)) {
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return Array.from(
|
|
29
|
+
new Set(
|
|
30
|
+
value
|
|
31
|
+
.map((entry) => (typeof entry === "string" ? entry.trim() : ""))
|
|
32
|
+
.filter(Boolean)
|
|
33
|
+
)
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export function getLinearBoardFiltersStorageKey(projectSlug?: string | null): string {
|
|
38
|
+
const normalizedProjectSlug = String(projectSlug ?? "").trim().toLowerCase();
|
|
39
|
+
return normalizedProjectSlug
|
|
40
|
+
? `${LINEAR_BOARD_FILTERS_STORAGE_PREFIX}:${normalizedProjectSlug}`
|
|
41
|
+
: `${LINEAR_BOARD_FILTERS_STORAGE_PREFIX}:global`;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export function loadLinearBoardFilters(projectSlug?: string | null): LinearBoardFilters {
|
|
45
|
+
if (!isStorageAvailable()) {
|
|
46
|
+
return { ...DEFAULT_LINEAR_BOARD_FILTERS };
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const raw = window.localStorage.getItem(getLinearBoardFiltersStorageKey(projectSlug));
|
|
50
|
+
if (!raw) {
|
|
51
|
+
return { ...DEFAULT_LINEAR_BOARD_FILTERS };
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
try {
|
|
55
|
+
const parsed = JSON.parse(raw) as Partial<LinearBoardFilters>;
|
|
56
|
+
return {
|
|
57
|
+
search: typeof parsed.search === "string" ? parsed.search : DEFAULT_LINEAR_BOARD_FILTERS.search,
|
|
58
|
+
assigneeIds: normalizeStringArray(parsed.assigneeIds),
|
|
59
|
+
statuses: normalizeStringArray(parsed.statuses),
|
|
60
|
+
teamId: typeof parsed.teamId === "string" ? parsed.teamId : DEFAULT_LINEAR_BOARD_FILTERS.teamId,
|
|
61
|
+
cycleId: typeof parsed.cycleId === "string" ? parsed.cycleId : DEFAULT_LINEAR_BOARD_FILTERS.cycleId,
|
|
62
|
+
};
|
|
63
|
+
} catch {
|
|
64
|
+
return { ...DEFAULT_LINEAR_BOARD_FILTERS };
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export function persistLinearBoardFilters(
|
|
69
|
+
projectSlug: string | null | undefined,
|
|
70
|
+
filters: LinearBoardFilters
|
|
71
|
+
): void {
|
|
72
|
+
if (!isStorageAvailable()) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
try {
|
|
77
|
+
window.localStorage.setItem(
|
|
78
|
+
getLinearBoardFiltersStorageKey(projectSlug),
|
|
79
|
+
JSON.stringify({
|
|
80
|
+
search: filters.search,
|
|
81
|
+
assigneeIds: normalizeStringArray(filters.assigneeIds),
|
|
82
|
+
statuses: normalizeStringArray(filters.statuses),
|
|
83
|
+
teamId: String(filters.teamId || ""),
|
|
84
|
+
cycleId: String(filters.cycleId || ""),
|
|
85
|
+
})
|
|
86
|
+
);
|
|
87
|
+
} catch {
|
|
88
|
+
// ignore storage errors
|
|
89
|
+
}
|
|
90
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getLinearRunScriptsStorageKey,
|
|
3
|
+
loadLinearRunScripts,
|
|
4
|
+
persistLinearRunScripts,
|
|
5
|
+
} from "./linearRunScripts";
|
|
6
|
+
|
|
7
|
+
type LocalStorageMap = Record<string, string>;
|
|
8
|
+
|
|
9
|
+
function withFakeLocalStorage<T>(callback: (storage: LocalStorageMap) => T): T {
|
|
10
|
+
const originalWindow = globalThis.window;
|
|
11
|
+
const storage: LocalStorageMap = {};
|
|
12
|
+
const fakeLocalStorage = {
|
|
13
|
+
getItem(key: string) {
|
|
14
|
+
return storage[key] ?? null;
|
|
15
|
+
},
|
|
16
|
+
setItem(key: string, value: string) {
|
|
17
|
+
storage[key] = value;
|
|
18
|
+
},
|
|
19
|
+
removeItem(key: string) {
|
|
20
|
+
delete storage[key];
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
globalThis.window = { localStorage: fakeLocalStorage } as unknown as Window;
|
|
24
|
+
|
|
25
|
+
try {
|
|
26
|
+
return callback(storage);
|
|
27
|
+
} finally {
|
|
28
|
+
globalThis.window = originalWindow;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
describe("linearRunScripts", () => {
|
|
33
|
+
test("persists and restores scripts per project slug", () => {
|
|
34
|
+
withFakeLocalStorage((storage) => {
|
|
35
|
+
const key = getLinearRunScriptsStorageKey("agx-cloud");
|
|
36
|
+
expect(loadLinearRunScripts("agx-cloud")).toEqual({
|
|
37
|
+
activeScriptId: null,
|
|
38
|
+
scripts: [],
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
persistLinearRunScripts("agx-cloud", {
|
|
42
|
+
activeScriptId: "script-1",
|
|
43
|
+
scripts: [
|
|
44
|
+
{
|
|
45
|
+
id: "script-1",
|
|
46
|
+
name: "Investigation",
|
|
47
|
+
prompt: "Read {{ticket.identifier}} first.",
|
|
48
|
+
createdAt: "2026-04-08T01:00:00.000Z",
|
|
49
|
+
updatedAt: "2026-04-08T02:00:00.000Z",
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
expect(storage[key]).toContain("Investigation");
|
|
55
|
+
expect(loadLinearRunScripts("agx-cloud")).toEqual({
|
|
56
|
+
activeScriptId: "script-1",
|
|
57
|
+
scripts: [
|
|
58
|
+
{
|
|
59
|
+
id: "script-1",
|
|
60
|
+
name: "Investigation",
|
|
61
|
+
prompt: "Read {{ticket.identifier}} first.",
|
|
62
|
+
createdAt: "2026-04-08T01:00:00.000Z",
|
|
63
|
+
updatedAt: "2026-04-08T02:00:00.000Z",
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
test("clears invalid active script ids while preserving valid scripts", () => {
|
|
71
|
+
withFakeLocalStorage((storage) => {
|
|
72
|
+
storage[getLinearRunScriptsStorageKey("agx-cloud")] = JSON.stringify({
|
|
73
|
+
activeScriptId: "missing-script",
|
|
74
|
+
scripts: [
|
|
75
|
+
{
|
|
76
|
+
id: "script-1",
|
|
77
|
+
name: "Implementation",
|
|
78
|
+
prompt: "Implement carefully.",
|
|
79
|
+
createdAt: "2026-04-08T01:00:00.000Z",
|
|
80
|
+
updatedAt: "2026-04-08T02:00:00.000Z",
|
|
81
|
+
},
|
|
82
|
+
],
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
expect(loadLinearRunScripts("agx-cloud")).toEqual({
|
|
86
|
+
activeScriptId: null,
|
|
87
|
+
scripts: [
|
|
88
|
+
{
|
|
89
|
+
id: "script-1",
|
|
90
|
+
name: "Implementation",
|
|
91
|
+
prompt: "Implement carefully.",
|
|
92
|
+
createdAt: "2026-04-08T01:00:00.000Z",
|
|
93
|
+
updatedAt: "2026-04-08T02:00:00.000Z",
|
|
94
|
+
},
|
|
95
|
+
],
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
});
|