@jiggai/kitchen 0.3.25 → 0.3.27
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/build-manifest.json +2 -2
- 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.html +1 -1
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- 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 +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/teams/[teamId]/tickets/assign/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/orchestrator/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.html +2 -2
- package/.next/server/app/channels.rsc +2 -2
- package/.next/server/app/channels.segments/_full.segment.rsc +2 -2
- package/.next/server/app/channels.segments/_head.segment.rsc +1 -1
- package/.next/server/app/channels.segments/_index.segment.rsc +1 -1
- package/.next/server/app/channels.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/channels.segments/channels/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/channels.segments/channels.segment.rsc +1 -1
- package/.next/server/app/goals/new.html +2 -2
- package/.next/server/app/goals/new.rsc +2 -2
- package/.next/server/app/goals/new.segments/_full.segment.rsc +2 -2
- package/.next/server/app/goals/new.segments/_head.segment.rsc +1 -1
- package/.next/server/app/goals/new.segments/_index.segment.rsc +1 -1
- package/.next/server/app/goals/new.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/goals/new.segments/goals/new/__PAGE__.segment.rsc +1 -1
- 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.html +1 -1
- package/.next/server/app/goals.rsc +2 -2
- package/.next/server/app/goals.segments/_full.segment.rsc +2 -2
- package/.next/server/app/goals.segments/_head.segment.rsc +1 -1
- package/.next/server/app/goals.segments/_index.segment.rsc +1 -1
- package/.next/server/app/goals.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/goals.segments/goals/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/goals.segments/goals.segment.rsc +1 -1
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +2 -2
- package/.next/server/app/settings.segments/_full.segment.rsc +2 -2
- package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
- package/.next/server/app/teams/[teamId]/tickets/[ticket]/page.js.nft.json +1 -1
- package/.next/server/app/teams/[teamId]/tickets/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/tickets/[ticket]/page.js.nft.json +1 -1
- package/.next/server/app/tickets/page.js.nft.json +1 -1
- 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/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/b1a17_app_teams_[teamId]_workflows_[workflowId]_workflows-editor-client_tsx_5e714aa2._.js +1 -1
- package/.next/server/chunks/ssr/b1a17_app_teams_[teamId]_workflows_[workflowId]_workflows-editor-client_tsx_5e714aa2._.js.map +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +2 -2
- package/.next/static/chunks/474635d658546626.js +1 -0
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
- package/.next/static/chunks/d7f5083b972391f7.js +0 -1
- /package/.next/static/{SE_yrG7TPXkjcNO3xyCe- → pEGZW7H6QnTMgt-sDp-C7}/_buildManifest.js +0 -0
- /package/.next/static/{SE_yrG7TPXkjcNO3xyCe- → pEGZW7H6QnTMgt-sDp-C7}/_clientMiddlewareManifest.json +0 -0
- /package/.next/static/{SE_yrG7TPXkjcNO3xyCe- → pEGZW7H6QnTMgt-sDp-C7}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":1,"files":["../../../../CODE_QUALITY_REVIEW.md","../../../../README.md","../../../../clawkitchen-clawhub-0.3.24.tgz","../../../../docs/AGENTS.md","../../../../docs/CHANNELS.md","../../../../docs/CRON_JOBS.md","../../../../docs/EXAMPLES.md","../../../../docs/GOALS.md","../../../../docs/INSTALL_AND_ACCESS.md","../../../../docs/ORCHESTRATOR.md","../../../../docs/PRODUCT_TOUR.md","../../../../docs/QA_AUTH.md","../../../../docs/README.md","../../../../docs/RECIPES_AND_SCAFFOLDING.md","../../../../docs/RUNS.md","../../../../docs/SETTINGS.md","../../../../docs/TEAMS.md","../../../../docs/TICKETS.md","../../../../docs/TROUBLESHOOTING.md","../../../../docs/WORKFLOWS.md","../../../../eslint.config.mjs","../../../../jiggai-kitchen-0.3.24.tgz","../../../../marketplace/registry.json","../../../../next.config.ts","../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../node_modules/next/dist/lib/constants.js","../../../../node_modules/next/dist/lib/interop-default.js","../../../../node_modules/next/dist/lib/is-error.js","../../../../node_modules/next/dist/lib/semver-noop.js","../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../node_modules/next/dist/server/response-cache/types.js","../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../node_modules/next/package.json","../../../../openclaw.plugin.json","../../../../openclaw/index.ts","../../../../package-lock.json","../../../../package.json","../../../../postcss.config.mjs","../../../../public/android-chrome-192x192.png","../../../../public/android-chrome-512x512.png","../../../../public/apple-touch-icon.png","../../../../public/chef.jpg","../../../../public/favicon-16x16.png","../../../../public/favicon-32x32.png","../../../../public/favicon.ico","../../../../public/file.svg","../../../../public/globe.svg","../../../../public/images/clawkitchen/home.png","../../../../public/images/clawkitchen/recipes.png","../../../../public/images/clawkitchen/runs.png","../../../../public/images/clawkitchen/team.png","../../../../public/images/clawkitchen/tickets.png","../../../../public/images/clawkitchen/workflows.png","../../../../public/next.svg","../../../../public/vercel.svg","../../../../public/window.svg","../../../../report/jscpd/html/index.html","../../../../report/jscpd/html/js/prism.js","../../../../report/jscpd/html/jscpd-report.json","../../../../report/jscpd/html/styles/prism.css","../../../../report/jscpd/html/styles/tailwind.css","../../../../scripts/check-openclaw-plugin-version.mjs","../../../../scripts/ci/require-tests-for-lib-changes.sh","../../../../scripts/copy-standalone-static.mjs","../../../../scripts/goals-smoke.mjs","../../../../scripts/refactor-report.mjs","../../../../scripts/sync-openclaw-plugin-version.mjs","../../../../src/app/HomeClient.tsx","../../../../src/app/agents/[agentId]/agent-editor-tabs.tsx","../../../../src/app/agents/[agentId]/agent-editor.tsx","../../../../src/app/agents/[agentId]/page.tsx","../../../../src/app/api/agents/[id]/route.ts","../../../../src/app/api/agents/add/route.ts","../../../../src/app/api/agents/file/route.ts","../../../../src/app/api/agents/files/route.ts","../../../../src/app/api/agents/identity/route.ts","../../../../src/app/api/agents/route.ts","../../../../src/app/api/agents/skills/install/route.ts","../../../../src/app/api/agents/skills/route.ts","../../../../src/app/api/agents/update/route.ts","../../../../src/app/api/channels/bindings/route.ts","../../../../src/app/api/cron/delete/route.ts","../../../../src/app/api/cron/helpers.ts","../../../../src/app/api/cron/job/route.ts","../../../../src/app/api/cron/jobs/route.ts","../../../../src/app/api/cron/recipe-installed/route.ts","../../../../src/app/api/cron/worker/route.ts","../../../../src/app/api/gateway/restart/route.ts","../../../../src/app/api/goals/[id]/promote/route.ts","../../../../src/app/api/goals/[id]/route.ts","../../../../src/app/api/goals/route.ts","../../../../src/app/api/ids/check/route.ts","../../../../src/app/api/marketplace/recipes/[slug]/route.ts","../../../../src/app/api/marketplace/recipes/route.ts","../../../../src/app/api/recipes/[id]/route.ts","../../../../src/app/api/recipes/clone/route.ts","../../../../src/app/api/recipes/custom-team/route.ts","../../../../src/app/api/recipes/delete/helpers.ts","../../../../src/app/api/recipes/delete/route.ts","../../../../src/app/api/recipes/local-agent-catalog/route.ts","../../../../src/app/api/recipes/route.ts","../../../../src/app/api/recipes/team-agents/helpers.ts","../../../../src/app/api/recipes/team-agents/route.ts","../../../../src/app/api/scaffold/helpers.ts","../../../../src/app/api/scaffold/route.ts","../../../../src/app/api/settings/cron-installation/route.ts","../../../../src/app/api/skills/available/route.ts","../../../../src/app/api/swarms/start/route.ts","../../../../src/app/api/swarms/status/route.ts","../../../../src/app/api/teams/[teamId]/tickets/assign/route.ts","../../../../src/app/api/teams/[teamId]/tickets/assignees/route.ts","../../../../src/app/api/teams/[teamId]/tickets/comment/route.ts","../../../../src/app/api/teams/[teamId]/tickets/delete/route.ts","../../../../src/app/api/teams/[teamId]/tickets/move-to-goals/route.ts","../../../../src/app/api/teams/[teamId]/tickets/move/route.test.ts","../../../../src/app/api/teams/[teamId]/tickets/move/route.ts","../../../../src/app/api/teams/file/route.ts","../../../../src/app/api/teams/files/route.ts","../../../../src/app/api/teams/memory/route.ts","../../../../src/app/api/teams/meta/route.ts","../../../../src/app/api/teams/orchestrator/install/route.ts","../../../../src/app/api/teams/orchestrator/route.ts","../../../../src/app/api/teams/remove-team/route.ts","../../../../src/app/api/teams/skills/install/route.ts","../../../../src/app/api/teams/skills/route.ts","../../../../src/app/api/teams/workflow-runs/route.test.ts","../../../../src/app/api/teams/workflow-runs/route.ts","../../../../src/app/api/teams/workflow-templates/route.ts","../../../../src/app/api/teams/workflows/route.ts","../../../../src/app/api/tickets/assign/route.ts","../../../../src/app/api/tickets/assignees/route.ts","../../../../src/app/api/tickets/move/route.ts","../../../../src/app/channels/channels-client.tsx","../../../../src/app/channels/page.tsx","../../../../src/app/cron-jobs/cron-jobs-client.tsx","../../../../src/app/cron-jobs/page.tsx","../../../../src/app/favicon.ico","../../../../src/app/global-error.tsx","../../../../src/app/globals.css","../../../../src/app/goals/[id]/goal-editor.tsx","../../../../src/app/goals/[id]/page.tsx","../../../../src/app/goals/goals-client.tsx","../../../../src/app/goals/new/page.tsx","../../../../src/app/goals/page.tsx","../../../../src/app/layout.tsx","../../../../src/app/manifest.ts","../../../../src/app/not-found.tsx","../../../../src/app/page.tsx","../../../../src/app/recipes/CreateAgentModal.tsx","../../../../src/app/recipes/CreateCustomTeamModal.tsx","../../../../src/app/recipes/CreateModalShell.tsx","../../../../src/app/recipes/CreateTeamModal.tsx","../../../../src/app/recipes/[id]/RecipeEditor/RecipeEditorCreateModal.tsx","../../../../src/app/recipes/[id]/RecipeEditor/RecipeEditorPanel.tsx","../../../../src/app/recipes/[id]/RecipeEditor/index.tsx","../../../../src/app/recipes/[id]/RecipeEditor/recipe-editor-utils.ts","../../../../src/app/recipes/[id]/RecipeEditor/types.ts","../../../../src/app/recipes/[id]/page.tsx","../../../../src/app/recipes/page.tsx","../../../../src/app/recipes/recipes-client.tsx","../../../../src/app/runs/AllRunsClient.tsx","../../../../src/app/runs/page.tsx","../../../../src/app/settings/page.tsx","../../../../src/app/settings/settings-client.tsx","../../../../src/app/teams/[teamId]/CloneTeamModal.tsx","../../../../src/app/teams/[teamId]/OrchestratorPanel.tsx","../../../../src/app/teams/[teamId]/OrchestratorSetupModal.tsx","../../../../src/app/teams/[teamId]/PublishChangesModal.tsx","../../../../src/app/teams/[teamId]/page.tsx","../../../../src/app/teams/[teamId]/runs/[workflowId]/[runId]/page.tsx","../../../../src/app/teams/[teamId]/runs/[workflowId]/[runId]/run-detail-client.tsx","../../../../src/app/teams/[teamId]/runs/page.tsx","../../../../src/app/teams/[teamId]/runs/runs-client.tsx","../../../../src/app/teams/[teamId]/team-editor/TeamAgentsTab.tsx","../../../../src/app/teams/[teamId]/team-editor/TeamCronTab.tsx","../../../../src/app/teams/[teamId]/team-editor/TeamFilesTab.tsx","../../../../src/app/teams/[teamId]/team-editor/TeamMemoryTab.tsx","../../../../src/app/teams/[teamId]/team-editor/TeamRecipeTab.tsx","../../../../src/app/teams/[teamId]/team-editor/TeamSkillsTab.tsx","../../../../src/app/teams/[teamId]/team-editor/index.tsx","../../../../src/app/teams/[teamId]/team-editor/team-editor-data.ts","../../../../src/app/teams/[teamId]/team-editor/team-editor-utils.ts","../../../../src/app/teams/[teamId]/team-editor/types.ts","../../../../src/app/teams/[teamId]/tickets/[ticket]/page.tsx","../../../../src/app/teams/[teamId]/tickets/page.tsx","../../../../src/app/teams/[teamId]/workflows/[workflowId]/WorkflowCanvas.tsx","../../../../src/app/teams/[teamId]/workflows/[workflowId]/page.tsx","../../../../src/app/teams/[teamId]/workflows/[workflowId]/workflows-editor-client.tsx","../../../../src/app/teams/[teamId]/workflows/page.tsx","../../../../src/app/teams/[teamId]/workflows/workflows-client.tsx","../../../../src/app/tickets/TicketDetailClient.tsx","../../../../src/app/tickets/TicketsBoardClient.tsx","../../../../src/app/tickets/[ticket]/TicketAssignControl.tsx","../../../../src/app/tickets/[ticket]/page.tsx","../../../../src/app/tickets/page.tsx","../../../../src/components/AppShell.tsx","../../../../src/components/ConfirmationModal.tsx","../../../../src/components/DeleteEntityModal.tsx","../../../../src/components/ErrorBoundary.tsx","../../../../src/components/FileListWithOptionalToggle.tsx","../../../../src/components/GoalFormFields.tsx","../../../../src/components/ScaffoldOverlay.tsx","../../../../src/components/ThemeToggle.tsx","../../../../src/components/ToastProvider.tsx","../../../../src/components/delete-modals.tsx","../../../../src/components/icons.tsx","../../../../src/lib/agent-workspace.ts","../../../../src/lib/agents.ts","../../../../src/lib/api-route-helpers.ts","../../../../src/lib/app-info.ts","../../../../src/lib/cron.ts","../../../../src/lib/editor-utils.ts","../../../../src/lib/errors.ts","../../../../src/lib/exec.ts","../../../../src/lib/fetch-json.ts","../../../../src/lib/gateway.ts","../../../../src/lib/goal-promote.ts","../../../../src/lib/goals-client.ts","../../../../src/lib/goals.ts","../../../../src/lib/json.ts","../../../../src/lib/kitchen-api.ts","../../../../src/lib/marketplace.ts","../../../../src/lib/openclaw-config.ts","../../../../src/lib/openclaw.ts","../../../../src/lib/paths.ts","../../../../src/lib/plugins.ts","../../../../src/lib/poll.ts","../../../../src/lib/recipe-clone.ts","../../../../src/lib/recipe-team-agents.ts","../../../../src/lib/recipes.ts","../../../../src/lib/scaffold-client.ts","../../../../src/lib/scaffold.ts","../../../../src/lib/selected-team.ts","../../../../src/lib/slugify.ts","../../../../src/lib/swarms.ts","../../../../src/lib/teams.ts","../../../../src/lib/ticket-comments.ts","../../../../src/lib/tickets.ts","../../../../src/lib/type-guards.ts","../../../../src/lib/use-slugified-id.ts","../../../../src/lib/workflows/README.md","../../../../src/lib/workflows/api-handlers.ts","../../../../src/lib/workflows/readdir.ts","../../../../src/lib/workflows/runs-storage.ts","../../../../src/lib/workflows/runs-types.ts","../../../../src/lib/workflows/storage.ts","../../../../src/lib/workflows/templates/index.ts","../../../../src/lib/workflows/templates/marketing-cadence-v1.ts","../../../../src/lib/workflows/types.ts","../../../../src/lib/workflows/validate.ts","../../../../src/proxy.ts","../../../../tsconfig.json","../../../../tsconfig.tsbuildinfo","../../../../vitest.config.ts","../../chunks/ssr/[root-of-the-server]__0d4cb2ba._.js","../../chunks/ssr/[root-of-the-server]__17b046ea._.js","../../chunks/ssr/[root-of-the-server]__2db9d262._.js","../../chunks/ssr/[root-of-the-server]__3b880807._.js","../../chunks/ssr/[root-of-the-server]__471bc2e7._.js","../../chunks/ssr/[root-of-the-server]__4fd003c7._.js","../../chunks/ssr/[root-of-the-server]__9e1ab064._.js","../../chunks/ssr/[turbopack]_runtime.js","../../chunks/ssr/_0efddc1b._.js","../../chunks/ssr/_8062e992._.js","../../chunks/ssr/_next-internal_server_app_tickets_page_actions_6479fa6d.js","../../chunks/ssr/node_modules_ea845e5f._.js","../../chunks/ssr/node_modules_next_920e7746._.js","../../chunks/ssr/node_modules_next_dist_22f8d72f._.js","../../chunks/ssr/node_modules_next_dist_25a30daf._.js","../../chunks/ssr/node_modules_next_dist_client_components_2fffaa3a._.js","../../chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_15817684.js","../../chunks/ssr/node_modules_next_dist_compiled_bc6b8ddf._.js","../../chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js","../../chunks/ssr/src_app_5b2047f8._.js","../../chunks/ssr/src_app_global-error_tsx_aa661ba4._.js","../../chunks/ssr/src_app_not-found_tsx_3f23d179._.js","../../chunks/ssr/src_app_tickets_TicketsBoardClient_tsx_5e156ef3._.js","./page/react-loadable-manifest.json","./page_client-reference-manifest.js"]}
|
|
1
|
+
{"version":1,"files":["../../../../CODE_QUALITY_REVIEW.md","../../../../README.md","../../../../docs/AGENTS.md","../../../../docs/CHANNELS.md","../../../../docs/CRON_JOBS.md","../../../../docs/EXAMPLES.md","../../../../docs/GOALS.md","../../../../docs/INSTALL_AND_ACCESS.md","../../../../docs/ORCHESTRATOR.md","../../../../docs/PRODUCT_TOUR.md","../../../../docs/QA_AUTH.md","../../../../docs/README.md","../../../../docs/RECIPES_AND_SCAFFOLDING.md","../../../../docs/RUNS.md","../../../../docs/SETTINGS.md","../../../../docs/TEAMS.md","../../../../docs/TICKETS.md","../../../../docs/TROUBLESHOOTING.md","../../../../docs/WORKFLOWS.md","../../../../eslint.config.mjs","../../../../marketplace/registry.json","../../../../next.config.ts","../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../node_modules/next/dist/lib/constants.js","../../../../node_modules/next/dist/lib/interop-default.js","../../../../node_modules/next/dist/lib/is-error.js","../../../../node_modules/next/dist/lib/semver-noop.js","../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../node_modules/next/dist/server/response-cache/types.js","../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../node_modules/next/package.json","../../../../openclaw.plugin.json","../../../../openclaw/index.ts","../../../../package-lock.json","../../../../package.json","../../../../postcss.config.mjs","../../../../public/android-chrome-192x192.png","../../../../public/android-chrome-512x512.png","../../../../public/apple-touch-icon.png","../../../../public/chef.jpg","../../../../public/favicon-16x16.png","../../../../public/favicon-32x32.png","../../../../public/favicon.ico","../../../../public/file.svg","../../../../public/globe.svg","../../../../public/images/clawkitchen/home.png","../../../../public/images/clawkitchen/recipes.png","../../../../public/images/clawkitchen/runs.png","../../../../public/images/clawkitchen/team.png","../../../../public/images/clawkitchen/tickets.png","../../../../public/images/clawkitchen/workflows.png","../../../../public/next.svg","../../../../public/vercel.svg","../../../../public/window.svg","../../../../report/jscpd/html/index.html","../../../../report/jscpd/html/js/prism.js","../../../../report/jscpd/html/jscpd-report.json","../../../../report/jscpd/html/styles/prism.css","../../../../report/jscpd/html/styles/tailwind.css","../../../../scripts/check-openclaw-plugin-version.mjs","../../../../scripts/ci/require-tests-for-lib-changes.sh","../../../../scripts/copy-standalone-static.mjs","../../../../scripts/goals-smoke.mjs","../../../../scripts/refactor-report.mjs","../../../../scripts/sync-openclaw-plugin-version.mjs","../../../../src/app/HomeClient.tsx","../../../../src/app/agents/[agentId]/agent-editor-tabs.tsx","../../../../src/app/agents/[agentId]/agent-editor.tsx","../../../../src/app/agents/[agentId]/page.tsx","../../../../src/app/api/agents/[id]/route.ts","../../../../src/app/api/agents/add/route.ts","../../../../src/app/api/agents/file/route.ts","../../../../src/app/api/agents/files/route.ts","../../../../src/app/api/agents/identity/route.ts","../../../../src/app/api/agents/route.ts","../../../../src/app/api/agents/skills/install/route.ts","../../../../src/app/api/agents/skills/route.ts","../../../../src/app/api/agents/update/route.ts","../../../../src/app/api/channels/bindings/route.ts","../../../../src/app/api/cron/delete/route.ts","../../../../src/app/api/cron/helpers.ts","../../../../src/app/api/cron/job/route.ts","../../../../src/app/api/cron/jobs/route.ts","../../../../src/app/api/cron/recipe-installed/route.ts","../../../../src/app/api/cron/worker/route.ts","../../../../src/app/api/gateway/restart/route.ts","../../../../src/app/api/goals/[id]/promote/route.ts","../../../../src/app/api/goals/[id]/route.ts","../../../../src/app/api/goals/route.ts","../../../../src/app/api/ids/check/route.ts","../../../../src/app/api/marketplace/recipes/[slug]/route.ts","../../../../src/app/api/marketplace/recipes/route.ts","../../../../src/app/api/recipes/[id]/route.ts","../../../../src/app/api/recipes/clone/route.ts","../../../../src/app/api/recipes/custom-team/route.ts","../../../../src/app/api/recipes/delete/helpers.ts","../../../../src/app/api/recipes/delete/route.ts","../../../../src/app/api/recipes/local-agent-catalog/route.ts","../../../../src/app/api/recipes/route.ts","../../../../src/app/api/recipes/team-agents/helpers.ts","../../../../src/app/api/recipes/team-agents/route.ts","../../../../src/app/api/scaffold/helpers.ts","../../../../src/app/api/scaffold/route.ts","../../../../src/app/api/settings/cron-installation/route.ts","../../../../src/app/api/skills/available/route.ts","../../../../src/app/api/swarms/start/route.ts","../../../../src/app/api/swarms/status/route.ts","../../../../src/app/api/teams/[teamId]/tickets/assign/route.ts","../../../../src/app/api/teams/[teamId]/tickets/assignees/route.ts","../../../../src/app/api/teams/[teamId]/tickets/comment/route.ts","../../../../src/app/api/teams/[teamId]/tickets/delete/route.ts","../../../../src/app/api/teams/[teamId]/tickets/move-to-goals/route.ts","../../../../src/app/api/teams/[teamId]/tickets/move/route.test.ts","../../../../src/app/api/teams/[teamId]/tickets/move/route.ts","../../../../src/app/api/teams/file/route.ts","../../../../src/app/api/teams/files/route.ts","../../../../src/app/api/teams/memory/route.ts","../../../../src/app/api/teams/meta/route.ts","../../../../src/app/api/teams/orchestrator/install/route.ts","../../../../src/app/api/teams/orchestrator/route.ts","../../../../src/app/api/teams/remove-team/route.ts","../../../../src/app/api/teams/skills/install/route.ts","../../../../src/app/api/teams/skills/route.ts","../../../../src/app/api/teams/workflow-runs/route.test.ts","../../../../src/app/api/teams/workflow-runs/route.ts","../../../../src/app/api/teams/workflow-templates/route.ts","../../../../src/app/api/teams/workflows/route.ts","../../../../src/app/api/tickets/assign/route.ts","../../../../src/app/api/tickets/assignees/route.ts","../../../../src/app/api/tickets/move/route.ts","../../../../src/app/channels/channels-client.tsx","../../../../src/app/channels/page.tsx","../../../../src/app/cron-jobs/cron-jobs-client.tsx","../../../../src/app/cron-jobs/page.tsx","../../../../src/app/favicon.ico","../../../../src/app/global-error.tsx","../../../../src/app/globals.css","../../../../src/app/goals/[id]/goal-editor.tsx","../../../../src/app/goals/[id]/page.tsx","../../../../src/app/goals/goals-client.tsx","../../../../src/app/goals/new/page.tsx","../../../../src/app/goals/page.tsx","../../../../src/app/layout.tsx","../../../../src/app/manifest.ts","../../../../src/app/not-found.tsx","../../../../src/app/page.tsx","../../../../src/app/recipes/CreateAgentModal.tsx","../../../../src/app/recipes/CreateCustomTeamModal.tsx","../../../../src/app/recipes/CreateModalShell.tsx","../../../../src/app/recipes/CreateTeamModal.tsx","../../../../src/app/recipes/[id]/RecipeEditor/RecipeEditorCreateModal.tsx","../../../../src/app/recipes/[id]/RecipeEditor/RecipeEditorPanel.tsx","../../../../src/app/recipes/[id]/RecipeEditor/index.tsx","../../../../src/app/recipes/[id]/RecipeEditor/recipe-editor-utils.ts","../../../../src/app/recipes/[id]/RecipeEditor/types.ts","../../../../src/app/recipes/[id]/page.tsx","../../../../src/app/recipes/page.tsx","../../../../src/app/recipes/recipes-client.tsx","../../../../src/app/runs/AllRunsClient.tsx","../../../../src/app/runs/page.tsx","../../../../src/app/settings/page.tsx","../../../../src/app/settings/settings-client.tsx","../../../../src/app/teams/[teamId]/CloneTeamModal.tsx","../../../../src/app/teams/[teamId]/OrchestratorPanel.tsx","../../../../src/app/teams/[teamId]/OrchestratorSetupModal.tsx","../../../../src/app/teams/[teamId]/PublishChangesModal.tsx","../../../../src/app/teams/[teamId]/page.tsx","../../../../src/app/teams/[teamId]/runs/[workflowId]/[runId]/page.tsx","../../../../src/app/teams/[teamId]/runs/[workflowId]/[runId]/run-detail-client.tsx","../../../../src/app/teams/[teamId]/runs/page.tsx","../../../../src/app/teams/[teamId]/runs/runs-client.tsx","../../../../src/app/teams/[teamId]/team-editor/TeamAgentsTab.tsx","../../../../src/app/teams/[teamId]/team-editor/TeamCronTab.tsx","../../../../src/app/teams/[teamId]/team-editor/TeamFilesTab.tsx","../../../../src/app/teams/[teamId]/team-editor/TeamMemoryTab.tsx","../../../../src/app/teams/[teamId]/team-editor/TeamRecipeTab.tsx","../../../../src/app/teams/[teamId]/team-editor/TeamSkillsTab.tsx","../../../../src/app/teams/[teamId]/team-editor/index.tsx","../../../../src/app/teams/[teamId]/team-editor/team-editor-data.ts","../../../../src/app/teams/[teamId]/team-editor/team-editor-utils.ts","../../../../src/app/teams/[teamId]/team-editor/types.ts","../../../../src/app/teams/[teamId]/tickets/[ticket]/page.tsx","../../../../src/app/teams/[teamId]/tickets/page.tsx","../../../../src/app/teams/[teamId]/workflows/[workflowId]/WorkflowCanvas.tsx","../../../../src/app/teams/[teamId]/workflows/[workflowId]/page.tsx","../../../../src/app/teams/[teamId]/workflows/[workflowId]/workflows-editor-client.tsx","../../../../src/app/teams/[teamId]/workflows/page.tsx","../../../../src/app/teams/[teamId]/workflows/workflows-client.tsx","../../../../src/app/tickets/TicketDetailClient.tsx","../../../../src/app/tickets/TicketsBoardClient.tsx","../../../../src/app/tickets/[ticket]/TicketAssignControl.tsx","../../../../src/app/tickets/[ticket]/page.tsx","../../../../src/app/tickets/page.tsx","../../../../src/components/AppShell.tsx","../../../../src/components/ConfirmationModal.tsx","../../../../src/components/DeleteEntityModal.tsx","../../../../src/components/ErrorBoundary.tsx","../../../../src/components/FileListWithOptionalToggle.tsx","../../../../src/components/GoalFormFields.tsx","../../../../src/components/ScaffoldOverlay.tsx","../../../../src/components/ThemeToggle.tsx","../../../../src/components/ToastProvider.tsx","../../../../src/components/delete-modals.tsx","../../../../src/components/icons.tsx","../../../../src/lib/agent-workspace.ts","../../../../src/lib/agents.ts","../../../../src/lib/api-route-helpers.ts","../../../../src/lib/app-info.ts","../../../../src/lib/cron.ts","../../../../src/lib/editor-utils.ts","../../../../src/lib/errors.ts","../../../../src/lib/exec.ts","../../../../src/lib/fetch-json.ts","../../../../src/lib/gateway.ts","../../../../src/lib/goal-promote.ts","../../../../src/lib/goals-client.ts","../../../../src/lib/goals.ts","../../../../src/lib/json.ts","../../../../src/lib/kitchen-api.ts","../../../../src/lib/marketplace.ts","../../../../src/lib/openclaw-config.ts","../../../../src/lib/openclaw.ts","../../../../src/lib/paths.ts","../../../../src/lib/plugins.ts","../../../../src/lib/poll.ts","../../../../src/lib/recipe-clone.ts","../../../../src/lib/recipe-team-agents.ts","../../../../src/lib/recipes.ts","../../../../src/lib/scaffold-client.ts","../../../../src/lib/scaffold.ts","../../../../src/lib/selected-team.ts","../../../../src/lib/slugify.ts","../../../../src/lib/swarms.ts","../../../../src/lib/teams.ts","../../../../src/lib/ticket-comments.ts","../../../../src/lib/tickets.ts","../../../../src/lib/type-guards.ts","../../../../src/lib/use-slugified-id.ts","../../../../src/lib/workflows/README.md","../../../../src/lib/workflows/api-handlers.ts","../../../../src/lib/workflows/readdir.ts","../../../../src/lib/workflows/runs-storage.ts","../../../../src/lib/workflows/runs-types.ts","../../../../src/lib/workflows/storage.ts","../../../../src/lib/workflows/templates/index.ts","../../../../src/lib/workflows/templates/marketing-cadence-v1.ts","../../../../src/lib/workflows/types.ts","../../../../src/lib/workflows/validate.ts","../../../../src/proxy.ts","../../../../tsconfig.json","../../../../tsconfig.tsbuildinfo","../../../../vitest.config.ts","../../chunks/ssr/[root-of-the-server]__0d4cb2ba._.js","../../chunks/ssr/[root-of-the-server]__17b046ea._.js","../../chunks/ssr/[root-of-the-server]__2db9d262._.js","../../chunks/ssr/[root-of-the-server]__3b880807._.js","../../chunks/ssr/[root-of-the-server]__471bc2e7._.js","../../chunks/ssr/[root-of-the-server]__4fd003c7._.js","../../chunks/ssr/[root-of-the-server]__9e1ab064._.js","../../chunks/ssr/[turbopack]_runtime.js","../../chunks/ssr/_0efddc1b._.js","../../chunks/ssr/_8062e992._.js","../../chunks/ssr/_next-internal_server_app_tickets_page_actions_6479fa6d.js","../../chunks/ssr/node_modules_ea845e5f._.js","../../chunks/ssr/node_modules_next_920e7746._.js","../../chunks/ssr/node_modules_next_dist_22f8d72f._.js","../../chunks/ssr/node_modules_next_dist_25a30daf._.js","../../chunks/ssr/node_modules_next_dist_client_components_2fffaa3a._.js","../../chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_15817684.js","../../chunks/ssr/node_modules_next_dist_compiled_bc6b8ddf._.js","../../chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js","../../chunks/ssr/src_app_5b2047f8._.js","../../chunks/ssr/src_app_global-error_tsx_aa661ba4._.js","../../chunks/ssr/src_app_not-found_tsx_3f23d179._.js","../../chunks/ssr/src_app_tickets_TicketsBoardClient_tsx_5e156ef3._.js","./page/react-loadable-manifest.json","./page_client-reference-manifest.js"]}
|
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),i=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),w=e.i(26937),m=e.i(10372),g=e.i(93695);e.i(52474);var h=e.i(220),y=e.i(89171),k=e.i(66680),v=e.i(12714),A=e.i(50227),S=e.i(74533),I=e.i(85067),b=e.i(41674),E=e.i(40317),j=e.i(76509),R=e.i(5003),x=e.i(7367),C=e.i(63715),O=e.i(56995);let N=A.default.join("shared-context","workflow-runs");function _(e){let t=String(e??"").trim();if(!t)throw Error("run id is required");if(!/^[A-Za-z0-9][A-Za-z0-9-]{0,120}$/.test(t))throw Error("Invalid run id. Use letters, numbers, and dashes.");return t}async function q(e,t){(0,O.assertSafeWorkflowId)(t);let r=await (0,x.getTeamWorkspaceDir)(e);return A.default.join(r,N)}function T(e){return`${e}.run.json`}async function $(e,t){let r=(0,O.assertSafeWorkflowId)(t),o=await q(e,r),n=[];try{for(let t of(await v.default.readdir(o,{withFileTypes:!0})).filter(e=>e.isDirectory()).map(e=>e.name).sort()){let a=A.default.join(o,t,"run.json");try{let o=await v.default.readFile(a,"utf8"),i=JSON.parse(o);B(e,r,i,t).workflowId===r&&n.push(t)}catch{}}}catch{}try{let{files:t}=await (0,C.readdirFiles)(o,".run.json",!0);for(let a of t){let t=a.replace(/\.run\.json$/i,"");try{let i=await v.default.readFile(A.default.join(o,a),"utf8"),s=JSON.parse(i);B(e,r,s,t).workflowId===r&&n.push(t)}catch{}}}catch{}try{let e=A.default.join(o,r),{files:t}=await (0,C.readdirFiles)(e,".run.json",!0);for(let e of t)n.push(e.replace(/\.run\.json$/i,""))}catch{}return{ok:!0,dir:o,runIds:Array.from(new Set(n)).sort().reverse()}}async function P(e,t,r){let o=(0,O.assertSafeWorkflowId)(t),n=_(r),a=await q(e,o),i=A.default.join(a,n,"run.json");try{let t=await v.default.readFile(i,"utf8"),r=JSON.parse(t),s=B(e,o,r,n);if(Array.isArray(s.nodes)&&s.nodes.length){let e=A.default.join(a,n,"node-outputs"),t=[];try{t=await v.default.readdir(e)}catch{t=[]}let r=new Map;for(let o of t.slice().sort()){let t=o.match(/-([^/]+)\.json$/);if(!t)continue;let n=t[1];if(!n)continue;let a=r.get(n)??[];a.push(A.default.join(e,o)),r.set(n,a)}await Promise.all(s.nodes.map(async e=>{if(!e||"object"!=typeof e||void 0!==e.output)return;let t=r.get(e.nodeId);if(!t||!t.length)return;let o=t.shift();if(o)try{let t=await v.default.readFile(o,"utf8");e.output=JSON.parse(t)}catch{}}))}return{ok:!0,path:i,run:s}}catch(e){if(!(e&&"object"==typeof e&&"ENOENT"===e.code))throw e}let s=A.default.join(a,T(n));try{let t=await v.default.readFile(s,"utf8"),r=JSON.parse(t);return{ok:!0,path:s,run:B(e,o,r,n)}}catch(t){if(t&&"object"==typeof t&&"ENOENT"===t.code){let t=A.default.join(a,o,T(n)),r=JSON.parse(await v.default.readFile(t,"utf8"));return{ok:!0,path:t,run:B(e,o,r,n)}}throw t}}async function F(e,t,r){let o=(0,O.assertSafeWorkflowId)(t),n=_(r.id),a=await q(e,o);await v.default.mkdir(a,{recursive:!0});let i=A.default.join(a,T(n)),s=i;try{let e=await v.default.readFile(i,"utf8"),t=JSON.parse(e);if(t&&"object"==typeof t&&!Array.isArray(t)&&"runId"in t&&!("schema"in t)){let e=A.default.join(a,o);await v.default.mkdir(e,{recursive:!0}),s=A.default.join(e,T(n))}}catch{}let l={...r,schema:"clawkitchen.workflow-run.v1",id:n,workflowId:o,teamId:e};return await v.default.writeFile(s,JSON.stringify(l,null,2)+"\n","utf8"),{ok:!0,path:s}}function B(e,t,r,o){if(r&&"object"==typeof r&&"clawkitchen.workflow-run.v1"===r.schema)return r;if(r&&"object"==typeof r&&"runId"in r&&"workflow"in r){let n=r.workflow&&"object"==typeof r.workflow?r.workflow:{},a="string"==typeof n.file?n.file:"",i=a?A.default.basename(a).replace(/\.workflow\.json$/i,""):"",s="string"==typeof n.id&&n.id?n.id:i||t,l=String(r.status??""),d="awaiting_approval"===l?"waiting_for_approval":"completed"===l?"success":"rejected"===l||"error"===l?"error":"canceled"===l?"canceled":"running",u=Array.isArray(r.nodeResults)?r.nodeResults.map(e=>{if(!e||"object"!=typeof e)return null;let t="string"==typeof e.nodeId?e.nodeId:"";if(!t)return null;let r=String(e.status??"pending"),o="awaiting_approval"===r?"waiting":"completed"===r?"success":"error"===r?"error":r,n=["pending","running","waiting","success","error","skipped"].includes(o)?o:"pending",a="string"==typeof e.error?e.error:e.error&&"object"==typeof e.error&&"message"in e.error?{message:String(e.error.message??"")}:void 0,i="string"==typeof e.startedAt?e.startedAt:void 0,s="string"==typeof e.endedAt?e.endedAt:void 0;return{nodeId:t,status:n,...i?{startedAt:i}:{},...s?{endedAt:s}:{},...void 0!==e.output?{output:e.output}:{},...void 0!==a?{error:a}:{}}}).filter(e=>null!==e):void 0;return{schema:"clawkitchen.workflow-run.v1",id:"string"==typeof r.runId?r.runId:o,workflowId:s,teamId:e,startedAt:"string"==typeof r.createdAt?r.createdAt:new Date().toISOString(),endedAt:("success"===d||"error"===d||"canceled"===d)&&"string"==typeof r.updatedAt?r.updatedAt:void 0,status:d,summary:"Executed by workflow runner",nodes:u}}return{schema:"clawkitchen.workflow-run.v1",id:o,workflowId:t,teamId:e,startedAt:new Date().toISOString(),status:"error",summary:"Malformed run file"}}function D(){return new Date().toISOString()}async function M(e,t,r){let o=(0,x.assertSafeRelativeFileName)(t),n=await (0,x.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 U({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 H(e){if(!e)return}function W(e){return Array.isArray(e)?e.map(e=>String(e??"").trim()).filter(Boolean):[]}async function K({command:e,argv:t,cwd:r,timeoutMs:o}){let n=t&&t.length?t:e.split(/\s+/).filter(Boolean),a=n[0],i=n.slice(1);return await new Promise((e,t)=>{let n=(0,S.spawn)(a,i,{cwd:r,shell:!1,stdio:["ignore","pipe","pipe"]}),s="",l="";n.stdout?.on("data",e=>{s.length<65536&&(s+=e.toString("utf8").slice(0,65536-s.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:s,stderr:l,exitCode:t,signal:r})})})}async function J({teamId:e,workflow:t,run:r,nodeId:o,startedAt:n,endedAt:a}){let i=Array.isArray(t.nodes)?t.nodes.find(e=>e.id===o):void 0,s=i?.config&&"object"==typeof i.config?i.config:{},l="string"==typeof s.tool&&s.tool.trim()?s.tool.trim():"(unknown)",d=s.args&&"object"==typeof s.args?s.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 i=function(e,t){let r=e;for(let[e,o]of Object.entries(t))r=r.replaceAll(`{{${e}}}`,o);return r}(r,u),{full:s}=await M(e,t,i);return{nodeId:o,status:"success",startedAt:n,endedAt:a,output:{tool:l,appendedTo:s,bytes:i.length}}}if("runtime.exec"===l){var c;let r,i,u,p,f,w,m,g=(p=W((u=(c=t.meta)&&"object"==typeof c&&!Array.isArray(c)?t.meta:{}).execAllowBins),f=W(u.execAllowCommands),w=W(s.execAllowBins),m=W(s.execAllowCommands),{allowBins:new Set([...p,...w]),allowCommands:new Set([...f,...m]),host:String(s.execHost??u.execHost??"gateway"),security:String(s.execSecurity??u.execSecurity??"allowlist"),ask:String(s.execAsk??u.execAsk??"on-miss"),timeout:Number(s.execTimeoutSeconds??u.execTimeoutSeconds??300)}),{command:h,bin:y,argv:k}=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(y)))throw Error(`runtime.exec bin not allowlisted: ${y} (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,x.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 S=(process.env.KITCHEN_WORKFLOW_EXEC_BACKEND||"gateway-first").trim();if("local"===S)i=await K({command:h,argv:k,cwd:r,timeoutMs:1e3*g.timeout});else try{i=await (0,j.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"===S&&/Tool not available:\s*exec/i.test((0,E.errorMessage)(e)))i=await K({command:h,argv:k,cwd:r,timeoutMs:1e3*g.timeout});else throw e}return{nodeId:o,status:"success",startedAt:n,endedAt:a,output:{tool:l,command:h,result:i}}}return{nodeId:o,status:"success",startedAt:n,endedAt:a,output:{tool:l,result:"(no-op: tool not implemented)"}}}async function L({teamId:e,workflow:t,run:r,approvalNodeId:o,decidedAt:n}){let a=Array.isArray(t.nodes)?t.nodes:[],i=a.findIndex(e=>e.id===o);if(i<0)return r;let s=Array.isArray(r.nodes)?await Promise.all(r.nodes.map(async o=>{let s=a.findIndex(e=>e.id===o.nodeId);if(!(s>=0&&s>i)||"pending"!==o.status)return o;let l=s>=0?a[s]:void 0,d=o.startedAt??n;if(l?.type==="tool")try{return await J({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,E.errorMessage)(e)}}}return{...o,status:"success",startedAt:d,endedAt:n,output:o.output??{note:"(resumed after approval)"}}})):[];return{...r,nodes:s}}async function z(e){return(0,b.handleWorkflowRunsGet)(e,P,$)}async function G(e){let t=await (0,I.parseJsonBody)(e);if(t instanceof y.NextResponse)return t;let{body:r}=t,o=String(r.teamId??"").trim(),n=String(r.workflowId??"").trim(),a=String(r.mode??"").trim(),i=String(r.action??"").trim(),s=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 y.NextResponse.json({ok:!1,error:"teamId is required"},{status:400});if(!n)return y.NextResponse.json({ok:!1,error:"workflowId is required"},{status:400});try{if(i){if(!l)return y.NextResponse.json({ok:!1,error:"runId is required for action"},{status:400});if(!["approve","request_changes","cancel"].includes(i))return y.NextResponse.json({ok:!1,error:`Unsupported action: ${i}`},{status:400});let e=(await P(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 y.NextResponse.json({ok:!1,error:"Run is not awaiting approval"},{status:400});let r=D(),a="approve"===i?"approved":"request_changes"===i?"changes_requested":"canceled",s="approved"===a?"success":"canceled"===a?"canceled":"waiting_for_approval",c=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}):[],p={...e,status:s,endedAt:"success"===s||"canceled"===s?r:e.endedAt,approval:{nodeId:t,state:a,requestedAt:e.approval?.requestedAt,decidedAt:"changes_requested"===a?void 0:r,note:d,decidedBy:u},nodes:c},f=p;if("approve"===i)try{let e=(await (0,O.readWorkflow)(o,n)).workflow;f=await L({teamId:o,workflow:e,run:p,approvalNodeId:t,decidedAt:r}),Array.isArray(f.nodes)&&f.nodes.some(e=>"error"===e.status)&&(f={...f,status:"error",endedAt:r})}catch{}return(0,I.jsonOkRest)({...await F(o,n,f),runId:e.id})}if("enqueue"===s||"run_now"===s){let e=(await (0,O.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,R.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 i=JSON.parse(String(a.stdout??"{}")),l=String(i.runId??"").trim(),d=String(i.runLogPath??i.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"===s){let t=await (0,R.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)),i=(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),s=Array.from(new Set(i)),l=s.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,R.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 P(o,n,u),t=e.status;if(t&&"queued"!=String(t))break}catch{}await new Promise(e=>setTimeout(e,250))}for(let e of s){let t=await (0,R.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(0,I.jsonOkRest)({ok:!0,runId:u,path:`shared-context/workflow-runs/${u}/run.json`,...d?{runLogPath:d}:{}})}let e="sample"===s?await (async()=>{let e=(await (0,O.readWorkflow)(o,n)).workflow,t=`run-${D().replace(/[:.]/g,"-")}-${k.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,i="marketing-cadence-v1"===a,s=i?{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,c={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&&i?"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:s}:"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{...c,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{...c,output:a?{tool:r,result:"(sample tool result)"}:void 0}}if("human_approval"===e.type){let e=i?{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:s?.x,instagram:s?.instagram,tiktok:s?.tiktok,youtube:s?.youtube}}}:{channel:"(sample)",decision:"pending",options:["approve","request_changes","cancel"]};return{...c,output:e}}return c}),c=d?"waiting_for_approval":"success",p={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:c,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 U({workflow:e});if(r)try{await H({teamId:o,workflow:e,run:p,approvalNodeId:d}),p.approval={...p.approval,outbound:{provider:t,target:r,sentAt:D()}}}catch(e){p.approval={...p.approval,outbound:{provider:t,target:r,error:(0,E.errorMessage)(e),attemptedAt:D()}}}}return p})():await (async()=>{if(!["execute","enqueue","run_now","sample"].includes(s))throw Error(`Unsupported mode: ${s}`);let e=(await (0,O.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,R.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 i=JSON.parse(String(a.stdout??"{}")),l=String(i.runId??"").trim(),d=String(i.runLogPath??i.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"===s){let t=await (0,R.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)),i=(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),s=Array.from(new Set(i)),l=s.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,R.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 P(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 P(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 s){let t=await (0,R.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:D(),status:"running",summary:"run_now"===s?"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"===s||"run_now"===s){let t=String(e.meta?.canonicalRunId??e.id);return(0,I.jsonOkRest)({ok:!0,runId:t,path:`shared-context/workflow-runs/${t}/run.json`})}return(0,I.jsonOkRest)({...await F(o,n,e),runId:e.id})}catch(t){let e=(0,E.errorMessage)(t);if(/^All nodes must be assigned to an agent\./i.test(e)||/^Unknown agentId\(s\)/i.test(e))return y.NextResponse.json({ok:!1,error:e},{status:400});return y.NextResponse.json({ok:!1,error:e},{status:500})}}e.s(["GET",()=>z,"POST",()=>G],80366);var Q=e.i(80366);let X=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:Q}),{workAsyncStorage:V,workUnitAsyncStorage:Z,serverHooks:Y}=X;function ee(){return(0,o.patchFetch)({workAsyncStorage:V,workUnitAsyncStorage:Z})}async function et(e,t,o){X.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/teams/workflow-runs/route";y=y.replace(/\/index$/,"")||"/";let k=await X.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!k)return t.statusCode=400,t.end("Bad Request"),null==o.waitUntil||o.waitUntil.call(o,Promise.resolve()),null;let{buildId:v,params:A,nextConfig:S,parsedUrl:I,isDraftMode:b,prerenderManifest:E,routerServerContext:j,isOnDemandRevalidate:R,revalidateOnlyGenerated:x,resolvedPathname:C,clientReferenceManifest:O,serverActionsManifest:N}=k,_=(0,s.normalizeAppPath)(y),q=!!(E.dynamicRoutes[_]||E.routes[C]),T=async()=>((null==j?void 0:j.render404)?await j.render404(e,t,I,!1):t.end("This page could not be found"),null);if(q&&!b){let e=!!E.routes[C],t=E.dynamicRoutes[_];if(t&&!1===t.fallback&&!e){if(S.experimental.adapterPath)return await T();throw new g.NoFallbackError}}let $=null;!q||X.isDev||b||($="/index"===($=C)?"/":$);let P=!0===X.isDev||!q,F=q&&!P;N&&O&&(0,i.setManifestsSingleton)({page:y,clientReferenceManifest:O,serverActionsManifest:N});let B=e.method||"GET",D=(0,a.getTracer)(),M=D.getActiveScopeSpan(),U={params:A,prerenderManifest:E,renderOpts:{experimental:{authInterrupts:!!S.experimental.authInterrupts},cacheComponents:!!S.cacheComponents,supportsDynamicResponse:P,incrementalCache:(0,n.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:S.cacheLife,waitUntil:o.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,o,n)=>X.onRequestError(e,t,o,n,j)},sharedContext:{buildId:v}},H=new l.NodeNextRequest(e),W=new l.NodeNextResponse(t),K=d.NextRequestAdapter.fromNodeNextRequest(H,(0,d.signalFromNodeResponse)(t));try{let i=async e=>X.handle(K,U).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=D.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=`${B} ${o}`;e.setAttributes({"next.route":o,"http.route":o,"next.span_name":t}),e.updateName(t)}else e.updateName(`${B} ${y}`)}),s=!!(0,n.getRequestMeta)(e,"minimalMode"),l=async n=>{var a,l;let d=async({previousCacheEntry:r})=>{try{if(!s&&R&&x&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await i(n);e.fetchMetrics=U.renderOpts.fetchMetrics;let l=U.renderOpts.pendingWaitUntil;l&&o.waitUntil&&(o.waitUntil(l),l=void 0);let d=U.renderOpts.collectedTags;if(!q)return await (0,p.sendResponse)(H,W,a,U.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,f.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!==U.renderOpts.collectedRevalidate&&!(U.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&U.renderOpts.collectedRevalidate,o=void 0===U.renderOpts.collectedExpire||U.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:U.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 X.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:R})},!1,j),t}},u=await X.handleResponse({req:e,nextConfig:S,cacheKey:$,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,isRoutePPREnabled:!1,isOnDemandRevalidate:R,revalidateOnlyGenerated:x,responseGenerator:d,waitUntil:o.waitUntil,isMinimalMode:s});if(!q)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});s||t.setHeader("x-nextjs-cache",R?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let g=(0,f.fromNodeOutgoingHttpHeaders)(u.value.headers);return s&&q||g.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||g.get("Cache-Control")||g.set("Cache-Control",(0,w.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(H,W,new Response(u.value.body,{headers:g,status:u.value.status||200})),null};M?await l(M):await D.withPropagatedContext(e.headers,()=>D.trace(u.BaseServerSpan.handleRequest,{spanName:`${B} ${y}`,kind:a.SpanKind.SERVER,attributes:{"http.method":B,"http.target":e.url}},l))}catch(t){if(t instanceof g.NoFallbackError||await X.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:R})},!1,j),q)throw t;return await (0,p.sendResponse)(H,W,new Response(null,{status:500})),null}}e.s(["handler",()=>et,"patchFetch",()=>ee,"routeModule",()=>X,"serverHooks",()=>Y,"workAsyncStorage",()=>V,"workUnitAsyncStorage",()=>Z],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),i=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),w=e.i(26937),m=e.i(10372),g=e.i(93695);e.i(52474);var h=e.i(220),y=e.i(89171),k=e.i(66680),v=e.i(12714),A=e.i(50227),S=e.i(74533),I=e.i(85067),b=e.i(41674),E=e.i(40317),j=e.i(76509),R=e.i(5003),x=e.i(7367),C=e.i(63715),O=e.i(56995);let N=A.default.join("shared-context","workflow-runs");function _(e){let t=String(e??"").trim();if(!t)throw Error("run id is required");if(!/^[A-Za-z0-9][A-Za-z0-9-]{0,120}$/.test(t))throw Error("Invalid run id. Use letters, numbers, and dashes.");return t}async function q(e,t){(0,O.assertSafeWorkflowId)(t);let r=await (0,x.getTeamWorkspaceDir)(e);return A.default.join(r,N)}function T(e){return`${e}.run.json`}async function $(e,t){let r=(0,O.assertSafeWorkflowId)(t),o=await q(e,r),n=[];try{for(let t of(await v.default.readdir(o,{withFileTypes:!0})).filter(e=>e.isDirectory()).map(e=>e.name).sort()){let a=A.default.join(o,t,"run.json");try{let o=await v.default.readFile(a,"utf8"),i=JSON.parse(o);B(e,r,i,t).workflowId===r&&n.push(t)}catch{}}}catch{}try{let{files:t}=await (0,C.readdirFiles)(o,".run.json",!0);for(let a of t){let t=a.replace(/\.run\.json$/i,"");try{let i=await v.default.readFile(A.default.join(o,a),"utf8"),s=JSON.parse(i);B(e,r,s,t).workflowId===r&&n.push(t)}catch{}}}catch{}try{let e=A.default.join(o,r),{files:t}=await (0,C.readdirFiles)(e,".run.json",!0);for(let e of t)n.push(e.replace(/\.run\.json$/i,""))}catch{}return{ok:!0,dir:o,runIds:Array.from(new Set(n)).sort().reverse()}}async function P(e,t,r){let o=(0,O.assertSafeWorkflowId)(t),n=_(r),a=await q(e,o),i=A.default.join(a,n,"run.json");try{let t=await v.default.readFile(i,"utf8"),r=JSON.parse(t),s=B(e,o,r,n);if(Array.isArray(s.nodes)&&s.nodes.length){let e=A.default.join(a,n,"node-outputs"),t=[];try{t=await v.default.readdir(e)}catch{t=[]}let r=new Map;for(let o of t.slice().sort()){let t=o.match(/-([^/]+)\.json$/);if(!t)continue;let n=t[1];if(!n)continue;let a=r.get(n)??[];a.push(A.default.join(e,o)),r.set(n,a)}await Promise.all(s.nodes.map(async e=>{if(!e||"object"!=typeof e||void 0!==e.output)return;let t=r.get(e.nodeId);if(!t||!t.length)return;let o=t.shift();if(o)try{let t=await v.default.readFile(o,"utf8");e.output=JSON.parse(t)}catch{}}))}return{ok:!0,path:i,run:s}}catch(e){if(!(e&&"object"==typeof e&&"ENOENT"===e.code))throw e}let s=A.default.join(a,T(n));try{let t=await v.default.readFile(s,"utf8"),r=JSON.parse(t);return{ok:!0,path:s,run:B(e,o,r,n)}}catch(t){if(t&&"object"==typeof t&&"ENOENT"===t.code){let t=A.default.join(a,o,T(n)),r=JSON.parse(await v.default.readFile(t,"utf8"));return{ok:!0,path:t,run:B(e,o,r,n)}}throw t}}async function F(e,t,r){let o=(0,O.assertSafeWorkflowId)(t),n=_(r.id),a=await q(e,o);await v.default.mkdir(a,{recursive:!0});let i=A.default.join(a,T(n)),s=i;try{let e=await v.default.readFile(i,"utf8"),t=JSON.parse(e);if(t&&"object"==typeof t&&!Array.isArray(t)&&"runId"in t&&!("schema"in t)){let e=A.default.join(a,o);await v.default.mkdir(e,{recursive:!0}),s=A.default.join(e,T(n))}}catch{}let l={...r,schema:"clawkitchen.workflow-run.v1",id:n,workflowId:o,teamId:e};return await v.default.writeFile(s,JSON.stringify(l,null,2)+"\n","utf8"),{ok:!0,path:s}}function B(e,t,r,o){if(r&&"object"==typeof r&&"clawkitchen.workflow-run.v1"===r.schema)return r;if(r&&"object"==typeof r&&"runId"in r&&"workflow"in r){let n=r.workflow&&"object"==typeof r.workflow?r.workflow:{},a="string"==typeof n.file?n.file:"",i=a?A.default.basename(a).replace(/\.workflow\.json$/i,""):"",s="string"==typeof n.id&&n.id?n.id:i||t,l=String(r.status??""),d="awaiting_approval"===l?"waiting_for_approval":"completed"===l?"success":"rejected"===l||"error"===l?"error":"canceled"===l?"canceled":"running",u=Array.isArray(r.nodeResults)?r.nodeResults.map(e=>{if(!e||"object"!=typeof e)return null;let t="string"==typeof e.nodeId?e.nodeId:"";if(!t)return null;let r=String(e.status??"pending"),o="awaiting_approval"===r?"waiting":"completed"===r?"success":"error"===r?"error":r,n=["pending","running","waiting","success","error","skipped"].includes(o)?o:"pending",a="string"==typeof e.error?e.error:e.error&&"object"==typeof e.error&&"message"in e.error?{message:String(e.error.message??"")}:void 0,i="string"==typeof e.startedAt?e.startedAt:void 0,s="string"==typeof e.endedAt?e.endedAt:void 0;return{nodeId:t,status:n,...i?{startedAt:i}:{},...s?{endedAt:s}:{},...void 0!==e.output?{output:e.output}:{},...void 0!==a?{error:a}:{}}}).filter(e=>null!==e):void 0;return{schema:"clawkitchen.workflow-run.v1",id:"string"==typeof r.runId?r.runId:o,workflowId:s,teamId:e,startedAt:"string"==typeof r.createdAt?r.createdAt:new Date().toISOString(),endedAt:("success"===d||"error"===d||"canceled"===d)&&"string"==typeof r.updatedAt?r.updatedAt:void 0,status:d,summary:"Executed by workflow runner",nodes:u}}return{schema:"clawkitchen.workflow-run.v1",id:o,workflowId:t,teamId:e,startedAt:new Date().toISOString(),status:"error",summary:"Malformed run file"}}function D(){return new Date().toISOString()}async function M(e,t,r){let o=(0,x.assertSafeRelativeFileName)(t),n=await (0,x.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 U({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 H(e){if(!e)return}function W(e){return Array.isArray(e)?e.map(e=>String(e??"").trim()).filter(Boolean):[]}async function K({command:e,argv:t,cwd:r,timeoutMs:o}){let n=t&&t.length?t:e.split(/\s+/).filter(Boolean),a=n[0],i=n.slice(1);return await new Promise((e,t)=>{let n=(0,S.spawn)(a,i,{cwd:r,shell:!1,stdio:["ignore","pipe","pipe"]}),s="",l="";n.stdout?.on("data",e=>{s.length<65536&&(s+=e.toString("utf8").slice(0,65536-s.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:s,stderr:l,exitCode:t,signal:r})})})}async function J({teamId:e,workflow:t,run:r,nodeId:o,startedAt:n,endedAt:a}){let i=Array.isArray(t.nodes)?t.nodes.find(e=>e.id===o):void 0,s=i?.config&&"object"==typeof i.config?i.config:{},l="string"==typeof s.tool&&s.tool.trim()?s.tool.trim():"(unknown)",d=s.args&&"object"==typeof s.args?s.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 i=function(e,t){let r=e;for(let[e,o]of Object.entries(t))r=r.replaceAll(`{{${e}}}`,o);return r}(r,u),{full:s}=await M(e,t,i);return{nodeId:o,status:"success",startedAt:n,endedAt:a,output:{tool:l,appendedTo:s,bytes:i.length}}}if("runtime.exec"===l){var c;let r,i,u,p,f,w,m,g=(p=W((u=(c=t.meta)&&"object"==typeof c&&!Array.isArray(c)?t.meta:{}).execAllowBins),f=W(u.execAllowCommands),w=W(s.execAllowBins),m=W(s.execAllowCommands),{allowBins:new Set([...p,...w]),allowCommands:new Set([...f,...m]),host:String(s.execHost??u.execHost??"gateway"),security:String(s.execSecurity??u.execSecurity??"allowlist"),ask:String(s.execAsk??u.execAsk??"on-miss"),timeout:Number(s.execTimeoutSeconds??u.execTimeoutSeconds??300)}),{command:h,bin:y,argv:k}=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(y)))throw Error(`runtime.exec bin not allowlisted: ${y} (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,x.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 S=(process.env.KITCHEN_WORKFLOW_EXEC_BACKEND||"gateway-first").trim();if("local"===S)i=await K({command:h,argv:k,cwd:r,timeoutMs:1e3*g.timeout});else try{i=await (0,j.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"===S&&/Tool not available:\s*exec/i.test((0,E.errorMessage)(e)))i=await K({command:h,argv:k,cwd:r,timeoutMs:1e3*g.timeout});else throw e}return{nodeId:o,status:"success",startedAt:n,endedAt:a,output:{tool:l,command:h,result:i}}}return{nodeId:o,status:"success",startedAt:n,endedAt:a,output:{tool:l,result:"(no-op: tool not implemented)"}}}async function L({teamId:e,workflow:t,run:r,approvalNodeId:o,decidedAt:n}){let a=Array.isArray(t.nodes)?t.nodes:[],i=a.findIndex(e=>e.id===o);if(i<0)return r;let s=Array.isArray(r.nodes)?await Promise.all(r.nodes.map(async o=>{let s=a.findIndex(e=>e.id===o.nodeId);if(!(s>=0&&s>i)||"pending"!==o.status)return o;let l=s>=0?a[s]:void 0,d=o.startedAt??n;if(l?.type==="tool")try{return await J({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,E.errorMessage)(e)}}}return{...o,status:"success",startedAt:d,endedAt:n,output:o.output??{note:"(resumed after approval)"}}})):[];return{...r,nodes:s}}async function z(e){return(0,b.handleWorkflowRunsGet)(e,P,$)}async function G(e){let t=await (0,I.parseJsonBody)(e);if(t instanceof y.NextResponse)return t;let{body:r}=t,o=String(r.teamId??"").trim(),n=String(r.workflowId??"").trim(),a=String(r.mode??"").trim(),i=String(r.action??"").trim(),s=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 y.NextResponse.json({ok:!1,error:"teamId is required"},{status:400});if(!n)return y.NextResponse.json({ok:!1,error:"workflowId is required"},{status:400});try{if(i){if(!l)return y.NextResponse.json({ok:!1,error:"runId is required for action"},{status:400});if(!["approve","request_changes","cancel"].includes(i))return y.NextResponse.json({ok:!1,error:`Unsupported action: ${i}`},{status:400});let e=(await P(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 y.NextResponse.json({ok:!1,error:"Run is not awaiting approval"},{status:400});let r=D(),a="approve"===i?"approved":"request_changes"===i?"changes_requested":"canceled",s="approved"===a?"success":"canceled"===a?"canceled":"waiting_for_approval",c=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}):[],p={...e,status:s,endedAt:"success"===s||"canceled"===s?r:e.endedAt,approval:{nodeId:t,state:a,requestedAt:e.approval?.requestedAt,decidedAt:"changes_requested"===a?void 0:r,note:d,decidedBy:u},nodes:c},f=p;if("approve"===i)try{let e=(await (0,O.readWorkflow)(o,n)).workflow;f=await L({teamId:o,workflow:e,run:p,approvalNodeId:t,decidedAt:r}),Array.isArray(f.nodes)&&f.nodes.some(e=>"error"===e.status)&&(f={...f,status:"error",endedAt:r})}catch{}return(0,I.jsonOkRest)({...await F(o,n,f),runId:e.id})}if("enqueue"===s||"run_now"===s){let e=(await (0,O.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,R.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 i=JSON.parse(String(a.stdout??"{}")),l=String(i.runId??"").trim(),d=String(i.runLogPath??i.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"===s){let t=await (0,R.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)),i=(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),s=Array.from(new Set(i)),l=s.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,R.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 c=[...s];(async()=>{try{for(let e of c)await (0,R.runOpenClaw)(["recipes","workflows","worker-tick","--team-id",o,"--agent-id",e,"--limit","5","--worker-id","kitchen-run-now"]);let{run:e}=await P(o,n,u),t=String(e.status??"");if("waiting_workers"===t)for(let e of c)await (0,R.runOpenClaw)(["recipes","workflows","worker-tick","--team-id",o,"--agent-id",e,"--limit","5","--worker-id","kitchen-run-now-pass2"])}catch{}})()}return(0,I.jsonOkRest)({ok:!0,runId:u,path:`shared-context/workflow-runs/${u}/run.json`,...d?{runLogPath:d}:{}})}let e="sample"===s?await (async()=>{let e=(await (0,O.readWorkflow)(o,n)).workflow,t=`run-${D().replace(/[:.]/g,"-")}-${k.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,i="marketing-cadence-v1"===a,s=i?{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,c={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&&i?"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:s}:"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{...c,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{...c,output:a?{tool:r,result:"(sample tool result)"}:void 0}}if("human_approval"===e.type){let e=i?{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:s?.x,instagram:s?.instagram,tiktok:s?.tiktok,youtube:s?.youtube}}}:{channel:"(sample)",decision:"pending",options:["approve","request_changes","cancel"]};return{...c,output:e}}return c}),c=d?"waiting_for_approval":"success",p={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:c,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 U({workflow:e});if(r)try{await H({teamId:o,workflow:e,run:p,approvalNodeId:d}),p.approval={...p.approval,outbound:{provider:t,target:r,sentAt:D()}}}catch(e){p.approval={...p.approval,outbound:{provider:t,target:r,error:(0,E.errorMessage)(e),attemptedAt:D()}}}}return p})():await (async()=>{if(!["execute","enqueue","run_now","sample"].includes(s))throw Error(`Unsupported mode: ${s}`);let e=(await (0,O.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,R.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 i=JSON.parse(String(a.stdout??"{}")),l=String(i.runId??"").trim(),d=String(i.runLogPath??i.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"===s){let t=await (0,R.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)),i=(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),s=Array.from(new Set(i)),l=s.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,R.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 P(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 P(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 s){let t=await (0,R.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:D(),status:"running",summary:"run_now"===s?"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"===s||"run_now"===s){let t=String(e.meta?.canonicalRunId??e.id);return(0,I.jsonOkRest)({ok:!0,runId:t,path:`shared-context/workflow-runs/${t}/run.json`})}return(0,I.jsonOkRest)({...await F(o,n,e),runId:e.id})}catch(t){let e=(0,E.errorMessage)(t);if(/^All nodes must be assigned to an agent\./i.test(e)||/^Unknown agentId\(s\)/i.test(e))return y.NextResponse.json({ok:!1,error:e},{status:400});return y.NextResponse.json({ok:!1,error:e},{status:500})}}e.s(["GET",()=>z,"POST",()=>G],80366);var Q=e.i(80366);let X=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:Q}),{workAsyncStorage:V,workUnitAsyncStorage:Z,serverHooks:Y}=X;function ee(){return(0,o.patchFetch)({workAsyncStorage:V,workUnitAsyncStorage:Z})}async function et(e,t,o){X.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/teams/workflow-runs/route";y=y.replace(/\/index$/,"")||"/";let k=await X.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!k)return t.statusCode=400,t.end("Bad Request"),null==o.waitUntil||o.waitUntil.call(o,Promise.resolve()),null;let{buildId:v,params:A,nextConfig:S,parsedUrl:I,isDraftMode:b,prerenderManifest:E,routerServerContext:j,isOnDemandRevalidate:R,revalidateOnlyGenerated:x,resolvedPathname:C,clientReferenceManifest:O,serverActionsManifest:N}=k,_=(0,s.normalizeAppPath)(y),q=!!(E.dynamicRoutes[_]||E.routes[C]),T=async()=>((null==j?void 0:j.render404)?await j.render404(e,t,I,!1):t.end("This page could not be found"),null);if(q&&!b){let e=!!E.routes[C],t=E.dynamicRoutes[_];if(t&&!1===t.fallback&&!e){if(S.experimental.adapterPath)return await T();throw new g.NoFallbackError}}let $=null;!q||X.isDev||b||($="/index"===($=C)?"/":$);let P=!0===X.isDev||!q,F=q&&!P;N&&O&&(0,i.setManifestsSingleton)({page:y,clientReferenceManifest:O,serverActionsManifest:N});let B=e.method||"GET",D=(0,a.getTracer)(),M=D.getActiveScopeSpan(),U={params:A,prerenderManifest:E,renderOpts:{experimental:{authInterrupts:!!S.experimental.authInterrupts},cacheComponents:!!S.cacheComponents,supportsDynamicResponse:P,incrementalCache:(0,n.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:S.cacheLife,waitUntil:o.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,o,n)=>X.onRequestError(e,t,o,n,j)},sharedContext:{buildId:v}},H=new l.NodeNextRequest(e),W=new l.NodeNextResponse(t),K=d.NextRequestAdapter.fromNodeNextRequest(H,(0,d.signalFromNodeResponse)(t));try{let i=async e=>X.handle(K,U).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=D.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=`${B} ${o}`;e.setAttributes({"next.route":o,"http.route":o,"next.span_name":t}),e.updateName(t)}else e.updateName(`${B} ${y}`)}),s=!!(0,n.getRequestMeta)(e,"minimalMode"),l=async n=>{var a,l;let d=async({previousCacheEntry:r})=>{try{if(!s&&R&&x&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await i(n);e.fetchMetrics=U.renderOpts.fetchMetrics;let l=U.renderOpts.pendingWaitUntil;l&&o.waitUntil&&(o.waitUntil(l),l=void 0);let d=U.renderOpts.collectedTags;if(!q)return await (0,p.sendResponse)(H,W,a,U.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,f.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!==U.renderOpts.collectedRevalidate&&!(U.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&U.renderOpts.collectedRevalidate,o=void 0===U.renderOpts.collectedExpire||U.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:U.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 X.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:R})},!1,j),t}},u=await X.handleResponse({req:e,nextConfig:S,cacheKey:$,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,isRoutePPREnabled:!1,isOnDemandRevalidate:R,revalidateOnlyGenerated:x,responseGenerator:d,waitUntil:o.waitUntil,isMinimalMode:s});if(!q)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});s||t.setHeader("x-nextjs-cache",R?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let g=(0,f.fromNodeOutgoingHttpHeaders)(u.value.headers);return s&&q||g.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||g.get("Cache-Control")||g.set("Cache-Control",(0,w.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(H,W,new Response(u.value.body,{headers:g,status:u.value.status||200})),null};M?await l(M):await D.withPropagatedContext(e.headers,()=>D.trace(u.BaseServerSpan.handleRequest,{spanName:`${B} ${y}`,kind:a.SpanKind.SERVER,attributes:{"http.method":B,"http.target":e.url}},l))}catch(t){if(t instanceof g.NoFallbackError||await X.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:R})},!1,j),q)throw t;return await (0,p.sendResponse)(H,W,new Response(null,{status:500})),null}}e.s(["handler",()=>et,"patchFetch",()=>ee,"routeModule",()=>X,"serverHooks",()=>Y,"workAsyncStorage",()=>V,"workUnitAsyncStorage",()=>Z],90736)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=node_modules_next_dist_esm_build_templates_app-route_1fe98a49.js.map
|