@jiggai/kitchen 0.3.33 → 0.3.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +4 -0
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +3 -3
- package/.next/required-server-files.js +4 -4
- package/.next/required-server-files.json +4 -4
- package/.next/routes-manifest.json +24 -0
- package/.next/server/app/_global-error/page/build-manifest.json +3 -3
- package/.next/server/app/_global-error/page.js +2 -2
- package/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/server/app/_global-error.html +2 -2
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- 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 +3 -3
- package/.next/server/app/_not-found/page.js +2 -2
- 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 +3 -3
- package/.next/server/app/agents/[agentId]/page.js +2 -2
- 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.nft.json +1 -1
- package/.next/server/app/api/agents/file/route.js.nft.json +1 -1
- package/.next/server/app/api/agents/files/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.nft.json +1 -1
- package/.next/server/app/api/agents/skills/route.js.nft.json +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/bulk/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/cron/bulk/route/build-manifest.json +11 -0
- package/.next/server/app/api/cron/bulk/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/cron/bulk/route.js +6 -0
- package/.next/server/app/api/cron/bulk/route.js.map +5 -0
- package/.next/server/app/api/cron/bulk/route.js.nft.json +1 -0
- package/.next/server/app/api/cron/bulk/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/cron/delete/route.js.nft.json +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.nft.json +1 -1
- package/.next/server/app/api/cron/worker/route.js +2 -1
- package/.next/server/app/api/cron/worker/route.js.nft.json +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.nft.json +1 -1
- package/.next/server/app/api/goals/route.js.nft.json +1 -1
- package/.next/server/app/api/ids/check/route.js.nft.json +1 -1
- package/.next/server/app/api/manifest/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/manifest/route/build-manifest.json +11 -0
- package/.next/server/app/api/manifest/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/manifest/route.js +6 -0
- package/.next/server/app/api/manifest/route.js.map +5 -0
- package/.next/server/app/api/manifest/route.js.nft.json +1 -0
- package/.next/server/app/api/manifest/route_client-reference-manifest.js +2 -0
- 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/plugins/[pluginId]/[...path]/route.js +2 -2
- package/.next/server/app/api/plugins/[pluginId]/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/plugins/[pluginId]/tabs/[tabId]/route.js +1 -1
- package/.next/server/app/api/plugins/[pluginId]/tabs/[tabId]/route.js.nft.json +1 -1
- package/.next/server/app/api/plugins/route.js +1 -1
- package/.next/server/app/api/plugins/route.js.nft.json +1 -1
- package/.next/server/app/api/plugins/test/route.js +1 -1
- package/.next/server/app/api/plugins/test/route.js.nft.json +1 -1
- package/.next/server/app/api/recipes/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/recipes/clone/route.js.nft.json +1 -1
- package/.next/server/app/api/recipes/custom-team/route.js.nft.json +1 -1
- package/.next/server/app/api/recipes/delete/route.js.nft.json +1 -1
- package/.next/server/app/api/recipes/local-agent-catalog/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.nft.json +1 -1
- package/.next/server/app/api/scaffold/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/cron-installation/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/model-options/route.js +1 -1
- package/.next/server/app/api/settings/model-options/route.js.nft.json +1 -1
- package/.next/server/app/api/swarms/start/route.js +1 -1
- package/.next/server/app/api/swarms/start/route.js.nft.json +1 -1
- package/.next/server/app/api/swarms/status/route.js +1 -1
- package/.next/server/app/api/swarms/status/route.js.nft.json +1 -1
- package/.next/server/app/api/teams/[teamId]/media-providers/route.js +1 -1
- package/.next/server/app/api/teams/[teamId]/media-providers/route.js.nft.json +1 -1
- package/.next/server/app/api/teams/[teamId]/tickets/assign/route.js.nft.json +1 -1
- package/.next/server/app/api/teams/[teamId]/tickets/assignees/route.js.nft.json +1 -1
- package/.next/server/app/api/teams/[teamId]/tickets/comment/route.js.nft.json +1 -1
- package/.next/server/app/api/teams/[teamId]/tickets/delete/route.js.nft.json +1 -1
- package/.next/server/app/api/teams/[teamId]/tickets/move/route.js.nft.json +1 -1
- package/.next/server/app/api/teams/[teamId]/tickets/move-to-goals/route.js.nft.json +1 -1
- package/.next/server/app/api/teams/file/route.js.nft.json +1 -1
- package/.next/server/app/api/teams/files/route.js.nft.json +1 -1
- package/.next/server/app/api/teams/list/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/teams/list/route/build-manifest.json +11 -0
- package/.next/server/app/api/teams/list/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/teams/list/route.js +6 -0
- package/.next/server/app/api/teams/list/route.js.map +5 -0
- package/.next/server/app/api/teams/list/route.js.nft.json +1 -0
- package/.next/server/app/api/teams/list/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/teams/memory/route.js.nft.json +1 -1
- package/.next/server/app/api/teams/meta/route.js.nft.json +1 -1
- package/.next/server/app/api/teams/orchestrator/route.js +1 -1
- package/.next/server/app/api/teams/orchestrator/route.js.nft.json +1 -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.nft.json +1 -1
- package/.next/server/app/api/teams/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/teams/workflow-deliverables/file/route.js +1 -1
- package/.next/server/app/api/teams/workflow-deliverables/file/route.js.nft.json +1 -1
- package/.next/server/app/api/teams/workflow-deliverables/route.js.nft.json +1 -1
- package/.next/server/app/api/teams/workflow-runs/route.js.nft.json +1 -1
- package/.next/server/app/api/teams/workflow-templates/route.js.nft.json +1 -1
- package/.next/server/app/api/teams/workflow-triggers/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/teams/workflow-triggers/route/build-manifest.json +11 -0
- package/.next/server/app/api/teams/workflow-triggers/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/teams/workflow-triggers/route.js +6 -0
- package/.next/server/app/api/teams/workflow-triggers/route.js.map +5 -0
- package/.next/server/app/api/teams/workflow-triggers/route.js.nft.json +1 -0
- package/.next/server/app/api/teams/workflow-triggers/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/teams/workflows/route.js.nft.json +1 -1
- package/.next/server/app/api/tickets/assign/route.js.nft.json +1 -1
- package/.next/server/app/api/tickets/assignees/route.js.nft.json +1 -1
- package/.next/server/app/api/tickets/move/route.js.nft.json +1 -1
- package/.next/server/app/channels/page/build-manifest.json +3 -3
- package/.next/server/app/channels/page.js +2 -2
- 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 +3 -3
- package/.next/server/app/cron-jobs/page.js +2 -2
- 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/goals/[id]/page/build-manifest.json +3 -3
- package/.next/server/app/goals/[id]/page.js +2 -2
- 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 +3 -3
- package/.next/server/app/goals/new/page.js +2 -2
- 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 +3 -3
- package/.next/server/app/goals/page.js +2 -2
- 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/page/build-manifest.json +3 -3
- package/.next/server/app/page.js +4 -4
- 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 +3 -3
- package/.next/server/app/recipes/[id]/page.js +4 -4
- 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 +3 -3
- package/.next/server/app/recipes/page.js +4 -4
- 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/runs/page/build-manifest.json +3 -3
- package/.next/server/app/runs/page.js +5 -7
- package/.next/server/app/runs/page.js.nft.json +1 -1
- package/.next/server/app/runs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page/build-manifest.json +3 -3
- package/.next/server/app/settings/page.js +2 -2
- 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]/deliverables/page/build-manifest.json +3 -3
- package/.next/server/app/teams/[teamId]/deliverables/page.js +5 -5
- package/.next/server/app/teams/[teamId]/deliverables/page.js.nft.json +1 -1
- package/.next/server/app/teams/[teamId]/deliverables/page_client-reference-manifest.js +1 -1
- package/.next/server/app/teams/[teamId]/page/build-manifest.json +3 -3
- package/.next/server/app/teams/[teamId]/page.js +5 -6
- 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]/runs/[workflowId]/[runId]/page/build-manifest.json +3 -3
- package/.next/server/app/teams/[teamId]/runs/[workflowId]/[runId]/page.js +5 -6
- package/.next/server/app/teams/[teamId]/runs/[workflowId]/[runId]/page.js.nft.json +1 -1
- package/.next/server/app/teams/[teamId]/runs/[workflowId]/[runId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/teams/[teamId]/runs/page/build-manifest.json +3 -3
- package/.next/server/app/teams/[teamId]/runs/page.js +2 -2
- package/.next/server/app/teams/[teamId]/runs/page.js.nft.json +1 -1
- package/.next/server/app/teams/[teamId]/runs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/teams/[teamId]/tickets/[ticket]/page/build-manifest.json +3 -3
- package/.next/server/app/teams/[teamId]/tickets/[ticket]/page.js +2 -2
- package/.next/server/app/teams/[teamId]/tickets/[ticket]/page.js.nft.json +1 -1
- package/.next/server/app/teams/[teamId]/tickets/[ticket]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/teams/[teamId]/tickets/page/build-manifest.json +3 -3
- package/.next/server/app/teams/[teamId]/tickets/page.js +2 -2
- package/.next/server/app/teams/[teamId]/tickets/page.js.nft.json +1 -1
- package/.next/server/app/teams/[teamId]/tickets/page_client-reference-manifest.js +1 -1
- package/.next/server/app/teams/[teamId]/workflows/[workflowId]/page/build-manifest.json +3 -3
- package/.next/server/app/teams/[teamId]/workflows/[workflowId]/page.js +5 -5
- package/.next/server/app/teams/[teamId]/workflows/[workflowId]/page.js.nft.json +1 -1
- package/.next/server/app/teams/[teamId]/workflows/[workflowId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/teams/[teamId]/workflows/page/build-manifest.json +3 -3
- package/.next/server/app/teams/[teamId]/workflows/page.js +5 -5
- package/.next/server/app/teams/[teamId]/workflows/page.js.nft.json +1 -1
- package/.next/server/app/teams/[teamId]/workflows/page_client-reference-manifest.js +1 -1
- package/.next/server/app/tickets/[ticket]/page/build-manifest.json +3 -3
- package/.next/server/app/tickets/[ticket]/page.js +2 -2
- 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 +3 -3
- package/.next/server/app/tickets/page.js +2 -2
- 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 +4 -0
- package/.next/server/chunks/[externals]_node:fs_ddf6f167._.js +3 -0
- package/.next/server/chunks/[externals]_node:fs_ddf6f167._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__00a30f40._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__03c5f2a6._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__03c5f2a6._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__04f289da._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__08b4c8f2._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0b2c557c._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0b2c557c._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0f55461f._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1311d7a3._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1480ffda._.js +1 -1
- package/.next/server/chunks/{[root-of-the-server]__be5f57b2._.js → [root-of-the-server]__17fa6089._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__1873f417._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1d4f6506._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1d4f6506._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__1f18c0c4._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1f18c0c4._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__1f1e62ac._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__20b1f42d._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__21ad9eeb._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__2c207e60._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__2dd1afff._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__3021a250._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__30cd38e9._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__392e585d._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__3bfad714._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__3d15e850._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__3f648b9b._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__482575d2._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__4898071c._.js +4 -4
- package/.next/server/chunks/[root-of-the-server]__497e7a9d._.js +22 -0
- package/.next/server/chunks/[root-of-the-server]__497e7a9d._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__4ee12514._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__55defc7c._.js +1 -1
- package/.next/server/chunks/{[root-of-the-server]__74b80ca4._.js → [root-of-the-server]__5792c29e._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__5aa1dc93._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__5c5990a6._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__603cb0fa._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__6131b7e2._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__6131b7e2._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__636919a0._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__653d42f0._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__653d42f0._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__663e79ff._.js +1 -1
- package/.next/server/chunks/{[root-of-the-server]__0883634a._.js → [root-of-the-server]__68a21bb1._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__0883634a._.js.map → [root-of-the-server]__68a21bb1._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__69c065ce._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__6e463e5f._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__6e463e5f._.js.map +1 -0
- package/.next/server/chunks/{[root-of-the-server]__c1b0d50e._.js → [root-of-the-server]__7194dfe2._.js} +3 -3
- package/.next/server/chunks/{[root-of-the-server]__f45ceefb._.js → [root-of-the-server]__7347e39f._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__f45ceefb._.js.map → [root-of-the-server]__7347e39f._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__74e2a9ba._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__7bdf9f6e._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__7bdf9f6e._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__7e12b9f4._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__87875179._.js +1 -1
- package/.next/server/chunks/{[root-of-the-server]__17124952._.js → [root-of-the-server]__89f2190c._.js} +3 -3
- package/.next/server/chunks/[root-of-the-server]__8f8e110f._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__91d0cce1._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__91d0cce1._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__937b40e2._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__937b40e2._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__9853b72d._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__9dba20b3._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__9e96d37b._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__aba68368._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__aed4e4f2._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__b6cff26d._.js +1 -1
- package/.next/server/chunks/{[root-of-the-server]__0bea0f71._.js → [root-of-the-server]__b986660c._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__0bea0f71._.js.map → [root-of-the-server]__b986660c._.js.map} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__343776df._.js → [root-of-the-server]__bbed0e46._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__c15c5141._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__c50e4bc4._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__cc0860cb._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__cc3ea05b._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__cc3ea05b._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__d302afb4._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__d4a8660e._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__e1432bba._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__e1432bba._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__e478ef0d._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__e9acbabd._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__e9d9d570._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__f408c708._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__f4cbadf7._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__f5cd81f1._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__f85b5a70._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__f85b5a70._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__f994dc62._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__fb22e719._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__fb22e719._.js.map +1 -0
- package/.next/server/chunks/_next-internal_server_app_api_cron_bulk_route_actions_30f8adb9.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_cron_bulk_route_actions_30f8adb9.js.map +1 -0
- package/.next/server/chunks/_next-internal_server_app_api_manifest_route_actions_7f7622ff.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_manifest_route_actions_7f7622ff.js.map +1 -0
- package/.next/server/chunks/_next-internal_server_app_api_teams_list_route_actions_5aa8c937.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_teams_list_route_actions_5aa8c937.js.map +1 -0
- package/.next/server/chunks/_next-internal_server_app_api_teams_workflow-triggers_route_actions_e86e3b38.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_teams_workflow-triggers_route_actions_e86e3b38.js.map +1 -0
- package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_1fe98a49.js +1 -1
- package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_1fe98a49.js.map +1 -1
- package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_3a1b29e4.js +1 -1
- package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_cb6ddb24.js +13 -0
- package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_cb6ddb24.js.map +1 -0
- package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_f5680d9e.js +1 -1
- package/.next/server/chunks/node_modules_yaml_dist_49c13b35._.js +1 -1
- package/.next/server/chunks/node_modules_yaml_dist_49c13b35._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__195421b7._.js +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__195421b7._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__2a657095._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__2a657095._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__3b880807._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__3b880807._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__3f55f975._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__3f55f975._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__471bc2e7._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__471bc2e7._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__4d24c088._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__4d24c088._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__6390ce9c._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__6390ce9c._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__7b8cdea5._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__7b8cdea5._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__7d21617d._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__7d21617d._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__8135c9d5._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__8135c9d5._.js.map +1 -0
- package/.next/server/chunks/ssr/{node_modules_next_dist_1038a5b9._.js → [root-of-the-server]__8e8f535b._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_next_dist_1038a5b9._.js.map → [root-of-the-server]__8e8f535b._.js.map} +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__92524828._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__92524828._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__997aa62c._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__997aa62c._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__9db1df87._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__9db1df87._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__9e1ab064._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__9e1ab064._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__a2e3966f._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__a2e3966f._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__af792402._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__af792402._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__b5f65083._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__b5f65083._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__becf14db._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__becf14db._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__c106a298._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__c106a298._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__cb91405c._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__cb91405c._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__f59c3144._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__f59c3144._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__fbe5ff69._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__fbe5ff69._.js.map +1 -1
- package/.next/server/chunks/ssr/_1ee3bd7b._.js +1 -1
- package/.next/server/chunks/ssr/_1ee3bd7b._.js.map +1 -1
- package/.next/server/chunks/ssr/{_deb7a691._.js → _2ab986a4._.js} +2 -2
- package/.next/server/chunks/ssr/_2ab986a4._.js.map +1 -0
- package/.next/server/chunks/ssr/_2d8d7232._.js +1 -1
- package/.next/server/chunks/ssr/_2d8d7232._.js.map +1 -1
- package/.next/server/chunks/ssr/_43a80c61._.js +1 -1
- package/.next/server/chunks/ssr/_43a80c61._.js.map +1 -1
- package/.next/server/chunks/ssr/_641f29bc._.js +3 -0
- package/.next/server/chunks/ssr/_641f29bc._.js.map +1 -0
- package/.next/server/chunks/ssr/_ac993243._.js +3 -0
- package/.next/server/chunks/ssr/_ac993243._.js.map +1 -0
- package/.next/server/chunks/ssr/_f636ce67._.js +3 -0
- package/.next/server/chunks/ssr/_f636ce67._.js.map +1 -0
- package/.next/server/chunks/ssr/b1a17_app_teams_[teamId]_workflows_[workflowId]_workflows-editor-client_tsx_5e714aa2._.js +7 -1
- package/.next/server/chunks/ssr/b1a17_app_teams_[teamId]_workflows_[workflowId]_workflows-editor-client_tsx_5e714aa2._.js.map +1 -1
- package/.next/server/chunks/ssr/{_7f9e89d2._.js → node_modules_next_10fb6ad9._.js} +3 -3
- package/.next/server/chunks/ssr/node_modules_next_10fb6ad9._.js.map +1 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_25a30daf._.js +1 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_compiled_bc6b8ddf._.js +1 -1
- package/.next/server/chunks/ssr/node_modules_yaml_dist_18db9ed7._.js +2 -2
- package/.next/server/chunks/ssr/src_13139e3d._.js +1 -1
- package/.next/server/chunks/ssr/src_13139e3d._.js.map +1 -1
- package/.next/server/chunks/ssr/src_2a73b867._.js +1 -1
- package/.next/server/chunks/ssr/src_2a73b867._.js.map +1 -1
- package/.next/server/chunks/ssr/src_2dbb3b7f._.js +1 -1
- package/.next/server/chunks/ssr/src_2dbb3b7f._.js.map +1 -1
- package/.next/server/chunks/ssr/src_417bc4a6._.js +1 -1
- package/.next/server/chunks/ssr/src_417bc4a6._.js.map +1 -1
- package/.next/server/chunks/ssr/src_59477309._.js +1 -1
- package/.next/server/chunks/ssr/src_59477309._.js.map +1 -1
- package/.next/server/chunks/ssr/src_79d55c05._.js +1 -1
- package/.next/server/chunks/ssr/src_79d55c05._.js.map +1 -1
- 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_cron-jobs_cron-jobs-client_tsx_ec91a73d._.js +1 -1
- package/.next/server/chunks/ssr/src_app_cron-jobs_cron-jobs-client_tsx_ec91a73d._.js.map +1 -1
- package/.next/server/chunks/ssr/src_app_recipes_[id]_RecipeEditor_index_tsx_98393217._.js +1 -1
- package/.next/server/chunks/ssr/src_app_recipes_[id]_RecipeEditor_index_tsx_98393217._.js.map +1 -1
- 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]_runs_[workflowId]_[runId]_run-detail-client_tsx_56f0cbd7._.js +3 -0
- package/.next/server/chunks/ssr/src_app_teams_[teamId]_runs_[workflowId]_[runId]_run-detail-client_tsx_56f0cbd7._.js.map +1 -0
- package/.next/server/chunks/ssr/src_app_teams_[teamId]_workflows_workflows-client_tsx_12742cc9._.js +1 -1
- package/.next/server/chunks/ssr/src_app_teams_[teamId]_workflows_workflows-client_tsx_12742cc9._.js.map +1 -1
- 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/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +2 -2
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/001f840e2d5598af.js +10 -0
- package/.next/static/chunks/212477db59154fa7.js +3 -0
- package/.next/static/chunks/242fee5849d79d1b.js +1 -0
- package/.next/static/chunks/26d8587a145bded7.js +1 -0
- package/.next/static/chunks/{b83c1ca03c3b8c6d.js → 372ac1d07db9969a.js} +1 -1
- package/.next/static/chunks/4a0d27f3023676a5.js +1 -0
- package/.next/static/chunks/4ad57cfc54e20abd.js +1 -0
- package/.next/static/chunks/4e8866ad8f1f6b2b.js +1 -0
- package/.next/static/chunks/7d9e7a36b92578fd.js +1 -0
- package/.next/static/chunks/87f63f654bc046a2.js +3 -0
- package/.next/static/chunks/8aac543d98940eb3.js +2 -0
- package/.next/static/chunks/8acd42df55d57556.js +1 -0
- package/.next/static/chunks/95b7564f2360e762.js +1 -0
- package/.next/static/chunks/9801fc48f532d076.js +1 -0
- package/.next/static/chunks/{d6e1b7307a9274ce.js → 9c627cb11f73ac4c.js} +1 -1
- package/.next/static/chunks/ad652e4b50e1fb17.js +1 -0
- package/.next/static/chunks/aff32612e6b9d901.js +1 -0
- package/.next/static/chunks/c6c561355e97baa8.js +7 -0
- package/.next/static/chunks/d4c855575c079ffc.js +3 -0
- package/.next/static/chunks/d593ea5e91e81b45.js +1 -0
- package/.next/static/chunks/{87879d67a1601ee0.js → e0984ec981f01c0d.js} +1 -1
- package/.next/static/chunks/f5039461b97678c7.js +1 -0
- package/.next/static/chunks/f51763a2aea0a4b6.js +1 -0
- package/.next/static/chunks/f7f157ba542e1ae5.js +1 -0
- package/.next/static/chunks/fb008837ba324b34.css +3 -0
- package/.next/static/chunks/{turbopack-dbf3078dbf5863bd.js → turbopack-bdd9478663f034d6.js} +1 -1
- package/LICENSE +192 -0
- package/README.md +19 -5
- package/openclaw/index.ts +144 -5
- package/openclaw.plugin.json +2 -8
- package/package.json +5 -2
- package/.next/server/chunks/[root-of-the-server]__18423bab._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__18423bab._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__35ec765d._.js +0 -13
- package/.next/server/chunks/[root-of-the-server]__35ec765d._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__3c92e5aa._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__3c92e5aa._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__813dd669._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__813dd669._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__b457b884._.js +0 -22
- package/.next/server/chunks/[root-of-the-server]__b457b884._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__c5e88cbb._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__c5e88cbb._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__da7df58d._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__da7df58d._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0a5cb3ca._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0a5cb3ca._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__177cec74._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__177cec74._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__4981f370._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__4981f370._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__51e26a01._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__51e26a01._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__6b6b7595._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__6b6b7595._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__8f9585b9._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__8f9585b9._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__9e400864._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__9e400864._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__a6348eaa._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__a6348eaa._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__ad4e8478._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__ad4e8478._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__b5aa14b8._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__b5aa14b8._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__b8998a21._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__b8998a21._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__e9bd9b71._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__e9bd9b71._.js.map +0 -1
- package/.next/server/chunks/ssr/_32beff4b._.js +0 -3
- package/.next/server/chunks/ssr/_32beff4b._.js.map +0 -1
- package/.next/server/chunks/ssr/_7f9e89d2._.js.map +0 -1
- package/.next/server/chunks/ssr/_8538617d._.js +0 -3
- package/.next/server/chunks/ssr/_8538617d._.js.map +0 -1
- package/.next/server/chunks/ssr/_a506fcf8._.js +0 -3
- package/.next/server/chunks/ssr/_a506fcf8._.js.map +0 -1
- package/.next/server/chunks/ssr/_deb7a691._.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/src_app_21685f67._.js +0 -3
- package/.next/server/chunks/ssr/src_app_21685f67._.js.map +0 -1
- package/.next/static/chunks/0edab8a24d59a626.js +0 -2
- package/.next/static/chunks/410dc851d0e3033d.js +0 -1
- package/.next/static/chunks/4e38b3f280ced64c.js +0 -1
- package/.next/static/chunks/4f2b8a07ace7e02b.js +0 -1
- package/.next/static/chunks/57ad5290f7e92ffd.css +0 -3
- package/.next/static/chunks/8a919077b73862da.js +0 -1
- package/.next/static/chunks/9906444fb1191bb4.js +0 -1
- package/.next/static/chunks/a625725b4cd85ea3.js +0 -1
- package/.next/static/chunks/ac32974713c57cb3.js +0 -1
- package/.next/static/chunks/bdb7ebd88ea13111.js +0 -1
- package/.next/static/chunks/bfcfbe145220d365.js +0 -1
- package/.next/static/chunks/c0d9f53d91cc65c5.js +0 -10
- package/.next/static/chunks/c0e2f959abc4cc13.js +0 -1
- package/.next/static/chunks/c822e53f79a492c7.js +0 -1
- package/.next/static/chunks/ce6b2024d13b4333.js +0 -1
- package/.next/static/chunks/d13249af74d111cf.js +0 -3
- package/.next/static/chunks/d16f64ca3a8ed208.js +0 -1
- package/.next/static/chunks/d7541a171116ec9c.js +0 -1
- package/.next/static/chunks/e03137fd069b1514.js +0 -1
- package/.next/static/chunks/e10faa9296c8b246.js +0 -1
- package/.next/static/chunks/ec24877f7b7f82c5.js +0 -3
- package/.next/static/chunks/ff3bbb5df40b2cc4.js +0 -1
- /package/.next/server/chunks/{[root-of-the-server]__be5f57b2._.js.map → [root-of-the-server]__17fa6089._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__74b80ca4._.js.map → [root-of-the-server]__5792c29e._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__c1b0d50e._.js.map → [root-of-the-server]__7194dfe2._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__17124952._.js.map → [root-of-the-server]__89f2190c._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__343776df._.js.map → [root-of-the-server]__bbed0e46._.js.map} +0 -0
- /package/.next/static/{F0PhVXEIb3LrF9XQem5EQ → bTCL-c1-1vqxgA-ZN8TUy}/_buildManifest.js +0 -0
- /package/.next/static/{F0PhVXEIb3LrF9XQem5EQ → bTCL-c1-1vqxgA-ZN8TUy}/_clientMiddlewareManifest.json +0 -0
- /package/.next/static/{F0PhVXEIb3LrF9XQem5EQ → bTCL-c1-1vqxgA-ZN8TUy}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},59494,e=>{"use strict";function t(){let e=globalThis.__clawkitchen_api;if(!e)throw Error("ClawKitchen: OpenClaw plugin API not available. (This should only happen if Kitchen is started outside the gateway process.)");return e}e.s(["getKitchenApi",()=>t])},74533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},12057,(e,t,r)=>{t.exports=e.x("node:util",()=>require("node:util"))},5003,e=>{"use strict";var t=e.i(59494),r=e.i(74533);let n=(0,e.i(12057).promisify)(r.execFile);function a(e){return"string"==typeof e.stdout?e.stdout:e.stdout&&"object"==typeof e.stdout&&"toString"in e.stdout?String(e.stdout.toString()):""}function i(e,t){return"string"==typeof e.stderr?e.stderr:e.stderr&&"object"==typeof e.stderr&&"toString"in e.stderr?String(e.stderr.toString()):"string"==typeof e.message?e.message:String(t)}function s(e){let t=e.trim();if(!t)return e;let r=t[0];if("["===r||"{"===r||'"'===r)return e;let n=t.split("\n"),a=n.findIndex(e=>/^\s*[[\{"]/.test(e));if(a>0){let e=n.slice(a).join("\n");try{return JSON.parse(e),e}catch{}}return e}async function o(e,t={}){let{sanitizeStdout:r=!0}=t;try{process.platform;let t=await n("openclaw",e,{timeout:12e4,windowsHide:!0,maxBuffer:0xa00000}),a=String(t.stdout??"");return{ok:!0,exitCode:0,stdout:r?s(a):a,stderr:String(t.stderr??"")}}catch(t){let e="number"==typeof t.code?t.code:1;return{ok:!1,exitCode:e,stdout:a(t),stderr:i(t,t)}}}function l(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{}let r=t.split("\n"),n=r.findIndex(e=>/^\s*[[\{]/.test(e));if(n>=0){let e=r.slice(n).join("\n");try{return JSON.parse(e)}catch{}}for(let e=r.length-1;e>=0;e--)if(/^\s*[\]}]/.test(r[e])){for(let t=e;t>=0;t--)if(/^\s*[[\{]/.test(r[t]))try{return JSON.parse(r.slice(t,e+1).join("\n"))}catch{}}return null}async function u(e){return o(e,{sanitizeStdout:!1})}async function d(e){if("cron"===e[0]||"recipes"===e[0]&&"workflows"===e[1]&&["runner-once","runner-tick","worker-tick"].includes(e[2]))return o(e);let r=(0,t.getKitchenApi)();try{let t=await r.runtime.system.runCommandWithTimeout(["openclaw",...e],{timeoutMs:12e4}),n=s(String(t.stdout??"")),a=String(t.stderr??""),i="number"==typeof t.exitCode?t.exitCode:"number"==typeof t.code?t.code:"number"==typeof t.status?t.status:0;if(0!==i)return{ok:!1,exitCode:i,stdout:n,stderr:a};return{ok:!0,exitCode:0,stdout:n,stderr:a}}catch(t){let e="number"==typeof t.code?t.code:1;return{ok:!1,exitCode:e,stdout:a(t),stderr:i(t,t)}}}e.s(["extractJson",()=>l,"runOpenClaw",()=>d,"runOpenClawRaw",()=>u])},70628,e=>{"use strict";var t=e.i(47909),r=e.i(74017),n=e.i(96250),a=e.i(59756),i=e.i(61916),s=e.i(74677),o=e.i(69741),l=e.i(16795),u=e.i(87718),d=e.i(95169),c=e.i(47587),p=e.i(66012),h=e.i(70101),f=e.i(54468),x=e.i(10372),m=e.i(93695);e.i(52474);var g=e.i(220),y=e.i(89171),R=e.i(5003);async function w(e){try{let t=await e.json(),r=t.agentId?.trim();if(!r)return y.NextResponse.json({error:"agentId is required"},{status:400});let n=["agents","set-identity",r];t.name?.trim()&&n.push("--name",t.name.trim()),t.emoji?.trim()&&n.push("--emoji",t.emoji.trim()),t.theme?.trim()&&n.push("--theme",t.theme.trim()),t.avatar?.trim()&&n.push("--avatar",t.avatar.trim());let{stdout:a,stderr:i}=await (0,R.runOpenClaw)(n);return y.NextResponse.json({ok:!0,stdout:a,stderr:i})}catch(e){return y.NextResponse.json({error:"Failed to set agent identity",message:e instanceof Error?e.message:String(e)},{status:500})}}e.s(["POST",()=>w],92455);var v=e.i(92455);let C=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/agents/identity/route",pathname:"/api/agents/identity",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/agents/identity/route.ts",nextConfigOutput:"standalone",userland:v}),{workAsyncStorage:E,workUnitAsyncStorage:S,serverHooks:b}=C;function k(){return(0,n.patchFetch)({workAsyncStorage:E,workUnitAsyncStorage:S})}async function A(e,t,n){C.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/agents/identity/route";y=y.replace(/\/index$/,"")||"/";let R=await C.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:w,params:v,nextConfig:E,parsedUrl:S,isDraftMode:b,prerenderManifest:k,routerServerContext:A,isOnDemandRevalidate:N,revalidateOnlyGenerated:O,resolvedPathname:j,clientReferenceManifest:T,serverActionsManifest:P}=R,_=(0,o.normalizeAppPath)(y),q=!!(k.dynamicRoutes[_]||k.routes[j]),I=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,S,!1):t.end("This page could not be found"),null);if(q&&!b){let e=!!k.routes[j],t=k.dynamicRoutes[_];if(t&&!1===t.fallback&&!e){if(E.experimental.adapterPath)return await I();throw new m.NoFallbackError}}let H=null;!q||C.isDev||b||(H="/index"===(H=j)?"/":H);let U=!0===C.isDev||!q,D=q&&!U;P&&T&&(0,s.setManifestsSingleton)({page:y,clientReferenceManifest:T,serverActionsManifest:P});let M=e.method||"GET",K=(0,i.getTracer)(),F=K.getActiveScopeSpan(),$={params:v,prerenderManifest:k,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:U,incrementalCache:(0,a.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:E.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>C.onRequestError(e,t,n,a,A)},sharedContext:{buildId:w}},B=new l.NodeNextRequest(e),J=new l.NodeNextResponse(t),L=u.NextRequestAdapter.fromNodeNextRequest(B,(0,u.signalFromNodeResponse)(t));try{let s=async e=>C.handle(L,$).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=K.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${M} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${M} ${y}`)}),o=!!(0,a.getRequestMeta)(e,"minimalMode"),l=async a=>{var i,l;let u=async({previousCacheEntry:r})=>{try{if(!o&&N&&O&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await s(a);e.fetchMetrics=$.renderOpts.fetchMetrics;let l=$.renderOpts.pendingWaitUntil;l&&n.waitUntil&&(n.waitUntil(l),l=void 0);let u=$.renderOpts.collectedTags;if(!q)return await (0,p.sendResponse)(B,J,i,$.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(i.headers);u&&(t[x.NEXT_CACHE_TAGS_HEADER]=u),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=x.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,n=void 0===$.renderOpts.collectedExpire||$.renderOpts.collectedExpire>=x.INFINITE_CACHE?void 0:$.renderOpts.collectedExpire;return{value:{kind:g.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await C.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:N})},!1,A),t}},d=await C.handleResponse({req:e,nextConfig:E,cacheKey:H,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:k,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:O,responseGenerator:u,waitUntil:n.waitUntil,isMinimalMode:o});if(!q)return null;if((null==d||null==(i=d.value)?void 0:i.kind)!==g.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(l=d.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});o||t.setHeader("x-nextjs-cache",N?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let m=(0,h.fromNodeOutgoingHttpHeaders)(d.value.headers);return o&&q||m.delete(x.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||m.get("Cache-Control")||m.set("Cache-Control",(0,f.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(B,J,new Response(d.value.body,{headers:m,status:d.value.status||200})),null};F?await l(F):await K.withPropagatedContext(e.headers,()=>K.trace(d.BaseServerSpan.handleRequest,{spanName:`${M} ${y}`,kind:i.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},l))}catch(t){if(t instanceof m.NoFallbackError||await C.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:N})},!1,A),q)throw t;return await (0,p.sendResponse)(B,J,new Response(null,{status:500})),null}}e.s(["handler",()=>A,"patchFetch",()=>k,"routeModule",()=>C,"serverHooks",()=>b,"workAsyncStorage",()=>E,"workUnitAsyncStorage",()=>S],70628)}];
|
|
1
|
+
module.exports=[70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},59494,e=>{"use strict";function t(){let e=globalThis.__clawkitchen_api;if(!e)throw Error("ClawKitchen: OpenClaw plugin API not available. (This should only happen if Kitchen is started outside the gateway process.)");return e}e.s(["getKitchenApi",()=>t])},74533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},12057,(e,t,r)=>{t.exports=e.x("node:util",()=>require("node:util"))},5003,e=>{"use strict";var t=e.i(59494),r=e.i(74533);let n=(0,e.i(12057).promisify)(r.execFile);function a(e){return"string"==typeof e.stdout?e.stdout:e.stdout&&"object"==typeof e.stdout&&"toString"in e.stdout?String(e.stdout.toString()):""}function i(e,t){return"string"==typeof e.stderr?e.stderr:e.stderr&&"object"==typeof e.stderr&&"toString"in e.stderr?String(e.stderr.toString()):"string"==typeof e.message?e.message:String(t)}function s(e){let t=e.trim();if(!t)return e;let r=t[0];if("["===r||"{"===r||'"'===r)return e;let n=t.split("\n"),a=n.findIndex(e=>/^\s*[[\{"]/.test(e));if(a>0){let e=n.slice(a).join("\n");try{return JSON.parse(e),e}catch{}}return e}async function o(e,t={}){let{sanitizeStdout:r=!0}=t;try{process.platform;let t=await n("openclaw",e,{timeout:12e4,windowsHide:!0,maxBuffer:0xa00000}),a=String(t.stdout??"");return{ok:!0,exitCode:0,stdout:r?s(a):a,stderr:String(t.stderr??"")}}catch(t){let e="number"==typeof t.code?t.code:1;return{ok:!1,exitCode:e,stdout:a(t),stderr:i(t,t)}}}function l(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{}let r=t.split("\n"),n=r.findIndex(e=>/^\s*[[\{]/.test(e));if(n>=0){let e=r.slice(n).join("\n");try{return JSON.parse(e)}catch{}}for(let e=r.length-1;e>=0;e--)if(/^\s*[\]}]/.test(r[e])){for(let t=e;t>=0;t--)if(/^\s*[[\{]/.test(r[t]))try{return JSON.parse(r.slice(t,e+1).join("\n"))}catch{}}return null}async function u(e){return o(e,{sanitizeStdout:!1})}async function d(e){if("cron"===e[0]||"recipes"===e[0]&&"workflows"===e[1]&&["runner-once","runner-tick","worker-tick"].includes(e[2]))return o(e);let r=(0,t.getKitchenApi)();try{let t=await r.runtime.system.runCommandWithTimeout(["openclaw",...e],{timeoutMs:12e4}),n=s(String(t.stdout??"")),a=String(t.stderr??""),i="number"==typeof t.exitCode?t.exitCode:"number"==typeof t.code?t.code:"number"==typeof t.status?t.status:0;if(0!==i)return{ok:!1,exitCode:i,stdout:n,stderr:a};return{ok:!0,exitCode:0,stdout:n,stderr:a}}catch(t){let e="number"==typeof t.code?t.code:1;return{ok:!1,exitCode:e,stdout:a(t),stderr:i(t,t)}}}e.s(["extractJson",()=>l,"runOpenClaw",()=>d,"runOpenClawRaw",()=>u])},70628,e=>{"use strict";var t=e.i(47909),r=e.i(74017),n=e.i(96250),a=e.i(59756),i=e.i(61916),s=e.i(74677),o=e.i(69741),l=e.i(16795),u=e.i(87718),d=e.i(95169),c=e.i(47587),p=e.i(66012),h=e.i(70101),f=e.i(74838),x=e.i(10372),m=e.i(93695);e.i(52474);var g=e.i(220),y=e.i(89171),R=e.i(5003);async function w(e){try{let t=await e.json(),r=t.agentId?.trim();if(!r)return y.NextResponse.json({error:"agentId is required"},{status:400});let n=["agents","set-identity",r];t.name?.trim()&&n.push("--name",t.name.trim()),t.emoji?.trim()&&n.push("--emoji",t.emoji.trim()),t.theme?.trim()&&n.push("--theme",t.theme.trim()),t.avatar?.trim()&&n.push("--avatar",t.avatar.trim());let{stdout:a,stderr:i}=await (0,R.runOpenClaw)(n);return y.NextResponse.json({ok:!0,stdout:a,stderr:i})}catch(e){return y.NextResponse.json({error:"Failed to set agent identity",message:e instanceof Error?e.message:String(e)},{status:500})}}e.s(["POST",()=>w],92455);var v=e.i(92455);let C=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/agents/identity/route",pathname:"/api/agents/identity",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/agents/identity/route.ts",nextConfigOutput:"standalone",userland:v}),{workAsyncStorage:E,workUnitAsyncStorage:S,serverHooks:b}=C;function k(){return(0,n.patchFetch)({workAsyncStorage:E,workUnitAsyncStorage:S})}async function A(e,t,n){C.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/agents/identity/route";y=y.replace(/\/index$/,"")||"/";let R=await C.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:w,params:v,nextConfig:E,parsedUrl:S,isDraftMode:b,prerenderManifest:k,routerServerContext:A,isOnDemandRevalidate:N,revalidateOnlyGenerated:O,resolvedPathname:j,clientReferenceManifest:T,serverActionsManifest:P}=R,_=(0,o.normalizeAppPath)(y),q=!!(k.dynamicRoutes[_]||k.routes[j]),I=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,S,!1):t.end("This page could not be found"),null);if(q&&!b){let e=!!k.routes[j],t=k.dynamicRoutes[_];if(t&&!1===t.fallback&&!e){if(E.experimental.adapterPath)return await I();throw new m.NoFallbackError}}let H=null;!q||C.isDev||b||(H="/index"===(H=j)?"/":H);let U=!0===C.isDev||!q,D=q&&!U;P&&T&&(0,s.setManifestsSingleton)({page:y,clientReferenceManifest:T,serverActionsManifest:P});let M=e.method||"GET",K=(0,i.getTracer)(),F=K.getActiveScopeSpan(),$={params:v,prerenderManifest:k,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:U,incrementalCache:(0,a.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:E.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>C.onRequestError(e,t,n,a,A)},sharedContext:{buildId:w}},B=new l.NodeNextRequest(e),J=new l.NodeNextResponse(t),L=u.NextRequestAdapter.fromNodeNextRequest(B,(0,u.signalFromNodeResponse)(t));try{let s=async e=>C.handle(L,$).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=K.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${M} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${M} ${y}`)}),o=!!(0,a.getRequestMeta)(e,"minimalMode"),l=async a=>{var i,l;let u=async({previousCacheEntry:r})=>{try{if(!o&&N&&O&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await s(a);e.fetchMetrics=$.renderOpts.fetchMetrics;let l=$.renderOpts.pendingWaitUntil;l&&n.waitUntil&&(n.waitUntil(l),l=void 0);let u=$.renderOpts.collectedTags;if(!q)return await (0,p.sendResponse)(B,J,i,$.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(i.headers);u&&(t[x.NEXT_CACHE_TAGS_HEADER]=u),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=x.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,n=void 0===$.renderOpts.collectedExpire||$.renderOpts.collectedExpire>=x.INFINITE_CACHE?void 0:$.renderOpts.collectedExpire;return{value:{kind:g.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await C.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:N})},!1,A),t}},d=await C.handleResponse({req:e,nextConfig:E,cacheKey:H,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:k,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:O,responseGenerator:u,waitUntil:n.waitUntil,isMinimalMode:o});if(!q)return null;if((null==d||null==(i=d.value)?void 0:i.kind)!==g.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(l=d.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});o||t.setHeader("x-nextjs-cache",N?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let m=(0,h.fromNodeOutgoingHttpHeaders)(d.value.headers);return o&&q||m.delete(x.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||m.get("Cache-Control")||m.set("Cache-Control",(0,f.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(B,J,new Response(d.value.body,{headers:m,status:d.value.status||200})),null};F?await l(F):await K.withPropagatedContext(e.headers,()=>K.trace(d.BaseServerSpan.handleRequest,{spanName:`${M} ${y}`,kind:i.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},l))}catch(t){if(t instanceof m.NoFallbackError||await C.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:N})},!1,A),q)throw t;return await (0,p.sendResponse)(B,J,new Response(null,{status:500})),null}}e.s(["handler",()=>A,"patchFetch",()=>k,"routeModule",()=>C,"serverHooks",()=>b,"workAsyncStorage",()=>E,"workUnitAsyncStorage",()=>S],70628)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=%5Broot-of-the-server%5D__f4cbadf7._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},4935,e=>{"use strict";var t=e.i(47909),r=e.i(74017),n=e.i(96250),a=e.i(59756),s=e.i(61916),o=e.i(74677),i=e.i(69741),l=e.i(16795),d=e.i(87718),u=e.i(95169),p=e.i(47587),c=e.i(66012),x=e.i(70101),h=e.i(
|
|
1
|
+
module.exports=[70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},4935,e=>{"use strict";var t=e.i(47909),r=e.i(74017),n=e.i(96250),a=e.i(59756),s=e.i(61916),o=e.i(74677),i=e.i(69741),l=e.i(16795),d=e.i(87718),u=e.i(95169),p=e.i(47587),c=e.i(66012),x=e.i(70101),h=e.i(74838),R=e.i(10372),g=e.i(93695);e.i(52474);var v=e.i(220),f=e.i(89171),b=e.i(22734),m=e.i(10353);async function E(e,{params:t}){try{let{pluginId:e,tabId:r}=await t,n=(0,m.discoverKitchenPlugins)().get(e);if(!n)return f.NextResponse.json({error:"Plugin not found"},{status:404});let a=n.tabs.find(e=>e.id===r);if(!a)return f.NextResponse.json({error:"Tab not found"},{status:404});if(!(0,b.existsSync)(a.bundle))return f.NextResponse.json({error:"Tab bundle not found"},{status:404});let s=(0,b.readFileSync)(a.bundle,"utf8");return new f.NextResponse(s,{headers:{"Content-Type":"application/javascript","Cache-Control":"public, max-age=3600"}})}catch(e){return console.error("Error serving plugin tab bundle:",e),f.NextResponse.json({error:"Failed to serve tab bundle"},{status:500})}}e.s(["GET",()=>E],38359);var w=e.i(38359);let y=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/plugins/[pluginId]/tabs/[tabId]/route",pathname:"/api/plugins/[pluginId]/tabs/[tabId]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/plugins/[pluginId]/tabs/[tabId]/route.ts",nextConfigOutput:"standalone",userland:w}),{workAsyncStorage:C,workUnitAsyncStorage:A,serverHooks:N}=y;function T(){return(0,n.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:A})}async function P(e,t,n){y.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let f="/api/plugins/[pluginId]/tabs/[tabId]/route";f=f.replace(/\/index$/,"")||"/";let b=await y.prepare(e,t,{srcPage:f,multiZoneDraftMode:!1});if(!b)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:m,params:E,nextConfig:w,parsedUrl:C,isDraftMode:A,prerenderManifest:N,routerServerContext:T,isOnDemandRevalidate:P,revalidateOnlyGenerated:I,resolvedPathname:j,clientReferenceManifest:k,serverActionsManifest:q}=b,O=(0,i.normalizeAppPath)(f),S=!!(N.dynamicRoutes[O]||N.routes[j]),_=async()=>((null==T?void 0:T.render404)?await T.render404(e,t,C,!1):t.end("This page could not be found"),null);if(S&&!A){let e=!!N.routes[j],t=N.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(w.experimental.adapterPath)return await _();throw new g.NoFallbackError}}let H=null;!S||y.isDev||A||(H="/index"===(H=j)?"/":H);let U=!0===y.isDev||!S,D=S&&!U;q&&k&&(0,o.setManifestsSingleton)({page:f,clientReferenceManifest:k,serverActionsManifest:q});let M=e.method||"GET",F=(0,s.getTracer)(),K=F.getActiveScopeSpan(),$={params:E,prerenderManifest:N,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:U,incrementalCache:(0,a.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:w.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>y.onRequestError(e,t,n,a,T)},sharedContext:{buildId:m}},B=new l.NodeNextRequest(e),L=new l.NodeNextResponse(t),G=d.NextRequestAdapter.fromNodeNextRequest(B,(0,d.signalFromNodeResponse)(t));try{let o=async e=>y.handle(G,$).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=F.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${M} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${M} ${f}`)}),i=!!(0,a.getRequestMeta)(e,"minimalMode"),l=async a=>{var s,l;let d=async({previousCacheEntry:r})=>{try{if(!i&&P&&I&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await o(a);e.fetchMetrics=$.renderOpts.fetchMetrics;let l=$.renderOpts.pendingWaitUntil;l&&n.waitUntil&&(n.waitUntil(l),l=void 0);let d=$.renderOpts.collectedTags;if(!S)return await (0,c.sendResponse)(B,L,s,$.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,x.toNodeOutgoingHttpHeaders)(s.headers);d&&(t[R.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=R.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,n=void 0===$.renderOpts.collectedExpire||$.renderOpts.collectedExpire>=R.INFINITE_CACHE?void 0:$.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await y.onRequestError(e,t,{routerKind:"App Router",routePath:f,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:P})},!1,T),t}},u=await y.handleResponse({req:e,nextConfig:w,cacheKey:H,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:N,isRoutePPREnabled:!1,isOnDemandRevalidate:P,revalidateOnlyGenerated:I,responseGenerator:d,waitUntil:n.waitUntil,isMinimalMode:i});if(!S)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});i||t.setHeader("x-nextjs-cache",P?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let g=(0,x.fromNodeOutgoingHttpHeaders)(u.value.headers);return i&&S||g.delete(R.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||g.get("Cache-Control")||g.set("Cache-Control",(0,h.getCacheControlHeader)(u.cacheControl)),await (0,c.sendResponse)(B,L,new Response(u.value.body,{headers:g,status:u.value.status||200})),null};K?await l(K):await F.withPropagatedContext(e.headers,()=>F.trace(u.BaseServerSpan.handleRequest,{spanName:`${M} ${f}`,kind:s.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},l))}catch(t){if(t instanceof g.NoFallbackError||await y.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:P})},!1,T),S)throw t;return await (0,c.sendResponse)(B,L,new Response(null,{status:500})),null}}e.s(["handler",()=>P,"patchFetch",()=>T,"routeModule",()=>y,"serverHooks",()=>N,"workAsyncStorage",()=>C,"workUnitAsyncStorage",()=>A],4935)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=%5Broot-of-the-server%5D__f5cd81f1._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[40317,e=>{"use strict";function t(e){return e instanceof Error?e.message:String(e)}e.s(["errorMessage",()=>t])},74533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},12057,(e,t,r)=>{t.exports=e.x("node:util",()=>require("node:util"))},59494,e=>{"use strict";function t(){let e=globalThis.__clawkitchen_api;if(!e)throw Error("ClawKitchen: OpenClaw plugin API not available. (This should only happen if Kitchen is started outside the gateway process.)");return e}e.s(["getKitchenApi",()=>t])},5003,e=>{"use strict";var t=e.i(59494),r=e.i(74533);let n=(0,e.i(12057).promisify)(r.execFile);function s(e){return"string"==typeof e.stdout?e.stdout:e.stdout&&"object"==typeof e.stdout&&"toString"in e.stdout?String(e.stdout.toString()):""}function i(e,t){return"string"==typeof e.stderr?e.stderr:e.stderr&&"object"==typeof e.stderr&&"toString"in e.stderr?String(e.stderr.toString()):"string"==typeof e.message?e.message:String(t)}function o(e){let t=e.trim();if(!t)return e;let r=t[0];if("["===r||"{"===r||'"'===r)return e;let n=t.split("\n"),s=n.findIndex(e=>/^\s*[[\{"]/.test(e));if(s>0){let e=n.slice(s).join("\n");try{return JSON.parse(e),e}catch{}}return e}async function a(e,t={}){let{sanitizeStdout:r=!0}=t;try{process.platform;let t=await n("openclaw",e,{timeout:12e4,windowsHide:!0,maxBuffer:0xa00000}),s=String(t.stdout??"");return{ok:!0,exitCode:0,stdout:r?o(s):s,stderr:String(t.stderr??"")}}catch(t){let e="number"==typeof t.code?t.code:1;return{ok:!1,exitCode:e,stdout:s(t),stderr:i(t,t)}}}function u(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{}let r=t.split("\n"),n=r.findIndex(e=>/^\s*[[\{]/.test(e));if(n>=0){let e=r.slice(n).join("\n");try{return JSON.parse(e)}catch{}}for(let e=r.length-1;e>=0;e--)if(/^\s*[\]}]/.test(r[e])){for(let t=e;t>=0;t--)if(/^\s*[[\{]/.test(r[t]))try{return JSON.parse(r.slice(t,e+1).join("\n"))}catch{}}return null}async function l(e){return a(e,{sanitizeStdout:!1})}async function c(e){if("cron"===e[0]||"recipes"===e[0]&&"workflows"===e[1]&&["runner-once","runner-tick","worker-tick"].includes(e[2]))return a(e);let r=(0,t.getKitchenApi)();try{let t=await r.runtime.system.runCommandWithTimeout(["openclaw",...e],{timeoutMs:12e4}),n=o(String(t.stdout??"")),s=String(t.stderr??""),i="number"==typeof t.exitCode?t.exitCode:"number"==typeof t.code?t.code:"number"==typeof t.status?t.status:0;if(0!==i)return{ok:!1,exitCode:i,stdout:n,stderr:s};return{ok:!0,exitCode:0,stdout:n,stderr:s}}catch(t){let e="number"==typeof t.code?t.code:1;return{ok:!1,exitCode:e,stdout:s(t),stderr:i(t,t)}}}e.s(["extractJson",()=>u,"runOpenClaw",()=>c,"runOpenClawRaw",()=>l])},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},50227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},12714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},60526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},7367,e=>{"use strict";var t=e.i(12714),r=e.i(60526),n=e.i(50227);async function s(){let e=n.default.join(r.default.homedir(),".openclaw","openclaw.json");return JSON.parse(await t.default.readFile(e,"utf8"))}async function i(){let e=await s(),t=e.agents?.defaults?.workspace;if(!t)throw Error("agents.defaults.workspace is not set in ~/.openclaw/openclaw.json");return t}async function o(){let e=await i();return n.default.join(e,"recipes")}async function a(){let e=await i(),r=n.default.join(e,"goals");try{if((await t.default.stat(r)).isDirectory())return r}catch{}return n.default.join(e,"notes","goals")}async function u(e){let t=r.default.homedir();if(!t)throw Error("Could not resolve home directory");return n.default.join(t,".openclaw",`workspace-${e}`)}function l(e,t){return"main"===t?n.default.resolve(e):n.default.resolve(e,"..",`workspace-${t}`)}function c(e){let t=e.replace(/\\/g,"/");if(!t||t.startsWith("/")||t.includes(".."))throw Error("Invalid file name");return t}async function d(){let e=await s(),t=e.plugins?.installs?.recipes?.installPath||e.plugins?.installs?.recipes?.sourcePath||e.plugins?.load?.paths?.[0];if(!t)throw Error("Could not determine recipes plugin install path from ~/.openclaw/openclaw.json");return n.default.join(t,"recipes","default")}e.s(["assertSafeRelativeFileName",()=>c,"getBuiltinRecipesDir",()=>d,"getTeamWorkspaceDir",()=>u,"getWorkspaceDir",()=>i,"getWorkspaceGoalsDir",()=>a,"getWorkspaceRecipesDir",()=>o,"readOpenClawConfig",()=>s,"teamDirFromBaseWorkspace",()=>l])}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__f85b5a70._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/errors.ts","../../../src/lib/kitchen-api.ts","../../../src/lib/openclaw.ts","../../../src/lib/paths.ts"],"sourcesContent":["/**\n * Extracts a string message from an unknown error value.\n * Used consistently across API routes and client components.\n */\nexport function errorMessage(e: unknown): string {\n return e instanceof Error ? e.message : String(e);\n}\n","// NOTE: This file is compiled by Next.js.\n// Do not import `openclaw/plugin-sdk` here (it is provided by the gateway runtime, not as an npm dep).\n\ntype KitchenApi = {\n config: unknown;\n runtime: {\n system: { runCommandWithTimeout: (argv: string[], opts: { timeoutMs: number }) => Promise<{ stdout?: string; stderr?: string }> };\n };\n};\n\nexport function getKitchenApi(): KitchenApi {\n const api = (globalThis as unknown as { __clawkitchen_api?: KitchenApi }).__clawkitchen_api;\n if (!api) {\n throw new Error(\n \"ClawKitchen: OpenClaw plugin API not available. (This should only happen if Kitchen is started outside the gateway process.)\",\n );\n }\n return api;\n}\n","import { getKitchenApi } from \"@/lib/kitchen-api\";\nimport { execFile } from \"node:child_process\";\nimport { promisify } from \"node:util\";\n\nconst execFileAsync = promisify(execFile);\n\nexport type OpenClawExecResult = {\n ok: boolean;\n exitCode: number;\n stdout: string;\n stderr: string;\n};\n\nfunction extractStdout(err: { stdout?: unknown }): string {\n if (typeof err.stdout === \"string\") return err.stdout;\n if (err.stdout && typeof err.stdout === \"object\" && \"toString\" in err.stdout) {\n return String((err.stdout as { toString: () => string }).toString());\n }\n return \"\";\n}\n\nfunction resolveExitCode(res: { exitCode?: unknown; code?: unknown; status?: unknown }): number {\n if (typeof res.exitCode === \"number\") return res.exitCode;\n if (typeof res.code === \"number\") return res.code;\n if (typeof res.status === \"number\") return res.status;\n return 0;\n}\n\nfunction extractStderr(err: { stderr?: unknown; message?: unknown }, fallback: unknown): string {\n if (typeof err.stderr === \"string\") return err.stderr;\n if (err.stderr && typeof err.stderr === \"object\" && \"toString\" in err.stderr) {\n return String((err.stderr as { toString: () => string }).toString());\n }\n if (typeof err.message === \"string\") return err.message;\n return String(fallback);\n}\n\n/**\n * Strip non-JSON diagnostic lines from stdout.\n *\n * OpenClaw may print plugin/doctor/diagnostic lines to stdout before the\n * actual JSON payload (e.g. \"[doctor] ...\", \"[plugins] ...\", \"🦞 OpenClaw ...\").\n * This breaks callers that do JSON.parse(stdout).\n *\n * If stdout looks like it contains a JSON payload with leading noise, strip the\n * noise lines. Otherwise return as-is (non-JSON commands like `config get` may\n * return plain text).\n */\nfunction sanitizeStdout(raw: string): string {\n const trimmed = raw.trim();\n if (!trimmed) return raw;\n\n // Fast path: already starts with JSON\n const firstChar = trimmed[0];\n if (firstChar === \"[\" || firstChar === \"{\" || firstChar === '\"') return raw;\n\n // Look for the first line starting with a JSON token\n const lines = trimmed.split(\"\\n\");\n const jsonStartIdx = lines.findIndex((l) => /^\\s*[[\\{\"]/.test(l));\n if (jsonStartIdx > 0) {\n // Verify the remainder is valid JSON before stripping\n const candidate = lines.slice(jsonStartIdx).join(\"\\n\");\n try {\n JSON.parse(candidate);\n return candidate;\n } catch {\n // Not valid JSON after stripping — return original\n }\n }\n\n return raw;\n}\n\nasync function runOpenClawLocal(args: string[], options: { sanitizeStdout?: boolean } = {}): Promise<OpenClawExecResult> {\n const { sanitizeStdout: shouldSanitize = true } = options;\n \n try {\n const isWindows = process.platform === \"win32\";\n const res = await execFileAsync(\"openclaw\", args, {\n timeout: 120000,\n windowsHide: true,\n maxBuffer: 10 * 1024 * 1024,\n // Windows requires shell:true to resolve executables on PATH via PATHEXT.\n // Without it, execFile throws ENOENT even when openclaw is installed globally.\n ...(isWindows ? { shell: true } : {}),\n });\n\n const rawStdout = String(res.stdout ?? \"\");\n \n return {\n ok: true,\n exitCode: 0,\n stdout: shouldSanitize ? sanitizeStdout(rawStdout) : rawStdout,\n stderr: String(res.stderr ?? \"\"),\n };\n } catch (e: unknown) {\n const err = e as { code?: unknown; stdout?: unknown; stderr?: unknown; message?: unknown };\n const exitCode = typeof err.code === \"number\" ? err.code : 1;\n const stdout = extractStdout(err);\n const stderr = extractStderr(err, e);\n return { ok: false, exitCode, stdout, stderr };\n }\n}\n\n/**\n * Extract a JSON payload from stdout that may contain non-JSON diagnostic lines\n * (e.g. [doctor], [plugins], [recipes] log lines before the actual JSON).\n * Returns the parsed value or null if no JSON found.\n */\nexport function extractJson<T = unknown>(stdout: string): T | null {\n const trimmed = stdout.trim();\n if (!trimmed) return null;\n\n // Fast path: pure JSON\n try {\n return JSON.parse(trimmed) as T;\n } catch {\n // fall through\n }\n\n // Find the first line starting with [ or { (JSON array/object)\n const lines = trimmed.split(\"\\n\");\n const jsonStartIdx = lines.findIndex((l) => /^\\s*[[\\{]/.test(l));\n if (jsonStartIdx >= 0) {\n const jsonSlice = lines.slice(jsonStartIdx).join(\"\\n\");\n try {\n return JSON.parse(jsonSlice) as T;\n } catch {\n // fall through\n }\n }\n\n // Last resort: find the last JSON block (scan from end)\n for (let i = lines.length - 1; i >= 0; i--) {\n if (/^\\s*[\\]}]/.test(lines[i])) {\n // Walk backward to find the matching open\n for (let j = i; j >= 0; j--) {\n if (/^\\s*[[\\{]/.test(lines[j])) {\n try {\n return JSON.parse(lines.slice(j, i + 1).join(\"\\n\")) as T;\n } catch {\n // continue searching\n }\n }\n }\n }\n }\n\n return null;\n}\n\n/**\n * Run OpenClaw without stdout sanitization (for raw text output like recipe markdown)\n */\nexport async function runOpenClawRaw(args: string[]): Promise<OpenClawExecResult> {\n // Always use local exec for raw content to avoid Kitchen runtime restrictions\n return runOpenClawLocal(args, { sanitizeStdout: false });\n}\n\nexport async function runOpenClaw(args: string[]): Promise<OpenClawExecResult> {\n // In some Kitchen runtime contexts, `api.runtime.system.runCommandWithTimeout`\n // is executed with a restricted allowlist that does not include the `cron` tool,\n // causing `openclaw cron ...` to fail with \"Tool not available: cron\".\n //\n // Cron routes need to work in the gateway-run Kitchen environment, so for cron\n // specifically we prefer a local exec (host OpenClaw).\n if (args[0] === \"cron\") return runOpenClawLocal(args);\n\n // Workflow runner/worker commands are long-running orchestration processes that\n // acquire locks and claims. The runtime command wrapper (runCommandWithTimeout)\n // has a 120s hard timeout that can kill these mid-execution, orphaning locks and\n // leaving runs stuck in waiting_workers. Route them through local exec instead.\n if (\n args[0] === \"recipes\" &&\n args[1] === \"workflows\" &&\n [\"runner-once\", \"runner-tick\", \"worker-tick\"].includes(args[2])\n ) {\n return runOpenClawLocal(args);\n }\n\n const api = getKitchenApi();\n try {\n const res = (await api.runtime.system.runCommandWithTimeout([\"openclaw\", ...args], { timeoutMs: 120000 })) as {\n stdout?: unknown;\n stderr?: unknown;\n exitCode?: unknown;\n code?: unknown;\n status?: unknown;\n };\n\n const stdout = sanitizeStdout(String(res.stdout ?? \"\"));\n const stderr = String(res.stderr ?? \"\");\n const exitCode = resolveExitCode(res);\n\n if (exitCode !== 0) return { ok: false, exitCode, stdout, stderr };\n return { ok: true, exitCode: 0, stdout, stderr };\n } catch (e: unknown) {\n const err = e as { code?: unknown; stdout?: unknown; stderr?: unknown; message?: unknown };\n const exitCode = typeof err.code === \"number\" ? err.code : 1;\n const stdout = extractStdout(err);\n const stderr = extractStderr(err, e);\n return { ok: false, exitCode, stdout, stderr };\n }\n}\n","import fs from \"node:fs/promises\";\nimport os from \"node:os\";\nimport path from \"node:path\";\n\ntype OpenClawConfig = {\n agents?: { defaults?: { workspace?: string } };\n gateway?: { port?: number; auth?: { token?: string } };\n tools?: {\n agentToAgent?: {\n enabled?: boolean;\n allow?: string[];\n };\n };\n plugins?: {\n installs?: { recipes?: { installPath?: string; sourcePath?: string } };\n load?: { paths?: string[] };\n };\n // OpenClaw message routing bindings (used for HITL approvals, etc.)\n bindings?: unknown[];\n};\n\nexport async function readOpenClawConfig(): Promise<OpenClawConfig> {\n const p = path.join(os.homedir(), \".openclaw\", \"openclaw.json\");\n const text = await fs.readFile(p, \"utf8\");\n return JSON.parse(text) as OpenClawConfig;\n}\n\nexport async function getWorkspaceDir() {\n const cfg = await readOpenClawConfig();\n const ws = cfg.agents?.defaults?.workspace;\n if (!ws) throw new Error(\"agents.defaults.workspace is not set in ~/.openclaw/openclaw.json\");\n return ws;\n}\n\nexport async function getWorkspaceRecipesDir() {\n const ws = await getWorkspaceDir();\n return path.join(ws, \"recipes\");\n}\n\nexport async function getWorkspaceGoalsDir() {\n const ws = await getWorkspaceDir();\n\n // Back-compat: some installs keep goals at <workspace>/goals.\n // Prefer that when present, otherwise fall back to <workspace>/notes/goals.\n const direct = path.join(ws, \"goals\");\n try {\n const st = await fs.stat(direct);\n if (st.isDirectory()) return direct;\n } catch {\n // ignore\n }\n\n return path.join(ws, \"notes\", \"goals\");\n}\n\nexport async function getTeamWorkspaceDir(teamId: string) {\n const home = os.homedir();\n if (!home) throw new Error(\"Could not resolve home directory\");\n return path.join(home, \".openclaw\", `workspace-${teamId}`);\n}\n\n/** Team workspace dir derived from agents.defaults.workspace (sibling: .. / workspace-{teamId}) */\nexport function teamDirFromBaseWorkspace(baseWorkspace: string, teamId: string) {\n // Special-case: treat \"main\" as the personal workspace (agents.defaults.workspace).\n // This lets Kitchen expose a selectable \"main\" scope without creating a separate\n // ~/.openclaw/workspace-main folder.\n if (teamId === \"main\") return path.resolve(baseWorkspace);\n return path.resolve(baseWorkspace, \"..\", `workspace-${teamId}`);\n}\n\n/** Rejects path traversal and empty names; returns normalized name. */\nexport function assertSafeRelativeFileName(name: string): string {\n const n = name.replace(/\\\\/g, \"/\");\n if (!n || n.startsWith(\"/\") || n.includes(\"..\")) throw new Error(\"Invalid file name\");\n return n;\n}\n\nexport async function getBuiltinRecipesDir() {\n const cfg = await readOpenClawConfig();\n const p =\n cfg.plugins?.installs?.recipes?.installPath ||\n cfg.plugins?.installs?.recipes?.sourcePath ||\n cfg.plugins?.load?.paths?.[0];\n if (!p) throw new Error(\"Could not determine recipes plugin install path from ~/.openclaw/openclaw.json\");\n return path.join(p, \"recipes\", \"default\");\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module.exports=[74533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},12057,(e,t,r)=>{t.exports=e.x("node:util",()=>require("node:util"))},59494,e=>{"use strict";function t(){let e=globalThis.__clawkitchen_api;if(!e)throw Error("ClawKitchen: OpenClaw plugin API not available. (This should only happen if Kitchen is started outside the gateway process.)");return e}e.s(["getKitchenApi",()=>t])},5003,e=>{"use strict";var t=e.i(59494),r=e.i(74533);let n=(0,e.i(12057).promisify)(r.execFile);function i(e){return"string"==typeof e.stdout?e.stdout:e.stdout&&"object"==typeof e.stdout&&"toString"in e.stdout?String(e.stdout.toString()):""}function o(e,t){return"string"==typeof e.stderr?e.stderr:e.stderr&&"object"==typeof e.stderr&&"toString"in e.stderr?String(e.stderr.toString()):"string"==typeof e.message?e.message:String(t)}function a(e){let t=e.trim();if(!t)return e;let r=t[0];if("["===r||"{"===r||'"'===r)return e;let n=t.split("\n"),i=n.findIndex(e=>/^\s*[[\{"]/.test(e));if(i>0){let e=n.slice(i).join("\n");try{return JSON.parse(e),e}catch{}}return e}async function s(e,t={}){let{sanitizeStdout:r=!0}=t;try{process.platform;let t=await n("openclaw",e,{timeout:12e4,windowsHide:!0,maxBuffer:0xa00000}),i=String(t.stdout??"");return{ok:!0,exitCode:0,stdout:r?a(i):i,stderr:String(t.stderr??"")}}catch(t){let e="number"==typeof t.code?t.code:1;return{ok:!1,exitCode:e,stdout:i(t),stderr:o(t,t)}}}function l(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{}let r=t.split("\n"),n=r.findIndex(e=>/^\s*[[\{]/.test(e));if(n>=0){let e=r.slice(n).join("\n");try{return JSON.parse(e)}catch{}}for(let e=r.length-1;e>=0;e--)if(/^\s*[\]}]/.test(r[e])){for(let t=e;t>=0;t--)if(/^\s*[[\{]/.test(r[t]))try{return JSON.parse(r.slice(t,e+1).join("\n"))}catch{}}return null}async function d(e){return s(e,{sanitizeStdout:!1})}async function u(e){if("cron"===e[0]||"recipes"===e[0]&&"workflows"===e[1]&&["runner-once","runner-tick","worker-tick"].includes(e[2]))return s(e);let r=(0,t.getKitchenApi)();try{let t=await r.runtime.system.runCommandWithTimeout(["openclaw",...e],{timeoutMs:12e4}),n=a(String(t.stdout??"")),i=String(t.stderr??""),o="number"==typeof t.exitCode?t.exitCode:"number"==typeof t.code?t.code:"number"==typeof t.status?t.status:0;if(0!==o)return{ok:!1,exitCode:o,stdout:n,stderr:i};return{ok:!0,exitCode:0,stdout:n,stderr:i}}catch(t){let e="number"==typeof t.code?t.code:1;return{ok:!1,exitCode:e,stdout:i(t),stderr:o(t,t)}}}e.s(["extractJson",()=>l,"runOpenClaw",()=>u,"runOpenClawRaw",()=>d])},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},50227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},12714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},60526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},7367,e=>{"use strict";var t=e.i(12714),r=e.i(60526),n=e.i(50227);async function i(){let e=n.default.join(r.default.homedir(),".openclaw","openclaw.json");return JSON.parse(await t.default.readFile(e,"utf8"))}async function o(){let e=await i(),t=e.agents?.defaults?.workspace;if(!t)throw Error("agents.defaults.workspace is not set in ~/.openclaw/openclaw.json");return t}async function a(){let e=await o();return n.default.join(e,"recipes")}async function s(){let e=await o(),r=n.default.join(e,"goals");try{if((await t.default.stat(r)).isDirectory())return r}catch{}return n.default.join(e,"notes","goals")}async function l(e){let t=r.default.homedir();if(!t)throw Error("Could not resolve home directory");return n.default.join(t,".openclaw",`workspace-${e}`)}function d(e,t){return"main"===t?n.default.resolve(e):n.default.resolve(e,"..",`workspace-${t}`)}function u(e){let t=e.replace(/\\/g,"/");if(!t||t.startsWith("/")||t.includes(".."))throw Error("Invalid file name");return t}async function c(){let e=await i(),t=e.plugins?.installs?.recipes?.installPath||e.plugins?.installs?.recipes?.sourcePath||e.plugins?.load?.paths?.[0];if(!t)throw Error("Could not determine recipes plugin install path from ~/.openclaw/openclaw.json");return n.default.join(t,"recipes","default")}e.s(["assertSafeRelativeFileName",()=>u,"getBuiltinRecipesDir",()=>c,"getTeamWorkspaceDir",()=>l,"getWorkspaceDir",()=>o,"getWorkspaceGoalsDir",()=>s,"getWorkspaceRecipesDir",()=>a,"readOpenClawConfig",()=>i,"teamDirFromBaseWorkspace",()=>d])},5365,(e,t,r)=>{t.exports=e.x("process",()=>require("process"))},874,(e,t,r)=>{t.exports=e.x("buffer",()=>require("buffer"))},72420,e=>{"use strict";var t=e.i(47909),r=e.i(74017),n=e.i(96250),i=e.i(59756),o=e.i(61916),a=e.i(74677),s=e.i(69741),l=e.i(16795),d=e.i(87718),u=e.i(95169),c=e.i(47587),p=e.i(66012),f=e.i(70101),h=e.i(
|
|
1
|
+
module.exports=[74533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},12057,(e,t,r)=>{t.exports=e.x("node:util",()=>require("node:util"))},59494,e=>{"use strict";function t(){let e=globalThis.__clawkitchen_api;if(!e)throw Error("ClawKitchen: OpenClaw plugin API not available. (This should only happen if Kitchen is started outside the gateway process.)");return e}e.s(["getKitchenApi",()=>t])},5003,e=>{"use strict";var t=e.i(59494),r=e.i(74533);let n=(0,e.i(12057).promisify)(r.execFile);function i(e){return"string"==typeof e.stdout?e.stdout:e.stdout&&"object"==typeof e.stdout&&"toString"in e.stdout?String(e.stdout.toString()):""}function o(e,t){return"string"==typeof e.stderr?e.stderr:e.stderr&&"object"==typeof e.stderr&&"toString"in e.stderr?String(e.stderr.toString()):"string"==typeof e.message?e.message:String(t)}function a(e){let t=e.trim();if(!t)return e;let r=t[0];if("["===r||"{"===r||'"'===r)return e;let n=t.split("\n"),i=n.findIndex(e=>/^\s*[[\{"]/.test(e));if(i>0){let e=n.slice(i).join("\n");try{return JSON.parse(e),e}catch{}}return e}async function s(e,t={}){let{sanitizeStdout:r=!0}=t;try{process.platform;let t=await n("openclaw",e,{timeout:12e4,windowsHide:!0,maxBuffer:0xa00000}),i=String(t.stdout??"");return{ok:!0,exitCode:0,stdout:r?a(i):i,stderr:String(t.stderr??"")}}catch(t){let e="number"==typeof t.code?t.code:1;return{ok:!1,exitCode:e,stdout:i(t),stderr:o(t,t)}}}function l(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{}let r=t.split("\n"),n=r.findIndex(e=>/^\s*[[\{]/.test(e));if(n>=0){let e=r.slice(n).join("\n");try{return JSON.parse(e)}catch{}}for(let e=r.length-1;e>=0;e--)if(/^\s*[\]}]/.test(r[e])){for(let t=e;t>=0;t--)if(/^\s*[[\{]/.test(r[t]))try{return JSON.parse(r.slice(t,e+1).join("\n"))}catch{}}return null}async function d(e){return s(e,{sanitizeStdout:!1})}async function u(e){if("cron"===e[0]||"recipes"===e[0]&&"workflows"===e[1]&&["runner-once","runner-tick","worker-tick"].includes(e[2]))return s(e);let r=(0,t.getKitchenApi)();try{let t=await r.runtime.system.runCommandWithTimeout(["openclaw",...e],{timeoutMs:12e4}),n=a(String(t.stdout??"")),i=String(t.stderr??""),o="number"==typeof t.exitCode?t.exitCode:"number"==typeof t.code?t.code:"number"==typeof t.status?t.status:0;if(0!==o)return{ok:!1,exitCode:o,stdout:n,stderr:i};return{ok:!0,exitCode:0,stdout:n,stderr:i}}catch(t){let e="number"==typeof t.code?t.code:1;return{ok:!1,exitCode:e,stdout:i(t),stderr:o(t,t)}}}e.s(["extractJson",()=>l,"runOpenClaw",()=>u,"runOpenClawRaw",()=>d])},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},50227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},12714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},60526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},7367,e=>{"use strict";var t=e.i(12714),r=e.i(60526),n=e.i(50227);async function i(){let e=n.default.join(r.default.homedir(),".openclaw","openclaw.json");return JSON.parse(await t.default.readFile(e,"utf8"))}async function o(){let e=await i(),t=e.agents?.defaults?.workspace;if(!t)throw Error("agents.defaults.workspace is not set in ~/.openclaw/openclaw.json");return t}async function a(){let e=await o();return n.default.join(e,"recipes")}async function s(){let e=await o(),r=n.default.join(e,"goals");try{if((await t.default.stat(r)).isDirectory())return r}catch{}return n.default.join(e,"notes","goals")}async function l(e){let t=r.default.homedir();if(!t)throw Error("Could not resolve home directory");return n.default.join(t,".openclaw",`workspace-${e}`)}function d(e,t){return"main"===t?n.default.resolve(e):n.default.resolve(e,"..",`workspace-${t}`)}function u(e){let t=e.replace(/\\/g,"/");if(!t||t.startsWith("/")||t.includes(".."))throw Error("Invalid file name");return t}async function c(){let e=await i(),t=e.plugins?.installs?.recipes?.installPath||e.plugins?.installs?.recipes?.sourcePath||e.plugins?.load?.paths?.[0];if(!t)throw Error("Could not determine recipes plugin install path from ~/.openclaw/openclaw.json");return n.default.join(t,"recipes","default")}e.s(["assertSafeRelativeFileName",()=>u,"getBuiltinRecipesDir",()=>c,"getTeamWorkspaceDir",()=>l,"getWorkspaceDir",()=>o,"getWorkspaceGoalsDir",()=>s,"getWorkspaceRecipesDir",()=>a,"readOpenClawConfig",()=>i,"teamDirFromBaseWorkspace",()=>d])},5365,(e,t,r)=>{t.exports=e.x("process",()=>require("process"))},874,(e,t,r)=>{t.exports=e.x("buffer",()=>require("buffer"))},72420,e=>{"use strict";var t=e.i(47909),r=e.i(74017),n=e.i(96250),i=e.i(59756),o=e.i(61916),a=e.i(74677),s=e.i(69741),l=e.i(16795),d=e.i(87718),u=e.i(95169),c=e.i(47587),p=e.i(66012),f=e.i(70101),h=e.i(74838),m=e.i(10372),x=e.i(93695);e.i(52474);var g=e.i(220),w=e.i(12714),y=e.i(50227),R=e.i(89171),v=e.i(7367),C=e.i(5003),k=e.i(23008);function E(e){let t=String(e||"recipe").trim();return[`custom-${t}`,`my-${t}`,`${t}-2`,`${t}-alt`]}async function S(e){let t=await e.json(),r=String(t.fromId??"").trim(),n=String(t.toId??"").trim(),i="string"==typeof t.toName?t.toName:void 0,o=!!t.overwrite,a=!!t.scaffold;if(!r)return R.NextResponse.json({ok:!1,error:"Missing fromId"},{status:400});if(!n)return R.NextResponse.json({ok:!1,error:"Missing toId"},{status:400});let s=await (0,C.runOpenClaw)(["recipes","show",r]);if(!s.ok)return R.NextResponse.json({ok:!1,error:s.stderr.trim()||`openclaw recipes show ${r} failed (exit=${s.exitCode}). Is the recipes plugin enabled?`},{status:400});let l=String(s.stdout??"");if(!l.startsWith("---\n"))throw Error("Recipe markdown must start with YAML frontmatter (---)");let{next:d,kind:u}=function(e,t,r){let n=e.indexOf("\n---\n",4);if(-1===n)throw Error("Recipe frontmatter not terminated (---)");let i=e.slice(4,n+1),o=k.default.parse(i)??{},a=String(o.kind??"").trim().toLowerCase(),s="team"===a?{team:{..."object"==typeof o.team&&o.team?o.team:{},teamId:t}}:{},l={...o,id:t,...r?{name:r}:{},...s},d=k.default.stringify(l).trimEnd();return{next:`---
|
|
2
2
|
${d}
|
|
3
3
|
---
|
|
4
4
|
${e.slice(n+5)}`,kind:a}}(l,n,i),c=await (0,v.getWorkspaceRecipesDir)(),p=y.default.join(c,`${n}.md`);try{if(await w.default.stat(p),!o)return R.NextResponse.json({ok:!1,error:`Recipe id already exists: ${n}. Choose a different id (e.g. ${E(n).join(", ")}).`,code:"RECIPE_ID_TAKEN",recipeId:n,suggestions:E(n),filePath:p},{status:409})}catch{}await w.default.mkdir(y.default.dirname(p),{recursive:!0}),await w.default.writeFile(p,d,"utf8");let f=null;if(a){let e="team"===u?["recipes","scaffold-team",n,"--team-id",n,"--overwrite","--overwrite-recipe"]:"agent"===u?["recipes","scaffold",n,"--agent-id",n,"--overwrite","--overwrite-recipe"]:null;if(e){let t=await (0,C.runOpenClaw)(e);f=t.ok?{ok:!0,stdout:String(t.stdout??""),stderr:String(t.stderr??""),exitCode:t.exitCode}:{ok:!1,error:t.stderr.trim()||`openclaw ${e.join(" ")} failed (exit=${t.exitCode})`,stdout:String(t.stdout??""),stderr:String(t.stderr??""),exitCode:t.exitCode}}else f={ok:!1,error:`Unsupported recipe kind for scaffold: ${u||"(missing kind)"}`,stdout:"",stderr:"",exitCode:null}}return R.NextResponse.json({ok:!0,filePath:p,recipeId:n,content:d,scaffold:f})}e.s(["POST",()=>S],78983);var j=e.i(78983);let b=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/recipes/clone/route",pathname:"/api/recipes/clone",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/recipes/clone/route.ts",nextConfigOutput:"standalone",userland:j}),{workAsyncStorage:N,workUnitAsyncStorage:A,serverHooks:O}=b;function T(){return(0,n.patchFetch)({workAsyncStorage:N,workUnitAsyncStorage:A})}async function I(e,t,n){b.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/recipes/clone/route";w=w.replace(/\/index$/,"")||"/";let y=await b.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!y)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:R,params:v,nextConfig:C,parsedUrl:k,isDraftMode:E,prerenderManifest:S,routerServerContext:j,isOnDemandRevalidate:N,revalidateOnlyGenerated:A,resolvedPathname:O,clientReferenceManifest:T,serverActionsManifest:I}=y,P=(0,s.normalizeAppPath)(w),q=!!(S.dynamicRoutes[P]||S.routes[O]),_=async()=>((null==j?void 0:j.render404)?await j.render404(e,t,k,!1):t.end("This page could not be found"),null);if(q&&!E){let e=!!S.routes[O],t=S.dynamicRoutes[P];if(t&&!1===t.fallback&&!e){if(C.experimental.adapterPath)return await _();throw new x.NoFallbackError}}let $=null;!q||b.isDev||E||($="/index"===($=O)?"/":$);let D=!0===b.isDev||!q,H=q&&!D;I&&T&&(0,a.setManifestsSingleton)({page:w,clientReferenceManifest:T,serverActionsManifest:I});let U=e.method||"GET",M=(0,o.getTracer)(),F=M.getActiveScopeSpan(),K={params:v,prerenderManifest:S,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts},cacheComponents:!!C.cacheComponents,supportsDynamicResponse:D,incrementalCache:(0,i.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:C.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,i)=>b.onRequestError(e,t,n,i,j)},sharedContext:{buildId:R}},W=new l.NodeNextRequest(e),B=new l.NodeNextResponse(t),L=d.NextRequestAdapter.fromNodeNextRequest(W,(0,d.signalFromNodeResponse)(t));try{let a=async e=>b.handle(L,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=M.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${U} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${U} ${w}`)}),s=!!(0,i.getRequestMeta)(e,"minimalMode"),l=async i=>{var o,l;let d=async({previousCacheEntry:r})=>{try{if(!s&&N&&A&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await a(i);e.fetchMetrics=K.renderOpts.fetchMetrics;let l=K.renderOpts.pendingWaitUntil;l&&n.waitUntil&&(n.waitUntil(l),l=void 0);let d=K.renderOpts.collectedTags;if(!q)return await (0,p.sendResponse)(W,B,o,K.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(o.headers);d&&(t[m.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,n=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:g.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await b.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:N})},!1,j),t}},u=await b.handleResponse({req:e,nextConfig:C,cacheKey:$,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:S,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:A,responseGenerator:d,waitUntil:n.waitUntil,isMinimalMode:s});if(!q)return null;if((null==u||null==(o=u.value)?void 0:o.kind)!==g.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});s||t.setHeader("x-nextjs-cache",N?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let x=(0,f.fromNodeOutgoingHttpHeaders)(u.value.headers);return s&&q||x.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||x.get("Cache-Control")||x.set("Cache-Control",(0,h.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(W,B,new Response(u.value.body,{headers:x,status:u.value.status||200})),null};F?await l(F):await M.withPropagatedContext(e.headers,()=>M.trace(u.BaseServerSpan.handleRequest,{spanName:`${U} ${w}`,kind:o.SpanKind.SERVER,attributes:{"http.method":U,"http.target":e.url}},l))}catch(t){if(t instanceof x.NoFallbackError||await b.onRequestError(e,t,{routerKind:"App Router",routePath:P,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:N})},!1,j),q)throw t;return await (0,p.sendResponse)(W,B,new Response(null,{status:500})),null}}e.s(["handler",()=>I,"patchFetch",()=>T,"routeModule",()=>b,"serverHooks",()=>O,"workAsyncStorage",()=>N,"workUnitAsyncStorage",()=>A],72420)}];
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[74533,(t,e,r)=>{e.exports=t.x("node:child_process",()=>require("node:child_process"))},12057,(t,e,r)=>{e.exports=t.x("node:util",()=>require("node:util"))},59494,t=>{"use strict";function e(){let t=globalThis.__clawkitchen_api;if(!t)throw Error("ClawKitchen: OpenClaw plugin API not available. (This should only happen if Kitchen is started outside the gateway process.)");return t}t.s(["getKitchenApi",()=>e])},5003,t=>{"use strict";var e=t.i(59494),r=t.i(74533);let n=(0,t.i(12057).promisify)(r.execFile);function i(t){return"string"==typeof t.stdout?t.stdout:t.stdout&&"object"==typeof t.stdout&&"toString"in t.stdout?String(t.stdout.toString()):""}function o(t,e){return"string"==typeof t.stderr?t.stderr:t.stderr&&"object"==typeof t.stderr&&"toString"in t.stderr?String(t.stderr.toString()):"string"==typeof t.message?t.message:String(e)}function s(t){let e=t.trim();if(!e)return t;let r=e[0];if("["===r||"{"===r||'"'===r)return t;let n=e.split("\n"),i=n.findIndex(t=>/^\s*[[\{"]/.test(t));if(i>0){let t=n.slice(i).join("\n");try{return JSON.parse(t),t}catch{}}return t}async function u(t,e={}){let{sanitizeStdout:r=!0}=e;try{process.platform;let e=await n("openclaw",t,{timeout:12e4,windowsHide:!0,maxBuffer:0xa00000}),i=String(e.stdout??"");return{ok:!0,exitCode:0,stdout:r?s(i):i,stderr:String(e.stderr??"")}}catch(e){let t="number"==typeof e.code?e.code:1;return{ok:!1,exitCode:t,stdout:i(e),stderr:o(e,e)}}}function c(t){let e=t.trim();if(!e)return null;try{return JSON.parse(e)}catch{}let r=e.split("\n"),n=r.findIndex(t=>/^\s*[[\{]/.test(t));if(n>=0){let t=r.slice(n).join("\n");try{return JSON.parse(t)}catch{}}for(let t=r.length-1;t>=0;t--)if(/^\s*[\]}]/.test(r[t])){for(let e=t;e>=0;e--)if(/^\s*[[\{]/.test(r[e]))try{return JSON.parse(r.slice(e,t+1).join("\n"))}catch{}}return null}async function d(t){return u(t,{sanitizeStdout:!1})}async function l(t){if("cron"===t[0]||"recipes"===t[0]&&"workflows"===t[1]&&["runner-once","runner-tick","worker-tick"].includes(t[2]))return u(t);let r=(0,e.getKitchenApi)();try{let e=await r.runtime.system.runCommandWithTimeout(["openclaw",...t],{timeoutMs:12e4}),n=s(String(e.stdout??"")),i=String(e.stderr??""),o="number"==typeof e.exitCode?e.exitCode:"number"==typeof e.code?e.code:"number"==typeof e.status?e.status:0;if(0!==o)return{ok:!1,exitCode:o,stdout:n,stderr:i};return{ok:!0,exitCode:0,stdout:n,stderr:i}}catch(e){let t="number"==typeof e.code?e.code:1;return{ok:!1,exitCode:t,stdout:i(e),stderr:o(e,e)}}}t.s(["extractJson",()=>c,"runOpenClaw",()=>l,"runOpenClawRaw",()=>d])}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__fb22e719._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/kitchen-api.ts","../../../src/lib/openclaw.ts"],"sourcesContent":["// NOTE: This file is compiled by Next.js.\n// Do not import `openclaw/plugin-sdk` here (it is provided by the gateway runtime, not as an npm dep).\n\ntype KitchenApi = {\n config: unknown;\n runtime: {\n system: { runCommandWithTimeout: (argv: string[], opts: { timeoutMs: number }) => Promise<{ stdout?: string; stderr?: string }> };\n };\n};\n\nexport function getKitchenApi(): KitchenApi {\n const api = (globalThis as unknown as { __clawkitchen_api?: KitchenApi }).__clawkitchen_api;\n if (!api) {\n throw new Error(\n \"ClawKitchen: OpenClaw plugin API not available. (This should only happen if Kitchen is started outside the gateway process.)\",\n );\n }\n return api;\n}\n","import { getKitchenApi } from \"@/lib/kitchen-api\";\nimport { execFile } from \"node:child_process\";\nimport { promisify } from \"node:util\";\n\nconst execFileAsync = promisify(execFile);\n\nexport type OpenClawExecResult = {\n ok: boolean;\n exitCode: number;\n stdout: string;\n stderr: string;\n};\n\nfunction extractStdout(err: { stdout?: unknown }): string {\n if (typeof err.stdout === \"string\") return err.stdout;\n if (err.stdout && typeof err.stdout === \"object\" && \"toString\" in err.stdout) {\n return String((err.stdout as { toString: () => string }).toString());\n }\n return \"\";\n}\n\nfunction resolveExitCode(res: { exitCode?: unknown; code?: unknown; status?: unknown }): number {\n if (typeof res.exitCode === \"number\") return res.exitCode;\n if (typeof res.code === \"number\") return res.code;\n if (typeof res.status === \"number\") return res.status;\n return 0;\n}\n\nfunction extractStderr(err: { stderr?: unknown; message?: unknown }, fallback: unknown): string {\n if (typeof err.stderr === \"string\") return err.stderr;\n if (err.stderr && typeof err.stderr === \"object\" && \"toString\" in err.stderr) {\n return String((err.stderr as { toString: () => string }).toString());\n }\n if (typeof err.message === \"string\") return err.message;\n return String(fallback);\n}\n\n/**\n * Strip non-JSON diagnostic lines from stdout.\n *\n * OpenClaw may print plugin/doctor/diagnostic lines to stdout before the\n * actual JSON payload (e.g. \"[doctor] ...\", \"[plugins] ...\", \"🦞 OpenClaw ...\").\n * This breaks callers that do JSON.parse(stdout).\n *\n * If stdout looks like it contains a JSON payload with leading noise, strip the\n * noise lines. Otherwise return as-is (non-JSON commands like `config get` may\n * return plain text).\n */\nfunction sanitizeStdout(raw: string): string {\n const trimmed = raw.trim();\n if (!trimmed) return raw;\n\n // Fast path: already starts with JSON\n const firstChar = trimmed[0];\n if (firstChar === \"[\" || firstChar === \"{\" || firstChar === '\"') return raw;\n\n // Look for the first line starting with a JSON token\n const lines = trimmed.split(\"\\n\");\n const jsonStartIdx = lines.findIndex((l) => /^\\s*[[\\{\"]/.test(l));\n if (jsonStartIdx > 0) {\n // Verify the remainder is valid JSON before stripping\n const candidate = lines.slice(jsonStartIdx).join(\"\\n\");\n try {\n JSON.parse(candidate);\n return candidate;\n } catch {\n // Not valid JSON after stripping — return original\n }\n }\n\n return raw;\n}\n\nasync function runOpenClawLocal(args: string[], options: { sanitizeStdout?: boolean } = {}): Promise<OpenClawExecResult> {\n const { sanitizeStdout: shouldSanitize = true } = options;\n \n try {\n const isWindows = process.platform === \"win32\";\n const res = await execFileAsync(\"openclaw\", args, {\n timeout: 120000,\n windowsHide: true,\n maxBuffer: 10 * 1024 * 1024,\n // Windows requires shell:true to resolve executables on PATH via PATHEXT.\n // Without it, execFile throws ENOENT even when openclaw is installed globally.\n ...(isWindows ? { shell: true } : {}),\n });\n\n const rawStdout = String(res.stdout ?? \"\");\n \n return {\n ok: true,\n exitCode: 0,\n stdout: shouldSanitize ? sanitizeStdout(rawStdout) : rawStdout,\n stderr: String(res.stderr ?? \"\"),\n };\n } catch (e: unknown) {\n const err = e as { code?: unknown; stdout?: unknown; stderr?: unknown; message?: unknown };\n const exitCode = typeof err.code === \"number\" ? err.code : 1;\n const stdout = extractStdout(err);\n const stderr = extractStderr(err, e);\n return { ok: false, exitCode, stdout, stderr };\n }\n}\n\n/**\n * Extract a JSON payload from stdout that may contain non-JSON diagnostic lines\n * (e.g. [doctor], [plugins], [recipes] log lines before the actual JSON).\n * Returns the parsed value or null if no JSON found.\n */\nexport function extractJson<T = unknown>(stdout: string): T | null {\n const trimmed = stdout.trim();\n if (!trimmed) return null;\n\n // Fast path: pure JSON\n try {\n return JSON.parse(trimmed) as T;\n } catch {\n // fall through\n }\n\n // Find the first line starting with [ or { (JSON array/object)\n const lines = trimmed.split(\"\\n\");\n const jsonStartIdx = lines.findIndex((l) => /^\\s*[[\\{]/.test(l));\n if (jsonStartIdx >= 0) {\n const jsonSlice = lines.slice(jsonStartIdx).join(\"\\n\");\n try {\n return JSON.parse(jsonSlice) as T;\n } catch {\n // fall through\n }\n }\n\n // Last resort: find the last JSON block (scan from end)\n for (let i = lines.length - 1; i >= 0; i--) {\n if (/^\\s*[\\]}]/.test(lines[i])) {\n // Walk backward to find the matching open\n for (let j = i; j >= 0; j--) {\n if (/^\\s*[[\\{]/.test(lines[j])) {\n try {\n return JSON.parse(lines.slice(j, i + 1).join(\"\\n\")) as T;\n } catch {\n // continue searching\n }\n }\n }\n }\n }\n\n return null;\n}\n\n/**\n * Run OpenClaw without stdout sanitization (for raw text output like recipe markdown)\n */\nexport async function runOpenClawRaw(args: string[]): Promise<OpenClawExecResult> {\n // Always use local exec for raw content to avoid Kitchen runtime restrictions\n return runOpenClawLocal(args, { sanitizeStdout: false });\n}\n\nexport async function runOpenClaw(args: string[]): Promise<OpenClawExecResult> {\n // In some Kitchen runtime contexts, `api.runtime.system.runCommandWithTimeout`\n // is executed with a restricted allowlist that does not include the `cron` tool,\n // causing `openclaw cron ...` to fail with \"Tool not available: cron\".\n //\n // Cron routes need to work in the gateway-run Kitchen environment, so for cron\n // specifically we prefer a local exec (host OpenClaw).\n if (args[0] === \"cron\") return runOpenClawLocal(args);\n\n // Workflow runner/worker commands are long-running orchestration processes that\n // acquire locks and claims. The runtime command wrapper (runCommandWithTimeout)\n // has a 120s hard timeout that can kill these mid-execution, orphaning locks and\n // leaving runs stuck in waiting_workers. Route them through local exec instead.\n if (\n args[0] === \"recipes\" &&\n args[1] === \"workflows\" &&\n [\"runner-once\", \"runner-tick\", \"worker-tick\"].includes(args[2])\n ) {\n return runOpenClawLocal(args);\n }\n\n const api = getKitchenApi();\n try {\n const res = (await api.runtime.system.runCommandWithTimeout([\"openclaw\", ...args], { timeoutMs: 120000 })) as {\n stdout?: unknown;\n stderr?: unknown;\n exitCode?: unknown;\n code?: unknown;\n status?: unknown;\n };\n\n const stdout = sanitizeStdout(String(res.stdout ?? \"\"));\n const stderr = String(res.stderr ?? \"\");\n const exitCode = resolveExitCode(res);\n\n if (exitCode !== 0) return { ok: false, exitCode, stdout, stderr };\n return { ok: true, exitCode: 0, stdout, stderr };\n } catch (e: unknown) {\n const err = e as { code?: unknown; stdout?: unknown; stderr?: unknown; message?: unknown };\n const exitCode = typeof err.code === \"number\" ? err.code : 1;\n const stdout = extractStdout(err);\n const stderr = extractStderr(err, e);\n return { ok: false, exitCode, stdout, stderr };\n }\n}\n"],"names":[],"mappings":"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"}
|
package/.next/server/chunks/_next-internal_server_app_api_cron_bulk_route_actions_30f8adb9.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":""}
|
package/.next/server/chunks/_next-internal_server_app_api_manifest_route_actions_7f7622ff.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":""}
|
package/.next/server/chunks/_next-internal_server_app_api_teams_list_route_actions_5aa8c937.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":""}
|
package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_1fe98a49.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[90736,e=>{"use strict";var t=e.i(47909),r=e.i(74017),o=e.i(96250),n=e.i(59756),a=e.i(61916),s=e.i(74677),i=e.i(69741),l=e.i(16795),d=e.i(87718),u=e.i(95169),p=e.i(47587),c=e.i(66012),w=e.i(70101),f=e.i(54468),m=e.i(10372),g=e.i(93695);e.i(52474);var h=e.i(220),k=e.i(89171),y=e.i(66680),v=e.i(12714),A=e.i(50227),R=e.i(74533),S=e.i(85067),E=e.i(41674),x=e.i(40317),b=e.i(76509),I=e.i(5003),C=e.i(7367),_=e.i(35975),j=e.i(56995);function q(){return new Date().toISOString()}async function O(e,t,r){let o=(0,C.assertSafeRelativeFileName)(t),n=await (0,C.getTeamWorkspaceDir)(e),a=A.default.join(n,o);return await v.default.mkdir(A.default.dirname(a),{recursive:!0}),await v.default.appendFile(a,r,"utf8"),{full:a}}async function N({workflow:e}){let t=e.meta&&"object"==typeof e.meta?e.meta:{},r="string"==typeof t.approvalChannel?t.approvalChannel.trim():"";if(!r)return{provider:null,target:null};if(r.includes(":")){let[e,t]=r.split(":",2);return{provider:e||null,target:t||null}}return{provider:"telegram",target:r}}async function T(e){if(!e)return}function $(e){return Array.isArray(e)?e.map(e=>String(e??"").trim()).filter(Boolean):[]}async function P({command:e,argv:t,cwd:r,timeoutMs:o}){let n=t&&t.length?t:e.split(/\s+/).filter(Boolean),a=n[0],s=n.slice(1);return await new Promise((e,t)=>{let n=(0,R.spawn)(a,s,{cwd:r,shell:!1,stdio:["ignore","pipe","pipe"]}),i="",l="";n.stdout?.on("data",e=>{i.length<65536&&(i+=e.toString("utf8").slice(0,65536-i.length))}),n.stderr?.on("data",e=>{l.length<65536&&(l+=e.toString("utf8").slice(0,65536-l.length))});let d=setTimeout(()=>{n.kill("SIGKILL")},Math.max(0,o));n.on("error",e=>{clearTimeout(d),t(e)}),n.on("close",(t,r)=>{clearTimeout(d),e({stdout:i,stderr:l,exitCode:t,signal:r})})})}async function B({teamId:e,workflow:t,run:r,nodeId:o,startedAt:n,endedAt:a}){let s=Array.isArray(t.nodes)?t.nodes.find(e=>e.id===o):void 0,i=s?.config&&"object"==typeof s.config?s.config:{},l="string"==typeof i.tool&&i.tool.trim()?i.tool.trim():"(unknown)",d=i.args&&"object"==typeof i.args?i.args:{},u={date:a,"run.id":r.id,"workflow.id":t.id,"workflow.name":t.name||t.id};if("fs.append"===l){let t="string"==typeof d.path?d.path:"",r="string"==typeof d.content?d.content:"";if(!t)throw Error("fs.append requires args.path");if(!r)throw Error("fs.append requires args.content");let s=function(e,t){let r=e;for(let[e,o]of Object.entries(t))r=r.replaceAll(`{{${e}}}`,o);return r}(r,u),{full:i}=await O(e,t,s);return{nodeId:o,status:"success",startedAt:n,endedAt:a,output:{tool:l,appendedTo:i,bytes:s.length}}}if("runtime.exec"===l){var p;let r,s,u,c,w,f,m,g=(c=$((u=(p=t.meta)&&"object"==typeof p&&!Array.isArray(p)?t.meta:{}).execAllowBins),w=$(u.execAllowCommands),f=$(i.execAllowBins),m=$(i.execAllowCommands),{allowBins:new Set([...c,...f]),allowCommands:new Set([...w,...m]),host:String(i.execHost??u.execHost??"gateway"),security:String(i.execSecurity??u.execSecurity??"allowlist"),ask:String(i.execAsk??u.execAsk??"on-miss"),timeout:Number(i.execTimeoutSeconds??u.execTimeoutSeconds??300)}),{command:h,bin:k,argv:y}=function(e){let t=Array.isArray(e.commandArray)?e.commandArray:Array.isArray(e.command)?e.command:null;if(t&&t.length){let e=t.map(e=>String(e??"").trim()).filter(Boolean);if(!e.length)throw Error("runtime.exec requires a non-empty command");return{command:e.join(" "),bin:A.default.basename(e[0]),argv:e}}let r=String(e.command??"").trim();if(!r)throw Error("runtime.exec requires args.command");let o=r.split(/\s+/)[0]||"";return{command:r,bin:A.default.basename(o)}}(d);if(g.allowCommands.size&&!g.allowCommands.has(h))throw Error(`runtime.exec command not allowlisted: ${h}`);if(!g.allowCommands.size&&(0===g.allowBins.size||!g.allowBins.has(k)))throw Error(`runtime.exec bin not allowlisted: ${k} (set workflow.meta.execAllowBins or node.config.execAllowBins)`);let v="string"==typeof d.cwd?d.cwd:"string"==typeof d.workdir?d.workdir:"";if(v){let t=await (0,C.getTeamWorkspaceDir)(e),o=A.default.resolve(t,v);if(!o.startsWith(t+A.default.sep)&&o!==t)throw Error("runtime.exec cwd must be within the team workspace");r=o}if("1"!==process.env.KITCHEN_ENABLE_WORKFLOW_RUNTIME_EXEC)throw Error("Tool not available: exec");let R=(process.env.KITCHEN_WORKFLOW_EXEC_BACKEND||"gateway-first").trim();if("local"===R)s=await P({command:h,argv:y,cwd:r,timeoutMs:1e3*g.timeout});else try{s=await (0,b.toolsInvoke)({tool:"exec",args:{command:h,workdir:r,timeout:g.timeout,host:g.host,security:g.security,ask:g.ask}})}catch(e){if("gateway-first"===R&&/Tool not available:\s*exec/i.test((0,x.errorMessage)(e)))s=await P({command:h,argv:y,cwd:r,timeoutMs:1e3*g.timeout});else throw e}return{nodeId:o,status:"success",startedAt:n,endedAt:a,output:{tool:l,command:h,result:s}}}return{nodeId:o,status:"success",startedAt:n,endedAt:a,output:{tool:l,result:"(no-op: tool not implemented)"}}}async function W({teamId:e,workflow:t,run:r,approvalNodeId:o,decidedAt:n}){let a=Array.isArray(t.nodes)?t.nodes:[],s=a.findIndex(e=>e.id===o);if(s<0)return r;let i=Array.isArray(r.nodes)?await Promise.all(r.nodes.map(async o=>{let i=a.findIndex(e=>e.id===o.nodeId);if(!(i>=0&&i>s)||"pending"!==o.status)return o;let l=i>=0?a[i]:void 0,d=o.startedAt??n;if(l?.type==="tool")try{return await B({teamId:e,workflow:t,run:r,nodeId:o.nodeId,startedAt:d,endedAt:n})}catch(e){return{...o,status:"error",startedAt:d,endedAt:n,output:{error:(0,x.errorMessage)(e)}}}return{...o,status:"success",startedAt:d,endedAt:n,output:o.output??{note:"(resumed after approval)"}}})):[];return{...r,nodes:i}}async function F(e){return(0,E.handleWorkflowRunsGet)(e,_.readWorkflowRun,_.listWorkflowRuns)}async function D(e){let t=await (0,S.parseJsonBody)(e);if(t instanceof k.NextResponse)return t;let{body:r}=t,o=String(r.teamId??"").trim(),n=String(r.workflowId??"").trim(),a=String(r.mode??"").trim(),s=String(r.action??"").trim(),i=a||"enqueue",l=String(r.runId??"").trim(),d="string"==typeof r.note?r.note:void 0,u="string"==typeof r.decidedBy?r.decidedBy:void 0;if(!o)return k.NextResponse.json({ok:!1,error:"teamId is required"},{status:400});if(!n)return k.NextResponse.json({ok:!1,error:"workflowId is required"},{status:400});try{if(s){if(!l)return k.NextResponse.json({ok:!1,error:"runId is required for action"},{status:400});if(!["approve","request_changes","cancel","stop","delete"].includes(s))return k.NextResponse.json({ok:!1,error:`Unsupported action: ${s}`},{status:400});if("stop"===s){let e=(await (0,_.readWorkflowRun)(o,n,l)).run;if(!["queued","running","waiting_for_approval","waiting_workers"].includes(e.status))return k.NextResponse.json({ok:!1,error:`Cannot stop run with status: ${e.status}`},{status:400});let t=q(),r=Array.isArray(e.nodes)?e.nodes.map(e=>"pending"===e.status||"running"===e.status?{...e,status:"skipped",startedAt:e.startedAt??t,endedAt:t,output:e.output??{note:"skipped due to stop"}}:e):[],a={...e,status:"canceled",endedAt:t,nodes:r},s=await (0,_.writeWorkflowRun)(o,n,a);try{await (0,_.appendWorkflowRunEvent)(o,n,e.id,{type:"workflow.stopped",action:"stop",stoppedAt:t,reason:"manual_stop"})}catch(e){console.warn("Failed to log stop event:",e)}return(0,S.jsonOkRest)({...s,runId:e.id})}if("delete"===s){let e=await (0,C.getTeamWorkspaceDir)(o),t=A.default.join(e,`shared-context/workflow-runs/${l}`);try{await v.default.rm(t,{recursive:!0,force:!0})}catch{}try{let t=A.default.join(e,`shared-context/workflow-runs/${l}.run.json`);await v.default.rm(t,{force:!0})}catch{}try{let t=A.default.join(e,`shared-context/workflows/${n}/runs/${l}`);await v.default.rm(t,{recursive:!0,force:!0})}catch{}return(0,S.jsonOkRest)({ok:!0,deleted:!0,runId:l})}let e=(await (0,_.readWorkflowRun)(o,n,l)).run,t=e.approval?.nodeId||(Array.isArray(e.nodes)?e.nodes.find(e=>"waiting"===e.status)?.nodeId:void 0);if(!t)return k.NextResponse.json({ok:!1,error:"Run is not awaiting approval"},{status:400});let r=q(),a="approve"===s?"approved":"request_changes"===s?"changes_requested":"canceled",i="approved"===a?"success":"canceled"===a?"canceled":"waiting_for_approval",p=Array.isArray(e.nodes)?e.nodes.map(e=>{if(e.nodeId===t){let t="object"==typeof e.output&&e.output?e.output:{};return{...e,status:"approved"===a?"success":"canceled"===a?"error":"waiting",endedAt:"changes_requested"===a?e.endedAt:r,output:{...t,decision:a,note:d,decidedBy:u}}}return"canceled"===a&&"pending"===e.status?{...e,status:"skipped",startedAt:e.startedAt??r,endedAt:r,output:e.output??{note:"skipped due to cancel"}}:e}):[],c={...e,status:i,endedAt:"success"===i||"canceled"===i?r:e.endedAt,approval:{nodeId:t,state:a,requestedAt:e.approval?.requestedAt,decidedAt:"changes_requested"===a?void 0:r,note:d,decidedBy:u},nodes:p},w=c;if("approve"===s)try{let e=(await (0,j.readWorkflow)(o,n)).workflow;w=await W({teamId:o,workflow:e,run:c,approvalNodeId:t,decidedAt:r}),Array.isArray(w.nodes)&&w.nodes.some(e=>"error"===e.status)&&(w={...w,status:"error",endedAt:r})}catch{}let f=await (0,_.writeWorkflowRun)(o,n,w);try{await (0,_.appendWorkflowRunEvent)(o,n,e.id,{type:"approve"===s?"approval.approved":"request_changes"===s?"approval.changes_requested":"approval.canceled",nodeId:t,action:s,decidedBy:u||"unknown",note:d||void 0,decision:a})}catch(e){console.warn("Failed to log approval event:",e)}try{await (0,_.writeApprovalFile)(o,n,e.id,t,{state:a,requestedAt:e.approval?.requestedAt,decidedAt:"changes_requested"===a?void 0:r,note:d,decidedBy:u})}catch(e){console.warn("Failed to write approval file:",e)}return(0,S.jsonOkRest)({...f,runId:e.id})}if("enqueue"===i||"run_now"===i){let e=(await (0,j.readWorkflow)(o,n)).workflow,t=(Array.isArray(e.nodes)?e.nodes:[]).filter(e=>e&&"object"==typeof e&&"start"!==e.type&&"end"!==e.type&&"human_approval"!==e.type).filter(e=>{let t=e.config,r=t&&"object"==typeof t&&!Array.isArray(t)?t:{};return!String(r.agentId??"").trim()}).map(e=>String(e.id??"")).filter(Boolean);if(t.length)throw Error(`All nodes must be assigned to an agent. Missing agentId on: ${t.join(", ")}`);let r=`${n}.workflow.json`,a=await (0,I.runOpenClaw)(["recipes","workflows","run","--team-id",o,"--workflow-file",r]);if(!a.ok)throw Error(a.stderr||a.stdout||"Failed to enqueue workflow run");let s=JSON.parse(String(a.stdout??"{}")),l=String(s.runId??"").trim(),d=String(s.runLogPath??s.path??"").trim();if(!l&&!d)throw Error("Enqueue succeeded but did not return runId");let u=(()=>{if(d){let e=d.match(/workflow-runs\/([^/]+)\/run\.json$/);if(e?.[1])return e[1];let t=d.match(/workflow-runs\/([^/]+)\.run\.json$/);if(t?.[1])return t[1]}return l})();if(!u)throw Error("Enqueue succeeded but did not return runId");if("run_now"===i){let t=await (0,I.runOpenClaw)(["agents","list","--json"]);if(!t.ok)throw Error(t.stderr||t.stdout||"Failed to list agents");let r=JSON.parse(String(t.stdout??"[]")),a=new Set(r.map(e=>String(e.id??"").trim()).filter(Boolean)),s=(Array.isArray(e.nodes)?e.nodes:[]).filter(e=>e&&"object"==typeof e&&"start"!==e.type&&"end"!==e.type&&"human_approval"!==e.type).map(e=>{let t=e.config,r=t&&"object"==typeof t&&!Array.isArray(t)?t:{};return String(r.agentId??"").trim()}).filter(Boolean),i=Array.from(new Set(s)),l=i.filter(e=>!a.has(e));if(l.length)throw Error(`Unknown agentId(s) in workflow node assignments: ${l.join(", ")}. These must match real OpenClaw agent ids (see openclaw agents list).`);let d=await (0,I.runOpenClaw)(["recipes","workflows","runner-once","--team-id",o,"--run-id",u]);if(!d.ok)throw Error(d.stderr||d.stdout||"Failed to run runner-once");let p=[...i];(async()=>{try{for(let e of p)await (0,I.runOpenClaw)(["recipes","workflows","worker-tick","--team-id",o,"--agent-id",e,"--limit","5","--worker-id","kitchen-run-now"]);let{run:e}=await (0,_.readWorkflowRun)(o,n,u),t=String(e.status??"");if("waiting_workers"===t)for(let e of p)await (0,I.runOpenClaw)(["recipes","workflows","worker-tick","--team-id",o,"--agent-id",e,"--limit","5","--worker-id","kitchen-run-now-pass2"])}catch{}})()}return(0,S.jsonOkRest)({ok:!0,runId:u,path:`shared-context/workflow-runs/${u}/run.json`,...d?{runLogPath:d}:{}})}let e="sample"===i?await (async()=>{let e=(await (0,j.readWorkflow)(o,n)).workflow,t=`run-${q().replace(/[:.]/g,"-")}-${y.default.randomBytes(3).toString("hex")}`.toLowerCase(),r=Date.now(),a=e.meta&&"object"==typeof e.meta&&"templateId"in e.meta?e.meta.templateId:void 0,s="marketing-cadence-v1"===a,i=s?{x:{hook:"Stop losing hours to repetitive agent setup.",body:"ClawRecipes scaffolds entire teams of agents in one command — workflows, roles, conventions, and a human-approval gate before posting."},instagram:{hook:"Ship agent workflows faster.",body:"From idea → drafted assets → brand QC → approval → posting. File-first workflows you can export and version.",assetNotes:"Square image: diagram of workflow nodes + approval gate."},tiktok:{hook:"POV: you stop copy/pasting prompts.",script:"Today I’m building a marketing cadence workflow that researches, drafts, QC’s, then waits for human approval before it posts. File-first. Portable. No magic.",assetNotes:"15–25s screen recording of the canvas + approval buttons."},youtube:{hook:"Build a marketing cadence workflow (with human approval) in 2 minutes.",script:"We’ll wire research → drafts → QC → approval → post nodes, and persist the whole thing to shared-context/workflows/*.workflow.json so it’s portable.",assetNotes:"Thumbnail: workflow canvas with 'Approve & Post' highlighted."}}:null,l=e.nodes.findIndex(e=>"human_approval"===e.type),d=l>=0?e.nodes[l]?.id:void 0,u=e.nodes.map((e,t)=>{let o=new Date(r+350*t).toISOString(),n=new Date(r+350*t+200).toISOString(),a=l<0||t<l,u=!!d&&e.id===d,p={nodeId:e.id,status:a?"success":l>=0&&t>l?"pending":u?"waiting":"success",startedAt:o,endedAt:a?n:void 0};if("llm"===e.type){let t=a&&s?"research"===e.id?{model:"(sample)",kind:"research",bullets:["New agent teams are compelling when they’re portable + file-first.","Human approval gates are mandatory for auto-post workflows.","Cron triggers need timezone + preset suggestions."]}:"draft_assets"===e.id?{model:"(sample)",kind:"draft_assets",drafts:i}:"qc_brand"===e.id?{model:"(sample)",kind:"qc_brand",notes:["Keep claims concrete (no ‘magic’).","Mention ClawRecipes before OpenClaw.","Explicitly state: no posting without approval."]}:{model:"(sample)",text:`Sample output for ${e.id}`}:null;return{...p,output:a?t??{model:"(sample)",text:`Sample output for ${e.id}`}:void 0}}if("tool"===e.type){let t=e.config&&"object"==typeof e.config?e.config.tool:void 0,r="string"==typeof t&&t.trim()?t.trim():"(unknown)";return{...p,output:a?{tool:r,result:"(sample tool result)"}:void 0}}if("human_approval"===e.type){let e=s?{channel:"(sample)",decision:"pending",options:["approve","request_changes","cancel"],packet:{templateId:"marketing-cadence-v1",note:"Per-platform drafts (sample) — approve to post, request changes to loop, or cancel.",platforms:{x:i?.x,instagram:i?.instagram,tiktok:i?.tiktok,youtube:i?.youtube}}}:{channel:"(sample)",decision:"pending",options:["approve","request_changes","cancel"]};return{...p,output:e}}return p}),p=d?"waiting_for_approval":"success",c={schema:"clawkitchen.workflow-run.v1",id:t,workflowId:n,startedAt:new Date(r).toISOString(),endedAt:d?void 0:new Date(r+350*e.nodes.length+200).toISOString(),status:p,summary:d?"Sample run (awaiting approval)":"Sample run (generated by ClawKitchen UI)",nodes:u,approval:d?{nodeId:d,state:"pending",requestedAt:new Date(r+350*l).toISOString()}:void 0};if(d){let{provider:t,target:r}=await N({workflow:e});if(r)try{await T({teamId:o,workflow:e,run:c,approvalNodeId:d}),c.approval={...c.approval,outbound:{provider:t,target:r,sentAt:q()}}}catch(e){c.approval={...c.approval,outbound:{provider:t,target:r,error:(0,x.errorMessage)(e),attemptedAt:q()}}}}return c})():await (async()=>{if(!["execute","enqueue","run_now","sample"].includes(i))throw Error(`Unsupported mode: ${i}`);let e=(await (0,j.readWorkflow)(o,n)).workflow,t=(Array.isArray(e.nodes)?e.nodes:[]).filter(e=>e&&"object"==typeof e&&"start"!==e.type&&"end"!==e.type&&"human_approval"!==e.type).filter(e=>{let t=e.config,r=t&&"object"==typeof t&&!Array.isArray(t)?t:{};return!String(r.agentId??"").trim()}).map(e=>String(e.id??"")).filter(Boolean);if(t.length)throw Error(`All nodes must be assigned to an agent. Missing agentId on: ${t.join(", ")}`);let r=`${n}.workflow.json`,a=await (0,I.runOpenClaw)(["recipes","workflows","run","--team-id",o,"--workflow-file",r]);if(!a.ok)throw Error(a.stderr||a.stdout||"Failed to enqueue workflow run");let s=JSON.parse(String(a.stdout??"{}")),l=String(s.runId??"").trim(),d=String(s.runLogPath??s.path??"").trim();if(!l&&!d)throw Error("Enqueue succeeded but did not return runId");let u=(()=>{if(d){let e=d.match(/workflow-runs\/([^/]+)\/run\.json$/);if(e?.[1])return e[1];let t=d.match(/workflow-runs\/([^/]+)\.run\.json$/);if(t?.[1])return t[1]}return l})();if(!u)throw Error("Enqueue succeeded but did not return runId");if("run_now"===i){let t=await (0,I.runOpenClaw)(["agents","list","--json"]);if(!t.ok)throw Error(t.stderr||t.stdout||"Failed to list agents");let r=JSON.parse(String(t.stdout??"[]")),a=new Set(r.map(e=>String(e.id??"").trim()).filter(Boolean)),s=(Array.isArray(e.nodes)?e.nodes:[]).filter(e=>e&&"object"==typeof e&&"start"!==e.type&&"end"!==e.type&&"human_approval"!==e.type).map(e=>{let t=e.config,r=t&&"object"==typeof t&&!Array.isArray(t)?t:{};return String(r.agentId??"").trim()}).filter(Boolean),i=Array.from(new Set(s)),l=i.filter(e=>!a.has(e));if(l.length)throw Error(`Unknown agentId(s) in workflow node assignments: ${l.join(", ")}. These must match real OpenClaw agent ids (see openclaw agents list).`);for(let e=0;e<4;e++){let e=await (0,I.runOpenClaw)(["recipes","workflows","runner-once","--team-id",o]);if(!e.ok)throw Error(e.stderr||e.stdout||"Failed to run runner-once");try{let{run:e}=await (0,_.readWorkflowRun)(o,n,u),t=e.status;if(t&&"queued"!=String(t))break}catch{}await new Promise(e=>setTimeout(e,250))}try{let{run:e}=await (0,_.readWorkflowRun)(o,n,u),t=e.status;if("queued"===String(t))throw Error(`Run now enqueued runId=${u}, but runner did not claim it yet (queue may contain older runs). Please retry, or run: openclaw recipes workflows runner-once --team-id ${o}`)}catch(e){if(e instanceof Error&&e.message.startsWith("Run now enqueued"))throw e}for(let e of i){let t=await (0,I.runOpenClaw)(["recipes","workflows","worker-tick","--team-id",o,"--agent-id",e,"--limit","5","--worker-id","kitchen-run-now"]);if(!t.ok)throw Error(t.stderr||t.stdout||`Failed worker-tick for ${e}`)}}return{schema:"clawkitchen.workflow-run.v1",id:u,workflowId:n,teamId:o,startedAt:q(),status:"running",summary:"run_now"===i?"Queued + kicked runner/workers":"Queued for workflow runner",nodes:Array.isArray(e.nodes)?e.nodes.map(e=>({nodeId:String(e.id),status:"pending"})):[],meta:{canonicalRunId:u,...d?{runLogPath:d}:{}}}})();if("enqueue"===i||"run_now"===i){let t=String(e.meta?.canonicalRunId??e.id);return(0,S.jsonOkRest)({ok:!0,runId:t,path:`shared-context/workflow-runs/${t}/run.json`})}return(0,S.jsonOkRest)({...await (0,_.writeWorkflowRun)(o,n,e),runId:e.id})}catch(t){let e=(0,x.errorMessage)(t);if(/^All nodes must be assigned to an agent\./i.test(e)||/^Unknown agentId\(s\)/i.test(e))return k.NextResponse.json({ok:!1,error:e},{status:400});return k.NextResponse.json({ok:!1,error:e},{status:500})}}e.s(["GET",()=>F,"POST",()=>D],80366);var M=e.i(80366);let U=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/teams/workflow-runs/route",pathname:"/api/teams/workflow-runs",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/teams/workflow-runs/route.ts",nextConfigOutput:"standalone",userland:M}),{workAsyncStorage:H,workUnitAsyncStorage:K,serverHooks:L}=U;function G(){return(0,o.patchFetch)({workAsyncStorage:H,workUnitAsyncStorage:K})}async function z(e,t,o){U.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let k="/api/teams/workflow-runs/route";k=k.replace(/\/index$/,"")||"/";let y=await U.prepare(e,t,{srcPage:k,multiZoneDraftMode:!1});if(!y)return t.statusCode=400,t.end("Bad Request"),null==o.waitUntil||o.waitUntil.call(o,Promise.resolve()),null;let{buildId:v,params:A,nextConfig:R,parsedUrl:S,isDraftMode:E,prerenderManifest:x,routerServerContext:b,isOnDemandRevalidate:I,revalidateOnlyGenerated:C,resolvedPathname:_,clientReferenceManifest:j,serverActionsManifest:q}=y,O=(0,i.normalizeAppPath)(k),N=!!(x.dynamicRoutes[O]||x.routes[_]),T=async()=>((null==b?void 0:b.render404)?await b.render404(e,t,S,!1):t.end("This page could not be found"),null);if(N&&!E){let e=!!x.routes[_],t=x.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(R.experimental.adapterPath)return await T();throw new g.NoFallbackError}}let $=null;!N||U.isDev||E||($="/index"===($=_)?"/":$);let P=!0===U.isDev||!N,B=N&&!P;q&&j&&(0,s.setManifestsSingleton)({page:k,clientReferenceManifest:j,serverActionsManifest:q});let W=e.method||"GET",F=(0,a.getTracer)(),D=F.getActiveScopeSpan(),M={params:A,prerenderManifest:x,renderOpts:{experimental:{authInterrupts:!!R.experimental.authInterrupts},cacheComponents:!!R.cacheComponents,supportsDynamicResponse:P,incrementalCache:(0,n.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:R.cacheLife,waitUntil:o.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,o,n)=>U.onRequestError(e,t,o,n,b)},sharedContext:{buildId:v}},H=new l.NodeNextRequest(e),K=new l.NodeNextResponse(t),L=d.NextRequestAdapter.fromNodeNextRequest(H,(0,d.signalFromNodeResponse)(t));try{let s=async e=>U.handle(L,M).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=F.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let o=r.get("next.route");if(o){let t=`${W} ${o}`;e.setAttributes({"next.route":o,"http.route":o,"next.span_name":t}),e.updateName(t)}else e.updateName(`${W} ${k}`)}),i=!!(0,n.getRequestMeta)(e,"minimalMode"),l=async n=>{var a,l;let d=async({previousCacheEntry:r})=>{try{if(!i&&I&&C&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await s(n);e.fetchMetrics=M.renderOpts.fetchMetrics;let l=M.renderOpts.pendingWaitUntil;l&&o.waitUntil&&(o.waitUntil(l),l=void 0);let d=M.renderOpts.collectedTags;if(!N)return await (0,c.sendResponse)(H,K,a,M.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,w.toNodeOutgoingHttpHeaders)(a.headers);d&&(t[m.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==M.renderOpts.collectedRevalidate&&!(M.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&M.renderOpts.collectedRevalidate,o=void 0===M.renderOpts.collectedExpire||M.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:M.renderOpts.collectedExpire;return{value:{kind:h.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:o}}}}catch(t){throw(null==r?void 0:r.isStale)&&await U.onRequestError(e,t,{routerKind:"App Router",routePath:k,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:B,isOnDemandRevalidate:I})},!1,b),t}},u=await U.handleResponse({req:e,nextConfig:R,cacheKey:$,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:x,isRoutePPREnabled:!1,isOnDemandRevalidate:I,revalidateOnlyGenerated:C,responseGenerator:d,waitUntil:o.waitUntil,isMinimalMode:i});if(!N)return null;if((null==u||null==(a=u.value)?void 0:a.kind)!==h.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});i||t.setHeader("x-nextjs-cache",I?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let g=(0,w.fromNodeOutgoingHttpHeaders)(u.value.headers);return i&&N||g.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||g.get("Cache-Control")||g.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,c.sendResponse)(H,K,new Response(u.value.body,{headers:g,status:u.value.status||200})),null};D?await l(D):await F.withPropagatedContext(e.headers,()=>F.trace(u.BaseServerSpan.handleRequest,{spanName:`${W} ${k}`,kind:a.SpanKind.SERVER,attributes:{"http.method":W,"http.target":e.url}},l))}catch(t){if(t instanceof g.NoFallbackError||await U.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:B,isOnDemandRevalidate:I})},!1,b),N)throw t;return await (0,c.sendResponse)(H,K,new Response(null,{status:500})),null}}e.s(["handler",()=>z,"patchFetch",()=>G,"routeModule",()=>U,"serverHooks",()=>L,"workAsyncStorage",()=>H,"workUnitAsyncStorage",()=>K],90736)}];
|
|
1
|
+
module.exports=[90736,e=>{"use strict";var t=e.i(47909),r=e.i(74017),o=e.i(96250),n=e.i(59756),a=e.i(61916),s=e.i(74677),i=e.i(69741),l=e.i(16795),d=e.i(87718),u=e.i(95169),p=e.i(47587),c=e.i(66012),w=e.i(70101),f=e.i(74838),m=e.i(10372),g=e.i(93695);e.i(52474);var h=e.i(220),k=e.i(89171),y=e.i(66680),v=e.i(12714),A=e.i(50227),R=e.i(74533),S=e.i(85067),E=e.i(41674),x=e.i(40317),b=e.i(76509),I=e.i(5003),C=e.i(7367),j=e.i(35975),_=e.i(56995);function q(){return new Date().toISOString()}async function O(e,t,r){let o=(0,C.assertSafeRelativeFileName)(t),n=await (0,C.getTeamWorkspaceDir)(e),a=A.default.join(n,o);return await v.default.mkdir(A.default.dirname(a),{recursive:!0}),await v.default.appendFile(a,r,"utf8"),{full:a}}async function N({workflow:e}){let t=e.meta&&"object"==typeof e.meta?e.meta:{},r="string"==typeof t.approvalChannel?t.approvalChannel.trim():"";if(!r)return{provider:null,target:null};if(r.includes(":")){let[e,t]=r.split(":",2);return{provider:e||null,target:t||null}}return{provider:"telegram",target:r}}async function T(e){if(!e)return}function $(e){return Array.isArray(e)?e.map(e=>String(e??"").trim()).filter(Boolean):[]}async function P({command:e,argv:t,cwd:r,timeoutMs:o}){let n=t&&t.length?t:e.split(/\s+/).filter(Boolean),a=n[0],s=n.slice(1);return await new Promise((e,t)=>{let n=(0,R.spawn)(a,s,{cwd:r,shell:!1,stdio:["ignore","pipe","pipe"]}),i="",l="";n.stdout?.on("data",e=>{i.length<65536&&(i+=e.toString("utf8").slice(0,65536-i.length))}),n.stderr?.on("data",e=>{l.length<65536&&(l+=e.toString("utf8").slice(0,65536-l.length))});let d=setTimeout(()=>{n.kill("SIGKILL")},Math.max(0,o));n.on("error",e=>{clearTimeout(d),t(e)}),n.on("close",(t,r)=>{clearTimeout(d),e({stdout:i,stderr:l,exitCode:t,signal:r})})})}async function B({teamId:e,workflow:t,run:r,nodeId:o,startedAt:n,endedAt:a}){let s=Array.isArray(t.nodes)?t.nodes.find(e=>e.id===o):void 0,i=s?.config&&"object"==typeof s.config?s.config:{},l="string"==typeof i.tool&&i.tool.trim()?i.tool.trim():"(unknown)",d=i.args&&"object"==typeof i.args?i.args:{},u={date:a,"run.id":r.id,"workflow.id":t.id,"workflow.name":t.name||t.id};if("fs.append"===l){let t="string"==typeof d.path?d.path:"",r="string"==typeof d.content?d.content:"";if(!t)throw Error("fs.append requires args.path");if(!r)throw Error("fs.append requires args.content");let s=function(e,t){let r=e;for(let[e,o]of Object.entries(t))r=r.replaceAll(`{{${e}}}`,o);return r}(r,u),{full:i}=await O(e,t,s);return{nodeId:o,status:"success",startedAt:n,endedAt:a,output:{tool:l,appendedTo:i,bytes:s.length}}}if("runtime.exec"===l){var p;let r,s,u,c,w,f,m,g=(c=$((u=(p=t.meta)&&"object"==typeof p&&!Array.isArray(p)?t.meta:{}).execAllowBins),w=$(u.execAllowCommands),f=$(i.execAllowBins),m=$(i.execAllowCommands),{allowBins:new Set([...c,...f]),allowCommands:new Set([...w,...m]),host:String(i.execHost??u.execHost??"gateway"),security:String(i.execSecurity??u.execSecurity??"allowlist"),ask:String(i.execAsk??u.execAsk??"on-miss"),timeout:Number(i.execTimeoutSeconds??u.execTimeoutSeconds??300)}),{command:h,bin:k,argv:y}=function(e){let t=Array.isArray(e.commandArray)?e.commandArray:Array.isArray(e.command)?e.command:null;if(t&&t.length){let e=t.map(e=>String(e??"").trim()).filter(Boolean);if(!e.length)throw Error("runtime.exec requires a non-empty command");return{command:e.join(" "),bin:A.default.basename(e[0]),argv:e}}let r=String(e.command??"").trim();if(!r)throw Error("runtime.exec requires args.command");let o=r.split(/\s+/)[0]||"";return{command:r,bin:A.default.basename(o)}}(d);if(g.allowCommands.size&&!g.allowCommands.has(h))throw Error(`runtime.exec command not allowlisted: ${h}`);if(!g.allowCommands.size&&(0===g.allowBins.size||!g.allowBins.has(k)))throw Error(`runtime.exec bin not allowlisted: ${k} (set workflow.meta.execAllowBins or node.config.execAllowBins)`);let v="string"==typeof d.cwd?d.cwd:"string"==typeof d.workdir?d.workdir:"";if(v){let t=await (0,C.getTeamWorkspaceDir)(e),o=A.default.resolve(t,v);if(!o.startsWith(t+A.default.sep)&&o!==t)throw Error("runtime.exec cwd must be within the team workspace");r=o}if("1"!==process.env.KITCHEN_ENABLE_WORKFLOW_RUNTIME_EXEC)throw Error("Tool not available: exec");let R=(process.env.KITCHEN_WORKFLOW_EXEC_BACKEND||"gateway-first").trim();if("local"===R)s=await P({command:h,argv:y,cwd:r,timeoutMs:1e3*g.timeout});else try{s=await (0,b.toolsInvoke)({tool:"exec",args:{command:h,workdir:r,timeout:g.timeout,host:g.host,security:g.security,ask:g.ask}})}catch(e){if("gateway-first"===R&&/Tool not available:\s*exec/i.test((0,x.errorMessage)(e)))s=await P({command:h,argv:y,cwd:r,timeoutMs:1e3*g.timeout});else throw e}return{nodeId:o,status:"success",startedAt:n,endedAt:a,output:{tool:l,command:h,result:s}}}return{nodeId:o,status:"success",startedAt:n,endedAt:a,output:{tool:l,result:"(no-op: tool not implemented)"}}}async function W({teamId:e,workflow:t,run:r,approvalNodeId:o,decidedAt:n}){let a=Array.isArray(t.nodes)?t.nodes:[],s=a.findIndex(e=>e.id===o);if(s<0)return r;let i=Array.isArray(r.nodes)?await Promise.all(r.nodes.map(async o=>{let i=a.findIndex(e=>e.id===o.nodeId);if(!(i>=0&&i>s)||"pending"!==o.status)return o;let l=i>=0?a[i]:void 0,d=o.startedAt??n;if(l?.type==="tool")try{return await B({teamId:e,workflow:t,run:r,nodeId:o.nodeId,startedAt:d,endedAt:n})}catch(e){return{...o,status:"error",startedAt:d,endedAt:n,output:{error:(0,x.errorMessage)(e)}}}return{...o,status:"success",startedAt:d,endedAt:n,output:o.output??{note:"(resumed after approval)"}}})):[];return{...r,nodes:i}}async function F(e){return(0,E.handleWorkflowRunsGet)(e,j.readWorkflowRun,j.listWorkflowRuns)}async function M(e){let t=await (0,S.parseJsonBody)(e);if(t instanceof k.NextResponse)return t;let{body:r}=t,o=String(r.teamId??"").trim(),n=String(r.workflowId??"").trim(),a=String(r.mode??"").trim(),s=String(r.action??"").trim(),i=a||"enqueue",l=String(r.runId??"").trim(),d="string"==typeof r.note?r.note:void 0,u="string"==typeof r.decidedBy?r.decidedBy:void 0;if(!o)return k.NextResponse.json({ok:!1,error:"teamId is required"},{status:400});if(!n)return k.NextResponse.json({ok:!1,error:"workflowId is required"},{status:400});try{if(s){if(!l&&"bulk-delete"!==s)return k.NextResponse.json({ok:!1,error:"runId is required for action"},{status:400});if(!["approve","request_changes","cancel","stop","delete","bulk-delete"].includes(s))return k.NextResponse.json({ok:!1,error:`Unsupported action: ${s}`},{status:400});if("bulk-delete"===s){let e=Array.isArray(r.runIds)?r.runIds.map(e=>String(e).trim()).filter(Boolean):[];if(0===e.length)return k.NextResponse.json({ok:!1,error:"runIds array is required for bulk-delete"},{status:400});let t=await (0,C.getTeamWorkspaceDir)(o),a=[],s=[];for(let r of e)try{let e=A.default.join(t,`shared-context/workflow-runs/${r}`);await v.default.rm(e,{recursive:!0,force:!0}).catch(()=>{});let o=A.default.join(t,`shared-context/workflow-runs/${r}.run.json`);await v.default.rm(o,{force:!0}).catch(()=>{});let s=A.default.join(t,`shared-context/workflows/${n}/runs/${r}`);await v.default.rm(s,{recursive:!0,force:!0}).catch(()=>{}),a.push(r)}catch(e){s.push(`${r}: ${String(e)}`)}return(0,S.jsonOkRest)({ok:!0,deleted:a,errors:s,count:a.length})}if("stop"===s){let e=(await (0,j.readWorkflowRun)(o,n,l)).run;if(!["queued","running","waiting_for_approval","waiting_workers"].includes(e.status))return k.NextResponse.json({ok:!1,error:`Cannot stop run with status: ${e.status}`},{status:400});let t=q(),r=Array.isArray(e.nodes)?e.nodes.map(e=>"pending"===e.status||"running"===e.status?{...e,status:"skipped",startedAt:e.startedAt??t,endedAt:t,output:e.output??{note:"skipped due to stop"}}:e):[],a={...e,status:"canceled",endedAt:t,nodes:r},s=await (0,j.writeWorkflowRun)(o,n,a);try{await (0,j.appendWorkflowRunEvent)(o,n,e.id,{type:"workflow.stopped",action:"stop",stoppedAt:t,reason:"manual_stop"})}catch(e){console.warn("Failed to log stop event:",e)}return(0,S.jsonOkRest)({...s,runId:e.id})}if("delete"===s){let e=await (0,C.getTeamWorkspaceDir)(o),t=A.default.join(e,`shared-context/workflow-runs/${l}`);try{await v.default.rm(t,{recursive:!0,force:!0})}catch{}try{let t=A.default.join(e,`shared-context/workflow-runs/${l}.run.json`);await v.default.rm(t,{force:!0})}catch{}try{let t=A.default.join(e,`shared-context/workflows/${n}/runs/${l}`);await v.default.rm(t,{recursive:!0,force:!0})}catch{}return(0,S.jsonOkRest)({ok:!0,deleted:!0,runId:l})}let e=await (0,j.readWorkflowRun)(o,n,l),t=e.run,a="isRunnerManaged"in e&&e.isRunnerManaged,i=t.approval?.nodeId||(Array.isArray(t.nodes)?t.nodes.find(e=>"waiting"===e.status)?.nodeId:void 0);if(!i)return k.NextResponse.json({ok:!1,error:"Run is not awaiting approval"},{status:400});if(a){let e,r=q(),a="approve"===s?"approved":"rejected";try{await (0,j.writeApprovalFile)(o,n,t.id,i,{state:a,requestedAt:t.approval?.requestedAt,decidedAt:r,note:d,decidedBy:u})}catch(e){return k.NextResponse.json({ok:!1,error:`Failed to write approval: ${e}`},{status:500})}try{await (0,j.appendWorkflowRunEvent)(o,n,t.id,{type:"approve"===s?"approval.approved":"approval.changes_requested",nodeId:i,action:s,decidedBy:u||"ClawKitchen UI",note:d||void 0,decision:a})}catch{}try{let r=await (0,I.runOpenClaw)(["recipes","workflows","resume","--team-id",o,"--run-id",t.id]);r.ok||(e=r.stderr||"Resume command failed")}catch(t){e=String(t)}return(0,S.jsonOkRest)({ok:!0,runId:t.id,action:s,state:a,runnerManaged:!0,...e?{resumeError:e}:{resumed:!0}})}let p=q(),c="approve"===s?"approved":"request_changes"===s?"changes_requested":"canceled",w="approved"===c?"success":"canceled"===c?"canceled":"waiting_for_approval",f=Array.isArray(t.nodes)?t.nodes.map(e=>{if(e.nodeId===i){let t="object"==typeof e.output&&e.output?e.output:{};return{...e,status:"approved"===c?"success":"canceled"===c?"error":"waiting",endedAt:"changes_requested"===c?e.endedAt:p,output:{...t,decision:c,note:d,decidedBy:u}}}return"canceled"===c&&"pending"===e.status?{...e,status:"skipped",startedAt:e.startedAt??p,endedAt:p,output:e.output??{note:"skipped due to cancel"}}:e}):[],m={...t,status:w,endedAt:"success"===w||"canceled"===w?p:t.endedAt,approval:{nodeId:i,state:c,requestedAt:t.approval?.requestedAt,decidedAt:"changes_requested"===c?void 0:p,note:d,decidedBy:u},nodes:f},g=m;if("approve"===s)try{let e=(await (0,_.readWorkflow)(o,n)).workflow;g=await W({teamId:o,workflow:e,run:m,approvalNodeId:i,decidedAt:p}),Array.isArray(g.nodes)&&g.nodes.some(e=>"error"===e.status)&&(g={...g,status:"error",endedAt:p})}catch{}let h=await (0,j.writeWorkflowRun)(o,n,g);try{await (0,j.appendWorkflowRunEvent)(o,n,t.id,{type:"approve"===s?"approval.approved":"request_changes"===s?"approval.changes_requested":"approval.canceled",nodeId:i,action:s,decidedBy:u||"unknown",note:d||void 0,decision:c})}catch(e){console.warn("Failed to log approval event:",e)}try{await (0,j.writeApprovalFile)(o,n,t.id,i,{state:c,requestedAt:t.approval?.requestedAt,decidedAt:"changes_requested"===c?void 0:p,note:d,decidedBy:u})}catch(e){console.warn("Failed to write approval file:",e)}return(0,S.jsonOkRest)({...h,runId:t.id})}if("enqueue"===i||"run_now"===i){let e=(await (0,_.readWorkflow)(o,n)).workflow,t=(Array.isArray(e.nodes)?e.nodes:[]).filter(e=>e&&"object"==typeof e&&"start"!==e.type&&"end"!==e.type&&"human_approval"!==e.type).filter(e=>{let t=e.config,r=t&&"object"==typeof t&&!Array.isArray(t)?t:{};return!String(r.agentId??"").trim()}).map(e=>String(e.id??"")).filter(Boolean);if(t.length)throw Error(`All nodes must be assigned to an agent. Missing agentId on: ${t.join(", ")}`);let r=`${n}.workflow.json`,a=await (0,I.runOpenClaw)(["recipes","workflows","run","--team-id",o,"--workflow-file",r]);if(!a.ok)throw Error(a.stderr||a.stdout||"Failed to enqueue workflow run");let s=JSON.parse(String(a.stdout??"{}")),l=String(s.runId??"").trim(),d=String(s.runLogPath??s.path??"").trim();if(!l&&!d)throw Error("Enqueue succeeded but did not return runId");let u=(()=>{if(d){let e=d.match(/workflow-runs\/([^/]+)\/run\.json$/);if(e?.[1])return e[1];let t=d.match(/workflow-runs\/([^/]+)\.run\.json$/);if(t?.[1])return t[1]}return l})();if(!u)throw Error("Enqueue succeeded but did not return runId");if("run_now"===i){let t=await (0,I.runOpenClaw)(["agents","list","--json"]);if(!t.ok)throw Error(t.stderr||t.stdout||"Failed to list agents");let r=JSON.parse(String(t.stdout??"[]")),a=new Set(r.map(e=>String(e.id??"").trim()).filter(Boolean)),s=(Array.isArray(e.nodes)?e.nodes:[]).filter(e=>e&&"object"==typeof e&&"start"!==e.type&&"end"!==e.type&&"human_approval"!==e.type).map(e=>{let t=e.config,r=t&&"object"==typeof t&&!Array.isArray(t)?t:{};return String(r.agentId??"").trim()}).filter(Boolean),i=Array.from(new Set(s)),l=i.filter(e=>!a.has(e));if(l.length)throw Error(`Unknown agentId(s) in workflow node assignments: ${l.join(", ")}. These must match real OpenClaw agent ids (see openclaw agents list).`);let d=await (0,I.runOpenClaw)(["recipes","workflows","runner-once","--team-id",o,"--run-id",u]);if(!d.ok)throw Error(d.stderr||d.stdout||"Failed to run runner-once");let p=[...i];(async()=>{try{for(let e of p)await (0,I.runOpenClaw)(["recipes","workflows","worker-tick","--team-id",o,"--agent-id",e,"--limit","5","--worker-id","kitchen-run-now"]);let{run:e}=await (0,j.readWorkflowRun)(o,n,u),t=String(e.status??"");if("waiting_workers"===t)for(let e of p)await (0,I.runOpenClaw)(["recipes","workflows","worker-tick","--team-id",o,"--agent-id",e,"--limit","5","--worker-id","kitchen-run-now-pass2"])}catch{}})()}return(0,S.jsonOkRest)({ok:!0,runId:u,path:`shared-context/workflow-runs/${u}/run.json`,...d?{runLogPath:d}:{}})}let e="sample"===i?await (async()=>{let e=(await (0,_.readWorkflow)(o,n)).workflow,t=`run-${q().replace(/[:.]/g,"-")}-${y.default.randomBytes(3).toString("hex")}`.toLowerCase(),r=Date.now(),a=e.meta&&"object"==typeof e.meta&&"templateId"in e.meta?e.meta.templateId:void 0,s="marketing-cadence-v1"===a,i=s?{x:{hook:"Stop losing hours to repetitive agent setup.",body:"ClawRecipes scaffolds entire teams of agents in one command — workflows, roles, conventions, and a human-approval gate before posting."},instagram:{hook:"Ship agent workflows faster.",body:"From idea → drafted assets → brand QC → approval → posting. File-first workflows you can export and version.",assetNotes:"Square image: diagram of workflow nodes + approval gate."},tiktok:{hook:"POV: you stop copy/pasting prompts.",script:"Today I’m building a marketing cadence workflow that researches, drafts, QC’s, then waits for human approval before it posts. File-first. Portable. No magic.",assetNotes:"15–25s screen recording of the canvas + approval buttons."},youtube:{hook:"Build a marketing cadence workflow (with human approval) in 2 minutes.",script:"We’ll wire research → drafts → QC → approval → post nodes, and persist the whole thing to shared-context/workflows/*.workflow.json so it’s portable.",assetNotes:"Thumbnail: workflow canvas with 'Approve & Post' highlighted."}}:null,l=e.nodes.findIndex(e=>"human_approval"===e.type),d=l>=0?e.nodes[l]?.id:void 0,u=e.nodes.map((e,t)=>{let o=new Date(r+350*t).toISOString(),n=new Date(r+350*t+200).toISOString(),a=l<0||t<l,u=!!d&&e.id===d,p={nodeId:e.id,status:a?"success":l>=0&&t>l?"pending":u?"waiting":"success",startedAt:o,endedAt:a?n:void 0};if("llm"===e.type){let t=a&&s?"research"===e.id?{model:"(sample)",kind:"research",bullets:["New agent teams are compelling when they’re portable + file-first.","Human approval gates are mandatory for auto-post workflows.","Cron triggers need timezone + preset suggestions."]}:"draft_assets"===e.id?{model:"(sample)",kind:"draft_assets",drafts:i}:"qc_brand"===e.id?{model:"(sample)",kind:"qc_brand",notes:["Keep claims concrete (no ‘magic’).","Mention ClawRecipes before OpenClaw.","Explicitly state: no posting without approval."]}:{model:"(sample)",text:`Sample output for ${e.id}`}:null;return{...p,output:a?t??{model:"(sample)",text:`Sample output for ${e.id}`}:void 0}}if("tool"===e.type){let t=e.config&&"object"==typeof e.config?e.config.tool:void 0,r="string"==typeof t&&t.trim()?t.trim():"(unknown)";return{...p,output:a?{tool:r,result:"(sample tool result)"}:void 0}}if("human_approval"===e.type){let e=s?{channel:"(sample)",decision:"pending",options:["approve","request_changes","cancel"],packet:{templateId:"marketing-cadence-v1",note:"Per-platform drafts (sample) — approve to post, request changes to loop, or cancel.",platforms:{x:i?.x,instagram:i?.instagram,tiktok:i?.tiktok,youtube:i?.youtube}}}:{channel:"(sample)",decision:"pending",options:["approve","request_changes","cancel"]};return{...p,output:e}}return p}),p=d?"waiting_for_approval":"success",c={schema:"clawkitchen.workflow-run.v1",id:t,workflowId:n,startedAt:new Date(r).toISOString(),endedAt:d?void 0:new Date(r+350*e.nodes.length+200).toISOString(),status:p,summary:d?"Sample run (awaiting approval)":"Sample run (generated by ClawKitchen UI)",nodes:u,approval:d?{nodeId:d,state:"pending",requestedAt:new Date(r+350*l).toISOString()}:void 0};if(d){let{provider:t,target:r}=await N({workflow:e});if(r)try{await T({teamId:o,workflow:e,run:c,approvalNodeId:d}),c.approval={...c.approval,outbound:{provider:t,target:r,sentAt:q()}}}catch(e){c.approval={...c.approval,outbound:{provider:t,target:r,error:(0,x.errorMessage)(e),attemptedAt:q()}}}}return c})():await (async()=>{if(!["execute","enqueue","run_now","sample"].includes(i))throw Error(`Unsupported mode: ${i}`);let e=(await (0,_.readWorkflow)(o,n)).workflow,t=(Array.isArray(e.nodes)?e.nodes:[]).filter(e=>e&&"object"==typeof e&&"start"!==e.type&&"end"!==e.type&&"human_approval"!==e.type).filter(e=>{let t=e.config,r=t&&"object"==typeof t&&!Array.isArray(t)?t:{};return!String(r.agentId??"").trim()}).map(e=>String(e.id??"")).filter(Boolean);if(t.length)throw Error(`All nodes must be assigned to an agent. Missing agentId on: ${t.join(", ")}`);let r=`${n}.workflow.json`,a=await (0,I.runOpenClaw)(["recipes","workflows","run","--team-id",o,"--workflow-file",r]);if(!a.ok)throw Error(a.stderr||a.stdout||"Failed to enqueue workflow run");let s=JSON.parse(String(a.stdout??"{}")),l=String(s.runId??"").trim(),d=String(s.runLogPath??s.path??"").trim();if(!l&&!d)throw Error("Enqueue succeeded but did not return runId");let u=(()=>{if(d){let e=d.match(/workflow-runs\/([^/]+)\/run\.json$/);if(e?.[1])return e[1];let t=d.match(/workflow-runs\/([^/]+)\.run\.json$/);if(t?.[1])return t[1]}return l})();if(!u)throw Error("Enqueue succeeded but did not return runId");if("run_now"===i){let t=await (0,I.runOpenClaw)(["agents","list","--json"]);if(!t.ok)throw Error(t.stderr||t.stdout||"Failed to list agents");let r=JSON.parse(String(t.stdout??"[]")),a=new Set(r.map(e=>String(e.id??"").trim()).filter(Boolean)),s=(Array.isArray(e.nodes)?e.nodes:[]).filter(e=>e&&"object"==typeof e&&"start"!==e.type&&"end"!==e.type&&"human_approval"!==e.type).map(e=>{let t=e.config,r=t&&"object"==typeof t&&!Array.isArray(t)?t:{};return String(r.agentId??"").trim()}).filter(Boolean),i=Array.from(new Set(s)),l=i.filter(e=>!a.has(e));if(l.length)throw Error(`Unknown agentId(s) in workflow node assignments: ${l.join(", ")}. These must match real OpenClaw agent ids (see openclaw agents list).`);for(let e=0;e<4;e++){let e=await (0,I.runOpenClaw)(["recipes","workflows","runner-once","--team-id",o]);if(!e.ok)throw Error(e.stderr||e.stdout||"Failed to run runner-once");try{let{run:e}=await (0,j.readWorkflowRun)(o,n,u),t=e.status;if(t&&"queued"!=String(t))break}catch{}await new Promise(e=>setTimeout(e,250))}try{let{run:e}=await (0,j.readWorkflowRun)(o,n,u),t=e.status;if("queued"===String(t))throw Error(`Run now enqueued runId=${u}, but runner did not claim it yet (queue may contain older runs). Please retry, or run: openclaw recipes workflows runner-once --team-id ${o}`)}catch(e){if(e instanceof Error&&e.message.startsWith("Run now enqueued"))throw e}for(let e of i){let t=await (0,I.runOpenClaw)(["recipes","workflows","worker-tick","--team-id",o,"--agent-id",e,"--limit","5","--worker-id","kitchen-run-now"]);if(!t.ok)throw Error(t.stderr||t.stdout||`Failed worker-tick for ${e}`)}}return{schema:"clawkitchen.workflow-run.v1",id:u,workflowId:n,teamId:o,startedAt:q(),status:"running",summary:"run_now"===i?"Queued + kicked runner/workers":"Queued for workflow runner",nodes:Array.isArray(e.nodes)?e.nodes.map(e=>({nodeId:String(e.id),status:"pending"})):[],meta:{canonicalRunId:u,...d?{runLogPath:d}:{}}}})();if("enqueue"===i||"run_now"===i){let t=String(e.meta?.canonicalRunId??e.id);return(0,S.jsonOkRest)({ok:!0,runId:t,path:`shared-context/workflow-runs/${t}/run.json`})}return(0,S.jsonOkRest)({...await (0,j.writeWorkflowRun)(o,n,e),runId:e.id})}catch(t){let e=(0,x.errorMessage)(t);if(/^All nodes must be assigned to an agent\./i.test(e)||/^Unknown agentId\(s\)/i.test(e))return k.NextResponse.json({ok:!1,error:e},{status:400});return k.NextResponse.json({ok:!1,error:e},{status:500})}}e.s(["GET",()=>F,"POST",()=>M],80366);var D=e.i(80366);let U=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/teams/workflow-runs/route",pathname:"/api/teams/workflow-runs",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/teams/workflow-runs/route.ts",nextConfigOutput:"standalone",userland:D}),{workAsyncStorage:H,workUnitAsyncStorage:K,serverHooks:L}=U;function G(){return(0,o.patchFetch)({workAsyncStorage:H,workUnitAsyncStorage:K})}async function z(e,t,o){U.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let k="/api/teams/workflow-runs/route";k=k.replace(/\/index$/,"")||"/";let y=await U.prepare(e,t,{srcPage:k,multiZoneDraftMode:!1});if(!y)return t.statusCode=400,t.end("Bad Request"),null==o.waitUntil||o.waitUntil.call(o,Promise.resolve()),null;let{buildId:v,params:A,nextConfig:R,parsedUrl:S,isDraftMode:E,prerenderManifest:x,routerServerContext:b,isOnDemandRevalidate:I,revalidateOnlyGenerated:C,resolvedPathname:j,clientReferenceManifest:_,serverActionsManifest:q}=y,O=(0,i.normalizeAppPath)(k),N=!!(x.dynamicRoutes[O]||x.routes[j]),T=async()=>((null==b?void 0:b.render404)?await b.render404(e,t,S,!1):t.end("This page could not be found"),null);if(N&&!E){let e=!!x.routes[j],t=x.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(R.experimental.adapterPath)return await T();throw new g.NoFallbackError}}let $=null;!N||U.isDev||E||($="/index"===($=j)?"/":$);let P=!0===U.isDev||!N,B=N&&!P;q&&_&&(0,s.setManifestsSingleton)({page:k,clientReferenceManifest:_,serverActionsManifest:q});let W=e.method||"GET",F=(0,a.getTracer)(),M=F.getActiveScopeSpan(),D={params:A,prerenderManifest:x,renderOpts:{experimental:{authInterrupts:!!R.experimental.authInterrupts},cacheComponents:!!R.cacheComponents,supportsDynamicResponse:P,incrementalCache:(0,n.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:R.cacheLife,waitUntil:o.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,o,n)=>U.onRequestError(e,t,o,n,b)},sharedContext:{buildId:v}},H=new l.NodeNextRequest(e),K=new l.NodeNextResponse(t),L=d.NextRequestAdapter.fromNodeNextRequest(H,(0,d.signalFromNodeResponse)(t));try{let s=async e=>U.handle(L,D).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=F.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let o=r.get("next.route");if(o){let t=`${W} ${o}`;e.setAttributes({"next.route":o,"http.route":o,"next.span_name":t}),e.updateName(t)}else e.updateName(`${W} ${k}`)}),i=!!(0,n.getRequestMeta)(e,"minimalMode"),l=async n=>{var a,l;let d=async({previousCacheEntry:r})=>{try{if(!i&&I&&C&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await s(n);e.fetchMetrics=D.renderOpts.fetchMetrics;let l=D.renderOpts.pendingWaitUntil;l&&o.waitUntil&&(o.waitUntil(l),l=void 0);let d=D.renderOpts.collectedTags;if(!N)return await (0,c.sendResponse)(H,K,a,D.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,w.toNodeOutgoingHttpHeaders)(a.headers);d&&(t[m.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==D.renderOpts.collectedRevalidate&&!(D.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&D.renderOpts.collectedRevalidate,o=void 0===D.renderOpts.collectedExpire||D.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:D.renderOpts.collectedExpire;return{value:{kind:h.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:o}}}}catch(t){throw(null==r?void 0:r.isStale)&&await U.onRequestError(e,t,{routerKind:"App Router",routePath:k,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:B,isOnDemandRevalidate:I})},!1,b),t}},u=await U.handleResponse({req:e,nextConfig:R,cacheKey:$,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:x,isRoutePPREnabled:!1,isOnDemandRevalidate:I,revalidateOnlyGenerated:C,responseGenerator:d,waitUntil:o.waitUntil,isMinimalMode:i});if(!N)return null;if((null==u||null==(a=u.value)?void 0:a.kind)!==h.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});i||t.setHeader("x-nextjs-cache",I?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let g=(0,w.fromNodeOutgoingHttpHeaders)(u.value.headers);return i&&N||g.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||g.get("Cache-Control")||g.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,c.sendResponse)(H,K,new Response(u.value.body,{headers:g,status:u.value.status||200})),null};M?await l(M):await F.withPropagatedContext(e.headers,()=>F.trace(u.BaseServerSpan.handleRequest,{spanName:`${W} ${k}`,kind:a.SpanKind.SERVER,attributes:{"http.method":W,"http.target":e.url}},l))}catch(t){if(t instanceof g.NoFallbackError||await U.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:B,isOnDemandRevalidate:I})},!1,b),N)throw t;return await (0,c.sendResponse)(H,K,new Response(null,{status:500})),null}}e.s(["handler",()=>z,"patchFetch",()=>G,"routeModule",()=>U,"serverHooks",()=>L,"workAsyncStorage",()=>H,"workUnitAsyncStorage",()=>K],90736)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=node_modules_next_dist_esm_build_templates_app-route_1fe98a49.js.map
|