@jiggai/kitchen 0.1.12 → 0.2.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/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +21 -0
- package/.next/build-manifest.json +6 -6
- package/.next/prerender-manifest.json +11 -6
- package/.next/routes-manifest.json +146 -0
- package/.next/server/app/_global-error/page/build-manifest.json +4 -4
- package/.next/server/app/_global-error/page.js +3 -3
- package/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +2 -2
- package/.next/server/app/_global-error.rsc +2 -2
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page/build-manifest.json +4 -4
- package/.next/server/app/_not-found/page.js +10 -9
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +5 -5
- package/.next/server/app/_not-found.segments/_full.segment.rsc +5 -5
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/agents/[agentId]/page/build-manifest.json +4 -4
- package/.next/server/app/agents/[agentId]/page.js +8 -8
- package/.next/server/app/agents/[agentId]/page.js.nft.json +1 -1
- package/.next/server/app/agents/[agentId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/[id]/route.js +1 -1
- package/.next/server/app/api/agents/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/agents/add/route.js +1 -1
- package/.next/server/app/api/agents/add/route.js.nft.json +1 -1
- package/.next/server/app/api/agents/file/route.js +1 -1
- package/.next/server/app/api/agents/file/route.js.nft.json +1 -1
- package/.next/server/app/api/agents/files/route.js +1 -1
- package/.next/server/app/api/agents/files/route.js.nft.json +1 -1
- package/.next/server/app/api/agents/identity/route.js +1 -1
- package/.next/server/app/api/agents/identity/route.js.nft.json +1 -1
- package/.next/server/app/api/agents/route.js +1 -1
- package/.next/server/app/api/agents/route.js.nft.json +1 -1
- package/.next/server/app/api/agents/skills/install/route.js +1 -1
- package/.next/server/app/api/agents/skills/install/route.js.nft.json +1 -1
- package/.next/server/app/api/agents/skills/route.js +1 -1
- package/.next/server/app/api/agents/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/agents/update/route.js +1 -1
- package/.next/server/app/api/agents/update/route.js.nft.json +1 -1
- package/.next/server/app/api/channels/bindings/route.js +1 -1
- package/.next/server/app/api/channels/bindings/route.js.nft.json +1 -1
- package/.next/server/app/api/cron/delete/route.js +1 -1
- package/.next/server/app/api/cron/delete/route.js.nft.json +1 -1
- package/.next/server/app/api/cron/job/route.js +1 -1
- package/.next/server/app/api/cron/job/route.js.nft.json +1 -1
- package/.next/server/app/api/cron/jobs/route.js +1 -1
- package/.next/server/app/api/cron/jobs/route.js.nft.json +1 -1
- package/.next/server/app/api/cron/recipe-installed/route.js +1 -1
- package/.next/server/app/api/cron/recipe-installed/route.js.nft.json +1 -1
- package/.next/server/app/api/gateway/restart/route.js +1 -1
- package/.next/server/app/api/gateway/restart/route.js.nft.json +1 -1
- package/.next/server/app/api/goals/[id]/promote/route.js +1 -1
- package/.next/server/app/api/goals/[id]/promote/route.js.nft.json +1 -1
- package/.next/server/app/api/goals/[id]/route.js +1 -1
- package/.next/server/app/api/goals/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/goals/route.js +1 -1
- package/.next/server/app/api/goals/route.js.nft.json +1 -1
- package/.next/server/app/api/ids/check/route.js +1 -1
- package/.next/server/app/api/ids/check/route.js.nft.json +1 -1
- package/.next/server/app/api/marketplace/recipes/[slug]/route.js +1 -1
- package/.next/server/app/api/marketplace/recipes/[slug]/route.js.nft.json +1 -1
- package/.next/server/app/api/marketplace/recipes/route.js +1 -1
- package/.next/server/app/api/marketplace/recipes/route.js.nft.json +1 -1
- package/.next/server/app/api/recipes/[id]/route.js +1 -1
- package/.next/server/app/api/recipes/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/recipes/clone/route.js +1 -1
- package/.next/server/app/api/recipes/clone/route.js.nft.json +1 -1
- package/.next/server/app/api/recipes/custom-team/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/recipes/custom-team/route/build-manifest.json +11 -0
- package/.next/server/app/api/recipes/custom-team/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/recipes/custom-team/route.js +6 -0
- package/.next/server/app/api/recipes/custom-team/route.js.map +5 -0
- package/.next/server/app/api/recipes/custom-team/route.js.nft.json +1 -0
- package/.next/server/app/api/recipes/custom-team/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/recipes/delete/route.js +1 -1
- package/.next/server/app/api/recipes/delete/route.js.nft.json +1 -1
- package/.next/server/app/api/recipes/route.js +1 -1
- package/.next/server/app/api/recipes/route.js.nft.json +1 -1
- package/.next/server/app/api/recipes/team-agents/route.js +1 -1
- package/.next/server/app/api/recipes/team-agents/route.js.nft.json +1 -1
- package/.next/server/app/api/scaffold/route.js +1 -2
- package/.next/server/app/api/scaffold/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/cron-installation/route.js +1 -1
- package/.next/server/app/api/settings/cron-installation/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/available/route.js +1 -1
- package/.next/server/app/api/skills/available/route.js.nft.json +1 -1
- package/.next/server/app/api/swarms/start/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/swarms/start/route/build-manifest.json +11 -0
- package/.next/server/app/api/swarms/start/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/swarms/start/route.js +6 -0
- package/.next/server/app/api/swarms/start/route.js.map +5 -0
- package/.next/server/app/api/swarms/start/route.js.nft.json +1 -0
- package/.next/server/app/api/swarms/start/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/swarms/status/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/swarms/status/route/build-manifest.json +11 -0
- package/.next/server/app/api/swarms/status/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/swarms/status/route.js +6 -0
- package/.next/server/app/api/swarms/status/route.js.map +5 -0
- package/.next/server/app/api/swarms/status/route.js.nft.json +1 -0
- package/.next/server/app/api/swarms/status/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/teams/[teamId]/tickets/assign/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/teams/[teamId]/tickets/assign/route/build-manifest.json +11 -0
- package/.next/server/app/api/teams/[teamId]/tickets/assign/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/teams/[teamId]/tickets/assign/route.js +6 -0
- package/.next/server/app/api/teams/[teamId]/tickets/assign/route.js.map +5 -0
- package/.next/server/app/api/teams/[teamId]/tickets/assign/route.js.nft.json +1 -0
- package/.next/server/app/api/teams/[teamId]/tickets/assign/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/teams/[teamId]/tickets/assignees/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/teams/[teamId]/tickets/assignees/route/build-manifest.json +11 -0
- package/.next/server/app/api/teams/[teamId]/tickets/assignees/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/teams/[teamId]/tickets/assignees/route.js +6 -0
- package/.next/server/app/api/teams/[teamId]/tickets/assignees/route.js.map +5 -0
- package/.next/server/app/api/teams/[teamId]/tickets/assignees/route.js.nft.json +1 -0
- package/.next/server/app/api/teams/[teamId]/tickets/assignees/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/teams/[teamId]/tickets/delete/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/teams/[teamId]/tickets/delete/route/build-manifest.json +11 -0
- package/.next/server/app/api/teams/[teamId]/tickets/delete/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/teams/[teamId]/tickets/delete/route.js +6 -0
- package/.next/server/app/api/teams/[teamId]/tickets/delete/route.js.map +5 -0
- package/.next/server/app/api/teams/[teamId]/tickets/delete/route.js.nft.json +1 -0
- package/.next/server/app/api/teams/[teamId]/tickets/delete/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/teams/[teamId]/tickets/move/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/teams/[teamId]/tickets/move/route/build-manifest.json +11 -0
- package/.next/server/app/api/teams/[teamId]/tickets/move/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/teams/[teamId]/tickets/move/route.js +6 -0
- package/.next/server/app/api/teams/[teamId]/tickets/move/route.js.map +5 -0
- package/.next/server/app/api/teams/[teamId]/tickets/move/route.js.nft.json +1 -0
- package/.next/server/app/api/teams/[teamId]/tickets/move/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/teams/[teamId]/tickets/move-to-goals/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/teams/[teamId]/tickets/move-to-goals/route/build-manifest.json +11 -0
- package/.next/server/app/api/teams/[teamId]/tickets/move-to-goals/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/teams/[teamId]/tickets/move-to-goals/route.js +6 -0
- package/.next/server/app/api/teams/[teamId]/tickets/move-to-goals/route.js.map +5 -0
- package/.next/server/app/api/teams/[teamId]/tickets/move-to-goals/route.js.nft.json +1 -0
- package/.next/server/app/api/teams/[teamId]/tickets/move-to-goals/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/teams/file/route.js +1 -1
- package/.next/server/app/api/teams/file/route.js.nft.json +1 -1
- package/.next/server/app/api/teams/files/route.js +1 -1
- package/.next/server/app/api/teams/files/route.js.nft.json +1 -1
- package/.next/server/app/api/teams/memory/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/teams/memory/route/build-manifest.json +11 -0
- package/.next/server/app/api/teams/memory/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/teams/memory/route.js +6 -0
- package/.next/server/app/api/teams/memory/route.js.map +5 -0
- package/.next/server/app/api/teams/memory/route.js.nft.json +1 -0
- package/.next/server/app/api/teams/memory/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/teams/meta/route.js +1 -1
- package/.next/server/app/api/teams/meta/route.js.nft.json +1 -1
- package/.next/server/app/api/teams/orchestrator/install/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/teams/orchestrator/install/route/build-manifest.json +11 -0
- package/.next/server/app/api/teams/orchestrator/install/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/teams/orchestrator/install/route.js +6 -0
- package/.next/server/app/api/teams/orchestrator/install/route.js.map +5 -0
- package/.next/server/app/api/teams/orchestrator/install/route.js.nft.json +1 -0
- package/.next/server/app/api/teams/orchestrator/install/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/teams/orchestrator/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/teams/orchestrator/route/build-manifest.json +11 -0
- package/.next/server/app/api/teams/orchestrator/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/teams/orchestrator/route.js +6 -0
- package/.next/server/app/api/teams/orchestrator/route.js.map +5 -0
- package/.next/server/app/api/teams/orchestrator/route.js.nft.json +1 -0
- package/.next/server/app/api/teams/orchestrator/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/teams/remove-team/route.js +2 -1
- package/.next/server/app/api/teams/remove-team/route.js.nft.json +1 -1
- package/.next/server/app/api/teams/skills/install/route.js +1 -1
- package/.next/server/app/api/teams/skills/install/route.js.nft.json +1 -1
- package/.next/server/app/api/teams/skills/route.js +1 -1
- package/.next/server/app/api/teams/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/teams/workflow-runs/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/teams/workflow-runs/route/build-manifest.json +11 -0
- package/.next/server/app/api/teams/workflow-runs/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/teams/workflow-runs/route.js +7 -0
- package/.next/server/app/api/teams/workflow-runs/route.js.map +5 -0
- package/.next/server/app/api/teams/workflow-runs/route.js.nft.json +1 -0
- package/.next/server/app/api/teams/workflow-runs/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/teams/workflow-templates/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/teams/workflow-templates/route/build-manifest.json +11 -0
- package/.next/server/app/api/teams/workflow-templates/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/teams/workflow-templates/route.js +6 -0
- package/.next/server/app/api/teams/workflow-templates/route.js.map +5 -0
- package/.next/server/app/api/teams/workflow-templates/route.js.nft.json +1 -0
- package/.next/server/app/api/teams/workflow-templates/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/teams/workflows/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/teams/workflows/route/build-manifest.json +11 -0
- package/.next/server/app/api/teams/workflows/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/teams/workflows/route.js +6 -0
- package/.next/server/app/api/teams/workflows/route.js.map +5 -0
- package/.next/server/app/api/teams/workflows/route.js.nft.json +1 -0
- package/.next/server/app/api/teams/workflows/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/tickets/assign/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/tickets/assign/route/build-manifest.json +11 -0
- package/.next/server/app/api/tickets/assign/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/tickets/assign/route.js +6 -0
- package/.next/server/app/api/tickets/assign/route.js.map +5 -0
- package/.next/server/app/api/tickets/assign/route.js.nft.json +1 -0
- package/.next/server/app/api/tickets/assign/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/tickets/assignees/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/tickets/assignees/route/build-manifest.json +11 -0
- package/.next/server/app/api/tickets/assignees/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/tickets/assignees/route.js +6 -0
- package/.next/server/app/api/tickets/assignees/route.js.map +5 -0
- package/.next/server/app/api/tickets/assignees/route.js.nft.json +1 -0
- package/.next/server/app/api/tickets/assignees/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/tickets/move/route.js +1 -1
- package/.next/server/app/api/tickets/move/route.js.nft.json +1 -1
- package/.next/server/app/channels/page/build-manifest.json +4 -4
- package/.next/server/app/channels/page.js +8 -8
- package/.next/server/app/channels/page.js.nft.json +1 -1
- package/.next/server/app/channels/page_client-reference-manifest.js +1 -1
- package/.next/server/app/channels.html +2 -2
- package/.next/server/app/channels.rsc +6 -6
- package/.next/server/app/channels.segments/_full.segment.rsc +6 -6
- package/.next/server/app/channels.segments/_head.segment.rsc +1 -1
- package/.next/server/app/channels.segments/_index.segment.rsc +3 -3
- package/.next/server/app/channels.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/channels.segments/channels/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/channels.segments/channels.segment.rsc +1 -1
- package/.next/server/app/cron-jobs/page/build-manifest.json +4 -4
- package/.next/server/app/cron-jobs/page.js +8 -8
- package/.next/server/app/cron-jobs/page.js.nft.json +1 -1
- package/.next/server/app/cron-jobs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/cron-jobs.html +1 -1
- package/.next/server/app/cron-jobs.rsc +7 -7
- package/.next/server/app/cron-jobs.segments/_full.segment.rsc +7 -7
- package/.next/server/app/cron-jobs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/cron-jobs.segments/_index.segment.rsc +3 -3
- package/.next/server/app/cron-jobs.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/cron-jobs.segments/cron-jobs/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/cron-jobs.segments/cron-jobs.segment.rsc +1 -1
- package/.next/server/app/goals/[id]/page/build-manifest.json +4 -4
- package/.next/server/app/goals/[id]/page.js +8 -8
- package/.next/server/app/goals/[id]/page.js.nft.json +1 -1
- package/.next/server/app/goals/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/goals/new/page/build-manifest.json +4 -4
- package/.next/server/app/goals/new/page.js +8 -8
- package/.next/server/app/goals/new/page.js.nft.json +1 -1
- package/.next/server/app/goals/new/page_client-reference-manifest.js +1 -1
- package/.next/server/app/goals/new.html +2 -2
- package/.next/server/app/goals/new.rsc +6 -6
- package/.next/server/app/goals/new.segments/_full.segment.rsc +6 -6
- package/.next/server/app/goals/new.segments/_head.segment.rsc +1 -1
- package/.next/server/app/goals/new.segments/_index.segment.rsc +3 -3
- package/.next/server/app/goals/new.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/goals/new.segments/goals/new/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/goals/new.segments/goals/new.segment.rsc +1 -1
- package/.next/server/app/goals/new.segments/goals.segment.rsc +1 -1
- package/.next/server/app/goals/page/build-manifest.json +4 -4
- package/.next/server/app/goals/page.js +8 -8
- package/.next/server/app/goals/page.js.nft.json +1 -1
- package/.next/server/app/goals/page_client-reference-manifest.js +1 -1
- package/.next/server/app/goals.html +1 -1
- package/.next/server/app/goals.rsc +6 -6
- package/.next/server/app/goals.segments/_full.segment.rsc +6 -6
- package/.next/server/app/goals.segments/_head.segment.rsc +1 -1
- package/.next/server/app/goals.segments/_index.segment.rsc +3 -3
- package/.next/server/app/goals.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/goals.segments/goals/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/goals.segments/goals.segment.rsc +1 -1
- package/.next/server/app/manifest.webmanifest/route/app-paths-manifest.json +3 -0
- package/.next/server/app/manifest.webmanifest/route/build-manifest.json +11 -0
- package/.next/server/app/manifest.webmanifest/route/server-reference-manifest.json +4 -0
- package/.next/server/app/manifest.webmanifest/route.js +6 -0
- package/.next/server/app/manifest.webmanifest/route.js.map +5 -0
- package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -0
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +2 -0
- package/.next/server/app/manifest.webmanifest.body +1 -0
- package/.next/server/app/manifest.webmanifest.meta +1 -0
- package/.next/server/app/page/build-manifest.json +4 -4
- package/.next/server/app/page.js +10 -9
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/recipes/[id]/page/build-manifest.json +4 -4
- package/.next/server/app/recipes/[id]/page.js +10 -9
- package/.next/server/app/recipes/[id]/page.js.nft.json +1 -1
- package/.next/server/app/recipes/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/recipes/page/build-manifest.json +4 -4
- package/.next/server/app/recipes/page.js +9 -9
- package/.next/server/app/recipes/page.js.nft.json +1 -1
- package/.next/server/app/recipes/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page/build-manifest.json +4 -4
- package/.next/server/app/settings/page.js +8 -8
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +6 -6
- package/.next/server/app/settings.segments/_full.segment.rsc +6 -6
- package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_index.segment.rsc +3 -3
- package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
- package/.next/server/app/teams/[teamId]/page/build-manifest.json +4 -4
- package/.next/server/app/teams/[teamId]/page.js +10 -9
- package/.next/server/app/teams/[teamId]/page.js.nft.json +1 -1
- package/.next/server/app/teams/[teamId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/teams/[teamId]/tickets/[ticket]/page/app-paths-manifest.json +3 -0
- package/.next/server/app/teams/[teamId]/tickets/[ticket]/page/build-manifest.json +17 -0
- package/.next/server/app/teams/[teamId]/tickets/[ticket]/page/next-font-manifest.json +11 -0
- package/.next/server/app/teams/[teamId]/tickets/[ticket]/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/teams/[teamId]/tickets/[ticket]/page/server-reference-manifest.json +4 -0
- package/.next/server/app/teams/[teamId]/tickets/[ticket]/page.js +18 -0
- package/.next/server/app/teams/[teamId]/tickets/[ticket]/page.js.map +5 -0
- package/.next/server/app/teams/[teamId]/tickets/[ticket]/page.js.nft.json +1 -0
- package/.next/server/app/teams/[teamId]/tickets/[ticket]/page_client-reference-manifest.js +2 -0
- package/.next/server/app/teams/[teamId]/tickets/page/app-paths-manifest.json +3 -0
- package/.next/server/app/teams/[teamId]/tickets/page/build-manifest.json +17 -0
- package/.next/server/app/teams/[teamId]/tickets/page/next-font-manifest.json +11 -0
- package/.next/server/app/teams/[teamId]/tickets/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/teams/[teamId]/tickets/page/server-reference-manifest.json +4 -0
- package/.next/server/app/teams/[teamId]/tickets/page.js +18 -0
- package/.next/server/app/teams/[teamId]/tickets/page.js.map +5 -0
- package/.next/server/app/teams/[teamId]/tickets/page.js.nft.json +1 -0
- package/.next/server/app/teams/[teamId]/tickets/page_client-reference-manifest.js +2 -0
- package/.next/server/app/teams/[teamId]/workflows/[workflowId]/page/app-paths-manifest.json +3 -0
- package/.next/server/app/teams/[teamId]/workflows/[workflowId]/page/build-manifest.json +17 -0
- package/.next/server/app/teams/[teamId]/workflows/[workflowId]/page/next-font-manifest.json +11 -0
- package/.next/server/app/teams/[teamId]/workflows/[workflowId]/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/teams/[teamId]/workflows/[workflowId]/page/server-reference-manifest.json +4 -0
- package/.next/server/app/teams/[teamId]/workflows/[workflowId]/page.js +19 -0
- package/.next/server/app/teams/[teamId]/workflows/[workflowId]/page.js.map +5 -0
- package/.next/server/app/teams/[teamId]/workflows/[workflowId]/page.js.nft.json +1 -0
- package/.next/server/app/teams/[teamId]/workflows/[workflowId]/page_client-reference-manifest.js +2 -0
- package/.next/server/app/teams/[teamId]/workflows/page/app-paths-manifest.json +3 -0
- package/.next/server/app/teams/[teamId]/workflows/page/build-manifest.json +17 -0
- package/.next/server/app/teams/[teamId]/workflows/page/next-font-manifest.json +11 -0
- package/.next/server/app/teams/[teamId]/workflows/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/teams/[teamId]/workflows/page/server-reference-manifest.json +4 -0
- package/.next/server/app/teams/[teamId]/workflows/page.js +20 -0
- package/.next/server/app/teams/[teamId]/workflows/page.js.map +5 -0
- package/.next/server/app/teams/[teamId]/workflows/page.js.nft.json +1 -0
- package/.next/server/app/teams/[teamId]/workflows/page_client-reference-manifest.js +2 -0
- package/.next/server/app/tickets/[ticket]/page/build-manifest.json +4 -4
- package/.next/server/app/tickets/[ticket]/page.js +8 -8
- package/.next/server/app/tickets/[ticket]/page.js.nft.json +1 -1
- package/.next/server/app/tickets/[ticket]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/tickets/page/build-manifest.json +4 -4
- package/.next/server/app/tickets/page.js +8 -8
- package/.next/server/app/tickets/page.js.nft.json +1 -1
- package/.next/server/app/tickets/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +21 -0
- package/.next/server/chunks/[root-of-the-server]__04d535a1._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__04d535a1._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0554d494._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0554d494._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__05f5e243._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__05f5e243._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0e5f94e2._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0e5f94e2._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__107d374d._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__107d374d._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__1106aaf7._.js +8 -0
- package/.next/server/chunks/[root-of-the-server]__1106aaf7._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__1805932c._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1805932c._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__26c618a3._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__26c618a3._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__2fa553db._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__2fa553db._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__392e585d._.js +18 -0
- package/.next/server/chunks/[root-of-the-server]__392e585d._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__3cddf0a5._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__3cddf0a5._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__3f7058b4._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__3f7058b4._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__477c3d5b._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__477c3d5b._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__47eb3111._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__47eb3111._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__4898071c._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__59a6cf09._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__59a6cf09._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__5ea38a67._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__5ea38a67._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__6629e914._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__6629e914._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__667c3a2d._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__667c3a2d._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__691a8e5d._.js +6 -0
- package/.next/server/chunks/[root-of-the-server]__691a8e5d._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__698cf062._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__698cf062._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__69be1758._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__69be1758._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__6d8e7b75._.js +6 -0
- package/.next/server/chunks/[root-of-the-server]__6d8e7b75._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__6e5826c5._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__6e5826c5._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__795578f0._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__795578f0._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__7a331e51._.js +8 -0
- package/.next/server/chunks/[root-of-the-server]__7a331e51._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__7e46fb06._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__7e46fb06._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__864a08dd._.js +10 -0
- package/.next/server/chunks/[root-of-the-server]__864a08dd._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__8a811a30._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__8a811a30._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__8e27e9f7._.js +8 -0
- package/.next/server/chunks/[root-of-the-server]__8e27e9f7._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__8ea22d0a._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__8ea22d0a._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__904a6d9f._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__904a6d9f._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__a12dc320._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__a12dc320._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__a6ade549._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__a6ade549._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__abcda400._.js +6 -0
- package/.next/server/chunks/[root-of-the-server]__abcda400._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__b002764e._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__b002764e._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__bc3630f4._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__bc3630f4._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__befb8c19._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__befb8c19._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__bf608f29._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__be5f57b2._.js.map → [root-of-the-server]__bf608f29._.js.map} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__74b80ca4._.js → [root-of-the-server]__c63a9f28._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__c86c0469._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__c86c0469._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__c9e4c772._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__c9e4c772._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__cbe01b74._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__cbe01b74._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__ce9cfa39._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__ce9cfa39._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__d924e5ac._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__d924e5ac._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__e40409a2._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__e40409a2._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__e6fa5823._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__e6fa5823._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__e8bfeaba._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__e8bfeaba._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__e8f8017b._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__e8f8017b._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__ee5cefd8._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__ee5cefd8._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__ef60acef._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__ef60acef._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__fdda9176._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__a6ac3ddf._.js.map → [root-of-the-server]__fdda9176._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__fec14c75._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__fec14c75._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__fef7183d._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__fef7183d._.js.map +1 -0
- package/.next/server/chunks/_next-internal_server_app_api_recipes_custom-team_route_actions_861b1489.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_swarms_start_route_actions_b79e9029.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_swarms_start_route_actions_b79e9029.js.map +1 -0
- package/.next/server/chunks/_next-internal_server_app_api_swarms_status_route_actions_54826df0.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_swarms_status_route_actions_54826df0.js.map +1 -0
- package/.next/server/chunks/_next-internal_server_app_api_teams_[teamId]_tickets_move_route_actions_b47d8708.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_teams_[teamId]_tickets_move_route_actions_b47d8708.js.map +1 -0
- package/.next/server/chunks/_next-internal_server_app_api_teams_memory_route_actions_5b7dc699.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_teams_memory_route_actions_5b7dc699.js.map +1 -0
- package/.next/server/chunks/_next-internal_server_app_api_teams_orchestrator_install_route_actions_49b6602b.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_teams_orchestrator_install_route_actions_49b6602b.js.map +1 -0
- package/.next/server/chunks/_next-internal_server_app_api_teams_orchestrator_route_actions_1949c463.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_teams_orchestrator_route_actions_1949c463.js.map +1 -0
- package/.next/server/chunks/_next-internal_server_app_api_teams_workflow-runs_route_actions_8327ac7d.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_teams_workflow-runs_route_actions_8327ac7d.js.map +1 -0
- package/.next/server/chunks/_next-internal_server_app_api_teams_workflow-templates_route_actions_87b51d57.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_teams_workflow-templates_route_actions_87b51d57.js.map +1 -0
- package/.next/server/chunks/_next-internal_server_app_api_teams_workflows_route_actions_43dd6e07.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_teams_workflows_route_actions_43dd6e07.js.map +1 -0
- package/.next/server/chunks/_next-internal_server_app_api_tickets_assign_route_actions_629cc773.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_tickets_assign_route_actions_629cc773.js.map +1 -0
- package/.next/server/chunks/_next-internal_server_app_api_tickets_assignees_route_actions_64d3d63e.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_tickets_assignees_route_actions_64d3d63e.js.map +1 -0
- package/.next/server/chunks/_next-internal_server_app_manifest_webmanifest_route_actions_1bff3fca.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_manifest_webmanifest_route_actions_1bff3fca.js.map +1 -0
- package/.next/server/chunks/ce889_server_app_api_teams_[teamId]_tickets_assign_route_actions_50521c46.js +3 -0
- package/.next/server/chunks/ce889_server_app_api_teams_[teamId]_tickets_assign_route_actions_50521c46.js.map +1 -0
- package/.next/server/chunks/ce889_server_app_api_teams_[teamId]_tickets_assignees_route_actions_75675d78.js +3 -0
- package/.next/server/chunks/ce889_server_app_api_teams_[teamId]_tickets_assignees_route_actions_75675d78.js.map +1 -0
- package/.next/server/chunks/ce889_server_app_api_teams_[teamId]_tickets_delete_route_actions_9d6ca9f4.js +3 -0
- package/.next/server/chunks/ce889_server_app_api_teams_[teamId]_tickets_delete_route_actions_9d6ca9f4.js.map +1 -0
- package/.next/server/chunks/ce889_server_app_api_teams_[teamId]_tickets_move-to-goals_route_actions_760612ca.js +3 -0
- package/.next/server/chunks/ce889_server_app_api_teams_[teamId]_tickets_move-to-goals_route_actions_760612ca.js.map +1 -0
- package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_1fe98a49.js +16 -0
- package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_1fe98a49.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0d4cb2ba._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__285ae6b7._.js +3 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__46e08d44._.js.map → [root-of-the-server]__285ae6b7._.js.map} +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__28f5d174._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__28f5d174._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__2bef6884._.js +3 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__15600e29._.js.map → [root-of-the-server]__2bef6884._.js.map} +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__37c705d4._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__37c705d4._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__3ec61b25._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__3ec61b25._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__3efd25c4._.js +3 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__2a6f1e3e._.js.map → [root-of-the-server]__3efd25c4._.js.map} +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__44d2d5fa._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__44d2d5fa._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__49281b4c._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__49281b4c._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__4c4391c1._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__4c4391c1._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__4c6592ca._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__4c6592ca._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__682758bd._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__682758bd._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__6bd48d33._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__6bd48d33._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__78972f52._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__78972f52._.js.map +1 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__e2e52c6e._.js → [root-of-the-server]__78cdd31e._.js} +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__92524828._.js +3 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__247198dc._.js.map → [root-of-the-server]__92524828._.js.map} +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__9a7d79aa._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__9a7d79aa._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__9e1ab064._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__9e1ab064._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__ad654f09._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__ad654f09._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__b2617fbf._.js +3 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__fd669584._.js.map → [root-of-the-server]__b2617fbf._.js.map} +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__b5f65083._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__b5f65083._.js.map +1 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__4c6cc96d._.js → [root-of-the-server]__de18d058._.js} +2 -2
- package/.next/server/chunks/ssr/{[root-of-the-server]__4c6cc96d._.js.map → [root-of-the-server]__de18d058._.js.map} +1 -1
- package/.next/server/chunks/ssr/{[root-of-the-server]__7180d770._.js → [root-of-the-server]__e364449b._.js} +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__e364449b._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__e5d416d5._.js +3 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__3ad3e5b1._.js.map → [root-of-the-server]__e5d416d5._.js.map} +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__e94ab521._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__e94ab521._.js.map +1 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__b9356576._.js → [root-of-the-server]__f62d412e._.js} +2 -2
- package/.next/server/chunks/ssr/{[root-of-the-server]__b9356576._.js.map → [root-of-the-server]__f62d412e._.js.map} +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__f8a2f82d._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__f8a2f82d._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__fbe5ff69._.js +3 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__3575e6da._.js.map → [root-of-the-server]__fbe5ff69._.js.map} +1 -1
- package/.next/server/chunks/ssr/_018dfe6b._.js +27 -0
- package/.next/server/chunks/ssr/_018dfe6b._.js.map +1 -0
- package/.next/server/chunks/ssr/{_8c45edba._.js → _0bdae23a._.js} +3 -3
- package/.next/server/chunks/ssr/_0bdae23a._.js.map +1 -0
- package/.next/server/chunks/ssr/{_d27483a1._.js → _19aa68d3._.js} +3 -3
- package/.next/server/chunks/ssr/_19aa68d3._.js.map +1 -0
- package/.next/server/chunks/ssr/{_25e6aab8._.js → _347e2d56._.js} +3 -3
- package/.next/server/chunks/ssr/_347e2d56._.js.map +1 -0
- package/.next/server/chunks/ssr/_3c9015dc._.js +4 -0
- package/.next/server/chunks/ssr/_3c9015dc._.js.map +1 -0
- package/.next/server/chunks/ssr/_41ca4e70._.js +3 -0
- package/.next/server/chunks/ssr/_41ca4e70._.js.map +1 -0
- package/.next/server/chunks/ssr/{node_modules_next_dist_12287b3d._.js → _49fb12c2._.js} +3 -3
- package/.next/server/chunks/ssr/_49fb12c2._.js.map +1 -0
- package/.next/server/chunks/ssr/{_3c8b2df6._.js → _536983a4._.js} +3 -3
- package/.next/server/chunks/ssr/_536983a4._.js.map +1 -0
- package/.next/server/chunks/ssr/_5443093b._.js +3 -0
- package/.next/server/chunks/ssr/_5443093b._.js.map +1 -0
- package/.next/server/chunks/ssr/{_cd23c5af._.js → _5b282394._.js} +3 -3
- package/.next/server/chunks/ssr/_5b282394._.js.map +1 -0
- package/.next/server/chunks/ssr/{_6e70b5a4._.js → _5cc24343._.js} +3 -3
- package/.next/server/chunks/ssr/_5cc24343._.js.map +1 -0
- package/.next/server/chunks/ssr/_67830ad6._.js +3 -0
- package/.next/server/chunks/ssr/_67830ad6._.js.map +1 -0
- package/.next/server/chunks/ssr/{node_modules_next_dist_esm_build_templates_app-page_68c68167.js → _7eac37fb._.js} +3 -3
- package/.next/server/chunks/ssr/_7eac37fb._.js.map +1 -0
- package/.next/server/chunks/ssr/{_92140ca3._.js → _802ee40f._.js} +3 -3
- package/.next/server/chunks/ssr/{_25e6aab8._.js.map → _802ee40f._.js.map} +1 -1
- package/.next/server/chunks/ssr/{_8c8207c1._.js → _8062e992._.js} +3 -3
- package/.next/server/chunks/ssr/_8062e992._.js.map +1 -0
- package/.next/server/chunks/ssr/{_0808c2b9._.js → _99994c05._.js} +3 -3
- package/.next/server/chunks/ssr/_99994c05._.js.map +1 -0
- package/.next/server/chunks/ssr/{_b5e9afcc._.js → _aafc99aa._.js} +3 -3
- package/.next/server/chunks/ssr/_aafc99aa._.js.map +1 -0
- package/.next/server/chunks/ssr/{_39e6e769._.js → _b7f3caf7._.js} +3 -3
- package/.next/server/chunks/ssr/_b7f3caf7._.js.map +1 -0
- package/.next/server/chunks/ssr/_c2041f88._.js +4 -0
- package/.next/server/chunks/ssr/_c2041f88._.js.map +1 -0
- package/.next/server/chunks/ssr/_d2e9dda9._.js +4 -0
- package/.next/server/chunks/ssr/_d2e9dda9._.js.map +1 -0
- package/.next/server/chunks/ssr/{_3158c108._.js → _f4d8af3b._.js} +3 -3
- package/.next/server/chunks/ssr/_f4d8af3b._.js.map +1 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_teams_[teamId]_tickets_[ticket]_page_actions_25ad633d.js +3 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_teams_[teamId]_tickets_[ticket]_page_actions_25ad633d.js.map +1 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_teams_[teamId]_tickets_page_actions_dffb2525.js +3 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_teams_[teamId]_tickets_page_actions_dffb2525.js.map +1 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_teams_[teamId]_workflows_page_actions_3defde35.js +3 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_teams_[teamId]_workflows_page_actions_3defde35.js.map +1 -0
- package/.next/server/chunks/ssr/b1a17_app_teams_[teamId]_workflows_[workflowId]_workflows-editor-client_tsx_5e714aa2._.js +3 -0
- package/.next/server/chunks/ssr/b1a17_app_teams_[teamId]_workflows_[workflowId]_workflows-editor-client_tsx_5e714aa2._.js.map +1 -0
- package/.next/server/chunks/ssr/ce889_server_app_teams_[teamId]_workflows_[workflowId]_page_actions_880cbbc3.js +3 -0
- package/.next/server/chunks/ssr/ce889_server_app_teams_[teamId]_workflows_[workflowId]_page_actions_880cbbc3.js.map +1 -0
- package/.next/server/chunks/ssr/node_modules_ea845e5f._.js +3 -0
- package/.next/server/chunks/ssr/node_modules_ea845e5f._.js.map +1 -0
- package/.next/server/chunks/ssr/{_da6f800e._.js → node_modules_next_aefa2538._.js} +2 -2
- package/.next/server/chunks/ssr/node_modules_next_aefa2538._.js.map +1 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_8a37abed._.js +4 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_8a37abed._.js.map +1 -0
- package/.next/server/chunks/ssr/{node_modules_next_dist_client_components_9774470f._.js → node_modules_next_dist_client_components_2fffaa3a._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_next_dist_client_components_9774470f._.js.map → node_modules_next_dist_client_components_2fffaa3a._.js.map} +1 -1
- package/.next/server/chunks/ssr/{_68793c1f._.js → node_modules_next_dist_esm_build_templates_app-page_b5ef32b4.js} +3 -3
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_b5ef32b4.js.map +1 -0
- package/.next/server/chunks/ssr/src_13139e3d._.js +3 -0
- package/.next/server/chunks/ssr/src_13139e3d._.js.map +1 -0
- package/.next/server/chunks/ssr/src_2a73b867._.js +3 -0
- package/.next/server/chunks/ssr/src_2a73b867._.js.map +1 -0
- package/.next/server/chunks/ssr/src_2dbb3b7f._.js +3 -0
- package/.next/server/chunks/ssr/src_2dbb3b7f._.js.map +1 -0
- package/.next/server/chunks/ssr/src_417bc4a6._.js +3 -0
- package/.next/server/chunks/ssr/src_417bc4a6._.js.map +1 -0
- package/.next/server/chunks/ssr/src_59477309._.js +3 -0
- package/.next/server/chunks/ssr/src_59477309._.js.map +1 -0
- package/.next/server/chunks/ssr/src_79d55c05._.js +3 -0
- package/.next/server/chunks/ssr/src_79d55c05._.js.map +1 -0
- package/.next/server/chunks/ssr/src_app_HomeClient_tsx_f9f7568d._.js +1 -1
- package/.next/server/chunks/ssr/src_app_HomeClient_tsx_f9f7568d._.js.map +1 -1
- package/.next/server/chunks/ssr/src_app_agents_[agentId]_agent-editor_tsx_f85bbe65._.js +1 -1
- package/.next/server/chunks/ssr/src_app_agents_[agentId]_agent-editor_tsx_f85bbe65._.js.map +1 -1
- package/.next/server/chunks/ssr/src_app_global-error_tsx_aa661ba4._.js +3 -0
- package/.next/server/chunks/ssr/src_app_global-error_tsx_aa661ba4._.js.map +1 -0
- package/.next/server/chunks/ssr/src_app_not-found_tsx_3f23d179._.js +3 -0
- package/.next/server/chunks/ssr/src_app_not-found_tsx_3f23d179._.js.map +1 -0
- package/.next/server/chunks/ssr/src_app_recipes_[id]_RecipeEditor_index_tsx_98393217._.js +3 -0
- package/.next/server/chunks/ssr/src_app_recipes_[id]_RecipeEditor_index_tsx_98393217._.js.map +1 -0
- package/.next/server/chunks/ssr/src_app_recipes_recipes-client_tsx_8ed3ca94._.js +1 -1
- package/.next/server/chunks/ssr/src_app_recipes_recipes-client_tsx_8ed3ca94._.js.map +1 -1
- package/.next/server/chunks/ssr/src_app_teams_[teamId]_team-editor_index_tsx_e68e9cbc._.js +12 -0
- package/.next/server/chunks/ssr/src_app_teams_[teamId]_team-editor_index_tsx_e68e9cbc._.js.map +1 -0
- package/.next/server/chunks/ssr/src_app_tickets_TicketsBoardClient_tsx_5e156ef3._.js +1 -1
- package/.next/server/chunks/ssr/src_app_tickets_TicketsBoardClient_tsx_5e156ef3._.js.map +1 -1
- package/.next/server/chunks/ssr/src_e54f24fb._.js +3 -0
- package/.next/server/chunks/ssr/src_e54f24fb._.js.map +1 -0
- package/.next/server/middleware-build-manifest.js +4 -4
- package/.next/server/next-font-manifest.js +1 -1
- package/.next/server/next-font-manifest.json +16 -0
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +2 -2
- package/.next/static/chunks/0edab8a24d59a626.js +2 -0
- package/.next/static/chunks/11da0a52793b005a.js +1 -0
- package/.next/static/chunks/150338287c7dae30.js +1 -0
- package/.next/static/chunks/236ef28eb649c432.js +1 -0
- package/.next/static/chunks/3e1fe6be993c61fb.js +1 -0
- package/.next/static/chunks/55a88f2071ebe766.js +1 -0
- package/.next/static/chunks/5cf42ef49ad071af.js +10 -0
- package/.next/static/chunks/62e0c437eb8fc2da.js +1 -0
- package/.next/static/chunks/{82abf2d65f5428ae.js → 68a088aa49e6124a.js} +3 -3
- package/.next/static/chunks/7bb0aafbf73524bf.js +1 -0
- package/.next/static/chunks/8d359fbce4ebb835.js +1 -0
- package/.next/static/chunks/9197ecb9606557f3.js +1 -0
- package/.next/static/chunks/93719e85369dd453.js +1 -0
- package/.next/static/chunks/b244476ded155cf9.css +3 -0
- package/.next/static/chunks/c75e00652e6b7d85.js +1 -0
- package/.next/static/chunks/c84580993f22c17a.js +1 -0
- package/.next/static/chunks/d73a47fc8def319c.js +1 -0
- package/.next/static/chunks/daa78a9d669e23f5.js +1 -0
- package/.next/static/chunks/db4da5ee45033817.js +1 -0
- package/.next/static/chunks/e8021fea9aee6b63.js +1 -0
- package/.next/static/chunks/e854e56ea8cb6236.js +1 -0
- package/.next/static/chunks/ffff6b5105288d2c.js +1 -0
- package/.next/static/chunks/{turbopack-ae1340e658f67df8.js → turbopack-0236a74c4f471967.js} +1 -1
- package/README.md +22 -1
- package/openclaw/index.ts +133 -26
- package/openclaw.plugin.json +9 -1
- package/package.json +24 -3
- package/public/android-chrome-192x192.png +0 -0
- package/public/android-chrome-512x512.png +0 -0
- package/public/apple-touch-icon.png +0 -0
- package/public/chef.jpg +0 -0
- package/public/favicon-16x16.png +0 -0
- package/public/favicon-32x32.png +0 -0
- package/public/favicon.ico +0 -0
- package/src/app/HomeClient.tsx +8 -9
- package/src/app/agents/[agentId]/agent-editor-tabs.tsx +298 -0
- package/src/app/agents/[agentId]/agent-editor.tsx +200 -428
- package/src/app/api/__tests__/agents-add-route.test.ts +143 -0
- package/src/app/api/__tests__/agents-file-route.test.ts +117 -0
- package/src/app/api/__tests__/agents-files-route.test.ts +61 -0
- package/src/app/api/__tests__/agents-id-route.test.ts +104 -0
- package/src/app/api/__tests__/agents-identity-route.test.ts +92 -0
- package/src/app/api/__tests__/agents-route.test.ts +54 -0
- package/src/app/api/__tests__/agents-skills-install-route.test.ts +131 -0
- package/src/app/api/__tests__/agents-skills-route.test.ts +64 -0
- package/src/app/api/__tests__/agents-update-route.test.ts +95 -0
- package/src/app/api/__tests__/channels-bindings-route.test.ts +143 -0
- package/src/app/api/__tests__/cron-delete-route.test.ts +93 -0
- package/src/app/api/__tests__/cron-job-route.test.ts +78 -0
- package/src/app/api/__tests__/cron-jobs-route.test.ts +116 -0
- package/src/app/api/__tests__/cron-recipe-installed-route.test.ts +114 -0
- package/src/app/api/__tests__/gateway-restart-route.test.ts +36 -0
- package/src/app/api/__tests__/goals-promote-route.test.ts +200 -0
- package/src/app/api/__tests__/goals-route.test.ts +184 -0
- package/src/app/api/__tests__/ids-check-route.test.ts +188 -0
- package/src/app/api/__tests__/marketplace-recipes-route.test.ts +123 -0
- package/src/app/api/__tests__/recipes-clone-route.test.ts +221 -0
- package/src/app/api/__tests__/recipes-delete-route.test.ts +248 -0
- package/src/app/api/__tests__/recipes-id-route.test.ts +166 -0
- package/src/app/api/__tests__/recipes-route.test.ts +57 -0
- package/src/app/api/__tests__/recipes-team-agents-route.test.ts +135 -0
- package/src/app/api/__tests__/scaffold-route.test.ts +173 -0
- package/src/app/api/__tests__/settings-cron-installation-route.test.ts +82 -0
- package/src/app/api/__tests__/skills-available-route.test.ts +47 -0
- package/src/app/api/__tests__/swarms-start-route.test.ts +79 -0
- package/src/app/api/__tests__/swarms-status-route.test.ts +42 -0
- package/src/app/api/__tests__/teams-file-route.test.ts +129 -0
- package/src/app/api/__tests__/teams-files-route.test.ts +57 -0
- package/src/app/api/__tests__/teams-meta-route.test.ts +113 -0
- package/src/app/api/__tests__/teams-orchestrator-install-route.test.ts +66 -0
- package/src/app/api/__tests__/teams-orchestrator-route.test.ts +59 -0
- package/src/app/api/__tests__/teams-remove-team-route.test.ts +122 -0
- package/src/app/api/__tests__/teams-skills-install-route.test.ts +78 -0
- package/src/app/api/__tests__/teams-skills-route.test.ts +73 -0
- package/src/app/api/__tests__/teams-workflow-runs-route.test.ts +85 -0
- package/src/app/api/__tests__/teams-workflows-route.test.ts +110 -0
- package/src/app/api/__tests__/tickets-move-route.test.ts +60 -0
- package/src/app/api/agents/[id]/route.ts +33 -29
- package/src/app/api/agents/add/route.ts +38 -33
- package/src/app/api/agents/file/route.ts +14 -27
- package/src/app/api/agents/files/route.ts +7 -62
- package/src/app/api/agents/route.ts +3 -10
- package/src/app/api/agents/skills/install/route.ts +2 -14
- package/src/app/api/agents/skills/route.ts +6 -18
- package/src/app/api/channels/bindings/route.ts +6 -15
- package/src/app/api/cron/__tests__/helpers.test.ts +164 -0
- package/src/app/api/cron/delete/route.ts +4 -63
- package/src/app/api/cron/helpers.ts +172 -0
- package/src/app/api/cron/jobs/route.ts +24 -113
- package/src/app/api/cron/recipe-installed/route.ts +6 -4
- package/src/app/api/gateway/restart/route.ts +2 -1
- package/src/app/api/goals/[id]/promote/route.ts +10 -43
- package/src/app/api/goals/[id]/route.ts +10 -16
- package/src/app/api/goals/route.ts +3 -6
- package/src/app/api/ids/check/route.ts +18 -26
- package/src/app/api/marketplace/recipes/[slug]/route.ts +2 -2
- package/src/app/api/recipes/[id]/route.ts +3 -9
- package/src/app/api/recipes/clone/route.ts +3 -38
- package/src/app/api/recipes/custom-team/route.ts +193 -0
- package/src/app/api/recipes/delete/helpers.ts +65 -0
- package/src/app/api/recipes/delete/route.ts +11 -78
- package/src/app/api/recipes/team-agents/__tests__/helpers.test.ts +156 -0
- package/src/app/api/recipes/team-agents/helpers.ts +151 -0
- package/src/app/api/recipes/team-agents/route.ts +27 -125
- package/src/app/api/scaffold/__tests__/helpers.test.ts +186 -0
- package/src/app/api/scaffold/helpers.ts +214 -0
- package/src/app/api/scaffold/route.ts +40 -274
- package/src/app/api/settings/cron-installation/route.ts +3 -2
- package/src/app/api/skills/available/route.ts +2 -1
- package/src/app/api/swarms/start/route.ts +100 -0
- package/src/app/api/swarms/status/route.ts +31 -0
- package/src/app/api/teams/[teamId]/tickets/assign/route.ts +105 -0
- package/src/app/api/teams/[teamId]/tickets/assignees/route.ts +27 -0
- package/src/app/api/teams/[teamId]/tickets/delete/route.ts +55 -0
- package/src/app/api/teams/[teamId]/tickets/move/route.ts +70 -0
- package/src/app/api/teams/[teamId]/tickets/move-to-goals/route.ts +56 -0
- package/src/app/api/teams/file/route.ts +26 -47
- package/src/app/api/teams/files/route.ts +13 -45
- package/src/app/api/teams/memory/route.ts +250 -0
- package/src/app/api/teams/meta/route.ts +16 -35
- package/src/app/api/teams/orchestrator/install/route.ts +129 -0
- package/src/app/api/teams/orchestrator/route.ts +216 -0
- package/src/app/api/teams/remove-team/route.ts +7 -15
- package/src/app/api/teams/skills/install/route.ts +2 -13
- package/src/app/api/teams/skills/route.ts +6 -17
- package/src/app/api/teams/workflow-runs/route.ts +534 -0
- package/src/app/api/teams/workflow-templates/route.ts +71 -0
- package/src/app/api/teams/workflows/route.ts +55 -0
- package/src/app/api/tickets/assign/route.ts +94 -0
- package/src/app/api/tickets/assignees/route.ts +24 -0
- package/src/app/api/tickets/move/route.ts +31 -0
- package/src/app/channels/channels-client.tsx +48 -47
- package/src/app/cron-jobs/cron-jobs-client.tsx +11 -14
- package/src/app/cron-jobs/page.tsx +1 -1
- package/src/app/global-error.tsx +50 -0
- package/src/app/goals/[id]/goal-editor.tsx +74 -179
- package/src/app/goals/goals-client.tsx +30 -39
- package/src/app/goals/new/page.tsx +45 -124
- package/src/app/layout.tsx +8 -0
- package/src/app/manifest.ts +15 -0
- package/src/app/not-found.tsx +8 -0
- package/src/app/page.tsx +4 -31
- package/src/app/recipes/CreateAgentModal.tsx +98 -153
- package/src/app/recipes/CreateCustomTeamModal.tsx +375 -0
- package/src/app/recipes/CreateModalShell.tsx +55 -0
- package/src/app/recipes/CreateTeamModal.tsx +54 -105
- package/src/app/recipes/[id]/RecipeEditor/RecipeEditorCreateModal.tsx +72 -0
- package/src/app/recipes/[id]/RecipeEditor/RecipeEditorPanel.tsx +216 -0
- package/src/app/recipes/[id]/RecipeEditor/index.tsx +271 -0
- package/src/app/recipes/[id]/RecipeEditor/recipe-editor-utils.ts +46 -0
- package/src/app/recipes/[id]/RecipeEditor/types.ts +52 -0
- package/src/app/recipes/[id]/page.tsx +4 -18
- package/src/app/recipes/page.tsx +9 -2
- package/src/app/recipes/recipes-client.tsx +266 -156
- package/src/app/settings/page.tsx +1 -1
- package/src/app/settings/settings-client.tsx +11 -10
- package/src/app/teams/[teamId]/CloneTeamModal.tsx +77 -111
- package/src/app/teams/[teamId]/OrchestratorPanel.tsx +255 -0
- package/src/app/teams/[teamId]/OrchestratorSetupModal.tsx +184 -0
- package/src/app/teams/[teamId]/PublishChangesModal.tsx +21 -42
- package/src/app/teams/[teamId]/page.tsx +27 -49
- package/src/app/teams/[teamId]/team-editor/TeamAgentsTab.tsx +145 -0
- package/src/app/teams/[teamId]/team-editor/TeamCronTab.tsx +72 -0
- package/src/app/teams/[teamId]/team-editor/TeamFilesTab.tsx +74 -0
- package/src/app/teams/[teamId]/team-editor/TeamMemoryTab.tsx +349 -0
- package/src/app/teams/[teamId]/team-editor/TeamRecipeTab.tsx +151 -0
- package/src/app/teams/[teamId]/team-editor/TeamSkillsTab.tsx +68 -0
- package/src/app/teams/[teamId]/team-editor/index.tsx +558 -0
- package/src/app/teams/[teamId]/team-editor/team-editor-data.ts +255 -0
- package/src/app/teams/[teamId]/team-editor/team-editor-utils.ts +78 -0
- package/src/app/teams/[teamId]/team-editor/types.ts +34 -0
- package/src/app/teams/[teamId]/tickets/[ticket]/page.tsx +35 -0
- package/src/app/teams/[teamId]/tickets/page.tsx +15 -0
- package/src/app/teams/[teamId]/workflows/[workflowId]/WorkflowCanvas.tsx +111 -0
- package/src/app/teams/[teamId]/workflows/[workflowId]/page.tsx +27 -0
- package/src/app/teams/[teamId]/workflows/[workflowId]/workflows-editor-client.tsx +1608 -0
- package/src/app/teams/[teamId]/workflows/page.tsx +40 -0
- package/src/app/teams/[teamId]/workflows/workflows-client.tsx +494 -0
- package/src/app/tickets/TicketDetailClient.tsx +147 -0
- package/src/app/tickets/TicketsBoardClient.tsx +11 -57
- package/src/app/tickets/[ticket]/TicketAssignControl.tsx +112 -0
- package/src/app/tickets/[ticket]/page.tsx +13 -21
- package/src/app/tickets/page.tsx +5 -2
- package/src/components/AppShell.tsx +252 -31
- package/src/{app/cron-jobs/DeleteCronJobModal.tsx → components/ConfirmationModal.tsx} +35 -17
- package/src/components/DeleteEntityModal.tsx +41 -0
- package/src/components/ErrorBoundary.tsx +70 -0
- package/src/components/FileListWithOptionalToggle.tsx +86 -0
- package/src/components/GoalFormFields.tsx +163 -0
- package/src/components/ScaffoldOverlay.tsx +7 -10
- package/src/components/ToastProvider.tsx +22 -18
- package/src/components/__tests__/ConfirmationModal.test.tsx +109 -0
- package/src/components/__tests__/ErrorBoundary.test.tsx +39 -0
- package/src/components/__tests__/FileListWithOptionalToggle.test.tsx +109 -0
- package/src/components/__tests__/GoalFormFields.test.tsx +117 -0
- package/src/components/delete-modals.tsx +59 -0
- package/src/components/icons.tsx +12 -10
- package/src/lib/__tests__/agent-workspace.test.ts +44 -0
- package/src/lib/__tests__/agents.test.ts +36 -0
- package/src/lib/__tests__/api-route-helpers.test.ts +188 -0
- package/src/lib/__tests__/cron.test.ts +45 -0
- package/src/lib/__tests__/editor-utils.test.ts +38 -0
- package/src/lib/__tests__/errors.test.ts +15 -0
- package/src/lib/__tests__/exec.test.ts +13 -0
- package/src/lib/__tests__/fetch-json.test.ts +118 -0
- package/src/lib/__tests__/gateway.test.ts +234 -0
- package/src/lib/__tests__/goal-promote.test.ts +39 -0
- package/src/lib/__tests__/goals-client.test.ts +26 -0
- package/src/lib/__tests__/goals.test.ts +275 -0
- package/src/lib/__tests__/json.test.ts +15 -0
- package/src/lib/__tests__/kitchen-api.test.ts +32 -0
- package/src/lib/__tests__/marketplace.test.ts +116 -0
- package/src/lib/__tests__/openclaw.test.ts +129 -0
- package/src/lib/__tests__/paths.test.ts +136 -0
- package/src/lib/__tests__/poll.test.ts +26 -0
- package/src/lib/__tests__/recipe-clone.test.ts +85 -0
- package/src/lib/__tests__/recipe-team-agents.test.ts +70 -0
- package/src/lib/__tests__/recipes.test.ts +199 -0
- package/src/lib/__tests__/scaffold-client.test.ts +106 -0
- package/src/lib/__tests__/scaffold.test.ts +64 -0
- package/src/lib/__tests__/slugify.test.ts +23 -0
- package/src/lib/__tests__/tickets.test.ts +158 -0
- package/src/lib/__tests__/type-guards.test.ts +18 -0
- package/src/lib/__tests__/use-slugified-id.test.tsx +120 -0
- package/src/lib/agents.ts +17 -0
- package/src/lib/api-route-helpers.ts +157 -0
- package/src/lib/cron.ts +40 -0
- package/src/lib/editor-utils.ts +18 -0
- package/src/lib/errors.ts +7 -0
- package/src/lib/exec.ts +4 -0
- package/src/lib/fetch-json.ts +29 -0
- package/src/lib/gateway.ts +5 -1
- package/src/lib/goal-promote.ts +27 -0
- package/src/lib/goals-client.ts +69 -0
- package/src/lib/goals.ts +22 -3
- package/src/lib/json.ts +10 -0
- package/src/lib/openclaw.ts +28 -13
- package/src/lib/paths.ts +12 -0
- package/src/lib/poll.ts +18 -0
- package/src/lib/recipe-clone.ts +42 -0
- package/src/lib/recipe-team-agents.ts +30 -0
- package/src/lib/recipes.ts +47 -0
- package/src/lib/scaffold-client.ts +31 -0
- package/src/lib/scaffold.ts +37 -0
- package/src/lib/slugify.ts +25 -0
- package/src/lib/swarms.ts +25 -0
- package/src/lib/tickets.ts +81 -25
- package/src/lib/type-guards.ts +3 -0
- package/src/lib/use-slugified-id.ts +35 -0
- package/src/lib/workflows/README.md +11 -0
- package/src/lib/workflows/__tests__/storage.test.ts +129 -0
- package/src/lib/workflows/__tests__/validate.test.ts +92 -0
- package/src/lib/workflows/api-handlers.ts +35 -0
- package/src/lib/workflows/readdir.ts +23 -0
- package/src/lib/workflows/runs-storage.ts +59 -0
- package/src/lib/workflows/runs-types.ts +42 -0
- package/src/lib/workflows/storage.ts +70 -0
- package/src/lib/workflows/templates/index.ts +1 -0
- package/src/lib/workflows/templates/marketing-cadence-v1.ts +142 -0
- package/src/lib/workflows/types.ts +48 -0
- package/src/lib/workflows/validate.ts +92 -0
- package/.next/server/app/tickets.html +0 -1
- package/.next/server/app/tickets.meta +0 -15
- package/.next/server/app/tickets.rsc +0 -19
- package/.next/server/app/tickets.segments/_full.segment.rsc +0 -19
- package/.next/server/app/tickets.segments/_head.segment.rsc +0 -6
- package/.next/server/app/tickets.segments/_index.segment.rsc +0 -6
- package/.next/server/app/tickets.segments/_tree.segment.rsc +0 -4
- package/.next/server/app/tickets.segments/tickets/__PAGE__.segment.rsc +0 -8
- package/.next/server/app/tickets.segments/tickets.segment.rsc +0 -4
- package/.next/server/chunks/[root-of-the-server]__055885ce._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__055885ce._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0c01c5c7._.js +0 -10
- package/.next/server/chunks/[root-of-the-server]__0c01c5c7._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__1398a33a._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1398a33a._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__159c002b._.js +0 -8
- package/.next/server/chunks/[root-of-the-server]__159c002b._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__20c60fb7._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__20c60fb7._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__2588560d._.js +0 -6
- package/.next/server/chunks/[root-of-the-server]__2588560d._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__27293e91._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__27293e91._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__29c85a51._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__29c85a51._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__29fa8108._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__29fa8108._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__2bd44067._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__2bd44067._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__2dd1afff._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__2dd1afff._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__401ab759._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__401ab759._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__422c7160._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__422c7160._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__4670294e._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__4670294e._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__4eda99a9._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__4eda99a9._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__54478298._.js +0 -8
- package/.next/server/chunks/[root-of-the-server]__54478298._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__6dbdb384._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__6dbdb384._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__94d68aa3._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__94d68aa3._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__9ecbb339._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__9ecbb339._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__a27f8405._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__a27f8405._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__a6ac3ddf._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__b11231a9._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__b11231a9._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__b59b3cdd._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__b59b3cdd._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__b5c2b370._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__b5c2b370._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__b955e35a._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__b955e35a._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__be5f57b2._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__c4ff0427._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__c4ff0427._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__c4ffbb03._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__c4ffbb03._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__d737ca42._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__d737ca42._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__df7df3ac._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__df7df3ac._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__dfca6557._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__dfca6557._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__e6184ba3._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__e6184ba3._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__ed0323e9._.js +0 -8
- package/.next/server/chunks/[root-of-the-server]__ed0323e9._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__f585823b._.js +0 -6
- package/.next/server/chunks/[root-of-the-server]__f585823b._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__ff940674._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__ff940674._.js.map +0 -1
- package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_5a9305ea.js +0 -6
- package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_5a9305ea.js.map +0 -1
- package/.next/server/chunks/src_lib_d2210cbf._.js +0 -3
- package/.next/server/chunks/src_lib_d2210cbf._.js.map +0 -1
- package/.next/server/chunks/ssr/[externals]__c37e9f91._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__15600e29._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__247198dc._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__2a6f1e3e._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__346f79e5._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__346f79e5._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__3575e6da._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__3ad3e5b1._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__3bc7ad0a._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__4393e897._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__4393e897._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__46e08d44._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__491e06fa._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__491e06fa._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__507d2fc9._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__507d2fc9._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__5d24d429._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__5d24d429._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__7180d770._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__82ce3aee._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__82ce3aee._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__8d24c9c3._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__8d24c9c3._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__a457c799._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__a457c799._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__bc3b27b0._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__bc3b27b0._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__f75a61bf._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__f75a61bf._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__fd669584._.js +0 -3
- package/.next/server/chunks/ssr/_0808c2b9._.js.map +0 -1
- package/.next/server/chunks/ssr/_1aad1d9b._.js +0 -24
- package/.next/server/chunks/ssr/_1aad1d9b._.js.map +0 -1
- package/.next/server/chunks/ssr/_3158c108._.js.map +0 -1
- package/.next/server/chunks/ssr/_39e6e769._.js.map +0 -1
- package/.next/server/chunks/ssr/_3c8b2df6._.js.map +0 -1
- package/.next/server/chunks/ssr/_5070929e._.js +0 -3
- package/.next/server/chunks/ssr/_5070929e._.js.map +0 -1
- package/.next/server/chunks/ssr/_68793c1f._.js.map +0 -1
- package/.next/server/chunks/ssr/_6e70b5a4._.js.map +0 -1
- package/.next/server/chunks/ssr/_8c45edba._.js.map +0 -1
- package/.next/server/chunks/ssr/_8c8207c1._.js.map +0 -1
- package/.next/server/chunks/ssr/_92140ca3._.js.map +0 -1
- package/.next/server/chunks/ssr/_b5e9afcc._.js.map +0 -1
- package/.next/server/chunks/ssr/_cd23c5af._.js.map +0 -1
- package/.next/server/chunks/ssr/_d27483a1._.js.map +0 -1
- package/.next/server/chunks/ssr/_da6f800e._.js.map +0 -1
- package/.next/server/chunks/ssr/d4b1c_modules_next_dist_server_route-modules_app-page_vendored_ssr_react-dom_6ef9314a.js +0 -3
- package/.next/server/chunks/ssr/d4b1c_modules_next_dist_server_route-modules_app-page_vendored_ssr_react-dom_6ef9314a.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_12287b3d._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_852965c2._.js +0 -3
- package/.next/server/chunks/ssr/node_modules_next_dist_852965c2._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_45780354.js +0 -3
- package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_45780354.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_ece394eb.js +0 -3
- package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_ece394eb.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_68c68167.js.map +0 -1
- package/.next/server/chunks/ssr/src_app_channels_channels-client_tsx_8c8be116._.js +0 -3
- package/.next/server/chunks/ssr/src_app_channels_channels-client_tsx_8c8be116._.js.map +0 -1
- package/.next/server/chunks/ssr/src_app_goals_[id]_goal-editor_tsx_7df8193f._.js +0 -3
- package/.next/server/chunks/ssr/src_app_goals_[id]_goal-editor_tsx_7df8193f._.js.map +0 -1
- package/.next/server/chunks/ssr/src_app_goals_goals-client_tsx_a45eeff4._.js +0 -3
- package/.next/server/chunks/ssr/src_app_goals_goals-client_tsx_a45eeff4._.js.map +0 -1
- package/.next/server/chunks/ssr/src_app_goals_new_page_tsx_8f749229._.js +0 -3
- package/.next/server/chunks/ssr/src_app_goals_new_page_tsx_8f749229._.js.map +0 -1
- package/.next/server/chunks/ssr/src_app_recipes_[id]_RecipeEditor_tsx_c6d38350._.js +0 -3
- package/.next/server/chunks/ssr/src_app_recipes_[id]_RecipeEditor_tsx_c6d38350._.js.map +0 -1
- package/.next/server/chunks/ssr/src_app_settings_settings-client_tsx_279084f8._.js +0 -3
- package/.next/server/chunks/ssr/src_app_settings_settings-client_tsx_279084f8._.js.map +0 -1
- package/.next/server/chunks/ssr/src_app_teams_[teamId]_team-editor_tsx_2900b91d._.js +0 -12
- package/.next/server/chunks/ssr/src_app_teams_[teamId]_team-editor_tsx_2900b91d._.js.map +0 -1
- package/.next/static/chunks/10cbf02e6fc36465.js +0 -2
- package/.next/static/chunks/1ce21af6dfb18ee3.js +0 -1
- package/.next/static/chunks/40f7fde35327d214.js +0 -1
- package/.next/static/chunks/54beb791bcc086ae.js +0 -1
- package/.next/static/chunks/55866d57aa2c7a9c.js +0 -1
- package/.next/static/chunks/6a7862e37c616cc3.js +0 -1
- package/.next/static/chunks/817ae077ec8c6255.js +0 -1
- package/.next/static/chunks/8484c54dc9a377e8.js +0 -10
- package/.next/static/chunks/8662fcc3cdff66f3.js +0 -1
- package/.next/static/chunks/99208ebf7e47471d.js +0 -1
- package/.next/static/chunks/a4e69b85b74277a7.css +0 -3
- package/.next/static/chunks/a9ed074e89b16a5e.js +0 -1
- package/.next/static/chunks/c6dfa918cafb6c0c.js +0 -1
- package/.next/static/chunks/d1c5f764e5fd615a.js +0 -1
- package/.next/static/chunks/d4ce2f908d8c4dea.js +0 -1
- package/.next/static/chunks/de9e30e86ef31e72.js +0 -1
- package/src/app/recipes/DeleteRecipeModal.tsx +0 -62
- package/src/app/recipes/[id]/RecipeEditor.tsx +0 -697
- package/src/app/teams/[teamId]/DeleteTeamModal.tsx +0 -54
- package/src/app/teams/[teamId]/team-editor.tsx +0 -1195
- /package/.next/server/chunks/{[root-of-the-server]__74b80ca4._.js.map → [root-of-the-server]__c63a9f28._.js.map} +0 -0
- /package/.next/server/chunks/{ssr/[externals]__c37e9f91._.js.map → _next-internal_server_app_api_recipes_custom-team_route_actions_861b1489.js.map} +0 -0
- /package/.next/server/chunks/ssr/{[root-of-the-server]__3bc7ad0a._.js.map → [root-of-the-server]__0d4cb2ba._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{[root-of-the-server]__e2e52c6e._.js.map → [root-of-the-server]__78cdd31e._.js.map} +0 -0
- /package/.next/static/{QOy0ilqTW1kHfmpls_oWp → z9yFlFZ5f_hw9mm0nfMJl}/_buildManifest.js +0 -0
- /package/.next/static/{QOy0ilqTW1kHfmpls_oWp → z9yFlFZ5f_hw9mm0nfMJl}/_clientMiddlewareManifest.json +0 -0
- /package/.next/static/{QOy0ilqTW1kHfmpls_oWp → z9yFlFZ5f_hw9mm0nfMJl}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
|
|
3
|
+
/** Reads dir with optional suffix filter and reverse sort. Returns { ok, dir, files } or { ok, dir, files: [] } on ENOENT. */
|
|
4
|
+
export async function readdirFiles(
|
|
5
|
+
dir: string,
|
|
6
|
+
suffix: string,
|
|
7
|
+
reverse = false
|
|
8
|
+
): Promise<{ ok: true; dir: string; files: string[] }> {
|
|
9
|
+
try {
|
|
10
|
+
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
11
|
+
let files = entries
|
|
12
|
+
.filter((e) => e.isFile() && e.name.endsWith(suffix))
|
|
13
|
+
.map((e) => e.name)
|
|
14
|
+
.sort();
|
|
15
|
+
if (reverse) files = files.reverse();
|
|
16
|
+
return { ok: true as const, dir, files };
|
|
17
|
+
} catch (err: unknown) {
|
|
18
|
+
if (err && typeof err === "object" && (err as { code?: unknown }).code === "ENOENT") {
|
|
19
|
+
return { ok: true as const, dir, files: [] as string[] };
|
|
20
|
+
}
|
|
21
|
+
throw err;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { getTeamWorkspaceDir } from "@/lib/paths";
|
|
4
|
+
import { readdirFiles } from "@/lib/workflows/readdir";
|
|
5
|
+
import { assertSafeWorkflowId } from "@/lib/workflows/storage";
|
|
6
|
+
import type { WorkflowRunFileV1 } from "@/lib/workflows/runs-types";
|
|
7
|
+
|
|
8
|
+
const RUNS_DIR = path.join("shared-context", "workflow-runs");
|
|
9
|
+
|
|
10
|
+
export function assertSafeRunId(runId: string) {
|
|
11
|
+
const id = String(runId ?? "").trim();
|
|
12
|
+
if (!id) throw new Error("run id is required");
|
|
13
|
+
if (!/^[a-z0-9][a-z0-9-]{0,80}$/.test(id)) {
|
|
14
|
+
throw new Error("Invalid run id. Use lowercase letters, numbers, and dashes (max 81 chars).");
|
|
15
|
+
}
|
|
16
|
+
return id;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export async function getWorkflowRunsDir(teamId: string, workflowId: string) {
|
|
20
|
+
const wfId = assertSafeWorkflowId(workflowId);
|
|
21
|
+
const teamDir = await getTeamWorkspaceDir(teamId);
|
|
22
|
+
return path.join(teamDir, RUNS_DIR, wfId);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function workflowRunFileName(runId: string) {
|
|
26
|
+
return `${runId}.run.json`;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export async function listWorkflowRuns(teamId: string, workflowId: string) {
|
|
30
|
+
const dir = await getWorkflowRunsDir(teamId, workflowId);
|
|
31
|
+
return readdirFiles(dir, ".run.json", true);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export async function readWorkflowRun(teamId: string, workflowId: string, runId: string) {
|
|
35
|
+
const wfId = assertSafeWorkflowId(workflowId);
|
|
36
|
+
const rId = assertSafeRunId(runId);
|
|
37
|
+
const dir = await getWorkflowRunsDir(teamId, wfId);
|
|
38
|
+
const p = path.join(dir, workflowRunFileName(rId));
|
|
39
|
+
const raw = await fs.readFile(p, "utf8");
|
|
40
|
+
const parsed = JSON.parse(raw) as WorkflowRunFileV1;
|
|
41
|
+
return { ok: true as const, path: p, run: parsed };
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export async function writeWorkflowRun(teamId: string, workflowId: string, run: WorkflowRunFileV1) {
|
|
45
|
+
const wfId = assertSafeWorkflowId(workflowId);
|
|
46
|
+
const rId = assertSafeRunId(run.id);
|
|
47
|
+
const dir = await getWorkflowRunsDir(teamId, wfId);
|
|
48
|
+
await fs.mkdir(dir, { recursive: true });
|
|
49
|
+
const p = path.join(dir, workflowRunFileName(rId));
|
|
50
|
+
const toWrite: WorkflowRunFileV1 = {
|
|
51
|
+
...run,
|
|
52
|
+
schema: "clawkitchen.workflow-run.v1",
|
|
53
|
+
id: rId,
|
|
54
|
+
workflowId: wfId,
|
|
55
|
+
teamId,
|
|
56
|
+
};
|
|
57
|
+
await fs.writeFile(p, JSON.stringify(toWrite, null, 2) + "\n", "utf8");
|
|
58
|
+
return { ok: true as const, path: p };
|
|
59
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export type WorkflowRunNodeResultV1 = {
|
|
2
|
+
nodeId: string;
|
|
3
|
+
status: "pending" | "running" | "waiting" | "success" | "error" | "skipped";
|
|
4
|
+
startedAt?: string;
|
|
5
|
+
endedAt?: string;
|
|
6
|
+
output?: unknown;
|
|
7
|
+
error?: { message: string; stack?: string } | string;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export type WorkflowRunApprovalV1 = {
|
|
11
|
+
nodeId: string;
|
|
12
|
+
state: "pending" | "approved" | "changes_requested" | "canceled";
|
|
13
|
+
requestedAt?: string;
|
|
14
|
+
decidedAt?: string;
|
|
15
|
+
/** Freeform notes from the approver (optional) */
|
|
16
|
+
note?: string;
|
|
17
|
+
/** Who made the decision (MVP: typically "ClawKitchen UI" or channel metadata) */
|
|
18
|
+
decidedBy?: string;
|
|
19
|
+
/** Outbound delivery metadata for the approval request (best-effort) */
|
|
20
|
+
outbound?: {
|
|
21
|
+
provider: string;
|
|
22
|
+
target: string;
|
|
23
|
+
sentAt?: string;
|
|
24
|
+
attemptedAt?: string;
|
|
25
|
+
error?: string;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export type WorkflowRunFileV1 = {
|
|
30
|
+
schema: "clawkitchen.workflow-run.v1";
|
|
31
|
+
id: string;
|
|
32
|
+
workflowId: string;
|
|
33
|
+
teamId?: string;
|
|
34
|
+
startedAt: string;
|
|
35
|
+
endedAt?: string;
|
|
36
|
+
status: "running" | "waiting_for_approval" | "success" | "error" | "canceled";
|
|
37
|
+
/** Optional high-level summary */
|
|
38
|
+
summary?: string;
|
|
39
|
+
nodes?: WorkflowRunNodeResultV1[];
|
|
40
|
+
approval?: WorkflowRunApprovalV1;
|
|
41
|
+
meta?: Record<string, unknown>;
|
|
42
|
+
};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { getTeamWorkspaceDir } from "@/lib/paths";
|
|
4
|
+
import { readdirFiles } from "@/lib/workflows/readdir";
|
|
5
|
+
import type { WorkflowFileV1 } from "@/lib/workflows/types";
|
|
6
|
+
|
|
7
|
+
const WORKFLOWS_DIR = path.join("shared-context", "workflows");
|
|
8
|
+
|
|
9
|
+
export function workflowFileName(workflowId: string) {
|
|
10
|
+
return `${workflowId}.workflow.json`;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export function assertSafeWorkflowId(workflowId: string) {
|
|
14
|
+
const id = String(workflowId ?? "").trim();
|
|
15
|
+
if (!id) throw new Error("workflow id is required");
|
|
16
|
+
if (!/^[a-z0-9][a-z0-9-]{0,62}$/.test(id)) {
|
|
17
|
+
throw new Error(
|
|
18
|
+
"Invalid workflow id. Use lowercase letters, numbers, and dashes (max 63 chars), e.g. marketing-cadence-v1"
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
return id;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export async function getTeamWorkflowsDir(teamId: string) {
|
|
25
|
+
const teamDir = await getTeamWorkspaceDir(teamId);
|
|
26
|
+
return path.join(teamDir, WORKFLOWS_DIR);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export async function listWorkflows(teamId: string) {
|
|
30
|
+
const dir = await getTeamWorkflowsDir(teamId);
|
|
31
|
+
return readdirFiles(dir, ".workflow.json");
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export async function readWorkflow(teamId: string, workflowId: string) {
|
|
35
|
+
const id = assertSafeWorkflowId(workflowId);
|
|
36
|
+
const dir = await getTeamWorkflowsDir(teamId);
|
|
37
|
+
const p = path.join(dir, workflowFileName(id));
|
|
38
|
+
const raw = await fs.readFile(p, "utf8");
|
|
39
|
+
const parsed = JSON.parse(raw) as WorkflowFileV1;
|
|
40
|
+
return { ok: true as const, path: p, workflow: parsed };
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export async function writeWorkflow(teamId: string, workflow: WorkflowFileV1) {
|
|
44
|
+
const id = assertSafeWorkflowId(workflow.id);
|
|
45
|
+
const dir = await getTeamWorkflowsDir(teamId);
|
|
46
|
+
await fs.mkdir(dir, { recursive: true });
|
|
47
|
+
const p = path.join(dir, workflowFileName(id));
|
|
48
|
+
const toWrite: WorkflowFileV1 = {
|
|
49
|
+
...workflow,
|
|
50
|
+
schema: "clawkitchen.workflow.v1",
|
|
51
|
+
id,
|
|
52
|
+
};
|
|
53
|
+
await fs.writeFile(p, JSON.stringify(toWrite, null, 2) + "\n", "utf8");
|
|
54
|
+
return { ok: true as const, path: p };
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export async function deleteWorkflow(teamId: string, workflowId: string) {
|
|
58
|
+
const id = assertSafeWorkflowId(workflowId);
|
|
59
|
+
const dir = await getTeamWorkflowsDir(teamId);
|
|
60
|
+
const p = path.join(dir, workflowFileName(id));
|
|
61
|
+
try {
|
|
62
|
+
await fs.unlink(p);
|
|
63
|
+
} catch (err: unknown) {
|
|
64
|
+
if (err && typeof err === "object" && (err as { code?: unknown }).code === "ENOENT") {
|
|
65
|
+
return { ok: true as const, path: p, existed: false as const };
|
|
66
|
+
}
|
|
67
|
+
throw err;
|
|
68
|
+
}
|
|
69
|
+
return { ok: true as const, path: p, existed: true as const };
|
|
70
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { marketingCadenceWorkflowV1 } from "@/lib/workflows/templates/marketing-cadence-v1";
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import type { WorkflowFileV1 } from "@/lib/workflows/types";
|
|
2
|
+
|
|
3
|
+
export function marketingCadenceWorkflowV1(opts?: { id?: string; approvalProvider?: string; approvalTarget?: string }): WorkflowFileV1 {
|
|
4
|
+
const id = String(opts?.id ?? "marketing-cadence-v1").trim() || "marketing-cadence-v1";
|
|
5
|
+
const approvalProvider = String(opts?.approvalProvider ?? "telegram").trim() || "telegram";
|
|
6
|
+
const approvalTarget = String(opts?.approvalTarget ?? "").trim();
|
|
7
|
+
|
|
8
|
+
return {
|
|
9
|
+
schema: "clawkitchen.workflow.v1",
|
|
10
|
+
id,
|
|
11
|
+
name: "Marketing Cadence (v1)",
|
|
12
|
+
version: 1,
|
|
13
|
+
timezone: "America/New_York",
|
|
14
|
+
triggers: [
|
|
15
|
+
{
|
|
16
|
+
kind: "cron",
|
|
17
|
+
id: "t-weekdays-9",
|
|
18
|
+
name: "Weekdays 09:00",
|
|
19
|
+
enabled: true,
|
|
20
|
+
expr: "0 9 * * 1-5",
|
|
21
|
+
tz: "America/New_York",
|
|
22
|
+
},
|
|
23
|
+
],
|
|
24
|
+
meta: {
|
|
25
|
+
templateId: "marketing-cadence-v1",
|
|
26
|
+
approvalProvider,
|
|
27
|
+
approvalTarget,
|
|
28
|
+
writeback: {
|
|
29
|
+
postLogPath: "shared-context/marketing/POST_LOG.md",
|
|
30
|
+
learningsJsonlPath: "shared-context/memory/marketing_learnings.jsonl",
|
|
31
|
+
},
|
|
32
|
+
platforms: ["x", "instagram", "tiktok", "youtube"],
|
|
33
|
+
},
|
|
34
|
+
nodes: [
|
|
35
|
+
{ id: "start", type: "start", name: "Start", x: 60, y: 120, config: {} },
|
|
36
|
+
{
|
|
37
|
+
id: "research",
|
|
38
|
+
type: "llm",
|
|
39
|
+
name: "Research + idea",
|
|
40
|
+
x: 300,
|
|
41
|
+
y: 80,
|
|
42
|
+
config: {
|
|
43
|
+
agentId: "marketing-research",
|
|
44
|
+
promptTemplate:
|
|
45
|
+
"Do competitive + trend research. Produce: 5 angles + supporting bullets. Output JSON: {angles:[...], sources:[...]}" as string,
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
id: "draft_assets",
|
|
50
|
+
type: "llm",
|
|
51
|
+
name: "Draft platform assets",
|
|
52
|
+
x: 560,
|
|
53
|
+
y: 80,
|
|
54
|
+
config: {
|
|
55
|
+
agentId: "marketing-writer",
|
|
56
|
+
promptTemplate:
|
|
57
|
+
"Using the research output, draft platform-specific variants for X/Instagram/TikTok/YouTube. Output JSON: {platforms:{x:{hook,body},instagram:{hook,body,assetNotes},tiktok:{hook,script,assetNotes},youtube:{hook,script,assetNotes}}}" as string,
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
id: "qc_brand",
|
|
62
|
+
type: "llm",
|
|
63
|
+
name: "QC / brand consistency",
|
|
64
|
+
x: 820,
|
|
65
|
+
y: 80,
|
|
66
|
+
config: {
|
|
67
|
+
agentId: "brand-qc",
|
|
68
|
+
promptTemplate:
|
|
69
|
+
"Review drafts for consistency. Apply corrections. Ensure: mention ClawRecipes before OpenClaw; no posting without approval. Output JSON: {platforms:{...}, notes:[...]}" as string,
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
id: "approval",
|
|
74
|
+
type: "human_approval",
|
|
75
|
+
name: "Human approval",
|
|
76
|
+
x: 1080,
|
|
77
|
+
y: 80,
|
|
78
|
+
config: {
|
|
79
|
+
provider: approvalProvider,
|
|
80
|
+
target: approvalTarget || "(set in UI)",
|
|
81
|
+
messageTemplate:
|
|
82
|
+
"{{workflow.name}} — Approval needed\nRun: {{run.id}}\n\n{{packet.note}}" as string,
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
id: "post_to_platforms",
|
|
87
|
+
type: "tool",
|
|
88
|
+
name: "Post (after approval)",
|
|
89
|
+
x: 1340,
|
|
90
|
+
y: 80,
|
|
91
|
+
config: {
|
|
92
|
+
tool: "marketing.post_all",
|
|
93
|
+
args: {
|
|
94
|
+
platforms: ["x", "instagram", "tiktok", "youtube"],
|
|
95
|
+
draftsFromNode: "qc_brand",
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
id: "write_post_log",
|
|
101
|
+
type: "tool",
|
|
102
|
+
name: "Append POST_LOG.md",
|
|
103
|
+
x: 1600,
|
|
104
|
+
y: 60,
|
|
105
|
+
config: {
|
|
106
|
+
tool: "fs.append",
|
|
107
|
+
args: {
|
|
108
|
+
path: "shared-context/marketing/POST_LOG.md",
|
|
109
|
+
content: "- {{date}} {{platforms}} posted. Run={{run.id}}\\n" as string,
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
id: "write_learnings",
|
|
115
|
+
type: "tool",
|
|
116
|
+
name: "Append marketing_learnings.jsonl",
|
|
117
|
+
x: 1600,
|
|
118
|
+
y: 140,
|
|
119
|
+
config: {
|
|
120
|
+
tool: "fs.append",
|
|
121
|
+
args: {
|
|
122
|
+
path: "shared-context/memory/marketing_learnings.jsonl",
|
|
123
|
+
content:
|
|
124
|
+
"{\"ts\":\"{{date}}\",\"runId\":\"{{run.id}}\",\"notes\":{{qc_brand.notes_json}}}\\n" as string,
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
{ id: "end", type: "end", name: "End", x: 1860, y: 120, config: {} },
|
|
129
|
+
],
|
|
130
|
+
edges: [
|
|
131
|
+
{ id: "e-start-research", from: "start", to: "research" },
|
|
132
|
+
{ id: "e-research-draft", from: "research", to: "draft_assets" },
|
|
133
|
+
{ id: "e-draft-qc", from: "draft_assets", to: "qc_brand" },
|
|
134
|
+
{ id: "e-qc-approval", from: "qc_brand", to: "approval" },
|
|
135
|
+
{ id: "e-approval-post", from: "approval", to: "post_to_platforms" },
|
|
136
|
+
{ id: "e-post-log", from: "post_to_platforms", to: "write_post_log" },
|
|
137
|
+
{ id: "e-post-learnings", from: "post_to_platforms", to: "write_learnings" },
|
|
138
|
+
{ id: "e-log-end", from: "write_post_log", to: "end" },
|
|
139
|
+
{ id: "e-learnings-end", from: "write_learnings", to: "end" },
|
|
140
|
+
],
|
|
141
|
+
};
|
|
142
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export type WorkflowTriggerCronV1 = {
|
|
2
|
+
kind: "cron";
|
|
3
|
+
id: string;
|
|
4
|
+
name?: string;
|
|
5
|
+
enabled?: boolean;
|
|
6
|
+
/** Standard 5-field cron expression */
|
|
7
|
+
expr: string;
|
|
8
|
+
/** IANA timezone, e.g. America/New_York */
|
|
9
|
+
tz?: string;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export type WorkflowNodeV1 = {
|
|
13
|
+
id: string;
|
|
14
|
+
type:
|
|
15
|
+
| "start"
|
|
16
|
+
| "end"
|
|
17
|
+
| "llm"
|
|
18
|
+
| "tool"
|
|
19
|
+
| "condition"
|
|
20
|
+
| "delay"
|
|
21
|
+
| "human_approval";
|
|
22
|
+
name?: string;
|
|
23
|
+
/** UI layout hints (optional) */
|
|
24
|
+
x?: number;
|
|
25
|
+
y?: number;
|
|
26
|
+
/** Node-type-specific config */
|
|
27
|
+
config?: Record<string, unknown>;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export type WorkflowEdgeV1 = {
|
|
31
|
+
id: string;
|
|
32
|
+
from: string;
|
|
33
|
+
to: string;
|
|
34
|
+
/** Optional edge label/condition */
|
|
35
|
+
label?: string;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export type WorkflowFileV1 = {
|
|
39
|
+
schema: "clawkitchen.workflow.v1";
|
|
40
|
+
id: string;
|
|
41
|
+
name: string;
|
|
42
|
+
version?: number;
|
|
43
|
+
timezone?: string;
|
|
44
|
+
triggers?: WorkflowTriggerCronV1[];
|
|
45
|
+
nodes: WorkflowNodeV1[];
|
|
46
|
+
edges: WorkflowEdgeV1[];
|
|
47
|
+
meta?: Record<string, unknown>;
|
|
48
|
+
};
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import type { WorkflowEdgeV1, WorkflowFileV1, WorkflowNodeV1, WorkflowTriggerCronV1 } from "@/lib/workflows/types";
|
|
2
|
+
|
|
3
|
+
export type WorkflowValidationResult = {
|
|
4
|
+
errors: string[];
|
|
5
|
+
warnings: string[];
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
function isFiveFieldCron(expr: string) {
|
|
9
|
+
const parts = String(expr || "")
|
|
10
|
+
.trim()
|
|
11
|
+
.split(/\s+/)
|
|
12
|
+
.filter(Boolean);
|
|
13
|
+
return parts.length === 5;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function uniqCount(values: string[]) {
|
|
17
|
+
const set = new Set<string>();
|
|
18
|
+
for (const v of values) set.add(v);
|
|
19
|
+
return set.size;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function validateWorkflowFileV1(wf: WorkflowFileV1): WorkflowValidationResult {
|
|
23
|
+
const errors: string[] = [];
|
|
24
|
+
const warnings: string[] = [];
|
|
25
|
+
|
|
26
|
+
if (wf.schema !== "clawkitchen.workflow.v1") errors.push(`schema must be clawkitchen.workflow.v1 (got ${String(wf.schema)})`);
|
|
27
|
+
if (!String(wf.id || "").trim()) errors.push("id is required");
|
|
28
|
+
if (!String(wf.name || "").trim()) errors.push("name is required");
|
|
29
|
+
|
|
30
|
+
const nodes: WorkflowNodeV1[] = Array.isArray(wf.nodes) ? wf.nodes : [];
|
|
31
|
+
const edges: WorkflowEdgeV1[] = Array.isArray(wf.edges) ? wf.edges : [];
|
|
32
|
+
const triggers: WorkflowTriggerCronV1[] = Array.isArray(wf.triggers) ? wf.triggers : [];
|
|
33
|
+
|
|
34
|
+
const nodeIds = nodes.map((n) => String(n?.id ?? "").trim()).filter(Boolean);
|
|
35
|
+
if (nodeIds.length !== nodes.length) errors.push("all nodes must have a non-empty id");
|
|
36
|
+
if (uniqCount(nodeIds) !== nodeIds.length) errors.push("node ids must be unique");
|
|
37
|
+
|
|
38
|
+
const edgeIds = edges.map((e) => String(e?.id ?? "").trim()).filter(Boolean);
|
|
39
|
+
if (edgeIds.length !== edges.length) errors.push("all edges must have a non-empty id");
|
|
40
|
+
if (uniqCount(edgeIds) !== edgeIds.length) errors.push("edge ids must be unique");
|
|
41
|
+
|
|
42
|
+
const nodeIdSet = new Set(nodeIds);
|
|
43
|
+
for (const e of edges) {
|
|
44
|
+
const from = String(e?.from ?? "").trim();
|
|
45
|
+
const to = String(e?.to ?? "").trim();
|
|
46
|
+
if (!from || !to) {
|
|
47
|
+
errors.push(`edge ${String(e?.id ?? "(missing id)")} must have from/to`);
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
if (!nodeIdSet.has(from)) errors.push(`edge ${String(e.id)} references missing from node: ${from}`);
|
|
51
|
+
if (!nodeIdSet.has(to)) errors.push(`edge ${String(e.id)} references missing to node: ${to}`);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const starts = nodes.filter((n) => n.type === "start");
|
|
55
|
+
const ends = nodes.filter((n) => n.type === "end");
|
|
56
|
+
if (!starts.length) warnings.push("no start node found");
|
|
57
|
+
if (starts.length > 1) warnings.push("multiple start nodes found (MVP supports this, but execution semantics may be ambiguous)");
|
|
58
|
+
if (!ends.length) warnings.push("no end node found");
|
|
59
|
+
|
|
60
|
+
for (const t of triggers) {
|
|
61
|
+
if (t.kind === "cron") {
|
|
62
|
+
if (!String(t.id || "").trim()) errors.push("cron trigger missing id");
|
|
63
|
+
if (!String(t.expr || "").trim()) errors.push(`cron trigger ${String(t.id || "(missing id)")} missing expr`);
|
|
64
|
+
else if (!isFiveFieldCron(t.expr)) warnings.push(`cron trigger ${String(t.id)} expr is not 5-field: ${String(t.expr)}`);
|
|
65
|
+
const tz = t.tz ? String(t.tz).trim() : "";
|
|
66
|
+
// NOTE: We commonly use "UTC" as a default, and it is widely accepted even though it isn't in the
|
|
67
|
+
// classic Region/City IANA format. Treat it as valid to avoid noisy validation warnings.
|
|
68
|
+
if (tz && tz !== "UTC" && !tz.includes("/")) {
|
|
69
|
+
warnings.push(`cron trigger ${String(t.id)} tz doesn't look like an IANA timezone: ${String(t.tz)}`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Human approval node sanity checks (MVP)
|
|
75
|
+
const meta = wf.meta && typeof wf.meta === "object" && !Array.isArray(wf.meta) ? (wf.meta as Record<string, unknown>) : {};
|
|
76
|
+
const defaultTarget = String(meta.approvalTarget ?? "").trim();
|
|
77
|
+
for (const n of nodes) {
|
|
78
|
+
if (n.type !== "human_approval") continue;
|
|
79
|
+
const cfg = n.config && typeof n.config === "object" && !Array.isArray(n.config) ? (n.config as Record<string, unknown>) : {};
|
|
80
|
+
const target = String(cfg.target ?? cfg.chatId ?? "").trim();
|
|
81
|
+
const provider = String(cfg.provider ?? cfg.channel ?? "").trim();
|
|
82
|
+
|
|
83
|
+
if (!target && !defaultTarget) {
|
|
84
|
+
warnings.push(`human_approval node ${String(n.id)} has no target (set node.config.target or workflow.meta.approvalTarget)`);
|
|
85
|
+
}
|
|
86
|
+
if (target && !provider && !String(meta.approvalProvider ?? "").trim()) {
|
|
87
|
+
warnings.push(`human_approval node ${String(n.id)} has a target but no provider (set node.config.provider or workflow.meta.approvalProvider)`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return { errors, warnings };
|
|
92
|
+
}
|