@mndrk/agx 2.1.0 → 2.3.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/README.md +70 -105
- package/cloud-runtime/standalone/apps/local/.next/BUILD_ID +1 -1
- package/cloud-runtime/standalone/apps/local/.next/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/prerender-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.html +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/agent-specs/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/[id]/profile/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/export/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/file-search/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/context/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/options/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/scripted/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/status/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/participants/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/linear-issues/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/search/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/check/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/debug/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/poll/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/assign/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/available/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/detail/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/history/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/learn/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/unlearn/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/status/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/summarize/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/extract/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/knowledge/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page/react-loadable-manifest.json +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.rsc +5 -5
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_full.segment.rsc +5 -5
- 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 +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/automations/__PAGE__.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/automations.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/board/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/board/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/board.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/execution-graph/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/execution-graph.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/folders/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/folders.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page/react-loadable-manifest.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page/react-loadable-manifest.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects/orphans/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects/orphans.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/settings.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.rsc +4 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_full.segment.rsc +4 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_tree.segment.rsc +3 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +3 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/skills.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/status/page.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 +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/thread/[id]/page.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/chunks/[root-of-the-server]__0-zk9w8._.js +7 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0.01bfe._.js +13 -8
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__00c~p6z._.js +7 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__019dflu._.js +7 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__02t.3rm._.js +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__06zr0ph._.js +6 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__07d._0s._.js +15 -10
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__08xj~a3._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0a0cq38._.js +34 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0asvfdo._.js +35 -4
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0bt7ejs._.js +7 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0f.~98d._.js +7 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0g-~-.q._.js +6 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0g7p6pw._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0gj~dap._.js +40 -9
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0hkcw03._.js +8 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0hyu3en._.js +7 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0i5aw03._.js +7 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0ke4z91._.js +7 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0l53ok5._.js +41 -10
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0ll-~cx._.js +7 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0mh6p.0._.js +7 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0nc-lbr._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0p9rl6.._.js +8 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0q~pnp0._.js +6 -6
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0ue0bu5._.js +6 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0unwwyx._.js +12 -7
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0vtkl3q._.js +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0x6w64i._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0z82z0-._.js +6 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0zrv3p3._.js +16 -11
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0~iknwz._.js +12 -7
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__10d.dhd._.js +46 -15
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__10sw5ia._.js +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__11yx.ud._.js +33 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__13-nlgu._.js +5 -5
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__13960a8._.js +14 -9
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_06qet8g._.js +14 -9
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0_0m2ly._.js +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0a15wtk._.js +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0fr1qq6._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0g.q2r6._.js +6 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0i7fs.i._.js +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_01pvj2g._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_agent-participants_ts_0cq15u5._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_db_ts_0twf-w5._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_orchestrator_chat-processor_ts_0c2l_oh._.js +43 -12
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_sqlite-query-adapter_ts_0l95hik._.js +15 -15
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_sqlite-query-adapter_ts_0s5xprd._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_graph_082u-ls._.js +19 -14
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_graph_schedule-runner_ts_07-ozf_._.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0_l0fpi.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0gips_c.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0rszt9p.js +10 -6
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0u_5kfo.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_06fnblz._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__039h7r.._.js +18 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0lno3km._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{[root-of-the-server]__0fl7_-o._.js → [root-of-the-server]__0nqqk26._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{[root-of-the-server]__0j9m72.._.js → [root-of-the-server]__0tqn-o5._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0~nm7b6._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0140-84._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_03fckp4._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{_064h43p._.js → _05xj_bp._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{_0tcjapj._.js → _0ip6k6n._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0jensz1._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0t0p8q5._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0yeuuy1._.js +1 -23
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_03z24q2._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{apps_local_0nvzo3y._.js → apps_local_04dh2yh._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0_ac-.f._.js +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0a-8i4p._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0k4~c1x._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0ld1uug._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0ms1d6i._.js +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0p_v0ri._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0x.xj52._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0~g2ijr._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_11k_-8~._.js +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_agents_[id]_page_tsx_06n47n~._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_agents_page_tsx_078reb_._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_layout_tsx_0aaa3~t._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_linear_page_tsx_0a~n5y8._.js +25 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_page_tsx_0kcaeqi._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_[teamId]_agents_[agentId]_page_tsx_0wm~_~t._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_[teamId]_page_tsx_0iyozfl._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_new_page_tsx_0yqd0a5._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_terminal_page_tsx_01n9qk.._.js +1 -20
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_setup_page_tsx_0ql2qmr._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_PromptJobBoard_tsx_06zob36._.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_chat-ui_ChatContainer_tsx_0c9fjtl._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_projects_ProjectObjectivesWorkspace_tsx_0k4tfip._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_terminal_TerminalPane_tsx_0l17vs_._.js +22 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_thread_WorkspaceSidebar_tsx_0unv2xp._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/middleware-build-manifest.js +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/middleware-manifest.json +5 -5
- package/cloud-runtime/standalone/apps/local/.next/server/pages/404.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/pages/500.html +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0e307b-0c2jbx.js → 0-cets4_axpvm.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{1011~1x9nj4ny.js → 0-k2m1ncx7hwx.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0dnw31436wd~..js → 0-pkmgle2s8u8.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/064jfmraty.9h.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/06kru5m9q~r.j.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/06kyg1q0bcz6p.js +5 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{119v0-idpg-cv.js → 08bdyjcnamzep.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0-olq~7zw3wjy.js → 08xq~uyr6.eqw.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0gj98094p~zn4.js → 0cku81z~3oe6..js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0e7jhy0-52_4k.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0wh6p5~ft5rma.js → 0htc.sqrk_0.c.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ju4xmxwqddw6.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0kn66yvx08813.css +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{07646a0h94826.js → 0l89kxqcf86on.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0mm978wb-ueg-.js +6 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0musu8f.4wvxz.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0bchtyu6m.2yv.js → 0muti0yiyhu0t.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0rhps884e-bzu.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0rr3fvwc5ind~.js +5 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0sbkkjowkksa6.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0sjz0.o9_33qy.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0srzmg8ivve1g.css +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0fonouj2i9qnb.js → 0swo3_e8.4s7j.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0sysrf3~l~r35.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0t69h-kc701fn.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0v67lnh..wj4z.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{013gtut17~fne.js → 0wb45ol1xrqe~.js} +1 -23
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{00po4v2x~0x_z.js → 0wiw2v8gm-k_-.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0tt1oh112yv-l.js → 0wopevh0s7.8c.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0xm2~gxlt1npd.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{1503vb7lb6.g1.js → 0ya124ushze_f.js} +4 -4
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0zt2o58c5gytn.js +16 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0~idsggr8vqf5.js +59 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0stvi5btlxl4m.js → 0~mcfx41q4znh.js} +3 -3
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/116j4mjz~y42t.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0-vo_x2cxmjm3.js → 12b62py0mq1gm.js} +4 -4
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/12y5i0lh6s73o.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/148.mt80civoz.js +20 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/14m5d270euu_s.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0-_ukhpeg429c.js → 16h9208kl5~xa.js} +1 -1
- package/cloud-runtime/standalone/apps/local/app/agents/[id]/page.tsx +6 -3
- package/cloud-runtime/standalone/apps/local/app/agents/page.tsx +3 -3
- package/cloud-runtime/standalone/apps/local/app/api/chat/route.ts +7 -1
- package/cloud-runtime/standalone/apps/local/app/api/participants/route.ts +9 -9
- package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/search/route.ts +6 -6
- package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/teams/route.ts +3 -3
- package/cloud-runtime/standalone/apps/local/app/api/prompt-jobs/agents/route.ts +1 -1
- package/cloud-runtime/standalone/apps/local/app/api/schedules/poll/route.ts +11 -2
- package/cloud-runtime/standalone/apps/local/app/page.tsx +72 -14
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/layout.tsx +1 -1
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/page.tsx +34 -1
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.tsx +6 -3
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/teams/[teamId]/page.tsx +6 -3
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/teams/new/page.tsx +8 -17
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/teams/replace/page.tsx +1 -1
- package/cloud-runtime/standalone/apps/local/app/projects/page.tsx +7 -0
- package/cloud-runtime/standalone/apps/local/app/setup/page.tsx +1 -38
- package/cloud-runtime/standalone/apps/local/components/AutomationsBoard.tsx +8 -4
- package/cloud-runtime/standalone/apps/local/components/EmptyStateCard.tsx +37 -0
- package/cloud-runtime/standalone/apps/local/components/LinearBoard.tsx +103 -770
- package/cloud-runtime/standalone/apps/local/components/PromptJobBoard.tsx +8 -39
- package/cloud-runtime/standalone/apps/local/components/TeamPickerModal.tsx +3 -3
- package/cloud-runtime/standalone/apps/local/components/chat-ui/Composer.tsx +28 -32
- package/cloud-runtime/standalone/apps/local/components/chat-ui/ParticipantBar.tsx +24 -39
- package/cloud-runtime/standalone/apps/local/components/linear/LinearBoardFilters.tsx +343 -0
- package/cloud-runtime/standalone/apps/local/components/linear/LinearSettingsModal.tsx +9 -3
- package/cloud-runtime/standalone/apps/local/components/linear/LinearWorkerConfig.tsx +65 -30
- package/cloud-runtime/standalone/apps/local/components/linear/LinearWorkerRunLog.tsx +190 -0
- package/cloud-runtime/standalone/apps/local/components/linear/TicketRow.tsx +158 -0
- package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveHealthTrend.tsx +45 -61
- package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveScheduledTasksPanel.tsx +38 -34
- package/cloud-runtime/standalone/apps/local/components/projects/RecentlyCompletedCard.tsx +0 -16
- package/cloud-runtime/standalone/apps/local/components/projects/ReplaceAgentsModal.tsx +2 -2
- package/cloud-runtime/standalone/apps/local/components/setup/McpSetupStep.tsx +155 -120
- package/cloud-runtime/standalone/apps/local/components/setup/ProviderStep.tsx +85 -88
- package/cloud-runtime/standalone/apps/local/components/setup/SetupLayout.tsx +6 -4
- package/cloud-runtime/standalone/apps/local/components/terminal/ProjectTerminal.tsx +18 -193
- package/cloud-runtime/standalone/apps/local/components/terminal/TerminalPane.tsx +40 -4
- package/cloud-runtime/standalone/apps/local/components/thread/WorkspaceSidebar.tsx +121 -20
- package/cloud-runtime/standalone/apps/local/components/ui/ResizeHandle.tsx +52 -0
- package/cloud-runtime/standalone/apps/local/hooks/useAutomations.ts +8 -3
- package/cloud-runtime/standalone/apps/local/hooks/useLinearActiveAgents.ts +38 -0
- package/cloud-runtime/standalone/apps/local/hooks/useLinearParticipants.ts +118 -0
- package/cloud-runtime/standalone/apps/local/hooks/usePromptJobs.ts +5 -3
- package/cloud-runtime/standalone/apps/local/hooks/useSetupFlow.ts +6 -81
- package/cloud-runtime/standalone/apps/local/lib/agent-participants.ts +1 -1
- package/cloud-runtime/standalone/apps/local/lib/agent-process-registry.ts +34 -0
- package/cloud-runtime/standalone/apps/local/lib/db.ts +5 -5
- package/cloud-runtime/standalone/apps/local/lib/linear-board-utils.ts +9 -0
- package/cloud-runtime/standalone/apps/local/lib/linear-run-status.ts +88 -0
- package/cloud-runtime/standalone/apps/local/lib/linear-run-store.ts +4 -4
- package/cloud-runtime/standalone/apps/local/lib/sqlite-query-adapter.ts +5 -1
- package/cloud-runtime/standalone/apps/local/lib/team-catalog.ts +60 -60
- package/cloud-runtime/standalone/apps/local/lib/types.ts +1 -1
- package/cloud-runtime/standalone/apps/local/migrations/sqlite_schema.sql +1 -1
- package/cloud-runtime/standalone/apps/local/skills-lock.json +5 -0
- package/cloud-runtime/standalone/apps/local/src/graph/schedule-runner.ts +26 -1
- package/cloud-runtime/standalone/apps/local/src/graph/store.ts +13 -0
- package/cloud-runtime/standalone/apps/local/state/linearBoardPins.ts +45 -0
- package/cloud-runtime/standalone/apps/local/styles/workspaceSidebar.css +71 -2
- package/cloud-runtime/standalone/apps/local/worker/index.js +56 -4
- package/lib/cli/onboarding.js +8 -5
- package/package.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_0tvwux2._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__006vr7.._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0d18x53._.js +0 -18
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0z7nw_r._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_00trrg8._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ejzn1e._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0sjchy6._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0w4gpvr._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0x6hh0t._.js +0 -4
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0t6p.qm._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/014z_yruiincl.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/041-dhls9zkl1.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/04yoml2rqnuot.js +0 -16
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/069yt_7prdxsp.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0_mrpyqcoyb_5.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0edewt9l~cs~k.css +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0f7i3ae1ynhf3.css +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0j-nhn61e~nnj.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0jrkacz_dyem6.js +0 -37
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0l3v45kd.9is_.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0p-rdas54yo~w.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0pdrpsy-zdxp0.js +0 -5
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0p~l5ap6qqx2o.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0r0c9y6.8.m5p.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0tm20~ec~occu.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0uve8xrt~0a2e.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0w94x-v00osq0.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0xwny92a.ad_i.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0zw85-xl9ysjs.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/11l2tww5f0hsk.js +0 -20
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/12qohmk-~yrtg.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/14v~9vx3tdv85.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/16d~es6h6k~rj.js +0 -6
- package/cloud-runtime/standalone/apps/local/components/setup/ProjectStep.tsx +0 -189
- package/cloud-runtime/standalone/apps/local/components/setup/TeamsStep.tsx +0 -500
- /package/cloud-runtime/standalone/apps/local/.next/static/{RnYHmEXBwXJjVrVVx2CuP → ROMPfjQqFXqGHmbybq1eC}/_buildManifest.js +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/static/{RnYHmEXBwXJjVrVVx2CuP → ROMPfjQqFXqGHmbybq1eC}/_clientMiddlewareManifest.js +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/static/{RnYHmEXBwXJjVrVVx2CuP → ROMPfjQqFXqGHmbybq1eC}/_ssgManifest.js +0 -0
|
@@ -12,7 +12,38 @@ module.exports=[329893,e=>{"use strict";var t=e.i(924868),a=e.i(374371),n=e.x("n
|
|
|
12
12
|
project_slug TEXT NOT NULL DEFAULT '',
|
|
13
13
|
UNIQUE (workspace_id, agent_id)
|
|
14
14
|
)
|
|
15
|
-
`),e.exec("CREATE INDEX IF NOT EXISTS idx_agent_processes_state ON agent_processes (state)"),e.exec("CREATE INDEX IF NOT EXISTS idx_agent_processes_thread ON agent_processes (thread_id)"),e.exec("CREATE INDEX IF NOT EXISTS idx_agent_processes_workspace ON agent_processes (workspace_id)");try{e.exec("ALTER TABLE agent_processes ADD COLUMN project_slug TEXT NOT NULL DEFAULT ''")}catch{}try{e.exec("ALTER TABLE agent_processes ADD COLUMN response_message_id TEXT NOT NULL DEFAULT ''")}catch{}return e
|
|
15
|
+
`),e.exec("CREATE INDEX IF NOT EXISTS idx_agent_processes_state ON agent_processes (state)"),e.exec("CREATE INDEX IF NOT EXISTS idx_agent_processes_thread ON agent_processes (thread_id)"),e.exec("CREATE INDEX IF NOT EXISTS idx_agent_processes_workspace ON agent_processes (workspace_id)");try{e.exec("ALTER TABLE agent_processes ADD COLUMN project_slug TEXT NOT NULL DEFAULT ''")}catch{}try{e.exec("ALTER TABLE agent_processes ADD COLUMN response_message_id TEXT NOT NULL DEFAULT ''")}catch{}return e.exec(`
|
|
16
|
+
CREATE TABLE IF NOT EXISTS messages (
|
|
17
|
+
thread_id TEXT NOT NULL,
|
|
18
|
+
id TEXT NOT NULL,
|
|
19
|
+
role TEXT NOT NULL,
|
|
20
|
+
participant_id TEXT,
|
|
21
|
+
content TEXT NOT NULL,
|
|
22
|
+
timestamp INTEGER NOT NULL,
|
|
23
|
+
PRIMARY KEY (thread_id, id)
|
|
24
|
+
)
|
|
25
|
+
`),e.exec(`
|
|
26
|
+
CREATE TABLE IF NOT EXISTS linear_runs (
|
|
27
|
+
id TEXT PRIMARY KEY,
|
|
28
|
+
project_id TEXT,
|
|
29
|
+
project_slug TEXT,
|
|
30
|
+
issue_id TEXT NOT NULL,
|
|
31
|
+
issue_identifier TEXT NOT NULL,
|
|
32
|
+
issue_title TEXT NOT NULL,
|
|
33
|
+
issue_status TEXT NOT NULL,
|
|
34
|
+
issue_assignee TEXT,
|
|
35
|
+
thread_id TEXT NOT NULL,
|
|
36
|
+
root_message_id TEXT,
|
|
37
|
+
chat_run_id TEXT,
|
|
38
|
+
agent_id TEXT NOT NULL,
|
|
39
|
+
agent_name TEXT NOT NULL,
|
|
40
|
+
mode TEXT NOT NULL DEFAULT 'chat',
|
|
41
|
+
status TEXT NOT NULL DEFAULT 'queued',
|
|
42
|
+
error TEXT,
|
|
43
|
+
created_at INTEGER NOT NULL,
|
|
44
|
+
updated_at INTEGER NOT NULL
|
|
45
|
+
)
|
|
46
|
+
`),e}();try{return e(t)}finally{t.close()}}function u(e,t,a){let n=[],i=[];void 0!==a.state&&(n.push("state = ?"),i.push(a.state)),void 0!==a.lastActivity&&(n.push("last_activity = ?"),i.push(a.lastActivity)),void 0!==a.pid&&(n.push("pid = ?"),i.push(a.pid)),0!==n.length&&p(a=>a.prepare(`UPDATE agent_processes SET ${n.join(", ")} WHERE workspace_id = ? AND agent_id = ?`).run(...i,e,t))}function g(e){let t=0;for(let a of e){if(a.pid>0)try{process.kill(a.pid,"SIGTERM")}catch{}t++}return t}var m=e.i(200704);let f=new Set(["ack","working","done","clarify","blocked"]),h=/\[reaction\s+([^\]]+)\]/gi,y=/([a-zA-Z][a-zA-Z0-9_]*)=(?:"((?:[^"\\]|\\.)*)"|'((?:[^'\\]|\\.)*)'|([^\s\]]*?(?=\s|]|[a-zA-Z][a-zA-Z0-9_]*=|$)))/g;var I=e.x("node:sqlite",()=>require("node:sqlite"),!0);let T=process.env.AGX_GROUP_CHAT_DIR?.trim()||r.default.join(s.default.homedir(),".agx","group-chat"),w=r.default.join(T,"history.sqlite"),E=r.default.join(T,"uploads");async function _(e){let t,a=(t=new I.DatabaseSync(w),(0,i.pragmaSet)(t,"journal_mode = WAL"),t);try{if(a.exec(`
|
|
16
47
|
CREATE TABLE IF NOT EXISTS attachments (
|
|
17
48
|
id TEXT PRIMARY KEY,
|
|
18
49
|
message_id TEXT,
|
|
@@ -24,8 +55,8 @@ module.exports=[329893,e=>{"use strict";var t=e.i(924868),a=e.i(374371),n=e.x("n
|
|
|
24
55
|
created_at INTEGER NOT NULL
|
|
25
56
|
);
|
|
26
57
|
CREATE INDEX IF NOT EXISTS idx_attachments_message ON attachments(message_id);
|
|
27
|
-
`),!a.prepare("PRAGMA table_info(attachments)").all().some(e=>"disk_name"===e.name)){a.exec("ALTER TABLE attachments ADD COLUMN disk_name TEXT NOT NULL DEFAULT ''");let e=a.prepare("SELECT id, filename FROM attachments WHERE disk_name = ''").all(),t=a.prepare("UPDATE attachments SET disk_name = ? WHERE id = ?");for(let a of e){let e=a.filename.includes(".")?"."+a.filename.split(".").pop().toLowerCase():"";t.run(a.id+e,a.id)}}let t=a.prepare("SELECT filename, disk_name, mime_type, size FROM attachments WHERE id = ?").get(e);if(!t)return null;let n=t.disk_name||e;return{filename:t.filename,mimeType:t.mime_type,size:t.size,diskPath:r.default.join(
|
|
28
|
-
VALUES (?, ?, ?, ?, ?, ?, ?)`),a=`reflection:${e.id}:${s[s.length-1]?.id??l}`,n=Date.now();for(let i of h){let r="decision"===i.kind?"decision":"gotcha"===i.kind||"constraint"===i.kind?"gotcha":"outcome"===i.kind?"outcome":"pattern",s=(0,
|
|
58
|
+
`),!a.prepare("PRAGMA table_info(attachments)").all().some(e=>"disk_name"===e.name)){a.exec("ALTER TABLE attachments ADD COLUMN disk_name TEXT NOT NULL DEFAULT ''");let e=a.prepare("SELECT id, filename FROM attachments WHERE disk_name = ''").all(),t=a.prepare("UPDATE attachments SET disk_name = ? WHERE id = ?");for(let a of e){let e=a.filename.includes(".")?"."+a.filename.split(".").pop().toLowerCase():"";t.run(a.id+e,a.id)}}let t=a.prepare("SELECT filename, disk_name, mime_type, size FROM attachments WHERE id = ?").get(e);if(!t)return null;let n=t.disk_name||e;return{filename:t.filename,mimeType:t.mime_type,size:t.size,diskPath:r.default.join(E,n)}}finally{a.close()}}var v=e.i(633211),L=e.i(855532),N=e.i(329905),$=e.i(224316),S=e.i(888652);let R=(0,r.join)((0,s.homedir)(),".agx","agents");var b=e.i(476805),A=e.i(121239),k=e.i(254799);let O=new Map,D=new Map;function j(e){return null!==e}let U="I evolve through experience and collaboration.";function x(e,t){let a=e.replace(/\s+/g," ").trim();if(!a)return`I am ${t}. ${U}`;let n=a.replace(/^you are\b[^.!?\n]*[.!?]?\s*/i,`I am ${t}. `);return(/^i am\b/i.test(n)?n:`I am ${t}. ${n}`).slice(0,500).trim()}function C(e,t){(0,$.ensureAgent)(e.id,{voice:e.voice?.trim()||`${e.name} style`,seed:function(e,t,a){let n=String(a||"").trim();if(n)return x(n,t);let i=String(e||"").trim();return i?x(i,t):`I am ${t}. ${U}`}(t,e.name,e.seed)})}async function P(e){C(e);let t=(0,$.readIdentity)(e.id);if(!t)return;let n=(0,L.readSelf)(e.id),i=(0,L.readReflectionState)(e.id),s=(0,N.readJournalSince)(e.id,i?.lastProcessedJournalId).filter(e=>"post"===e.type);if(0===s.length)return;let d=(0,$.getTeamSelves)(e.id),l=(n?.version??0)+1,c=(0,b.listKnowledgeEntries)({scope:"agent",subjectId:e.id,limit:50}),p=(0,L.buildStructuredReflectionPrompt)(t,n,s,d,c),u="";await (0,a.runCliResponse)({provider:e.provider,model:e.model,systemContext:"You are performing a self-modeling exercise. Output ONLY raw JSON matching the requested schema. No markdown fences, no commentary.",prompt:p,signal:void 0,onDelta:e=>{u+=e}});let g=u.trim().replace(/^```(?:json)?\s*/i,"").replace(/\s*```\s*$/,"").trim(),m=null;try{m=JSON.parse(g)}catch{m=null}let f=m?.self_model?.trim()||"";if(!f)return;let h=Array.isArray(m?.memories)?m.memories.slice(0,3).map(t=>({scope:"agent",subjectId:e.id,sourceType:"reflection",sourceId:s[s.length-1]?.id||`reflection:${e.id}:${l}`,kind:t.kind,title:String(t.title??"").trim(),body:String(t.body??"").trim(),confidence:t.confidence,durability:t.durability,tags:t.tags,evidence:Array.isArray(t.evidence)?t.evidence.map(e=>{let t=String(e?.note??"").trim(),a="string"==typeof e?.id?e.id.trim():"";return t?a?{id:a,note:t}:{note:t}:null}).filter(j):[],metadata:{reflection_window_start:s[0]?.id??null,reflection_window_end:s[s.length-1]?.id??null,self_version:l}})).filter(e=>e.title&&e.body):[],y=(0,b.storeKnowledgeEntries)(h);if((0,L.writeSelf)(e.id,f,l),(0,L.writeReflectionState)(e.id,{lastProcessedJournalId:s[s.length-1]?.id??i?.lastProcessedJournalId??null,updatedAt:new Date().toISOString()}),y>0){let t=(0,v.getSQLiteDb)().prepare(`INSERT OR IGNORE INTO agent_memory (id, agent_id, task_id, memory_type, content, content_hash, created_at)
|
|
59
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)`),a=`reflection:${e.id}:${s[s.length-1]?.id??l}`,n=Date.now();for(let i of h){let r="decision"===i.kind?"decision":"gotcha"===i.kind||"constraint"===i.kind?"gotcha":"outcome"===i.kind?"outcome":"pattern",s=(0,k.createHash)("sha256").update(i.body.trim()).digest("hex");t.run((0,k.randomUUID)(),e.id,a,r,i.body.trim(),s,n)}}(0,N.appendJournal)(e.id,{t:new Date().toISOString(),type:"reflection",observation:"Reflected after 10 messages",judgement:"Updated self-model from incremental journal evidence and deduped agent memories",delta:`self-model updated to v${l}${y>0?`; stored ${y} agent memories`:""}`,threads:[],selfVersion:l,body:f});let I=(0,$.listAgents)().filter(t=>t!==e.id).flatMap(e=>(0,N.readJournal)(e,3).map(t=>({agentId:e,entry:t})));if(I.length>0){let t=I.map(e=>`${e.entry.id}: ${e.entry.observation.slice(0,200)}`).join("\n"),n="";try{await (0,a.runCliResponse)({provider:e.provider,model:e.model,prompt:`You are ${e.id}. Review these recent entries from other agents and react to any that resonate with you.
|
|
29
60
|
|
|
30
61
|
Entries:
|
|
31
62
|
${t}
|
|
@@ -35,12 +66,12 @@ REACT <entryId> <type>
|
|
|
35
66
|
|
|
36
67
|
Valid types: agree, disagree, learned-from, builds-on, curious
|
|
37
68
|
|
|
38
|
-
Only react to entries that genuinely resonate. It's fine to react to zero entries. Output nothing else.`,signal:void 0,onDelta:e=>{n+=e}})}catch{}for(let t of n.split("\n")){let a=t.trim().match(/^REACT\s+(\S+)\s+(agree|disagree|learned-from|builds-on|curious)$/);if(a)try{!function(e,t,a){let n;if(!function(e){let[t]=e.split(":");return!!t&&(0,
|
|
39
|
-
${
|
|
40
|
-
${e.join("\n")}`].filter(Boolean).join("\n\n")}let G=function(e,t,a){let n=t?.provenanceByAgentId?.[e.id]?.skills;if(n&&n.length>0)return n;let i=[],r=new Set;for(let t of e.skills??[]){let e=t.file.split("/").pop()||t.file;r.has(e)||(r.add(e),i.push({file:t.file,condition:t.condition,source:"agent"}))}for(let t of(0,
|
|
69
|
+
Only react to entries that genuinely resonate. It's fine to react to zero entries. Output nothing else.`,signal:void 0,onDelta:e=>{n+=e}})}catch{}for(let t of n.split("\n")){let a=t.trim().match(/^REACT\s+(\S+)\s+(agree|disagree|learned-from|builds-on|curious)$/);if(a)try{!function(e,t,a){let n;if(!function(e){let[t]=e.split(":");return!!t&&(0,N.readJournal)(t).some(t=>t.id===e)}(t))throw Error(`Target entry ${t} not found`);n=(0,r.join)(R,e),(0,o.existsSync)(n)||(0,o.mkdirSync)(n,{recursive:!0});let i={agent:e,t:new Date().toISOString(),targetEntry:t,type:a};(0,o.appendFileSync)((0,r.join)(R,e,"reactions.jsonl"),JSON.stringify(i)+"\n","utf-8"),(0,S.logActivity)(e,"mesh-reaction",{meta:{target:t,type:a}})}(e.id,a[1],a[2])}catch{}}}}async function M(e){try{return await (0,t.readFile)(e,"utf-8")}catch(a){let t=a instanceof Error?a.message:String(a);return`[Error reading ${e}: ${t}]`}}async function X(e){let t=e.trim();if(!t)return{label:"unknown",content:"[Empty file reference]"};let a=function(e){let t=e.trim();if(!t)return null;let a=t.match(/^attachment:([a-zA-Z0-9-]+)$/);if(a)return a[1];let n=t.match(/\/api\/attachments\/([a-zA-Z0-9-]+)/);return n?n[1]:t.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i)?t:null}(t);if(a){let e=await _(a);if(e){let t=await M(e.diskPath);return{label:e.filename,content:t}}}return{label:t,content:await M(t)}}function F(e,t){let a=new Set(e.toLowerCase().replace(/[^\w\s]/g,"").split(/\s+/).filter(Boolean)),n=new Set(t.toLowerCase().replace(/[^\w\s]/g,"").split(/\s+/).filter(Boolean));if(0===a.size||0===n.size)return 0;let i=0;for(let e of a)n.has(e)&&i++;return i/(a.size+n.size-i)}async function z(e,t,n,i,r,s,o,d,l,c,g,I,T,w){var E;let _,$,R,b,k,j,U,x="";I({type:"participant-thinking",participantId:t.id});let M=(_=[String(t.identity??t.identity??"").trim(),t.voice?.trim()?`Voice: ${t.voice.trim()}`:"",t.seed?.trim()?`Core orientation: ${t.seed.trim()}`:""].filter(Boolean)).length>0?_.join("\n\n"):void 0;C(t,M);let F=(0,L.readSelf)(t.id);F?.content&&(k=`[Self-Model]
|
|
70
|
+
${F.content}`);let z=c?.provenanceByAgentId?.[t.id],B=z?.memory??[];if(B.length>0){let e=B.map(e=>`- (${e.source}) ${e.content}`);k=[k,`[Knowledge: Agent Derived]
|
|
71
|
+
${e.join("\n")}`].filter(Boolean).join("\n\n")}let G=function(e,t,a){let n=t?.provenanceByAgentId?.[e.id]?.skills;if(n&&n.length>0)return n;let i=[],r=new Set;for(let t of e.skills??[]){let e=t.file.split("/").pop()||t.file;r.has(e)||(r.add(e),i.push({file:t.file,condition:t.condition,source:"agent"}))}for(let t of(0,A.resolveBoundSkillFiles)(e.skillBindings??[],a,e.provider)){let e=t.file.split("/").pop()||t.file;r.has(e)||(r.add(e),i.push({file:t.file,condition:t.condition,source:"agent"}))}for(let e of t?.skills??[]){let t=e.file.split("/").pop()||e.file;r.has(t)||(r.add(t),i.push({file:e.file,condition:e.condition,source:"project"}))}return i}(t,c,r);if(G.length>0){let e=await Promise.all(G.map(async e=>{let t=e.file,a=e.condition,n=await X(t),i=a?`--- ${n.label} [${e.source}] ---
|
|
41
72
|
Use when: ${a}`:`--- ${n.label} [${e.source}] ---`;return`${i}
|
|
42
73
|
${n.content}`}));j=`[Knowledge References]
|
|
43
|
-
${e.join("\n\n")}`}let
|
|
74
|
+
${e.join("\n\n")}`}let Y=[function(e,t,a,n,i,r,s,o){let d=a.filter(t=>t.id!==e.id).map(e=>e.name).join(", "),l=t.map(e=>e.name).join(", "),c=t.find(t=>t.id!==e.id)?.name||"Name",p=`<role>
|
|
44
75
|
You are "${e.name}" in a group chat. All agents: ${l}.`;d&&(p+=` Currently active in this exchange: ${d}.`),p+=`
|
|
45
76
|
Respond as ${e.name} only. Keep responses conversational and concise.
|
|
46
77
|
IMPORTANT: Always respond to the user's actual question. Do not reference unrelated technical context, previous threads, or system internals unless directly asked.
|
|
@@ -108,8 +139,8 @@ Repo knowledge:`,a)){let t=e.path?`${e.repoName} (${e.path})`:e.repoName;p+=`
|
|
|
108
139
|
</project-context>`}return p}(t,n,i,s,o,d,l,c),z?`<execution-provenance>
|
|
109
140
|
Resolved skills: ${z.skills.map(e=>`${e.file} (${e.source})`).join(", ")||"none"}
|
|
110
141
|
Resolved memory entries: ${z.memory.map(e=>`${e.source}${e.id?`:${e.id}`:""}`).join(", ")||"none"}
|
|
111
|
-
</execution-provenance>`:null].filter(Boolean).join("\n\n");
|
|
112
|
-
${JSON.stringify({provider:t.provider,model:t.model,promptLength:r.length,identity:M?M.slice(0,200)+"...":void 0,self:
|
|
142
|
+
</execution-provenance>`:null].filter(Boolean).join("\n\n");I({type:"log",participantId:t.id,stream:"stdout",line:`[DIAGNOSTIC] Model payload for ${t.id}:
|
|
143
|
+
${JSON.stringify({provider:t.provider,model:t.model,promptLength:r.length,identity:M?M.slice(0,200)+"...":void 0,self:k?k.slice(0,200)+"...":void 0,skills:j?j.slice(0,200)+"...":void 0,provenance:z,systemContext:Y.slice(0,500)+"..."},null,2)}`});let q=l||"",H=`${t.id}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,K=(E={workspaceId:e,threadId:T||"",agentId:t.id,pid:0,state:"spawning",sinceMessageId:q,responseMessageId:H,startedAt:Date.now(),lastActivity:Date.now(),projectSlug:c?.activeProject?.slug||""},p(e=>{let t=e.prepare(`INSERT INTO agent_processes (workspace_id, thread_id, agent_id, pid, state, since_message_id, response_message_id, started_at, last_activity, project_slug)
|
|
113
144
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
114
145
|
ON CONFLICT(workspace_id, agent_id)
|
|
115
146
|
DO UPDATE SET
|
|
@@ -120,10 +151,10 @@ ${JSON.stringify({provider:t.provider,model:t.model,promptLength:r.length,identi
|
|
|
120
151
|
response_message_id = excluded.response_message_id,
|
|
121
152
|
started_at = excluded.started_at,
|
|
122
153
|
last_activity = excluded.last_activity,
|
|
123
|
-
project_slug = excluded.project_slug`).run(
|
|
154
|
+
project_slug = excluded.project_slug`).run(E.workspaceId,E.threadId,E.agentId,E.pid,E.state,E.sinceMessageId,E.responseMessageId||"",E.startedAt,E.lastActivity,E.projectSlug||"");if(1===t.changes&&t.lastInsertRowid)return Number(t.lastInsertRowid);let a=e.prepare("SELECT id FROM agent_processes WHERE workspace_id = ? AND agent_id = ?").get(E.workspaceId,E.agentId);return a?.id??0}));w?.(K);let W=null;try{await (0,a.runCliResponse)({provider:t.provider,model:t.model,prompt:r,identity:M,self:k,skills:j,systemContext:Y,signal:g,onSpawn:a=>{W=a,u(e,t.id,{pid:a,state:"running",lastActivity:Date.now()})},onLog:(e,a)=>{I({type:"log",participantId:t.id,stream:e,line:a})},onDelta:a=>{x+=a,u(e,t.id,{lastActivity:Date.now()})}}),u(e,t.id,{state:"done",lastActivity:Date.now()})}catch(i){let a=i instanceof Error?i.message:String(i),n=g?.aborted;u(e,t.id,{state:n?"killed":"error",lastActivity:Date.now()}),(0,S.logActivity)(t.id,"error",{thread:T||e,error:a}),I({type:"participant-error",participantId:t.id,error:a})}finally{}let J=($=[],R=[],b=x.replace(h,(e,t)=>{let a=function(e){let t=new Map;for(y.lastIndex=0;;){let a=y.exec(e);if(!a)break;let n=a[1].toLowerCase(),i=a[2],r=a[3],s=a[4],o=(i??r??s??"").replace(/\\(["'\\])/g,"$1").trim();t.set(n,o)}return t}(String(t)),n=(a.get("target")||"").trim(),i=(a.get("type")||"").trim().toLowerCase(),r=(a.get("reason")||"").trim(),s=(a.get("blockercode")||a.get("blocker_code")||"").trim();return n?f.has(i)?"clarify"!==i&&"blocked"!==i||r?$.push({raw:e,target:n,type:i,reason:r||void 0,blockerCode:"blocked"===i&&s||void 0}):R.push({raw:e,error:`"${i}" requires reason`}):R.push({raw:e,error:`Invalid type: ${i||"(empty)"}`}):R.push({raw:e,error:"Missing target"}),""}).replace(/[ \t]+\n/g,"\n").replace(/\n{3,}/g,"\n\n").trim(),{signals:$,invalid:R,cleanedText:b});for(let e of J.invalid)I({type:"log",participantId:t.id,stream:"stderr",line:`[reaction] ignored ${e.raw}: ${e.error}`});for(let a of J.signals)try{let n=await (0,m.setReaction)({threadId:e,messageId:a.target,participantId:t.id,type:a.type,reason:a.reason,blockerCode:a.blockerCode,hostPid:W,responseMessageId:H});I({type:"message-reactions",messageId:a.target,reactions:n.reactions})}catch(n){let e=n instanceof Error?n.message:String(n);I({type:"log",participantId:t.id,stream:"stderr",line:`[reaction] failed ${a.raw}: ${e}`})}let V=J.cleanedText.trim();if("[SKIP]"===V)return(0,S.logActivity)(t.id,"skip",{thread:T||e}),I({type:"participant-end",participantId:t.id}),{skipped:!0,response:"",mentions:new Set,parallel:!1,parallelIds:new Set,agentProcessId:K};let Z=function(e,t){let a=e;for(let e of(a=a.replace(/@@all/gi,"@all"),t))a=(a=a.replace(RegExp(`@@${e.name}`,"gi"),`@${e.name}`)).replace(RegExp(`@@${e.id}`,"gi"),`@${e.id}`);return a}(V,n);if(Z)try{await (0,m.saveMessages)(e,[{id:H,role:"assistant",participantId:t.id,content:Z,timestamp:Date.now(),rootMessageId:T||null,parentMessageId:T||null,depth:+!!T}]),U=H}catch(a){let e=a instanceof Error?a.message:String(a);I({type:"log",participantId:t.id,stream:"stderr",line:`[history] failed to save assistant message: ${e}`})}if(Z&&Z.length>20)try{let a,n,i,r,s,o,d,l,c,p,u,g,m,f;C(t,M);let h=(s=(r=Z.trim()).slice(0,120).replace(/\n/g," "),o=/\?/.test(r),d=r.match(/@\w+/g)||[],l=/\b(should|need to|must|plan|steps?|implement|fix|verify|ship|next|start)\b/i.test(r),c=/\b(maybe|might|could|unsure|not sure|unclear)\b/i.test(r),p=/\b(i will|i'll|i can|i'm going to|starting|checking|verified|fixed|done|shipped)\b/i.test(r),u=/```/.test(r)||/\bfunction\b|\bconst\b|\binterface\b/i.test(r),g=/\|.*\|.*\|/.test(r)||/^#{1,3}\s/m.test(r),m=/\b(finding|issue|bug|problem|missing|broken|wrong)\b/i.test(r),a=u&&g?`Observed a structured technical response with code or implementation detail — "${s}..."`:u?`Observed code-centric output — "${s}..."`:g?`Observed structured analysis or specification language — "${s}..."`:m?`Observed review or issue-spotting behavior — "${s}..."`:p?`Observed a concrete commitment to action — "${s}..."`:l?`Observed direction-setting or next-step guidance — "${s}..."`:o?`Observed clarifying or exploratory questioning — "${s}..."`:c?`Observed explicit uncertainty or caveating — "${s}..."`:d.length>0?`Observed coordination with ${d.join(", ")} — "${s}..."`:`Observed a general perspective contribution — "${s}..."`,f=[],(u||g)&&f.push("technical depth"),(l||p)&&f.push("execution bias"),o&&f.push("inquiry instinct"),m&&f.push("critical eye"),d.length>0&&f.push("team coordination"),c&&f.push("intellectual honesty"),n=f.length>0?`Candidate specialization signals: ${f.join(" + ")}. Treat as suggestive evidence, not settled identity.`:"Low-signal contribution for specialization; keep as weak evidence only.",l||p?i="Follow through on the action I just committed to.":m?i="Verify the issues I flagged get addressed.":o&&(i="Wait for the answer before moving forward."),{judgement:a,delta:n,intent:i});(0,N.appendJournal)(t.id,{t:new Date().toISOString(),type:"post",thread:T||e,observation:"Responded to thread",judgement:h.judgement,delta:h.delta,intent:h.intent})}catch{}if(Z){let e;C(t,M);let a=(O.get(t.id)||0)+1;O.set(t.id,a),a%10==0&&(e=(D.get(t.id)??Promise.resolve()).catch(()=>{}).then(()=>P(t)),D.set(t.id,e),e.finally(()=>{D.get(t.id)===e&&D.delete(t.id)})).catch(()=>{})}let{ids:Q,parallel:ee}=Z?function(e,t){let a=new Set,n=new Set,i=e.toLowerCase(),r=i.includes("@@all");if(i.includes("@all")||r){for(let e of t)a.add(e.id),r&&n.add(e.id);return{ids:a,parallel:n}}try{let e=(0,v.getSQLiteDb)();for(let t of e.prepare("SELECT id, name, slug FROM projects").all()){let r=t.name.toLowerCase(),s=t.slug.toLowerCase(),o=i.includes(`@@${r}`)||i.includes(`@@${s}`),d=i.includes(`@${r}`)||i.includes(`@${s}`);if(o||d)for(let i of e.prepare("SELECT agent_id FROM project_agents WHERE project_id = ? ORDER BY routing_order ASC").all(t.id))a.add(i.agent_id),o&&n.add(i.agent_id)}}catch{}for(let e of t){let t=e.id.toLowerCase(),r=e.name.toLowerCase(),s=i.includes(`@@${t}`),o=i.includes(`@@${r}`),d=i.includes(`@${t}`),l=i.includes(`@${r}`);(s||o||d||l)&&(a.add(e.id),(s||o)&&n.add(e.id))}return{ids:a,parallel:n}}(Z,n):{ids:new Set,parallel:new Set};if(Q.delete(t.id),ee.delete(t.id),Z){let a=J.signals.map(e=>e.type);(0,S.logActivity)(t.id,"message",{thread:T||e,messageId:U,response:Z,prompt:r,mentions:Q.size>0?[...Q]:void 0,reactions:a.length>0?a:void 0})}return(I({type:"participant-end",participantId:t.id,messageId:U,content:Z||void 0}),Z)?{skipped:!1,response:Z,mentions:Q,parallel:ee.size>0,parallelIds:ee,messageId:U,agentProcessId:K}:{skipped:!0,response:"",mentions:new Set,parallel:!1,parallelIds:new Set,agentProcessId:K}}var B=e.i(133439);async function G(e){return(0,m.getChatRun)(e)}async function Y(e){return(0,m.updateChatRun)(e)}async function q(e){let t=await (0,m.listChatRunSteps)(e.chatRunId);return(0,m.appendChatRunStep)({id:crypto.randomUUID(),chatRunId:e.chatRunId,stepIndex:t.length+1,kind:e.kind,status:e.status,participantId:e.participantId,inputPayload:e.inputPayload,outputPayload:e.outputPayload})}async function H(e){return(0,m.updateChatRunStep)({id:e.stepId,status:e.status,outputPayload:e.outputPayload,completedAt:Date.now()})}var K=e.i(47973);async function W(e){var t;(0,K.writeDebugLog)("chat-processor.start.received",{jobId:e.id,chatRunId:e.data.chatRunId,signal:e.data.signal});let a=await G(e.data.chatRunId);if(!a){(0,K.writeDebugLog)("chat-processor.start.missing",{chatRunId:e.data.chatRunId,jobId:e.id}),console.warn(`[chat-processor] Chat run ${e.data.chatRunId} not found, skipping`);return}if("completed"===a.status||"failed"===a.status||"cancelled"===a.status)return void(0,K.writeDebugLog)("chat-processor.start.skip_terminal",{chatRunId:a.id,status:a.status});if(!((t=a.payload)&&"object"==typeof t&&"string"==typeof t.threadId&&"string"==typeof t.prompt&&Array.isArray(t.participantIds))){(0,K.writeDebugLog)("chat-processor.start.invalid_payload",{chatRunId:a.id}),await Y({id:a.id,status:"failed",lastError:"Chat run payload is missing or invalid",completedAt:Date.now()});return}let n=await q({chatRunId:a.id,kind:"model_turn",status:"running",inputPayload:{participantIds:a.payload.participantIds,rootMessageId:a.payload.rootMessageId,maxRounds:a.payload.maxRounds}});await Y({id:a.id,status:"running",currentStep:n.stepIndex,stepsUsed:n.stepIndex,lastError:null});try{(0,K.writeDebugLog)("chat-processor.start.running",{chatRunId:a.id,threadId:a.threadId,rootMessageId:a.rootMessageId,participantIds:a.payload.participantIds});let e=await (0,B.loadDbParticipants)(),t=new Set(a.payload.participantIds),i=a.payload.participantIds.map(t=>e.find(e=>e.id===t)).filter(e=>!!e);if(0===i.length)throw(0,K.writeDebugLog)("chat-processor.start.no_participants_resolved",{chatRunId:a.id,participantIds:a.payload.participantIds}),Error("No participants resolved for chat run");let r=new Set(a.payload.mentionedIds.filter(e=>t.has(e))),s=new Set(a.payload.initialParallelIds.filter(e=>t.has(e))),o=(function({threadId:e,allParticipants:t,mentioned:a,initialParallelIds:n,prompt:i,projectContext:r,signal:s,maxRounds:o,recentHistory:d,currentUserMessageId:l,rootMessageId:c}){let p=new TextEncoder;return new ReadableStream({async start(u){let g=[],f=new Map,h=e=>{try{u.enqueue(p.encode(`data: ${JSON.stringify(e)}
|
|
124
155
|
|
|
125
|
-
`))}catch{}if("log"===e.type){let t=f.get(e.participantId);t&&g.push({agentProcessId:t,stream:e.stream,line:e.line,timestamp:Date.now()})}},y=async()=>{if(0===g.length)return;let e=new Map;for(let t of g){let a=e.get(t.agentProcessId);a||(a=[],e.set(t.agentProcessId,a)),a.push({stream:t.stream,line:t.line,timestamp:t.timestamp})}await Promise.all(Array.from(e.entries()).map(([e,t])=>(0,m.saveLogs)(e,t).catch(e=>console.error("[stream-multiplexer] saveLogs failed:",e))))},
|
|
156
|
+
`))}catch{}if("log"===e.type){let t=f.get(e.participantId);t&&g.push({agentProcessId:t,stream:e.stream,line:e.line,timestamp:Date.now()})}},y=async()=>{if(0===g.length)return;let e=new Map;for(let t of g){let a=e.get(t.agentProcessId);a||(a=[],e.set(t.agentProcessId,a)),a.push({stream:t.stream,line:t.line,timestamp:t.timestamp})}await Promise.all(Array.from(e.entries()).map(([e,t])=>(0,m.saveLogs)(e,t).catch(e=>console.error("[stream-multiplexer] saveLogs failed:",e))))},I=[],T=[],w=d?d.map(e=>({name:e.name,content:e.content})):[],E=t[0],_=new Set;if(a.size>0)for(let e of a)_.add(e);else _.add(E.id);let v=o??10,L=new Set(_);for(let a=0;a<v&&!s?.aborted;a++){let o=!0,p=t.filter(e=>_.has(e.id)),u=new Set,g=new Set;if(0===a&&n&&n.size>0){let a=p.filter(e=>n.has(e.id)&&L.has(e.id));if(a.length>0){for(let e of a)g.add(e.id);let n=a.map(async a=>{let n=await z(e,a,t,p,i,I,d||[],T,l||null,r,s,h,c,e=>f.set(a.id,e));return{agent:a,result:n}});for(let e of(await Promise.allSettled(n))){if("fulfilled"!==e.status)continue;let{agent:t,result:a}=e.value;if(!a.skipped)for(let e of(a.response&&a.messageId&&T.push({id:a.messageId,name:t.name,content:a.response}),a.response&&([...w,...I].filter(e=>e.name===t.name).some(e=>F(e.content,a.response)>.5)||(I.push({name:t.name,content:a.response}),o=!1)),a.mentions))_.add(e),p.findIndex(t=>t.id===e)>=0&&!g.has(e)&&L.has(e)||u.add(e)}}}for(let a=0;a<p.length;a++){let n=p[a];if(s?.aborted)break;if(!L.has(n.id)||g.has(n.id))continue;let m=await z(e,n,t,p,i,I,d||[],T,l||null,r,s,h,c,e=>f.set(n.id,e));if(m.skipped||(m.response&&m.messageId&&T.push({id:m.messageId,name:n.name,content:m.response}),m.response&&[...w,...I].filter(e=>e.name===n.name).some(e=>F(e.content,m.response)>.5)))continue;for(let e of(o=!1,m.response&&I.push({name:n.name,content:m.response}),m.mentions))p.findIndex(t=>t.id===e)>a&&L.has(e)||u.add(e);let y=new Set;for(let e of m.mentions)_.has(e)||(_.add(e),y.add(e));let E=new Set([...m.parallelIds].filter(e=>y.has(e)));if(E.size>0){let a=t.filter(e=>E.has(e.id)),n=t.filter(e=>_.has(e.id)),o=a.map(async a=>{let o=await z(e,a,t,n,i,I,d||[],T,l||null,r,s,h,c,e=>f.set(a.id,e));return{agent:a,result:o}});for(let e of(await Promise.allSettled(o))){if("fulfilled"!==e.status)continue;let{agent:t,result:a}=e.value;if(!a.skipped){if(a.response&&a.messageId&&T.push({id:a.messageId,name:t.name,content:a.response}),a.response){if([...w,...I].filter(e=>e.name===t.name).some(e=>F(e.content,a.response)>.5))continue;I.push({name:t.name,content:a.response})}for(let e of a.mentions)_.add(e),u.add(e)}}}}if(o)break;L=u}await y(),h({type:"done"}),u.close()}})})({threadId:a.payload.threadId,allParticipants:i,mentioned:r,initialParallelIds:s,prompt:a.payload.prompt,projectContext:a.payload.projectContext,maxRounds:a.payload.maxRounds,recentHistory:a.payload.recentHistory,currentUserMessageId:a.payload.currentUserMessageId,rootMessageId:a.payload.rootMessageId}).getReader();for((0,K.writeDebugLog)("chat-processor.stream.open",{chatRunId:a.id,participantCount:i.length});;){let{done:e}=await o.read();if(e)break}(0,K.writeDebugLog)("chat-processor.stream.complete",{chatRunId:a.id}),await H({stepId:n.id,status:"completed",outputPayload:{completed:!0,participantCount:i.length}}),await Y({id:a.id,status:"completed",completedAt:Date.now(),result:{participantIds:i.map(e=>e.id),rootMessageId:a.payload.rootMessageId}}),(0,K.writeDebugLog)("chat-processor.complete",{chatRunId:a.id,rootMessageId:a.payload.rootMessageId})}catch(t){let e=t instanceof Error?t.message:String(t);(0,K.writeDebugLog)("chat-processor.error",{chatRunId:a.id,error:t,message:e}),await H({stepId:n.id,status:"failed",outputPayload:{error:e}}),await Y({id:a.id,status:"failed",lastError:e,completedAt:Date.now(),result:{error:e}})}}async function J(e){(0,K.writeDebugLog)("chat-processor.cancel.received",{jobId:e.id,chatRunId:e.data.chatRunId});let t=await G(e.data.chatRunId);if(t){var a,n,i,r;if(t.rootMessageId)g((n=a=t.rootMessageId,p(e=>e.prepare("SELECT * FROM agent_processes WHERE thread_id = ?").all(n).map(c))).filter(e=>"running"===e.state||"spawning"===e.state))>0&&p(e=>e.prepare(`UPDATE agent_processes SET state = 'killed', last_activity = ?
|
|
126
157
|
WHERE thread_id = ? AND state IN ('running', 'spawning')`).run(Date.now(),a));else g((r=i=t.threadId,p(e=>e.prepare("SELECT * FROM agent_processes WHERE workspace_id = ?").all(r).map(c))).filter(e=>"running"===e.state||"spawning"===e.state))>0&&p(e=>e.prepare(`UPDATE agent_processes SET state = 'killed', last_activity = ?
|
|
127
|
-
WHERE workspace_id = ? AND state IN ('running', 'spawning')`).run(Date.now(),i));await
|
|
158
|
+
WHERE workspace_id = ? AND state IN ('running', 'spawning')`).run(Date.now(),i));await Y({id:t.id,status:"cancelled",lastError:e.data.payload?.reason||"Cancelled",completedAt:Date.now(),result:{cancelled:!0}}),(0,K.writeDebugLog)("chat-processor.cancel.complete",{chatRunId:t.id,threadId:t.threadId})}}async function V(e){switch(e.data.signal){case"start":await W(e);break;case"cancel":await J(e);break;default:console.warn(`[chat-processor] Unknown signal: ${e.data.signal}`)}}async function Z(e){for(let t of e)await V(t)}e.s(["chatProcessor",0,Z],329893)}];
|
|
128
159
|
|
|
129
160
|
//# sourceMappingURL=apps_local_lib_orchestrator_chat-processor_ts_0c2l_oh._.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module.exports=[633211,864075,888652,855532,329905,224316,e=>{"use strict";var t=e.x("node:sqlite",()=>require("node:sqlite"),!0),r=e.i(801243),n=e.i(522734),i=e.i(814747),a=e.i(446786);let o={id:"2c3cc1ca-956d-4b62-b295-4d2d3374103f",email:process.env.AGX_BOARD_USER_EMAIL||"local@agx.board",name:process.env.AGX_BOARD_USER_NAME||"Local Board User"};e.s(["LOCAL_USER",0,o],864075);let s=(0,i.join)((0,a.homedir)(),".agx","agents");function l(e,t,r){try{let a;a=(0,i.join)(s,e),(0,n.existsSync)(a)||(0,n.mkdirSync)(a,{recursive:!0});let o={t:new Date().toISOString(),agent:e,action:t,...r};(0,n.appendFileSync)((0,i.join)(s,e,"activity.jsonl"),JSON.stringify(o)+"\n","utf-8")}catch{}}e.s(["logActivity",0,l],888652);let d=(0,i.join)((0,a.homedir)(),".agx","agents");function E(e){return(0,i.join)(d,e,"self.md")}function c(e){return(0,i.join)(d,e,"reflection-state.json")}function
|
|
1
|
+
module.exports=[633211,864075,888652,855532,329905,224316,e=>{"use strict";var t=e.x("node:sqlite",()=>require("node:sqlite"),!0),r=e.i(801243),n=e.i(522734),i=e.i(814747),a=e.i(446786);let o={id:"2c3cc1ca-956d-4b62-b295-4d2d3374103f",email:process.env.AGX_BOARD_USER_EMAIL||"local@agx.board",name:process.env.AGX_BOARD_USER_NAME||"Local Board User"};e.s(["LOCAL_USER",0,o],864075);let s=(0,i.join)((0,a.homedir)(),".agx","agents");function l(e,t,r){try{let a;a=(0,i.join)(s,e),(0,n.existsSync)(a)||(0,n.mkdirSync)(a,{recursive:!0});let o={t:new Date().toISOString(),agent:e,action:t,...r};(0,n.appendFileSync)((0,i.join)(s,e,"activity.jsonl"),JSON.stringify(o)+"\n","utf-8")}catch{}}e.s(["logActivity",0,l],888652);let d=(0,i.join)((0,a.homedir)(),".agx","agents");function E(e){return(0,i.join)(d,e,"self.md")}function c(e){return(0,i.join)(d,e,"reflection-state.json")}function T(e){let t=E(e);if(!(0,n.existsSync)(t))return null;let r=(0,n.readFileSync)(t,"utf-8");if(!r.trim())return null;let i=r.split("\n"),a=0,o=new Date().toISOString(),s=0;if("---"===i[0])for(let e=1;e<i.length;e++){if("---"===i[e]){s=e+1;break}let[t,...r]=i[e].split(": "),n=r.join(": ");"version"===t&&(a=parseInt(n,10)||0),"derivedAt"===t&&(o=n)}return{agentId:e,content:i.slice(s).join("\n").trim(),version:a,derivedAt:o}}e.s(["buildStructuredReflectionPrompt",0,function(e,t,r,n,i){let a,o,s,l=(a=t?.content||`I am ${e.name}. ${e.seed}`,o=r.map(e=>{let t=[`- [${e.t}] ${e.observation}`];return e.judgement&&t.push(` Judgement: ${e.judgement}`),e.comparison&&t.push(` Comparison: ${e.comparison}`),e.delta&&t.push(` Delta: ${e.delta}`),e.intent&&t.push(` Intent: ${e.intent}`),t.join("\n")}).join("\n"),s=n.filter(t=>t.agentId!==e.name).map(e=>`### ${e.agentId}
|
|
2
2
|
${e.content}`).join("\n\n"),`You are ${e.name}. Voice: ${e.voice}.
|
|
3
3
|
|
|
4
4
|
## Canonical Identity
|
|
@@ -54,17 +54,17 @@ Rules:
|
|
|
54
54
|
- Do not include task-specific technical facts unless they clearly generalize into agent behavior.
|
|
55
55
|
- Do not restate memories already covered in Existing Agent Memories.
|
|
56
56
|
- If nothing genuinely new was learned, return an empty memories array.
|
|
57
|
-
- Do not wrap the JSON in markdown fences.`},"readReflectionState",0,function(e){let t=c(e);if(!(0,n.existsSync)(t))return null;try{let e=JSON.parse((0,n.readFileSync)(t,"utf-8")),r="string"==typeof e?.lastProcessedJournalId&&e.lastProcessedJournalId.trim()?e.lastProcessedJournalId.trim():null,i="string"==typeof e?.updatedAt&&e.updatedAt.trim()?e.updatedAt:new Date().toISOString();return{lastProcessedJournalId:r,updatedAt:i}}catch{return null}},"readSelf",0,
|
|
57
|
+
- Do not wrap the JSON in markdown fences.`},"readReflectionState",0,function(e){let t=c(e);if(!(0,n.existsSync)(t))return null;try{let e=JSON.parse((0,n.readFileSync)(t,"utf-8")),r="string"==typeof e?.lastProcessedJournalId&&e.lastProcessedJournalId.trim()?e.lastProcessedJournalId.trim():null,i="string"==typeof e?.updatedAt&&e.updatedAt.trim()?e.updatedAt:new Date().toISOString();return{lastProcessedJournalId:r,updatedAt:i}}catch{return null}},"readSelf",0,T,"writeReflectionState",0,function(e,t){let r=(0,i.join)(d,e);(0,n.existsSync)(r)||(0,n.mkdirSync)(r,{recursive:!0});let a=c(e)+".tmp";(0,n.writeFileSync)(a,JSON.stringify(t,null,2),"utf-8"),(0,n.renameSync)(a,c(e))},"writeSelf",0,function(e,t,r){let a=(0,i.join)(d,e);(0,n.existsSync)(a)||(0,n.mkdirSync)(a,{recursive:!0});let o=new Date().toISOString(),s=`---
|
|
58
58
|
version: ${r}
|
|
59
59
|
derivedAt: ${o}
|
|
60
60
|
---
|
|
61
61
|
${t}
|
|
62
|
-
`,c=E(e)+".tmp";(0,n.writeFileSync)(c,s,"utf-8"),(0,n.renameSync)(c,E(e)),l(e,"self-updated",{meta:{version:r}})}],855532);let
|
|
62
|
+
`,c=E(e)+".tmp";(0,n.writeFileSync)(c,s,"utf-8"),(0,n.renameSync)(c,E(e)),l(e,"self-updated",{meta:{version:r}})}],855532);let p=(0,i.join)((0,a.homedir)(),".agx","agents");function u(e){return(0,i.join)(p,e)}function N(e){return(0,i.join)(u(e),"journal.jsonl")}function m(e){let t=N(e);return(0,n.existsSync)(t)?(0,n.readFileSync)(t,"utf-8").split("\n").filter(e=>e.trim()):[]}function _(e,t){let[r,n]=String(t||"").split(":");if(r!==e)return 0;let i=parseInt(n||"0",10);return Number.isFinite(i)?i:0}e.s(["appendJournal",0,function(e,t){let r;r=u(e),(0,n.existsSync)(r)||(0,n.mkdirSync)(r,{recursive:!0});let i=m(e),a=function(e,t){let r=0;for(let n of t)try{let t=JSON.parse(n),[i,a]=String(t.id||"").split(":");if(i!==e)continue;let o=parseInt(a||"0",10);Number.isFinite(o)&&o>r&&(r=o)}catch{}return r}(e,i),o=`${e}:${a+1}`,s={...t,id:t.id?.trim()||o},d=JSON.stringify(s)+"\n";return(0,n.appendFileSync)(N(e),d,"utf-8"),l(e,"reflection"===t.type?"reflection":"journal-post",{thread:s.thread,meta:{entryId:s.id}}),s},"readJournal",0,function(e,t){let r=m(e),n=[];for(let e of r)try{n.push(JSON.parse(e))}catch{}return n.reverse(),t?n.slice(0,t):n},"readJournalSince",0,function(e,t){let r=m(e),n=_(e,t),i=[];for(let t of r)try{let r=JSON.parse(t);_(e,r.id)>n&&i.push(r)}catch{}return i}],329905);let L=(0,i.join)((0,a.homedir)(),".agx","agents");function g(e,t){let r=(0,i.join)(L,e);(0,n.existsSync)(r)||(0,n.mkdirSync)(r,{recursive:!0});let a=t?.voice?.trim()||"conversational, concise, practical",o=t?.seed?.trim()||"I evolve through experience and collaboration.",s=(0,i.join)(r,"identity.json");(0,n.existsSync)(s)||(0,n.writeFileSync)(s,JSON.stringify({name:e,voice:a,seed:o},null,2)+"\n","utf-8");let l=(0,i.join)(r,"journal.jsonl"),d=(0,i.join)(r,"reactions.jsonl"),E=(0,i.join)(r,"comments.jsonl"),c=(0,i.join)(r,"activity.jsonl"),T=(0,i.join)(r,"self.md");(0,n.existsSync)(l)||(0,n.writeFileSync)(l,"","utf-8"),(0,n.existsSync)(d)||(0,n.writeFileSync)(d,"","utf-8"),(0,n.existsSync)(E)||(0,n.writeFileSync)(E,"","utf-8"),(0,n.existsSync)(c)||(0,n.writeFileSync)(c,"","utf-8"),(0,n.existsSync)(T)||(0,n.writeFileSync)(T,`---
|
|
63
63
|
version: 0
|
|
64
64
|
derivedAt: ${new Date().toISOString()}
|
|
65
65
|
---
|
|
66
66
|
I am ${e}. ${o}
|
|
67
|
-
`,"utf-8")}function f(e){let t=(0,i.join)(L,e,"identity.json");if(!(0,n.existsSync)(t))return null;try{return JSON.parse((0,n.readFileSync)(t,"utf-8"))}catch{return null}}function h(){return(0,n.existsSync)(L)?(0,n.readdirSync)(L,{withFileTypes:!0}).filter(e=>e.isDirectory()).map(e=>e.name):[]}e.s(["ensureAgent",0,g,"getTeamSelves",0,function(e){return h().filter(t=>t!==e).map(e=>
|
|
67
|
+
`,"utf-8")}function f(e){let t=(0,i.join)(L,e,"identity.json");if(!(0,n.existsSync)(t))return null;try{return JSON.parse((0,n.readFileSync)(t,"utf-8"))}catch{return null}}function h(){return(0,n.existsSync)(L)?(0,n.readdirSync)(L,{withFileTypes:!0}).filter(e=>e.isDirectory()).map(e=>e.name):[]}e.s(["ensureAgent",0,g,"getTeamSelves",0,function(e){return h().filter(t=>t!==e).map(e=>T(e)).filter(e=>null!==e)},"listAgents",0,h,"readIdentity",0,f],224316);var O=e.x("node:sqlite",()=>require("node:sqlite"),!0);let S=process.env.AGX_GROUP_CHAT_DIR?.trim()||i.default.join(a.default.homedir(),".agx","group-chat"),A=i.default.join(S,"history.sqlite"),I=process.env.AGX_AGENTS_DIR?.trim()||i.default.join(a.default.homedir(),".agx","agents");function R(){let e,t,a=((0,n.mkdirSync)(S,{recursive:!0}),e=new O.DatabaseSync(A),(0,r.pragmaSet)(e,"journal_mode = WAL"),e.exec(`
|
|
68
68
|
CREATE TABLE IF NOT EXISTS participants (
|
|
69
69
|
id TEXT PRIMARY KEY,
|
|
70
70
|
name TEXT NOT NULL,
|
|
@@ -76,15 +76,15 @@ I am ${e}. ${o}
|
|
|
76
76
|
color TEXT NOT NULL,
|
|
77
77
|
sort_order INTEGER NOT NULL DEFAULT 0
|
|
78
78
|
);
|
|
79
|
-
`),(t=(0,r.pragmaAll)(e,"table_info(participants)")).some(e=>"persona"===e.name)&&(e.exec("ALTER TABLE participants RENAME COLUMN persona TO identity"),e.exec("ALTER TABLE participants RENAME COLUMN persona_file TO identity_file")),t.some(e=>"identity_file"===e.name)||t.some(e=>"persona_file"===e.name)||e.exec("ALTER TABLE participants ADD COLUMN identity_file TEXT"),t.some(e=>"skills_json"===e.name)||e.exec("ALTER TABLE participants ADD COLUMN skills_json TEXT"),t.some(e=>"variables_json"===e.name)||e.exec("ALTER TABLE participants ADD COLUMN variables_json TEXT"),t.some(e=>"sort_order"===e.name)||(e.exec("ALTER TABLE participants ADD COLUMN sort_order INTEGER NOT NULL DEFAULT 0"),e.exec("UPDATE participants SET sort_order = rowid")),!function(e){let t=e.prepare("SELECT id, name, provider FROM participants").all();if(0===t.length)return;let a=new Set(t.map(e=>e.id)),o=new Map(t.map(e=>[e.id,e.id])),s=[];for(let e of t){let t=(e.name||"").trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/--+/g,"-");if(!t||e.id===t||e.id!==e.provider)continue;a.delete(e.id);let r=function(e,t){if(!t.has(e))return e;let r=2,n=`${e}-${r}`;for(;t.has(n);)r+=1,n=`${e}-${r}`;return n}(t,a);a.add(r),o.set(e.id,r),s.push({from:e.id,to:r,name:e.name})}let l=t.map(e=>({id:o.get(e.id)||e.id,provider:e.provider})),d=new Set(l.map(e=>e.id)),E=new Map;for(let e of l){let t=e.provider.trim();if(!t)continue;let r=E.get(t)||new Set;r.add(e.id),E.set(t,r)}let c=[];for(let[e,t]of E){if(1!==t.size)continue;let[r]=Array.from(t);r&&e!==r&&(d.has(e)||c.push({from:e,to:r}))}if(0===s.length&&0===c.length)return;let
|
|
80
|
-
`,"utf8")}catch{}}(t.from,t.to,t.name)}(e),e);try{return a.prepare("SELECT id, name, provider, model, identity, identity_file, skills_json, variables_json, color, sort_order FROM participants ORDER BY sort_order ASC, rowid ASC").all().map(e=>({id:e.id,name:e.name,provider:e.provider,model:e.model,color:e.color,...e.identity?{identity:e.identity}:{},...e.identity_file?{identityFile:e.identity_file}:{},...e.variables_json?(()=>{try{let t=JSON.parse(e.variables_json);if(t&&"object"==typeof t&&!Array.isArray(t))return{variables:t};return{}}catch{return{}}})():{},...e.skills_json?{skills:(()=>{try{let t=JSON.parse(e.skills_json);if(!Array.isArray(t))return[];return t.map(e=>"string"==typeof e?{file:e,condition:""}:e)}catch{return[]}})()}:{}}))}finally{a.close()}}var
|
|
79
|
+
`),(t=(0,r.pragmaAll)(e,"table_info(participants)")).some(e=>"persona"===e.name)&&(e.exec("ALTER TABLE participants RENAME COLUMN persona TO identity"),e.exec("ALTER TABLE participants RENAME COLUMN persona_file TO identity_file")),t.some(e=>"identity_file"===e.name)||t.some(e=>"persona_file"===e.name)||e.exec("ALTER TABLE participants ADD COLUMN identity_file TEXT"),t.some(e=>"skills_json"===e.name)||e.exec("ALTER TABLE participants ADD COLUMN skills_json TEXT"),t.some(e=>"variables_json"===e.name)||e.exec("ALTER TABLE participants ADD COLUMN variables_json TEXT"),t.some(e=>"sort_order"===e.name)||(e.exec("ALTER TABLE participants ADD COLUMN sort_order INTEGER NOT NULL DEFAULT 0"),e.exec("UPDATE participants SET sort_order = rowid")),!function(e){let t=e.prepare("SELECT id, name, provider FROM participants").all();if(0===t.length)return;let a=new Set(t.map(e=>e.id)),o=new Map(t.map(e=>[e.id,e.id])),s=[];for(let e of t){let t=(e.name||"").trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/--+/g,"-");if(!t||e.id===t||e.id!==e.provider)continue;a.delete(e.id);let r=function(e,t){if(!t.has(e))return e;let r=2,n=`${e}-${r}`;for(;t.has(n);)r+=1,n=`${e}-${r}`;return n}(t,a);a.add(r),o.set(e.id,r),s.push({from:e.id,to:r,name:e.name})}let l=t.map(e=>({id:o.get(e.id)||e.id,provider:e.provider})),d=new Set(l.map(e=>e.id)),E=new Map;for(let e of l){let t=e.provider.trim();if(!t)continue;let r=E.get(t)||new Set;r.add(e.id),E.set(t,r)}let c=[];for(let[e,t]of E){if(1!==t.size)continue;let[r]=Array.from(t);r&&e!==r&&(d.has(e)||c.push({from:e,to:r}))}if(0===s.length&&0===c.length)return;let T=new Map;for(let e of s)T.set(e.from,e.to);for(let e of c)T.set(e.from,e.to);let p=Array.from(T.entries()).map(([e,t])=>({from:e,to:t})),u=new Set(e.prepare("SELECT name FROM sqlite_master WHERE type = 'table'").all().map(e=>e.name));for(let t of((0,r.transactionFn)(e,(t,r)=>{let n=e.prepare("UPDATE participants SET id = ? WHERE id = ?"),i=u.has("messages")?e.prepare("UPDATE messages SET participant_id = ? WHERE participant_id = ?"):null,a=u.has("agent_processes")?e.prepare("UPDATE agent_processes SET agent_id = ? WHERE agent_id = ?"):null,o=u.has("message_reactions")?e.prepare("UPDATE message_reactions SET participant_id = ? WHERE participant_id = ?"):null;for(let e of t)n.run(e.to,e.from);for(let e of r)i?.run(e.to,e.from),a?.run(e.to,e.from),o?.run(e.to,e.from)})(s.map(e=>({from:e.from,to:e.to})),p),s))!function(e,t,r){if(!e||!t||e===t)return;let a=i.default.join(I,e),o=i.default.join(I,t);if(!(0,n.existsSync)(a)||(0,n.existsSync)(o))return;(0,n.mkdirSync)(I,{recursive:!0}),(0,n.renameSync)(a,o);let s=i.default.join(o,"identity.json");if((0,n.existsSync)(s))try{let e={...JSON.parse((0,n.readFileSync)(s,"utf8")),name:"string"==typeof r&&r.trim()?r.trim():t};(0,n.writeFileSync)(s,`${JSON.stringify(e,null,2)}
|
|
80
|
+
`,"utf8")}catch{}}(t.from,t.to,t.name)}(e),e);try{return a.prepare("SELECT id, name, provider, model, identity, identity_file, skills_json, variables_json, color, sort_order FROM participants ORDER BY sort_order ASC, rowid ASC").all().map(e=>({id:e.id,name:e.name,provider:e.provider,model:e.model,color:e.color,...e.identity?{identity:e.identity}:{},...e.identity_file?{identityFile:e.identity_file}:{},...e.variables_json?(()=>{try{let t=JSON.parse(e.variables_json);if(t&&"object"==typeof t&&!Array.isArray(t))return{variables:t};return{}}catch{return{}}})():{},...e.skills_json?{skills:(()=>{try{let t=JSON.parse(e.skills_json);if(!Array.isArray(t))return[];return t.map(e=>"string"==typeof e?{file:e,condition:""}:e)}catch{return[]}})()}:{}}))}finally{a.close()}}var C=e.i(610613);let y="legacy_workspaces_to_projects_v1";function U(e,t){return!!e.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = ? LIMIT 1").get(t)}function j(e,t){return U(e,t)?new Set((0,r.pragmaAll)(e,`table_info(${t})`).map(e=>e.name)):new Set}function D(e){if(!e)throw Error("getWorkspaceTeamTableState requires an explicit database handle");let t=j(e,"teams"),r=j(e,"team_agents"),n=U(e,"team_workspaces"),i=t.has("project_id")&&t.has("template_id")&&t.has("metadata")&&!t.has("user_id"),a=t.has("user_id")&&t.has("is_default")&&!t.has("project_id"),o=r.has("team_id")&&r.has("agent_id")&&r.has("role_key");return{legacyTeams:a,legacyTeamAgents:r.has("team_id")&&r.has("agent_id")&&r.has("routing_order")&&!r.has("role_key"),legacyTeamWorkspaces:n,projectScopedTeams:i,projectScopedTeamAgents:o}}function X(e){let t=D(e);return t.legacyTeams||t.legacyTeamAgents||t.legacyTeamWorkspaces}function b(e){return e.legacyTeams&&e.legacyTeamAgents&&e.legacyTeamWorkspaces}function F(e){e.exec(`
|
|
81
81
|
CREATE TABLE IF NOT EXISTS app_migrations (
|
|
82
82
|
key TEXT PRIMARY KEY,
|
|
83
83
|
applied_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')),
|
|
84
84
|
metadata JSON
|
|
85
85
|
);
|
|
86
|
-
`)}let x=process.env.AGX_DATA_DIR||i.default.join(a.default.homedir(),".agx");class w{expr;constructor(e){this.expr=e}}let k=null;function
|
|
87
|
-
${e.join("\n")}`)}(function(e){let t=i.default.join(process.cwd(),"db","sqlite","001_agx_board_schema.sql");if(!n.default.existsSync(t))return console.warn(`[sqlite] DDL not found at ${t}, skipping schema init`);let r=n.default.readFileSync(t,"utf-8");e.exec(r)})(k),function(e){if(e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='execution_graphs'").all().length>0&&((0,r.pragmaAll)(e,"table_info(execution_graphs)").some(e=>"schedule"===e.name)||e.exec("ALTER TABLE execution_graphs ADD COLUMN schedule JSON")),e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='projects'").all().length>0&&((0,r.pragmaAll)(e,"table_info(projects)").some(e=>"archived_at"===e.name)||e.exec("ALTER TABLE projects ADD COLUMN archived_at TEXT DEFAULT NULL")),e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='project_memory'").all().length>0&&((0,r.pragmaAll)(e,"table_info(project_memory)").some(e=>"producer"===e.name)||e.exec("ALTER TABLE project_memory ADD COLUMN producer TEXT NOT NULL DEFAULT 'human' CHECK(producer IN ('human', 'system'))"),e.exec("CREATE INDEX IF NOT EXISTS idx_project_memory_producer ON project_memory (producer)")),e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='agents'").all().length>0){let t=new Set((0,r.pragmaAll)(e,"table_info(agents)").map(e=>e.name));t.has("voice")||e.exec("ALTER TABLE agents ADD COLUMN voice TEXT"),t.has("seed")||e.exec("ALTER TABLE agents ADD COLUMN seed TEXT"),t.has("model")||e.exec("ALTER TABLE agents ADD COLUMN model TEXT"),t.has("provider")||e.exec("ALTER TABLE agents ADD COLUMN provider TEXT"),t.has("color")||e.exec("ALTER TABLE agents ADD COLUMN color TEXT"),t.has("title")||e.exec("ALTER TABLE agents ADD COLUMN
|
|
86
|
+
`)}let x=process.env.AGX_DATA_DIR||i.default.join(a.default.homedir(),".agx");class w{expr;constructor(e){this.expr=e}}let k=null;function M(){if(k)return k;let e=process.env.SQLITE_DB_PATH||i.default.join(x,"agx-board.db");k=new t.DatabaseSync(e);let a=(0,C.validateSQLiteEnvironment)(k,e);if(a.length>0){let e=a.map(e=>` - ${e.message}${e.fix?` (fix: ${e.fix})`:""}`);throw Error(`SQLite startup validation failed:
|
|
87
|
+
${e.join("\n")}`)}(function(e){let t=i.default.join(process.cwd(),"db","sqlite","001_agx_board_schema.sql");if(!n.default.existsSync(t))return console.warn(`[sqlite] DDL not found at ${t}, skipping schema init`);let r=n.default.readFileSync(t,"utf-8");e.exec(r)})(k),function(e){if(e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='execution_graphs'").all().length>0&&((0,r.pragmaAll)(e,"table_info(execution_graphs)").some(e=>"schedule"===e.name)||e.exec("ALTER TABLE execution_graphs ADD COLUMN schedule JSON")),e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='projects'").all().length>0&&((0,r.pragmaAll)(e,"table_info(projects)").some(e=>"archived_at"===e.name)||e.exec("ALTER TABLE projects ADD COLUMN archived_at TEXT DEFAULT NULL")),e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='project_memory'").all().length>0&&((0,r.pragmaAll)(e,"table_info(project_memory)").some(e=>"producer"===e.name)||e.exec("ALTER TABLE project_memory ADD COLUMN producer TEXT NOT NULL DEFAULT 'human' CHECK(producer IN ('human', 'system'))"),e.exec("CREATE INDEX IF NOT EXISTS idx_project_memory_producer ON project_memory (producer)")),e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='agents'").all().length>0){let t=new Set((0,r.pragmaAll)(e,"table_info(agents)").map(e=>e.name));t.has("voice")||e.exec("ALTER TABLE agents ADD COLUMN voice TEXT"),t.has("seed")||e.exec("ALTER TABLE agents ADD COLUMN seed TEXT"),t.has("model")||e.exec("ALTER TABLE agents ADD COLUMN model TEXT"),t.has("provider")||e.exec("ALTER TABLE agents ADD COLUMN provider TEXT"),t.has("color")||e.exec("ALTER TABLE agents ADD COLUMN color TEXT"),t.has("title")&&!t.has("role")?e.exec("ALTER TABLE agents RENAME COLUMN title TO role"):t.has("role")||e.exec("ALTER TABLE agents ADD COLUMN role TEXT")}e.exec(`
|
|
88
88
|
CREATE TABLE IF NOT EXISTS agent_skills (
|
|
89
89
|
agent_id TEXT NOT NULL REFERENCES agents(id) ON DELETE CASCADE,
|
|
90
90
|
file TEXT NOT NULL,
|
|
@@ -120,7 +120,7 @@ ${e.join("\n")}`)}(function(e){let t=i.default.join(process.cwd(),"db","sqlite",
|
|
|
120
120
|
PRIMARY KEY (agent_id, repo, skill_id)
|
|
121
121
|
);
|
|
122
122
|
CREATE INDEX IF NOT EXISTS idx_agent_skill_bindings_agent ON agent_skill_bindings (agent_id, created_at);
|
|
123
|
-
`),
|
|
123
|
+
`),v(e),e.exec(`
|
|
124
124
|
CREATE TABLE IF NOT EXISTS project_agents (
|
|
125
125
|
project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
|
|
126
126
|
agent_id TEXT NOT NULL REFERENCES agents(id) ON DELETE CASCADE,
|
|
@@ -299,7 +299,7 @@ ${e.join("\n")}`)}(function(e){let t=i.default.join(process.cwd(),"db","sqlite",
|
|
|
299
299
|
END`);for(let e of h()){let r=f(e);t.run(e,o.id,r?.name?.trim()||e,r?.voice?.trim()||null,r?.seed?.trim()||null)}})(e),function(e){let t=R(),r=new Set(e.prepare("SELECT id FROM agents").all().map(e=>e.id)),n=e.prepare(`INSERT INTO agent_skills (agent_id, file, condition)
|
|
300
300
|
VALUES (?, ?, ?)
|
|
301
301
|
ON CONFLICT(agent_id, file) DO UPDATE SET
|
|
302
|
-
condition = excluded.condition`);for(let e of t)if(r.has(e.id))for(let t of e.skills??[]){let r=t.file?.trim();r&&n.run(e.id,r,t.condition?.trim()||null)}}(e),function(e){for(let t of e.prepare("SELECT id, voice, seed FROM agents").all())g(t.id,{voice:t.voice??void 0,seed:t.seed??void 0})}(e)}(k);let s=function(e){var t;if(!e)throw Error("autoMigrateLegacyWorkspacesToProjects requires an explicit database handle");let n=D(e);if(!X(e)||!b(n)||(F(e),e.prepare("SELECT 1 FROM app_migrations WHERE key = ? LIMIT 1").get(
|
|
302
|
+
condition = excluded.condition`);for(let e of t)if(r.has(e.id))for(let t of e.skills??[]){let r=t.file?.trim();r&&n.run(e.id,r,t.condition?.trim()||null)}}(e),function(e){for(let t of e.prepare("SELECT id, voice, seed FROM agents").all())g(t.id,{voice:t.voice??void 0,seed:t.seed??void 0})}(e)}(k);let s=function(e){var t;if(!e)throw Error("autoMigrateLegacyWorkspacesToProjects requires an explicit database handle");let n=D(e);if(!X(e)||!b(n)||(F(e),e.prepare("SELECT 1 FROM app_migrations WHERE key = ? LIMIT 1").get(y)))return null;let i=function(e){let t;if(!e)throw Error("migrateLegacyWorkspacesToProjects requires an explicit database handle");let n={usersProcessed:0,agentsImported:0,agentSkillsMigrated:0,projectsCreated:0,projectsMatched:0,projectAgentsLinked:0,projectThreadsLinked:0,projectVariablesMigrated:0,remappedThreadLinks:0,warnings:[],projectMappings:[]},i=D(e);if(!X(e))return n.warnings.push("No legacy workspace/team tables found."),n;if(!b(i))return n.warnings.push("Legacy workspace/team schema is incomplete; refusing to auto-migrate partial tables."),n;let a=R(),s=new Map(a.map(e=>[e.id,e])),{teams:l,teamAgents:d,teamWorkspaces:E}=(t=e.prepare("SELECT id, name, user_id, COALESCE(is_default, 0) AS is_default FROM teams ORDER BY name ASC").all(),{teams:t,teamAgents:e.prepare("SELECT team_id, agent_id, routing_order FROM team_agents ORDER BY team_id, routing_order ASC").all(),teamWorkspaces:e.prepare("SELECT team_id, thread_id FROM team_workspaces ORDER BY team_id, thread_id ASC").all()}),c=new Map;for(let e of l){let t=c.get(e.user_id)??[];t.push(e),c.set(e.user_id,t)}let T=new Map;for(let e of d){let t=T.get(e.team_id)??[];t.push(e),T.set(e.team_id,t)}let p=new Map;for(let e of E){let t=p.get(e.team_id)??[];t.push(e.thread_id),p.set(e.team_id,t)}return(0,r.transaction)(e,()=>{for(let[t,r]of c.entries()){n.usersProcessed++;let i=t||o.id;!function(e,t,r,n){let i=e.prepare(`INSERT INTO agents (id, user_id, name, style, description, model, provider, color, voice, seed)
|
|
303
303
|
VALUES (?, ?, ?, 'balanced', ?, ?, ?, ?, NULL, NULL)
|
|
304
304
|
ON CONFLICT(id) DO UPDATE SET
|
|
305
305
|
user_id = excluded.user_id,
|
|
@@ -311,9 +311,9 @@ ${e.join("\n")}`)}(function(e){let t=i.default.join(process.cwd(),"db","sqlite",
|
|
|
311
311
|
updated_at = strftime('%Y-%m-%dT%H:%M:%fZ','now')`),a=e.prepare("SELECT 1 FROM agents WHERE id = ?");for(let e of r){let r=!!a.get(e.id);i.run(e.id,t,e.name,e.identity??null,e.model??null,e.provider??"claude",e.color??"#6B7280"),!r&&n.agentsImported++}}(e,i,a,n),function(e,t,r){let n=e.prepare(`INSERT INTO agent_skills (agent_id, file, condition)
|
|
312
312
|
VALUES (?, ?, ?)
|
|
313
313
|
ON CONFLICT(agent_id, file) DO UPDATE SET
|
|
314
|
-
condition = excluded.condition`);for(let i of t)for(let t of i.skills??[]){let a=t.file?.trim();if(!a)continue;let o=e.prepare("SELECT condition FROM agent_skills WHERE agent_id = ? AND file = ?").get(i.id,a),s=t.condition||null;n.run(i.id,a,s),(!o||o.condition!==s)&&r.agentSkillsMigrated++}}(e,a,n);let l=new Map,d=new Map;for(let t of r){let r=
|
|
314
|
+
condition = excluded.condition`);for(let i of t)for(let t of i.skills??[]){let a=t.file?.trim();if(!a)continue;let o=e.prepare("SELECT condition FROM agent_skills WHERE agent_id = ? AND file = ?").get(i.id,a),s=t.condition||null;n.run(i.id,a,s),(!o||o.condition!==s)&&r.agentSkillsMigrated++}}(e,a,n);let l=new Map,d=new Map;for(let t of r){let r=p.get(t.id)??[],a=function(e,t,r,n){var i;let a,o=r.is_default?"default":r.name.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/--+/g,"-"),s=e.prepare("SELECT id, name FROM projects WHERE user_id = ? AND slug = ? LIMIT 1").get(t,o);if(s)return n.projectsMatched++,s;let l=r.is_default?"Default Project":(a=(i=r.name).trim())?a.split(/\s+/).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "):i,d=e.prepare(`INSERT INTO projects (user_id, name, slug, description)
|
|
315
315
|
VALUES (?, ?, ?, ?)
|
|
316
|
-
RETURNING id, name`).get(t,l,o||`project-${r.id.slice(0,8)}`,"Migrated from legacy workspace/team structure");return n.projectsCreated++,d}(e,i,t,n),o=
|
|
316
|
+
RETURNING id, name`).get(t,l,o||`project-${r.id.slice(0,8)}`,"Migrated from legacy workspace/team structure");return n.projectsCreated++,d}(e,i,t,n),o=T.get(t.id)??[];l.set(a.id,o),d.set(a.id,r),n.projectMappings.push({teamId:t.id,teamName:t.name,projectId:a.id,projectName:a.name,threadIds:r})}let E=e.prepare(`INSERT INTO project_agents (project_id, agent_id, routing_order)
|
|
317
317
|
VALUES (?, ?, ?)
|
|
318
318
|
ON CONFLICT(project_id, agent_id) DO UPDATE SET
|
|
319
319
|
routing_order = excluded.routing_order`),c=e.prepare("DELETE FROM project_threads WHERE thread_id = ? AND project_id <> ?"),u=e.prepare(`INSERT OR IGNORE INTO project_threads (project_id, thread_id)
|
|
@@ -323,7 +323,7 @@ ${e.join("\n")}`)}(function(e){let t=i.default.join(process.cwd(),"db","sqlite",
|
|
|
323
323
|
VALUES (?, json(?))
|
|
324
324
|
ON CONFLICT(key) DO UPDATE SET
|
|
325
325
|
applied_at = strftime('%Y-%m-%dT%H:%M:%fZ','now'),
|
|
326
|
-
metadata = excluded.metadata`).run(
|
|
326
|
+
metadata = excluded.metadata`).run(y,JSON.stringify(t)),i}(k);return s&&console.log(`[sqlite] auto-migrated legacy workspaces to projects: ${JSON.stringify({usersProcessed:s.usersProcessed,projectsCreated:s.projectsCreated,projectsMatched:s.projectsMatched,projectAgentsLinked:s.projectAgentsLinked,projectThreadsLinked:s.projectThreadsLinked})}`),function(e){if(!e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='app_migrations'").get()||!e.prepare("SELECT 1 FROM app_migrations WHERE key = 'legacy_workspaces_to_projects_v1' LIMIT 1").get())return;let t=D(e),r=[];t.legacyTeamWorkspaces&&r.push("team_workspaces"),t.legacyTeamAgents&&r.push("team_agents"),t.legacyTeams&&r.push("teams"),0!==r.length&&(e.exec(r.map(e=>`DROP TABLE IF EXISTS ${e};`).join("\n")),console.log(`[sqlite] dropped legacy team tables: ${r.join(", ")}`))}(k),v(k),k}function v(e){e.exec(`
|
|
327
327
|
CREATE TABLE IF NOT EXISTS teams (
|
|
328
328
|
id TEXT NOT NULL PRIMARY KEY,
|
|
329
329
|
project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
|
|
@@ -350,12 +350,12 @@ ${e.join("\n")}`)}(function(e){let t=i.default.join(process.cwd(),"db","sqlite",
|
|
|
350
350
|
BEGIN
|
|
351
351
|
UPDATE teams SET updated_at = strftime('%Y-%m-%dT%H:%M:%fZ','now') WHERE rowid = NEW.rowid;
|
|
352
352
|
END;
|
|
353
|
-
`)}let $=new Set(["definition","depends_on","input","metadata","models","open_blockers","output","payload","run_index","stage_decisions","swarm_models"]);function H(e){return void 0===e?null:e instanceof Date?e.toISOString():e&&"object"==typeof e?JSON.stringify(e):e}function Y(e,t){return null==t?null:t instanceof Date?t.toISOString():$.has(e)?JSON.stringify(t):H(t)}function B(e){let t=(e||"*").trim();if(!t||"*"===t)return{columns:["*"],includeProjectRepos:!1};let r=t.includes("project_repos(*)"),n=t.replace(/project_repos\(\*\)/g,"").split(",").map(e=>e.trim()).filter(Boolean);return 0===n.length?{columns:["*"],includeProjectRepos:r}:{columns:n,includeProjectRepos:r}}class P{table;operation="select";filters=[];orderSpecs=[];limitValue=null;selectColumns="*";returningColumns=null;singleMode="none";payload=null;upsertOptions=null;constructor(e){this.table=e}select(e="*"){return"select"===this.operation?this.selectColumns=e:this.returningColumns=e||"*",this}insert(e){return this.operation="insert",this.payload=e,this}update(e){return this.operation="update",this.payload=e,this}delete(){return this.operation="delete",this}upsert(e,t){return this.operation="upsert",this.payload=e,this.upsertOptions=t||{},this}eq(e,t){return this.filters.push({op:"eq",column:e,value:t}),this}neq(e,t){return this.filters.push({op:"neq",column:e,value:t}),this}gt(e,t){return this.filters.push({op:"gt",column:e,value:t}),this}gte(e,t){return this.filters.push({op:"gte",column:e,value:t}),this}lt(e,t){return this.filters.push({op:"lt",column:e,value:t}),this}lte(e,t){return this.filters.push({op:"lte",column:e,value:t}),this}is(e,t){return this.filters.push({op:"is",column:e,value:t}),this}in(e,t){return this.filters.push({op:"in",column:e,value:t||[]}),this}contains(e,t){return this.filters.push({op:"contains",column:e,value:t}),this}or(e){return this.filters.push({op:"or",expression:e}),this}order(e,t){return this.orderSpecs.push({column:e,...t||{}}),this}limit(e){return this.limitValue=e,this}single(){return this.singleMode="single",this.execute()}maybeSingle(){return this.singleMode="maybeSingle",this.execute()}then(e,t){return this.execute().then(e,t)}buildWhere(e,t){for(let r of this.filters){if("or"===r.op){let n=r.expression.split(",").map(e=>e.trim()).filter(Boolean).map(e=>{var r;let[n,i,...a]=e.split("."),o="true"===(r=a.join("."))||"false"!==r&&("null"===r?null:r);return"eq"===i?(t.push(H(o)),`${n} = ?`):"neq"===i?(t.push(H(o)),`${n} <> ?`):"is"===i?null===o?`${n} IS NULL`:(t.push(H(o)),`${n} IS ?`):"ilike"===i||"like"===i?(t.push(H(o)),`${n} LIKE ?`):"1=1"});n.length>0&&e.push(`(${n.join(" OR ")})`);continue}if("eq"===r.op)t.push(H(r.value)),e.push(`${r.column} = ?`);else if("neq"===r.op)t.push(H(r.value)),e.push(`${r.column} <> ?`);else if("gt"===r.op)t.push(H(r.value)),e.push(`${r.column} > ?`);else if("gte"===r.op)t.push(H(r.value)),e.push(`${r.column} >= ?`);else if("lt"===r.op)t.push(H(r.value)),e.push(`${r.column} < ?`);else if("lte"===r.op)t.push(H(r.value)),e.push(`${r.column} <= ?`);else if("is"===r.op)null===r.value?e.push(`${r.column} IS NULL`):(t.push(H(r.value)),e.push(`${r.column} IS ?`));else if("contains"===r.op){let n=(r.value||[]).map(H);if(0===n.length)e.push("1=1");else{let i=n.map(()=>"?").join(", ");t.push(...n),e.push(`(SELECT COUNT(*) FROM json_each(${r.column}) WHERE json_each.value IN (${i})) = ${n.length}`)}}else if("in"===r.op)if(r.value&&0!==r.value.length){let n=(r.value||[]).map(H),i=n.map(()=>"?").join(", ");t.push(...n),e.push(`${r.column} IN (${i})`)}else e.push("1=0")}}executeSelect(){try{let e=
|
|
353
|
+
`)}let $=new Set(["definition","depends_on","input","metadata","models","open_blockers","output","payload","run_index","stage_decisions","swarm_models"]);function H(e){return void 0===e?null:e instanceof Date?e.toISOString():e&&"object"==typeof e?JSON.stringify(e):e}function Y(e,t){return null==t?null:t instanceof Date?t.toISOString():$.has(e)?JSON.stringify(t):H(t)}function B(e){let t=(e||"*").trim();if(!t||"*"===t)return{columns:["*"],includeProjectRepos:!1};let r=t.includes("project_repos(*)"),n=t.replace(/project_repos\(\*\)/g,"").split(",").map(e=>e.trim()).filter(Boolean);return 0===n.length?{columns:["*"],includeProjectRepos:r}:{columns:n,includeProjectRepos:r}}class P{table;operation="select";filters=[];orderSpecs=[];limitValue=null;selectColumns="*";returningColumns=null;singleMode="none";payload=null;upsertOptions=null;constructor(e){this.table=e}select(e="*"){return"select"===this.operation?this.selectColumns=e:this.returningColumns=e||"*",this}insert(e){return this.operation="insert",this.payload=e,this}update(e){return this.operation="update",this.payload=e,this}delete(){return this.operation="delete",this}upsert(e,t){return this.operation="upsert",this.payload=e,this.upsertOptions=t||{},this}eq(e,t){return this.filters.push({op:"eq",column:e,value:t}),this}neq(e,t){return this.filters.push({op:"neq",column:e,value:t}),this}gt(e,t){return this.filters.push({op:"gt",column:e,value:t}),this}gte(e,t){return this.filters.push({op:"gte",column:e,value:t}),this}lt(e,t){return this.filters.push({op:"lt",column:e,value:t}),this}lte(e,t){return this.filters.push({op:"lte",column:e,value:t}),this}is(e,t){return this.filters.push({op:"is",column:e,value:t}),this}in(e,t){return this.filters.push({op:"in",column:e,value:t||[]}),this}contains(e,t){return this.filters.push({op:"contains",column:e,value:t}),this}or(e){return this.filters.push({op:"or",expression:e}),this}order(e,t){return this.orderSpecs.push({column:e,...t||{}}),this}limit(e){return this.limitValue=e,this}single(){return this.singleMode="single",this.execute()}maybeSingle(){return this.singleMode="maybeSingle",this.execute()}then(e,t){return this.execute().then(e,t)}buildWhere(e,t){for(let r of this.filters){if("or"===r.op){let n=r.expression.split(",").map(e=>e.trim()).filter(Boolean).map(e=>{var r;let[n,i,...a]=e.split("."),o="true"===(r=a.join("."))||"false"!==r&&("null"===r?null:r);return"eq"===i?(t.push(H(o)),`${n} = ?`):"neq"===i?(t.push(H(o)),`${n} <> ?`):"is"===i?null===o?`${n} IS NULL`:(t.push(H(o)),`${n} IS ?`):"ilike"===i||"like"===i?(t.push(H(o)),`${n} LIKE ?`):"1=1"});n.length>0&&e.push(`(${n.join(" OR ")})`);continue}if("eq"===r.op)t.push(H(r.value)),e.push(`${r.column} = ?`);else if("neq"===r.op)t.push(H(r.value)),e.push(`${r.column} <> ?`);else if("gt"===r.op)t.push(H(r.value)),e.push(`${r.column} > ?`);else if("gte"===r.op)t.push(H(r.value)),e.push(`${r.column} >= ?`);else if("lt"===r.op)t.push(H(r.value)),e.push(`${r.column} < ?`);else if("lte"===r.op)t.push(H(r.value)),e.push(`${r.column} <= ?`);else if("is"===r.op)null===r.value?e.push(`${r.column} IS NULL`):(t.push(H(r.value)),e.push(`${r.column} IS ?`));else if("contains"===r.op){let n=(r.value||[]).map(H);if(0===n.length)e.push("1=1");else{let i=n.map(()=>"?").join(", ");t.push(...n),e.push(`(SELECT COUNT(*) FROM json_each(${r.column}) WHERE json_each.value IN (${i})) = ${n.length}`)}}else if("in"===r.op)if(r.value&&0!==r.value.length){let n=(r.value||[]).map(H),i=n.map(()=>"?").join(", ");t.push(...n),e.push(`${r.column} IN (${i})`)}else e.push("1=0")}}executeSelect(){try{let e=M(),{columns:t,includeProjectRepos:r}=B(this.selectColumns),n=[],i=[];this.buildWhere(i,n);let a=`SELECT ${t.join(", ")} FROM ${this.table}`;if(i.length>0&&(a+=` WHERE ${i.join(" AND ")}`),this.orderSpecs.length>0){let e=this.orderSpecs.map(e=>{let t=!1===e.ascending?"DESC":"ASC";return!0===e.nullsFirst?`CASE WHEN ${e.column} IS NULL THEN 0 ELSE 1 END, ${e.column} ${t}`:!1===e.nullsFirst?`CASE WHEN ${e.column} IS NULL THEN 1 ELSE 0 END, ${e.column} ${t}`:`${e.column} ${t}`}).join(", ");a+=` ORDER BY ${e}`}"number"==typeof this.limitValue&&(n.push(this.limitValue),a+=" LIMIT ?");let o=e.prepare(a).all(...n);if(o=o.map(q),r&&"projects"===this.table&&o.length>0){let t=o.map(e=>e.id).filter(Boolean);if(t.length>0){let r=t.map(()=>"?").join(", "),n=e.prepare(`SELECT * FROM project_repos WHERE project_id IN (${r})`).all(...t),i=new Map;for(let e of n){let t=i.get(e.project_id)||[];t.push(e),i.set(e.project_id,t)}o=o.map(e=>({...e,project_repos:i.get(e.id)||[]}))}}if("single"===this.singleMode){if(0===o.length)return{data:null,error:{message:"No rows",code:"PGRST116"}};return{data:o[0],error:null}}if("maybeSingle"===this.singleMode)return{data:o[0]||null,error:null};return{data:o,error:null}}catch(e){return{data:null,error:e}}}executeInsertOrUpsert(){try{let e,t=M(),r=Array.isArray(this.payload)?this.payload:[this.payload];if(!r.length)return{data:[],error:null};let n=Array.from(r.reduce((e,t)=>{for(let r of Object.keys(t||{}))e.add(r);return e},new Set)),i=[],a=r.map(e=>{let t=n.map(t=>(i.push(Y(t,e[t])),"?"));return`(${t.join(", ")})`}),o=`INSERT INTO ${this.table} (${n.join(", ")}) VALUES ${a.join(", ")}`;if("upsert"===this.operation){let e=this.upsertOptions?.onConflict||"",t=String(e).split(",").map(e=>e.trim()).filter(Boolean);if(t.length>0)if(this.upsertOptions?.ignoreDuplicates)o+=` ON CONFLICT (${t.join(", ")}) DO NOTHING`;else{let e=n.filter(e=>!t.includes(e)).map(e=>`${e} = EXCLUDED.${e}`);e.length>0?o+=` ON CONFLICT (${t.join(", ")}) DO UPDATE SET ${e.join(", ")}`:o+=` ON CONFLICT (${t.join(", ")}) DO NOTHING`}}if(this.returningColumns){let{columns:e}=B(this.returningColumns);o+=` RETURNING ${e.join(", ")}`}this.returningColumns?e=(e=t.prepare(o).all(...i)).map(q):(t.prepare(o).run(...i),e=[]);let s=this.returningColumns?e:null;if("single"===this.singleMode||"maybeSingle"===this.singleMode)return{data:s&&s[0]||null,error:null};return{data:s,error:null}}catch(e){return{data:null,error:e}}}executeUpdateOrDelete(){try{let e,t=M(),r=[],n=[],i=[];this.buildWhere(i,n);let a="";if("update"===this.operation){let e=Object.keys(this.payload||{}).map(e=>{let t=this.payload[e];return t instanceof w?`${e} = ${t.expr}`:(r.push(Y(e,t)),`${e} = ?`)});a=`UPDATE ${this.table} SET ${e.join(", ")}`}else a=`DELETE FROM ${this.table}`;i.length>0&&(a+=` WHERE ${i.join(" AND ")}`);let o=[...r,...n];if(this.returningColumns){let{columns:e}=B(this.returningColumns);a+=` RETURNING ${e.join(", ")}`}this.returningColumns?e=(e=t.prepare(a).all(...o)).map(q):(t.prepare(a).run(...o),e=[]);let s=this.returningColumns?e:null;if("single"===this.singleMode){if(!s||0===s.length)return{data:null,error:{message:"No rows",code:"PGRST116"}};return{data:s[0],error:null}}if("maybeSingle"===this.singleMode)return{data:s?.[0]||null,error:null};return{data:s,error:null}}catch(e){return{data:null,error:e}}}async execute(){return"select"===this.operation?this.executeSelect():"insert"===this.operation||"upsert"===this.operation?this.executeInsertOrUpsert():this.executeUpdateOrDelete()}}let W=new Set([...$,"depends_on","open_blockers","swarm_models","run_index","stage_decisions","definition","metadata","models","config","policy","done_criteria","outputs","task_snapshot","data_mapping"]);function q(e){if(!e||"object"!=typeof e)return e;let t={...e};for(let e of Object.keys(t)){if(W.has(e)&&"string"==typeof t[e])try{t[e]=JSON.parse(t[e])}catch{}("swarm"===e||"is_default"===e||"is_public"===e||"had_graph_before"===e)&&(0===t[e]?t[e]=!1:1===t[e]&&(t[e]=!0))}return t}e.s(["SqlExpression",0,w,"createAdminDbClientSQLite",0,function(){return{from:e=>new P(e),auth:{getUser:async()=>({data:{user:{id:o.id,email:o.email,user_metadata:{name:o.name,full_name:o.name}}},error:null}),exchangeCodeForSession:async()=>({error:null}),refreshSession:async()=>({data:{session:{access_token:"local-token",refresh_token:"local-refresh",expires_in:3600},user:{id:o.id,email:o.email}},error:null})},async rpc(e,t){if("check_rate_limit"!==e)return{data:null,error:{message:`Unsupported rpc: ${e}`}};let r=M(),n=t.p_user_id,i=t.p_endpoint,a=Number(t.p_limit||60),o=Number(t.p_window_seconds||60),s=new Date(Math.floor(new Date().getTime()/(1e3*o))*o*1e3);try{let e=`
|
|
354
354
|
INSERT INTO rate_limits (user_id, endpoint, window_start, request_count)
|
|
355
355
|
VALUES (?, ?, ?, 1)
|
|
356
356
|
ON CONFLICT (user_id, endpoint, window_start)
|
|
357
357
|
DO UPDATE SET request_count = rate_limits.request_count + 1
|
|
358
358
|
RETURNING request_count
|
|
359
|
-
`,t=r.prepare(e).get(n,i,s.toISOString());return{data:Number(t?.request_count||0)<=a,error:null}}catch(e){return{data:!1,error:e}}},channel:()=>({on(){return this},subscribe(e){return e&&e("SUBSCRIBED"),this}}),removeChannel(){}}},"getSQLiteDb",0,
|
|
359
|
+
`,t=r.prepare(e).get(n,i,s.toISOString());return{data:Number(t?.request_count||0)<=a,error:null}}catch(e){return{data:!1,error:e}}},channel:()=>({on(){return this},subscribe(e){return e&&e("SUBSCRIBED"),this}}),removeChannel(){}}},"getSQLiteDb",0,M,"sqlExpr",0,function(e){return new w(e)}],633211)}];
|
|
360
360
|
|
|
361
361
|
//# sourceMappingURL=apps_local_lib_sqlite-query-adapter_ts_0l95hik._.js.map
|
|
@@ -108,7 +108,7 @@ I am ${e}. ${o}
|
|
|
108
108
|
ON CONFLICT(key) DO UPDATE SET
|
|
109
109
|
applied_at = strftime('%Y-%m-%dT%H:%M:%fZ','now'),
|
|
110
110
|
metadata = excluded.metadata`).run(y,JSON.stringify(t)),n}e.s(["autoMigrateLegacyWorkspacesToProjects",0,w,"getLegacyWorkspaceMigrationStatus",0,function(e){if(!e)throw Error("getLegacyWorkspaceMigrationStatus requires an explicit database handle");x(e);let t=e.prepare("SELECT applied_at, metadata FROM app_migrations WHERE key = ? LIMIT 1").get(y);if(!t)return{applied:!1,appliedAt:null,metadata:null};let r=null;if(t.metadata)try{r=JSON.parse(t.metadata)}catch{r=null}return{applied:!0,appliedAt:t.applied_at,metadata:r}},"getLegacyWorkspaceSourceCounts",0,function(e){if(!e)throw Error("getLegacyWorkspaceSourceCounts requires an explicit database handle");let t=X(e);return{teams:t.legacyTeams?D(e,"teams"):0,teamAgents:t.legacyTeamAgents?D(e,"team_agents"):0,teamWorkspaces:t.legacyTeamWorkspaces?D(e,"team_workspaces"):0}},"getWorkspaceTeamTableState",0,X,"migrateLegacyWorkspacesToProjects",0,k],449748);let M=process.env.AGX_DATA_DIR||i.default.join(a.default.homedir(),".agx");class v{expr;constructor(e){this.expr=e}}let $=null;function H(){if($)return $;let e=process.env.SQLITE_DB_PATH||i.default.join(M,"agx-board.db");$=new t.DatabaseSync(e);let a=(0,C.validateSQLiteEnvironment)($,e);if(a.length>0){let e=a.map(e=>` - ${e.message}${e.fix?` (fix: ${e.fix})`:""}`);throw Error(`SQLite startup validation failed:
|
|
111
|
-
${e.join("\n")}`)}(function(e){let t=i.default.join(process.cwd(),"db","sqlite","001_agx_board_schema.sql");if(!n.default.existsSync(t))return console.warn(`[sqlite] DDL not found at ${t}, skipping schema init`);let r=n.default.readFileSync(t,"utf-8");e.exec(r)})($),function(e){if(e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='execution_graphs'").all().length>0&&((0,r.pragmaAll)(e,"table_info(execution_graphs)").some(e=>"schedule"===e.name)||e.exec("ALTER TABLE execution_graphs ADD COLUMN schedule JSON")),e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='projects'").all().length>0&&((0,r.pragmaAll)(e,"table_info(projects)").some(e=>"archived_at"===e.name)||e.exec("ALTER TABLE projects ADD COLUMN archived_at TEXT DEFAULT NULL")),e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='project_memory'").all().length>0&&((0,r.pragmaAll)(e,"table_info(project_memory)").some(e=>"producer"===e.name)||e.exec("ALTER TABLE project_memory ADD COLUMN producer TEXT NOT NULL DEFAULT 'human' CHECK(producer IN ('human', 'system'))"),e.exec("CREATE INDEX IF NOT EXISTS idx_project_memory_producer ON project_memory (producer)")),e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='agents'").all().length>0){let t=new Set((0,r.pragmaAll)(e,"table_info(agents)").map(e=>e.name));t.has("voice")||e.exec("ALTER TABLE agents ADD COLUMN voice TEXT"),t.has("seed")||e.exec("ALTER TABLE agents ADD COLUMN seed TEXT"),t.has("model")||e.exec("ALTER TABLE agents ADD COLUMN model TEXT"),t.has("provider")||e.exec("ALTER TABLE agents ADD COLUMN provider TEXT"),t.has("color")||e.exec("ALTER TABLE agents ADD COLUMN color TEXT"),t.has("title")||e.exec("ALTER TABLE agents ADD COLUMN
|
|
111
|
+
${e.join("\n")}`)}(function(e){let t=i.default.join(process.cwd(),"db","sqlite","001_agx_board_schema.sql");if(!n.default.existsSync(t))return console.warn(`[sqlite] DDL not found at ${t}, skipping schema init`);let r=n.default.readFileSync(t,"utf-8");e.exec(r)})($),function(e){if(e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='execution_graphs'").all().length>0&&((0,r.pragmaAll)(e,"table_info(execution_graphs)").some(e=>"schedule"===e.name)||e.exec("ALTER TABLE execution_graphs ADD COLUMN schedule JSON")),e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='projects'").all().length>0&&((0,r.pragmaAll)(e,"table_info(projects)").some(e=>"archived_at"===e.name)||e.exec("ALTER TABLE projects ADD COLUMN archived_at TEXT DEFAULT NULL")),e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='project_memory'").all().length>0&&((0,r.pragmaAll)(e,"table_info(project_memory)").some(e=>"producer"===e.name)||e.exec("ALTER TABLE project_memory ADD COLUMN producer TEXT NOT NULL DEFAULT 'human' CHECK(producer IN ('human', 'system'))"),e.exec("CREATE INDEX IF NOT EXISTS idx_project_memory_producer ON project_memory (producer)")),e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='agents'").all().length>0){let t=new Set((0,r.pragmaAll)(e,"table_info(agents)").map(e=>e.name));t.has("voice")||e.exec("ALTER TABLE agents ADD COLUMN voice TEXT"),t.has("seed")||e.exec("ALTER TABLE agents ADD COLUMN seed TEXT"),t.has("model")||e.exec("ALTER TABLE agents ADD COLUMN model TEXT"),t.has("provider")||e.exec("ALTER TABLE agents ADD COLUMN provider TEXT"),t.has("color")||e.exec("ALTER TABLE agents ADD COLUMN color TEXT"),t.has("title")&&!t.has("role")?e.exec("ALTER TABLE agents RENAME COLUMN title TO role"):t.has("role")||e.exec("ALTER TABLE agents ADD COLUMN role TEXT")}e.exec(`
|
|
112
112
|
CREATE TABLE IF NOT EXISTS agent_skills (
|
|
113
113
|
agent_id TEXT NOT NULL REFERENCES agents(id) ON DELETE CASCADE,
|
|
114
114
|
file TEXT NOT NULL,
|
package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_graph_082u-ls._.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module.exports=[83997,e=>{"use strict";var t=e.i(633211),r=e.i(801243);e.i(219233);var o=e.i(356942),
|
|
1
|
+
module.exports=[83997,e=>{"use strict";var t=e.i(633211),r=e.i(801243);e.i(219233);var o=e.i(356942),s=e.i(774553);let i=new Set(["replan","rollback"]);class n extends Error{constructor(e){super(`Execution graph not found: ${e}`),this.name="GraphNotFoundError"}}class d extends Error{nodeIds;constructor(e,t){super(`Execution graph ${e} is missing node(s): ${t.join(", ")}`),this.name="GraphNodeNotFoundError",this.nodeIds=t}}class a extends Error{taskId;existingGraphId;constructor(e,t){super(`Task ${e} is already bound to execution graph ${t}.`),this.name="GraphTaskAlreadyBoundError",this.taskId=e,this.existingGraphId=t}}function u(e){return null==e?null:JSON.stringify(e)}function c(e){if(null==e)return null;if("string"==typeof e)try{return JSON.parse(e)}catch{}return e}function l(e){let t=Date.parse(e);return Number.isNaN(t)?e:new Date(t).toISOString()}function p(e){return!e||"object"!=typeof e||Array.isArray(e)?{}:e}function h(e){if(!(0,s.isAutomationFrontmatterEnabled)()||!e.schedule)return;let t=(0,s.getAutomationRepository)(),r=(0,o.graphAutomationToDefinition)({graphId:e.id,taskId:e.taskId,schedule:e.schedule,createdAt:e.createdAt,updatedAt:e.updatedAt,executionState:e.executionState});t.upsertAutomation(r),t.updateAutomationState(e.id,{nextRunAt:e.schedule.nextTickAt,lastRunAt:e.schedule.lastTickAt,updatedAt:e.updatedAt,runCount:e.schedule.runCount,consecutiveFailures:e.schedule.consecutiveFailures,tickInProgress:e.schedule.tickInProgress})}function g(e){let{type:t,status:r,metrics:o,output:s,...i}=e;return{type:t,status:r,config:i,output:s??null,metrics:o??null}}function f(e){return{query(t,r){let o=e.prepare(t);return/^\s*(INSERT|UPDATE|DELETE)/i.test(t)&&!/RETURNING/i.test(t)?(o.run(...(r??[]).map(e=>e)),{rows:[]}):{rows:o.all(...(r??[]).map(e=>e))}}}}class _{getDb(){return(0,t.getSQLiteDb)()}createGraph(e,t){let o=this.getDb(),s=f(o);t?.skipTaskBinding&&(0,r.pragmaSet)(o,"foreign_keys = OFF");try{return(0,r.transaction)(o,()=>{let r=s.query("SELECT id FROM execution_graphs WHERE task_id = ? LIMIT 1",[e.taskId]).rows[0];if(r&&r.id!==e.id)throw new a(e.taskId,r.id);for(let[t,r]of(s.query(`INSERT INTO execution_graphs
|
|
2
2
|
(id, task_id, graph_version, mode, policy, done_criteria, schedule, created_at, updated_at)
|
|
3
3
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
4
4
|
ON CONFLICT (id) DO UPDATE SET
|
|
@@ -9,33 +9,38 @@ module.exports=[83997,e=>{"use strict";var t=e.i(633211),r=e.i(801243);e.i(21923
|
|
|
9
9
|
done_criteria = excluded.done_criteria,
|
|
10
10
|
schedule = excluded.schedule,
|
|
11
11
|
created_at = excluded.created_at,
|
|
12
|
-
updated_at = excluded.updated_at`,[e.id,e.taskId,e.graphVersion,e.mode,u(e.policy),u(e.doneCriteria),u(e.schedule??null),e.createdAt,e.updatedAt]),
|
|
13
|
-
VALUES (?, ?, ?, ?, ?, ?, ?)`,[e.id,t,o.type,o.status,u(o.config),u(o.output),u(o.metrics)])}for(let t of e.edges)
|
|
14
|
-
VALUES (?, ?, ?, ?, ?, ?)`,[e.id,t.from,t.to,t.type,t.condition??null,u(t.dataMapping??null)]);for(let t of e.versionHistory)this.appendEventInternal(
|
|
15
|
-
FROM graph_nodes WHERE graph_id = ? AND node_id IN (${o})`,[e,...r]),a=new Map;for(let e of
|
|
16
|
-
WHERE graph_id = ? AND node_id = ?`,[r.status??
|
|
17
|
-
VALUES (?, ?, ?, ?, ?, ?, ?)`,[e,r,t.type,t.status,u(t.config),u(t.output),u(t.metrics)])}if(t.edges)for(let r of(
|
|
18
|
-
VALUES (?, ?, ?, ?, ?, ?)`,[e,r.from,r.to,r.type,r.condition??null,u(r.dataMapping??null)]);let o=
|
|
12
|
+
updated_at = excluded.updated_at`,[e.id,e.taskId,e.graphVersion,e.mode,u(e.policy),u(e.doneCriteria),u(e.schedule??null),e.createdAt,e.updatedAt]),s.query("DELETE FROM graph_nodes WHERE graph_id = ?",[e.id]),s.query("DELETE FROM graph_edges WHERE graph_id = ?",[e.id]),Object.entries(e.nodes))){let o=g(r);s.query(`INSERT INTO graph_nodes (graph_id, node_id, type, status, config, output, metrics)
|
|
13
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)`,[e.id,t,o.type,o.status,u(o.config),u(o.output),u(o.metrics)])}for(let t of e.edges)s.query(`INSERT INTO graph_edges (graph_id, from_id, to_id, type, condition, data_mapping)
|
|
14
|
+
VALUES (?, ?, ?, ?, ?, ?)`,[e.id,t.from,t.to,t.type,t.condition??null,u(t.dataMapping??null)]);for(let t of e.versionHistory)this.appendEventInternal(s,e.id,t);for(let t of e.runtimeEvents??[])this.appendEventInternal(s,e.id,t);t?.skipTaskBinding||s.query("UPDATE tasks SET graph_id = ? WHERE id = ?",[e.id,e.taskId]);let o=this.getGraphForTask(s,e.taskId);if(!o)throw new n(e.id);return h(o),o})}finally{t?.skipTaskBinding&&(0,r.pragmaSet)(o,"foreign_keys = ON")}}getGraph(e){let t=this.getDb();return this.getGraphForTask(f(t),e)}updateNodeRuntime(e,t,o){let s=this.getDb(),i=f(s);return(0,r.transaction)(s,()=>{if(!i.query("SELECT id, graph_version FROM execution_graphs WHERE id = ?",[e]).rows[0])throw new n(e);let r=Object.keys(t);if(0===r.length){let t=i.query("SELECT graph_version, updated_at FROM execution_graphs WHERE id = ?",[e]);return{graphVersion:t.rows[0].graph_version,updatedAt:l(t.rows[0].updated_at)}}let o=r.map(()=>"?").join(", "),s=i.query(`SELECT node_id, type, status, config, output, metrics
|
|
15
|
+
FROM graph_nodes WHERE graph_id = ? AND node_id IN (${o})`,[e,...r]),a=new Map;for(let e of s.rows)a.set(e.node_id,e);let h=r.filter(e=>!a.has(e));if(h.length>0)throw new d(e,h);for(let o of r){let r=t[o],s=a.get(o);if(!s||!r)continue;let n={...p(c(s.config)),...p(r.configPatch)};void 0!==r.startedAt&&(n.startedAt=r.startedAt),void 0!==r.completedAt&&(n.completedAt=r.completedAt),void 0!==r.actualMinutes&&(n.actualMinutes=r.actualMinutes),i.query(`UPDATE graph_nodes SET status = ?, metrics = ?, output = ?, config = ?
|
|
16
|
+
WHERE graph_id = ? AND node_id = ?`,[r.status??s.status,u(r.metrics??c(s.metrics)),u(r.output??c(s.output)),u(n),e,o])}let g=i.query("UPDATE execution_graphs SET updated_at = datetime('now') WHERE id = ? RETURNING graph_version, updated_at",[e]);return{graphVersion:g.rows[0].graph_version,updatedAt:l(g.rows[0].updated_at)}})}updateGraphStructure(e,t,o){let s=this.getDb(),i=f(s);return(0,r.transaction)(s,()=>{let r=i.query("SELECT id, task_id, graph_version, mode, policy, done_criteria, schedule FROM execution_graphs WHERE id = ?",[e]).rows[0];if(!r)throw new n(e);if(t.nodes)for(let[r,o]of(i.query("DELETE FROM graph_nodes WHERE graph_id = ?",[e]),Object.entries(t.nodes))){let t=g(o);i.query(`INSERT INTO graph_nodes (graph_id, node_id, type, status, config, output, metrics)
|
|
17
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)`,[e,r,t.type,t.status,u(t.config),u(t.output),u(t.metrics)])}if(t.edges)for(let r of(i.query("DELETE FROM graph_edges WHERE graph_id = ?",[e]),t.edges))i.query(`INSERT INTO graph_edges (graph_id, from_id, to_id, type, condition, data_mapping)
|
|
18
|
+
VALUES (?, ?, ?, ?, ?, ?)`,[e,r.from,r.to,r.type,r.condition??null,u(r.dataMapping??null)]);let o=i.query(`UPDATE execution_graphs
|
|
19
19
|
SET mode = ?, policy = ?, done_criteria = ?, schedule = ?, updated_at = datetime('now')
|
|
20
20
|
WHERE id = ?
|
|
21
|
-
RETURNING graph_version, updated_at`,[t.mode??r.mode,u(t.policy??
|
|
21
|
+
RETURNING graph_version, updated_at`,[t.mode??r.mode,u(t.policy??c(r.policy)??{}),u(t.doneCriteria??c(r.done_criteria)??{}),u(t.schedule??c(r.schedule)??null),e]);if(void 0!==t.schedule){let e=this.getGraphForTask(i,r.task_id);e?.schedule&&h(e)}return{graphVersion:o.rows[0].graph_version,updatedAt:l(o.rows[0].updated_at)}})}appendEvent(e,t){let r=this.getDb();this.appendEventInternal(f(r),e,t)}getGraphForTask(e,t){let r=e.query(`SELECT id, task_id, graph_version, mode, execution_state, policy, done_criteria, schedule, created_at, updated_at
|
|
22
22
|
FROM execution_graphs WHERE task_id = ? ORDER BY updated_at DESC LIMIT 1`,[t]).rows[0];if(!r)return null;let n=e.query(`SELECT node_id, type, status, config, output, metrics
|
|
23
23
|
FROM graph_nodes WHERE graph_id = ? ORDER BY node_id ASC`,[r.id]),d=e.query(`SELECT from_id, to_id, type, condition, data_mapping
|
|
24
24
|
FROM graph_edges WHERE graph_id = ? ORDER BY from_id ASC, to_id ASC`,[r.id]),a=e.query(`SELECT event_type, payload, timestamp
|
|
25
|
-
FROM graph_events WHERE graph_id = ? ORDER BY timestamp ASC, event_type ASC`,[r.id]),u={};for(let e of n.rows)u[e.node_id]=function(e){let t={...p(
|
|
26
|
-
VALUES (?, ?, ?, ?)`,[t,r.eventType,u(r),r.timestamp])}
|
|
25
|
+
FROM graph_events WHERE graph_id = ? ORDER BY timestamp ASC, event_type ASC`,[r.id]),u={};for(let e of n.rows)u[e.node_id]=function(e){let t={...p(c(e.config)),type:e.type,status:e.status},r=c(e.metrics);null!==r&&(t.metrics=r);let o=c(e.output);return null!==o&&(t.output=o),t}(e);let h=d.rows.map(e=>({from:e.from_id,to:e.to_id,type:e.type,...e.condition?{condition:c(e.condition)}:{},...e.data_mapping?{dataMapping:c(e.data_mapping)}:{}})),g=[],f=[];for(let e of a.rows){let t=function(e){let t={...p(c(e.payload))};return"eventType"in t||(t.eventType=e.event_type),"timestamp"in t||(t.timestamp=l(e.timestamp)),t}(e);i.has(t.eventType)?g.push(t):f.push(t)}var _={id:r.id,taskId:r.task_id,graphVersion:r.graph_version,mode:r.mode,executionState:r.execution_state??void 0,nodes:u,edges:h,policy:c(r.policy)??{},doneCriteria:c(r.done_criteria)??{},schedule:c(r.schedule)??void 0,versionHistory:g,runtimeEvents:f,createdAt:l(r.created_at),updatedAt:l(r.updated_at)};if(!(0,s.isAutomationFrontmatterEnabled)())return _;let E=(0,s.getAutomationRepository)().getAutomation(_.id);return E&&"execution_graph"===E.definition.target.type?{..._,schedule:(0,o.automationRecordToGraphSchedule)(E,_.schedule)}:_}appendEventInternal(e,t,r){e.query(`INSERT INTO graph_events (graph_id, event_type, payload, timestamp)
|
|
26
|
+
VALUES (?, ?, ?, ?)`,[t,r.eventType,u(r),r.timestamp])}claimScheduleTick(e){return(this.getDb().prepare(`UPDATE execution_graphs
|
|
27
|
+
SET schedule = json_set(schedule, '$.tickInProgress', json('true')),
|
|
28
|
+
updated_at = strftime('%Y-%m-%dT%H:%M:%fZ','now')
|
|
29
|
+
WHERE task_id = ?
|
|
30
|
+
AND json_extract(schedule, '$.tickInProgress') = 0
|
|
31
|
+
AND json_extract(schedule, '$.state') = 'active'`).run(e).changes??0)>0}}let E=new _;e.s(["GraphStore",0,_,"deactivateSchedulesByRootMessageId",0,function(e){let r=e.trim();if(!r)return 0;let o=0;if((0,s.isAutomationFrontmatterEnabled)()){for(let e of(0,s.getAutomationRepository)().listVisibleAutomations({targetType:"execution_graph",state:"active",rootMessageId:r})){if("execution_graph"!==e.definition.target.type)continue;let r=e.definition.target.graphId??e.definition.id,s=e.definition.target.taskId??function(e){let r=e.trim();if(!r)return null;let o=(0,t.getSQLiteDb)().prepare(`SELECT task_id AS taskId
|
|
27
32
|
FROM execution_graphs
|
|
28
33
|
WHERE id = ?
|
|
29
|
-
LIMIT 1`).get(r);return o?.taskId??null}(r);if(!
|
|
34
|
+
LIMIT 1`).get(r);return o?.taskId??null}(r);if(!s)continue;let i=E.getGraph(s);i?.schedule&&(E.updateGraphStructure(i.id,{mode:i.mode,nodes:i.nodes,edges:i.edges,policy:i.policy,doneCriteria:i.doneCriteria,schedule:{...i.schedule,state:"stopped",tickInProgress:!1}},i.graphVersion),o+=1)}if(o>0||!(0,s.isAutomationDualReadEnabled)())return o}return Number((0,t.getSQLiteDb)().prepare(`UPDATE execution_graphs
|
|
30
35
|
SET schedule = json_set(schedule, '$.state', 'stopped', '$.tickInProgress', json('false')),
|
|
31
36
|
updated_at = strftime('%Y-%m-%dT%H:%M:%fZ','now')
|
|
32
37
|
WHERE schedule IS NOT NULL
|
|
33
38
|
AND json_extract(schedule, '$.rootMessageId') = ?
|
|
34
|
-
AND json_extract(schedule, '$.state') = 'active'`).run(r).changes??0)}])},932177,e=>{"use strict";var t=e.i(923715);e.s(["completeScheduleTick",0,function(e){if(!e.schedule||!e.schedule.tickInProgress)return e;let r=e.schedule,o=r.nextTickAt;return r.cronExpr&&(o=(0,t.computeNextTickFromCron)(r.cronExpr)),{...e,schedule:{...r,tickInProgress:!1,nextTickAt:o}}},"isScheduleTickComplete",0,function(e){if(!e.schedule)return!0;let t=new Set(["done","passed","failed","skipped"]);for(let r of e.schedule.resetNodeIds){let o=e.nodes[r];if(o&&!t.has(o.status))return!1}return!0},"scheduleTickIfDue",0,function(e,t=Date.now()){let r=t=>({graph:e,tickFired:!1,resetNodeIds:[],skipReason:t});if(!e.schedule)return r("no_schedule");let o=e.schedule;if("active"!==o.state)return r("not_active");if(o.tickInProgress)return r("tick_in_progress");if(null!=o.maxRuns&&o.runCount>=o.maxRuns)return r("max_runs_reached");if(o.cronExpr&&"number"==typeof o.nextTickAt){if(t<o.nextTickAt)return r("not_due")}else if(t-(o.lastTickAt??0)<o.intervalMs)return r("not_due");let
|
|
39
|
+
AND json_extract(schedule, '$.state') = 'active'`).run(r).changes??0)}])},932177,e=>{"use strict";var t=e.i(923715);e.s(["completeScheduleTick",0,function(e){if(!e.schedule||!e.schedule.tickInProgress)return e;let r=e.schedule,o=r.nextTickAt;return r.cronExpr&&(o=(0,t.computeNextTickFromCron)(r.cronExpr)),{...e,schedule:{...r,tickInProgress:!1,nextTickAt:o}}},"isScheduleTickComplete",0,function(e){if(!e.schedule)return!0;let t=new Set(["done","passed","failed","skipped"]);for(let r of e.schedule.resetNodeIds){let o=e.nodes[r];if(o&&!t.has(o.status))return!1}return!0},"scheduleTickIfDue",0,function(e,t=Date.now()){let r=t=>({graph:e,tickFired:!1,resetNodeIds:[],skipReason:t});if(!e.schedule)return r("no_schedule");let o=e.schedule;if("active"!==o.state)return r("not_active");if(o.tickInProgress)return r("tick_in_progress");if(null!=o.maxRuns&&o.runCount>=o.maxRuns)return r("max_runs_reached");if(o.cronExpr&&"number"==typeof o.nextTickAt){if(t<o.nextTickAt)return r("not_due")}else if(t-(o.lastTickAt??0)<o.intervalMs)return r("not_due");let s=JSON.parse(JSON.stringify(e)),i=[];for(let e of o.resetNodeIds){let t=s.nodes[e];t&&("done"===t.status||"passed"===t.status||"failed"===t.status||"skipped"===t.status)&&(s.nodes[e]={...t,status:"pending",startedAt:void 0,completedAt:void 0,metrics:void 0,..."function"===t.type?{output:void 0}:{},..."conditional"===t.type?{evaluatedTo:void 0}:{}},i.push(e))}return s.schedule={...o,tickInProgress:!0,lastTickAt:t,runCount:o.runCount+1},{graph:s,tickFired:!0,resetNodeIds:i}}])},71966,e=>{"use strict";var t=e.i(633211);e.i(219233);var r=e.i(356942),o=e.i(774553),s=e.i(932177),i=e.i(923715),n=e.i(64985),d=e.i(83997);async function a(e={}){let u=new d.GraphStore,c={tickedGraphIds:[],skippedGraphIds:[],errors:[],pendingWork:[]},l=function(){let e=new Map,s=(0,t.getSQLiteDb)().prepare(`
|
|
35
40
|
SELECT task_id, id, schedule
|
|
36
41
|
FROM execution_graphs
|
|
37
42
|
WHERE schedule IS NOT NULL
|
|
38
43
|
AND json_extract(schedule, '$.state') = 'active'
|
|
39
|
-
`).all(),
|
|
44
|
+
`).all(),i=new Map(s.map(e=>[e.id,e]));if((0,o.isAutomationFrontmatterEnabled)()){for(let t of(0,o.getAutomationRepository)().listVisibleAutomations({targetType:"execution_graph",state:"active"})){if("execution_graph"!==t.definition.target.type)continue;let o=t.definition.target.graphId??t.definition.id,s=t.definition.target.taskId??i.get(o)?.task_id??o;e.set(o,{taskId:s,graphId:o,schedule:(0,r.automationRecordToGraphSchedule)(t,i.get(o)?JSON.parse(i.get(o).schedule):void 0)})}if(!(0,o.isAutomationDualReadEnabled)())return[...e.values()]}for(let t of s)e.has(t.id)||e.set(t.id,{taskId:t.task_id,graphId:t.id,schedule:JSON.parse(t.schedule)});return[...e.values()]}();for(let{taskId:t}of(console.log(`[schedules:poll] found ${l.length} active schedule(s)`),l))try{let r=u.getGraph(t);if(!r){c.errors.push({graphId:t,error:Error("Graph not found")});continue}let o=(0,s.scheduleTickIfDue)(r);if(!o.tickFired){console.log(`[schedules:poll] ${t} skipped (${o.skipReason??"unknown"})`),c.skippedGraphIds.push(t);continue}console.log(`[schedules:poll] ${t} tick fired — resetting nodes`),u.updateGraphStructure(o.graph.id,{nodes:o.graph.nodes,schedule:o.graph.schedule});let d=(0,i.schedulerTick)(o.graph,e);console.log(`[schedules:poll] ${t} scheduler: fn=${d.functionToRun.length} work=${d.workToRun.length}`);let a=d.graph;for(let r of d.functionToRun){let o=a.nodes[r];if(o&&"function"===o.type)try{console.log(`[schedules:poll] ${t} executing function node "${r}"`);let o=await (0,n.executeNode)(a,r,e),s=o.graph.nodes[r];console.log(`[schedules:poll] ${t} function "${r}" → ${s?.status}`,s&&"output"in s?JSON.stringify(s.output)?.slice(0,200):""),a=o.graph}catch(e){console.error(`[schedules:poll] ${t} function "${r}" error:`,e),c.errors.push({graphId:t,error:e instanceof Error?e:Error(String(e))})}}u.updateGraphStructure(a.id,{nodes:a.nodes});let l=(0,i.schedulerTick)(a,e);for(let r of(console.log(`[schedules:poll] ${t} post-fn scheduler: cond=${l.control.conditionalNodeIds.length} work=${l.workToRun.length}`),a=l.graph,l.workToRun)){let o=a.nodes[r];if(o&&"work"===o.type)try{a=(await (0,n.executeNode)(a,r,e)).graph}catch(e){c.errors.push({graphId:t,error:e instanceof Error?e:Error(String(e))})}}if(l.workToRun.length>0){c.pendingWork.push({taskId:t,nodeIds:l.workToRun,graph:a}),u.updateGraphStructure(a.id,{nodes:a.nodes});let r=(0,i.schedulerTick)(a,e);for(let o of(console.log(`[schedules:poll] ${t} post-work scheduler: fn=${r.functionToRun.length} cond=${r.control.conditionalNodeIds.length}`),a=r.graph,r.functionToRun)){let r=a.nodes[o];if(r&&"function"===r.type)try{console.log(`[schedules:poll] ${t} executing post-work function "${o}"`),a=(await (0,n.executeNode)(a,o,e)).graph}catch(e){console.error(`[schedules:poll] ${t} post-work function "${o}" error:`,e),c.errors.push({graphId:t,error:e instanceof Error?e:Error(String(e))})}}}u.updateGraphStructure(a.id,{nodes:a.nodes});let p=Object.entries(a.nodes).map(([e,t])=>`${e}:${t.status}`).join(", ");console.log(`[schedules:poll] ${t} node states: ${p}`);let h=(0,s.isScheduleTickComplete)(a);if(console.log(`[schedules:poll] ${t} tick complete? ${h}`),h){let e=(0,s.completeScheduleTick)(a),r=e.schedule?.resetNodeIds.some(t=>e.nodes[t]?.status==="failed");if(e.schedule){let t=e.schedule.consecutiveFailures??0,o=r?t+1:0;e.schedule={...e.schedule,consecutiveFailures:o};let s=e.schedule.maxConsecutiveFailures;null!=s&&o>=s&&(e.schedule={...e.schedule,state:"paused"})}let o=u.getGraph(t);o?.schedule?.state==="stopped"&&(console.log(`[schedules:poll] ${t} schedule was stopped mid-tick, preserving stopped state`),e.schedule={...e.schedule,state:"stopped"}),u.updateGraphStructure(e.id,{nodes:e.nodes,schedule:e.schedule})}c.tickedGraphIds.push(t)}catch(e){console.error(`[schedules:poll] ${t} caught error:`,e),c.errors.push({graphId:t,error:e instanceof Error?e:Error(String(e))});try{let e=u.getGraph(t);if(e?.schedule?.tickInProgress){let r=(0,s.completeScheduleTick)(e);u.updateGraphStructure(r.id,{nodes:r.nodes,schedule:r.schedule}),console.log(`[schedules:poll] ${t} force-completed stuck tick`)}}catch{}}return c}e.s(["pollSchedules",0,a])}];
|
|
40
45
|
|
|
41
46
|
//# sourceMappingURL=apps_local_src_graph_082u-ls._.js.map
|