@jiggai/kitchen 0.3.8 → 0.3.9

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.
Files changed (64) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +2 -2
  3. package/.next/server/app/_global-error.html +2 -2
  4. package/.next/server/app/_global-error.rsc +1 -1
  5. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  6. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  7. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  10. package/.next/server/app/_not-found.html +1 -1
  11. package/.next/server/app/_not-found.rsc +1 -1
  12. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  13. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  14. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  15. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  16. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  18. package/.next/server/app/channels.html +2 -2
  19. package/.next/server/app/channels.rsc +1 -1
  20. package/.next/server/app/channels.segments/_full.segment.rsc +1 -1
  21. package/.next/server/app/channels.segments/_head.segment.rsc +1 -1
  22. package/.next/server/app/channels.segments/_index.segment.rsc +1 -1
  23. package/.next/server/app/channels.segments/_tree.segment.rsc +1 -1
  24. package/.next/server/app/channels.segments/channels/__PAGE__.segment.rsc +1 -1
  25. package/.next/server/app/channels.segments/channels.segment.rsc +1 -1
  26. package/.next/server/app/goals/new.html +2 -2
  27. package/.next/server/app/goals/new.rsc +1 -1
  28. package/.next/server/app/goals/new.segments/_full.segment.rsc +1 -1
  29. package/.next/server/app/goals/new.segments/_head.segment.rsc +1 -1
  30. package/.next/server/app/goals/new.segments/_index.segment.rsc +1 -1
  31. package/.next/server/app/goals/new.segments/_tree.segment.rsc +1 -1
  32. package/.next/server/app/goals/new.segments/goals/new/__PAGE__.segment.rsc +1 -1
  33. package/.next/server/app/goals/new.segments/goals/new.segment.rsc +1 -1
  34. package/.next/server/app/goals/new.segments/goals.segment.rsc +1 -1
  35. package/.next/server/app/goals.html +1 -1
  36. package/.next/server/app/goals.rsc +1 -1
  37. package/.next/server/app/goals.segments/_full.segment.rsc +1 -1
  38. package/.next/server/app/goals.segments/_head.segment.rsc +1 -1
  39. package/.next/server/app/goals.segments/_index.segment.rsc +1 -1
  40. package/.next/server/app/goals.segments/_tree.segment.rsc +1 -1
  41. package/.next/server/app/goals.segments/goals/__PAGE__.segment.rsc +1 -1
  42. package/.next/server/app/goals.segments/goals.segment.rsc +1 -1
  43. package/.next/server/app/settings.html +1 -1
  44. package/.next/server/app/settings.rsc +1 -1
  45. package/.next/server/app/settings.segments/_full.segment.rsc +1 -1
  46. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  47. package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
  48. package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  49. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  50. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  51. package/.next/server/app/teams/[teamId]/workflows/[workflowId]/page_client-reference-manifest.js +1 -1
  52. package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_1fe98a49.js +1 -1
  53. package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_1fe98a49.js.map +1 -1
  54. package/.next/server/chunks/ssr/b1a17_app_teams_[teamId]_workflows_[workflowId]_workflows-editor-client_tsx_5e714aa2._.js +1 -1
  55. package/.next/server/chunks/ssr/b1a17_app_teams_[teamId]_workflows_[workflowId]_workflows-editor-client_tsx_5e714aa2._.js.map +1 -1
  56. package/.next/server/pages/404.html +1 -1
  57. package/.next/server/pages/500.html +2 -2
  58. package/.next/static/chunks/{8683ed0404be8cb7.js → 42b3230688d0834c.js} +1 -1
  59. package/README.md +4 -0
  60. package/openclaw.plugin.json +1 -1
  61. package/package.json +1 -1
  62. /package/.next/static/{rZ9CCEgFiMjcIjsKtAtE0 → AKnetF2w3rOYqZBVpzsLP}/_buildManifest.js +0 -0
  63. /package/.next/static/{rZ9CCEgFiMjcIjsKtAtE0 → AKnetF2w3rOYqZBVpzsLP}/_clientMiddlewareManifest.json +0 -0
  64. /package/.next/static/{rZ9CCEgFiMjcIjsKtAtE0 → AKnetF2w3rOYqZBVpzsLP}/_ssgManifest.js +0 -0
@@ -3,4 +3,4 @@
3
3
  3:I[39756,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"default"]
4
4
  4:I[37457,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"default"]
5
5
  :HL["/_next/static/chunks/cfe32a0bce2eab2b.css","style"]
6
- 0:{"buildId":"rZ9CCEgFiMjcIjsKtAtE0","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/cfe32a0bce2eab2b.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/b28737d6a10af30d.js","async":true}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"(function(){try{var t=localStorage.getItem('ck-theme');var theme=(t==='light')?'light':'dark';document.documentElement.dataset.theme=theme;}catch(e){document.documentElement.dataset.theme='dark';}})();"}}]}],["$","body",null,{"suppressHydrationWarning":true,"className":"geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[["$","div",null,{"className":"mx-auto max-w-2xl px-6 py-12","children":[["$","h1",null,{"className":"text-xl font-semibold","children":"Page not found"}],["$","p",null,{"className":"mt-2 text-sm text-[color:var(--ck-text-secondary)]","children":"The page you requested does not exist."}]]}],[]]}]}]}]]}]]}],"loading":null,"isPartial":false}
6
+ 0:{"buildId":"AKnetF2w3rOYqZBVpzsLP","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/cfe32a0bce2eab2b.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/b28737d6a10af30d.js","async":true}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"(function(){try{var t=localStorage.getItem('ck-theme');var theme=(t==='light')?'light':'dark';document.documentElement.dataset.theme=theme;}catch(e){document.documentElement.dataset.theme='dark';}})();"}}]}],["$","body",null,{"suppressHydrationWarning":true,"className":"geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[["$","div",null,{"className":"mx-auto max-w-2xl px-6 py-12","children":[["$","h1",null,{"className":"text-xl font-semibold","children":"Page not found"}],["$","p",null,{"className":"mt-2 text-sm text-[color:var(--ck-text-secondary)]","children":"The page you requested does not exist."}]]}],[]]}]}]}]]}]]}],"loading":null,"isPartial":false}
@@ -1,4 +1,4 @@
1
1
  :HL["/_next/static/chunks/cfe32a0bce2eab2b.css","style"]
2
2
  :HL["/_next/static/media/797e433ab948586e-s.p.dbea232f.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
3
3
  :HL["/_next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
4
- 0:{"buildId":"rZ9CCEgFiMjcIjsKtAtE0","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"goals","paramType":null,"paramKey":"goals","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300}
4
+ 0:{"buildId":"AKnetF2w3rOYqZBVpzsLP","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"goals","paramType":null,"paramKey":"goals","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300}
@@ -2,5 +2,5 @@
2
2
  2:"$Sreact.suspense"
3
3
  3:I[41588,["/_next/static/chunks/b28737d6a10af30d.js","/_next/static/chunks/62e0c437eb8fc2da.js"],"default"]
4
4
  4:I[97367,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"OutletBoundary"]
5
- 0:{"buildId":"rZ9CCEgFiMjcIjsKtAtE0","rsc":["$","$1","c",{"children":[["$","$2",null,{"fallback":["$","div",null,{"className":"ck-glass p-6 text-sm text-[color:var(--ck-text-secondary)]","children":"Loading goals…"}],"children":["$","$L3",null,{}]}],[["$","script","script-0",{"src":"/_next/static/chunks/62e0c437eb8fc2da.js","async":true}]],["$","$L4",null,{"children":["$","$2",null,{"name":"Next.MetadataOutlet","children":"$@5"}]}]]}],"loading":null,"isPartial":false}
5
+ 0:{"buildId":"AKnetF2w3rOYqZBVpzsLP","rsc":["$","$1","c",{"children":[["$","$2",null,{"fallback":["$","div",null,{"className":"ck-glass p-6 text-sm text-[color:var(--ck-text-secondary)]","children":"Loading goals…"}],"children":["$","$L3",null,{}]}],[["$","script","script-0",{"src":"/_next/static/chunks/62e0c437eb8fc2da.js","async":true}]],["$","$L4",null,{"children":["$","$2",null,{"name":"Next.MetadataOutlet","children":"$@5"}]}]]}],"loading":null,"isPartial":false}
6
6
  5:null
@@ -1,4 +1,4 @@
1
1
  1:"$Sreact.fragment"
2
2
  2:I[39756,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"default"]
3
3
  3:I[37457,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"default"]
4
- 0:{"buildId":"rZ9CCEgFiMjcIjsKtAtE0","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false}
4
+ 0:{"buildId":"AKnetF2w3rOYqZBVpzsLP","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false}
@@ -1 +1 @@
1
- <!DOCTYPE html><!--rZ9CCEgFiMjcIjsKtAtE0--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/797e433ab948586e-s.p.dbea232f.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/chunks/cfe32a0bce2eab2b.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/93719e85369dd453.js"/><script src="/_next/static/chunks/68a088aa49e6124a.js" async=""></script><script src="/_next/static/chunks/f2f58a7e93290fbb.js" async=""></script><script src="/_next/static/chunks/0edab8a24d59a626.js" async=""></script><script src="/_next/static/chunks/turbopack-0236a74c4f471967.js" async=""></script><script src="/_next/static/chunks/b28737d6a10af30d.js" async=""></script><script src="/_next/static/chunks/ff1a16fafef87110.js" async=""></script><script src="/_next/static/chunks/d2be314c3ece3fbe.js" async=""></script><script src="/_next/static/chunks/e854e56ea8cb6236.js" async=""></script><script src="/_next/static/chunks/c84580993f22c17a.js" async=""></script><meta name="next-size-adjust" content=""/><title>Claw Kitchen</title><meta name="description" content="Local-first UI for authoring ClawRecipes recipes and scaffolding agents/teams."/><link rel="manifest" href="/manifest.webmanifest"/><link rel="icon" href="/favicon.ico?favicon.0b3bf435.ico" sizes="256x256" type="image/x-icon"/><link rel="icon" href="/favicon.ico" sizes="any"/><link rel="icon" href="/favicon-16x16.png" sizes="16x16" type="image/png"/><link rel="icon" href="/favicon-32x32.png" sizes="32x32" type="image/png"/><link rel="apple-touch-icon" href="/apple-touch-icon.png"/><script>(function(){try{var t=localStorage.getItem('ck-theme');var theme=(t==='light')?'light':'dark';document.documentElement.dataset.theme=theme;}catch(e){document.documentElement.dataset.theme='dark';}})();</script><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body class="geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased"><div hidden=""><!--$--><!--/$--></div><div class="flex h-dvh w-dvw overflow-hidden"><aside class="flex shrink-0 flex-col border-r border-[color:var(--ck-border-subtle)] bg-[color:var(--ck-bg-glass)] backdrop-blur-[var(--ck-glass-blur)] w-72"><div class="flex h-14 items-center justify-between gap-2 border-b border-[color:var(--ck-border-subtle)] px-3"><a class="text-sm font-semibold tracking-tight" title="Home" href="/">Claw Kitchen</a><button class="rounded-[var(--ck-radius-sm)] px-2 py-1 text-sm text-[color:var(--ck-text-secondary)] hover:bg-white/5 hover:text-[color:var(--ck-text-primary)]" title="Collapse">«</button></div><div class="border-b border-[color:var(--ck-border-subtle)] p-2"><div class="flex flex-col gap-1"><div class="px-2 pt-1 text-xs font-semibold uppercase tracking-wide text-[color:var(--ck-text-tertiary)]">Team</div><select class="w-full rounded-[var(--ck-radius-sm)] border border-white/10 bg-black/25 px-2 py-2 text-sm text-[color:var(--ck-text-primary)]"><option value="" selected="">All teams</option></select></div></div><nav class="min-h-0 flex-1 overflow-auto p-2"><div class="mt-2 px-2 pb-2 pt-2"></div><a title="Agents" class="flex items-center rounded-[var(--ck-radius-sm)] text-sm font-medium text-[color:var(--ck-text-secondary)] transition-colors hover:bg-white/5 hover:text-[color:var(--ck-text-primary)] gap-4 px-4 py-3" href="/"><span aria-hidden="true"><span class="grid size-7 place-items-center text-[color:var(--ck-text-secondary)]" aria-hidden="true"><svg viewBox="0 0 24 24" class="h-6 w-6" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 11l9-8 9 8"></path><path d="M5 10v10h14V10"></path></svg></span></span><span>Agents</span></a><a title="Recipes" class="flex items-center rounded-[var(--ck-radius-sm)] text-sm font-medium text-[color:var(--ck-text-secondary)] transition-colors hover:bg-white/5 hover:text-[color:var(--ck-text-primary)] gap-4 px-4 py-3" href="/recipes"><span aria-hidden="true"><span class="grid size-7 place-items-center text-[color:var(--ck-text-secondary)]" aria-hidden="true"><svg viewBox="0 0 24 24" class="h-6 w-6" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 4h12v16H6z"></path><path d="M9 8h6"></path><path d="M9 12h6"></path></svg></span></span><span>Recipes</span></a><a title="Tickets" class="flex items-center rounded-[var(--ck-radius-sm)] text-sm font-medium text-[color:var(--ck-text-secondary)] transition-colors hover:bg-white/5 hover:text-[color:var(--ck-text-primary)] gap-4 px-4 py-3" href="/tickets"><span aria-hidden="true"><span class="grid size-7 place-items-center text-[color:var(--ck-text-secondary)]" aria-hidden="true"><svg viewBox="0 0 24 24" class="h-6 w-6" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 7h16v4a2 2 0 0 1 0 4v4H4v-4a2 2 0 0 0 0-4z"></path></svg></span></span><span>Tickets</span></a><a title="Channels" class="flex items-center rounded-[var(--ck-radius-sm)] text-sm font-medium text-[color:var(--ck-text-secondary)] transition-colors hover:bg-white/5 hover:text-[color:var(--ck-text-primary)] gap-4 px-4 py-3" href="/channels"><span aria-hidden="true"><span class="grid size-7 place-items-center text-[color:var(--ck-text-secondary)]" aria-hidden="true"><svg viewBox="0 0 24 24" class="h-6 w-6" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 6h16"></path><path d="M4 12h16"></path><path d="M4 18h16"></path><path d="M7 9h0"></path></svg></span></span><span>Channels</span></a><a title="Goals" class="flex items-center rounded-[var(--ck-radius-sm)] text-sm font-medium text-[color:var(--ck-text-secondary)] transition-colors hover:bg-white/5 hover:text-[color:var(--ck-text-primary)] gap-4 px-4 py-3" href="/goals"><span aria-hidden="true"><span class="grid size-7 place-items-center text-[color:var(--ck-text-secondary)]" aria-hidden="true"><svg viewBox="0 0 24 24" class="h-6 w-6" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="9"></circle><path d="M12 7v5l3 3"></path></svg></span></span><span>Goals</span></a><a title="Cron jobs" class="flex items-center rounded-[var(--ck-radius-sm)] text-sm font-medium text-[color:var(--ck-text-secondary)] transition-colors hover:bg-white/5 hover:text-[color:var(--ck-text-primary)] gap-4 px-4 py-3" href="/cron-jobs"><span aria-hidden="true"><span class="grid size-7 place-items-center text-[color:var(--ck-text-secondary)]" aria-hidden="true"><svg viewBox="0 0 24 24" class="h-6 w-6" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="9"></circle><path d="M12 7v5"></path></svg></span></span><span>Cron jobs</span></a><a title="Runs" class="flex items-center rounded-[var(--ck-radius-sm)] text-sm font-medium text-[color:var(--ck-text-secondary)] transition-colors hover:bg-white/5 hover:text-[color:var(--ck-text-primary)] gap-4 px-4 py-3" href="/runs"><span aria-hidden="true"><span class="grid size-7 place-items-center text-[color:var(--ck-text-secondary)]" aria-hidden="true"><svg viewBox="0 0 24 24" class="h-6 w-6" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 19h16"></path><path d="M6 16l4-4 3 3 5-7"></path><circle cx="10" cy="12" r="1"></circle><circle cx="13" cy="15" r="1"></circle><circle cx="18" cy="8" r="1"></circle></svg></span></span><span>Runs</span></a><a title="Settings" class="flex items-center rounded-[var(--ck-radius-sm)] bg-white/10 text-sm font-medium text-[color:var(--ck-text-primary)] gap-4 px-4 py-3" href="/settings"><span aria-hidden="true"><span class="grid size-7 place-items-center text-[color:var(--ck-text-secondary)]" aria-hidden="true"><svg viewBox="0 0 24 24" class="h-6 w-6" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 15.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7Z"></path><path d="M19.4 15a7.9 7.9 0 0 0 .1-1l2-1.5-2-3.5-2.4.5a7.8 7.8 0 0 0-1.7-1L13.5 3h-4L8.6 6.5a7.8 7.8 0 0 0-1.7 1L4.5 7l-2 3.5 2 1.5a7.9 7.9 0 0 0 .1 1l-2 1.5 2 3.5 2.4-.5a7.8 7.8 0 0 0 1.7 1L10.5 21h4l.9-3.5a7.8 7.8 0 0 0 1.7-1l2.4.5 2-3.5-2-1.5Z"></path></svg></span></span><span>Settings</span></a></nav><div class="flex items-center justify-between gap-2 border-t border-[color:var(--ck-border-subtle)] p-2"><a href="https://github.com/JIGGAI/ClawRecipes/tree/main/docs" target="_blank" rel="noreferrer" class="rounded-[var(--ck-radius-sm)] px-3 py-2 text-sm font-medium text-[color:var(--ck-text-secondary)] hover:bg-white/5 hover:text-[color:var(--ck-text-primary)]" title="Docs">Docs</a><button type="button" class="grid h-9 w-9 place-items-center rounded-full border border-[color:var(--ck-border-subtle)] bg-[color:var(--ck-bg-glass)] text-[color:var(--ck-text-primary)] shadow-[var(--ck-shadow-1)] transition-colors hover:bg-[color:var(--ck-bg-glass-strong)]" aria-label="Switch to light mode" title="Switch to light mode"><span class="sr-only">Switch to light mode</span><svg class="h-4.5 w-4.5" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M21 14.2A7.8 7.8 0 0 1 9.8 3a7 7 0 1 0 11.2 11.2Z" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"></path></svg></button></div></aside><div class="min-w-0 flex-1"><main class="h-full overflow-auto p-4 md:p-6"><div class="ck-glass w-full p-6 sm:p-8"><h1 class="text-2xl font-semibold tracking-tight">Settings</h1><p class="mt-2 text-sm text-[color:var(--ck-text-secondary)]">Configuration that affects scaffold behavior and automation.</p><div class="mt-8"><h2 class="text-lg font-semibold tracking-tight">Cron installation</h2><p class="mt-2 text-sm text-[color:var(--ck-text-secondary)]">Recipes can declare cron jobs. This controls whether Kitchen installs/reconciles them during scaffold.<span class="mt-2 block text-[color:var(--ck-text-tertiary)]">Safety note: jobs can send messages / run automatically. Default should remain conservative.</span></p><div class="mt-4"><div class="space-y-3"><button type="button" disabled="" class="ck-glass w-full text-left px-4 py-3 transition-colors hover:bg-white/10 "><div class="flex items-baseline justify-between gap-3"><div class="font-medium">Off</div></div><div class="mt-1 text-sm text-[color:var(--ck-text-secondary)]">Never install or reconcile recipe-defined cron jobs.</div></button><button type="button" disabled="" class="ck-glass w-full text-left px-4 py-3 transition-colors hover:bg-white/10 border-[color:var(--ck-accent-red)]"><div class="flex items-baseline justify-between gap-3"><div class="font-medium">Prompt (default)</div><div class="text-xs font-medium text-[color:var(--ck-accent-red)]">Selected</div></div><div class="mt-1 text-sm text-[color:var(--ck-text-secondary)]">Ask at scaffold time. Default answer should be No; jobs are installed disabled unless you opt in.</div></button><button type="button" disabled="" class="ck-glass w-full text-left px-4 py-3 transition-colors hover:bg-white/10 "><div class="flex items-baseline justify-between gap-3"><div class="font-medium">On</div></div><div class="mt-1 text-sm text-[color:var(--ck-text-secondary)]">Install/reconcile jobs during scaffold (enabledByDefault controls new jobs).</div></button></div></div></div></div><!--$--><!--/$--></main></div></div><div aria-live="assertive" class="pointer-events-none fixed inset-0 z-[100] flex items-end px-4 py-6 sm:p-6"><div class="flex w-full flex-col items-start space-y-4"></div></div><script src="/_next/static/chunks/93719e85369dd453.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[49830,[\"/_next/static/chunks/b28737d6a10af30d.js\"],\"AppShell\"]\n3:I[39756,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"default\"]\n4:I[37457,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"default\"]\n5:I[39905,[\"/_next/static/chunks/b28737d6a10af30d.js\",\"/_next/static/chunks/e854e56ea8cb6236.js\"],\"default\"]\n6:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"OutletBoundary\"]\n7:\"$Sreact.suspense\"\n9:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"ViewportBoundary\"]\nb:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"MetadataBoundary\"]\nd:I[63491,[\"/_next/static/chunks/c84580993f22c17a.js\"],\"default\"]\n:HL[\"/_next/static/chunks/cfe32a0bce2eab2b.css\",\"style\"]\n:HL[\"/_next/static/media/797e433ab948586e-s.p.dbea232f.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"rZ9CCEgFiMjcIjsKtAtE0\",\"c\":[\"\",\"settings\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"settings\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/cfe32a0bce2eab2b.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/b28737d6a10af30d.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){try{var t=localStorage.getItem('ck-theme');var theme=(t==='light')?'light':'dark';document.documentElement.dataset.theme=theme;}catch(e){document.documentElement.dataset.theme='dark';}})();\"}}]}],[\"$\",\"body\",null,{\"suppressHydrationWarning\":true,\"className\":\"geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-2xl px-6 py-12\",\"children\":[[\"$\",\"h1\",null,{\"className\":\"text-xl font-semibold\",\"children\":\"Page not found\"}],[\"$\",\"p\",null,{\"className\":\"mt-2 text-sm text-[color:var(--ck-text-secondary)]\",\"children\":\"The page you requested does not exist.\"}]]}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"div\",null,{\"className\":\"ck-glass w-full p-6 sm:p-8\",\"children\":[[\"$\",\"h1\",null,{\"className\":\"text-2xl font-semibold tracking-tight\",\"children\":\"Settings\"}],[\"$\",\"p\",null,{\"className\":\"mt-2 text-sm text-[color:var(--ck-text-secondary)]\",\"children\":\"Configuration that affects scaffold behavior and automation.\"}],[\"$\",\"div\",null,{\"className\":\"mt-8\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-lg font-semibold tracking-tight\",\"children\":\"Cron installation\"}],[\"$\",\"p\",null,{\"className\":\"mt-2 text-sm text-[color:var(--ck-text-secondary)]\",\"children\":[\"Recipes can declare cron jobs. This controls whether Kitchen installs/reconciles them during scaffold.\",[\"$\",\"span\",null,{\"className\":\"mt-2 block text-[color:var(--ck-text-tertiary)]\",\"children\":\"Safety note: jobs can send messages / run automatically. Default should remain conservative.\"}]]}],[\"$\",\"div\",null,{\"className\":\"mt-4\",\"children\":[\"$\",\"$L5\",null,{}]}]]}]]}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/e854e56ea8cb6236.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@8\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L9\",null,{\"children\":\"$La\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lc\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$d\",[]],\"S\":true}\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"e:I[27201,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"IconMark\"]\n8:null\nc:[[\"$\",\"title\",\"0\",{\"children\":\"Claw Kitchen\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Local-first UI for authoring ClawRecipes recipes and scaffolding agents/teams.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"manifest\",\"href\":\"/manifest.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.0b3bf435.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\",\"sizes\":\"any\"}],[\"$\",\"link\",\"5\",{\"rel\":\"icon\",\"href\":\"/favicon-16x16.png\",\"sizes\":\"16x16\",\"type\":\"image/png\"}],[\"$\",\"link\",\"6\",{\"rel\":\"icon\",\"href\":\"/favicon-32x32.png\",\"sizes\":\"32x32\",\"type\":\"image/png\"}],[\"$\",\"link\",\"7\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-touch-icon.png\"}],[\"$\",\"$Le\",\"8\",{}]]\n"])</script></body></html>
1
+ <!DOCTYPE html><!--AKnetF2w3rOYqZBVpzsLP--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/797e433ab948586e-s.p.dbea232f.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/chunks/cfe32a0bce2eab2b.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/93719e85369dd453.js"/><script src="/_next/static/chunks/68a088aa49e6124a.js" async=""></script><script src="/_next/static/chunks/f2f58a7e93290fbb.js" async=""></script><script src="/_next/static/chunks/0edab8a24d59a626.js" async=""></script><script src="/_next/static/chunks/turbopack-0236a74c4f471967.js" async=""></script><script src="/_next/static/chunks/b28737d6a10af30d.js" async=""></script><script src="/_next/static/chunks/ff1a16fafef87110.js" async=""></script><script src="/_next/static/chunks/d2be314c3ece3fbe.js" async=""></script><script src="/_next/static/chunks/e854e56ea8cb6236.js" async=""></script><script src="/_next/static/chunks/c84580993f22c17a.js" async=""></script><meta name="next-size-adjust" content=""/><title>Claw Kitchen</title><meta name="description" content="Local-first UI for authoring ClawRecipes recipes and scaffolding agents/teams."/><link rel="manifest" href="/manifest.webmanifest"/><link rel="icon" href="/favicon.ico?favicon.0b3bf435.ico" sizes="256x256" type="image/x-icon"/><link rel="icon" href="/favicon.ico" sizes="any"/><link rel="icon" href="/favicon-16x16.png" sizes="16x16" type="image/png"/><link rel="icon" href="/favicon-32x32.png" sizes="32x32" type="image/png"/><link rel="apple-touch-icon" href="/apple-touch-icon.png"/><script>(function(){try{var t=localStorage.getItem('ck-theme');var theme=(t==='light')?'light':'dark';document.documentElement.dataset.theme=theme;}catch(e){document.documentElement.dataset.theme='dark';}})();</script><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body class="geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased"><div hidden=""><!--$--><!--/$--></div><div class="flex h-dvh w-dvw overflow-hidden"><aside class="flex shrink-0 flex-col border-r border-[color:var(--ck-border-subtle)] bg-[color:var(--ck-bg-glass)] backdrop-blur-[var(--ck-glass-blur)] w-72"><div class="flex h-14 items-center justify-between gap-2 border-b border-[color:var(--ck-border-subtle)] px-3"><a class="text-sm font-semibold tracking-tight" title="Home" href="/">Claw Kitchen</a><button class="rounded-[var(--ck-radius-sm)] px-2 py-1 text-sm text-[color:var(--ck-text-secondary)] hover:bg-white/5 hover:text-[color:var(--ck-text-primary)]" title="Collapse">«</button></div><div class="border-b border-[color:var(--ck-border-subtle)] p-2"><div class="flex flex-col gap-1"><div class="px-2 pt-1 text-xs font-semibold uppercase tracking-wide text-[color:var(--ck-text-tertiary)]">Team</div><select class="w-full rounded-[var(--ck-radius-sm)] border border-white/10 bg-black/25 px-2 py-2 text-sm text-[color:var(--ck-text-primary)]"><option value="" selected="">All teams</option></select></div></div><nav class="min-h-0 flex-1 overflow-auto p-2"><div class="mt-2 px-2 pb-2 pt-2"></div><a title="Agents" class="flex items-center rounded-[var(--ck-radius-sm)] text-sm font-medium text-[color:var(--ck-text-secondary)] transition-colors hover:bg-white/5 hover:text-[color:var(--ck-text-primary)] gap-4 px-4 py-3" href="/"><span aria-hidden="true"><span class="grid size-7 place-items-center text-[color:var(--ck-text-secondary)]" aria-hidden="true"><svg viewBox="0 0 24 24" class="h-6 w-6" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 11l9-8 9 8"></path><path d="M5 10v10h14V10"></path></svg></span></span><span>Agents</span></a><a title="Recipes" class="flex items-center rounded-[var(--ck-radius-sm)] text-sm font-medium text-[color:var(--ck-text-secondary)] transition-colors hover:bg-white/5 hover:text-[color:var(--ck-text-primary)] gap-4 px-4 py-3" href="/recipes"><span aria-hidden="true"><span class="grid size-7 place-items-center text-[color:var(--ck-text-secondary)]" aria-hidden="true"><svg viewBox="0 0 24 24" class="h-6 w-6" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 4h12v16H6z"></path><path d="M9 8h6"></path><path d="M9 12h6"></path></svg></span></span><span>Recipes</span></a><a title="Tickets" class="flex items-center rounded-[var(--ck-radius-sm)] text-sm font-medium text-[color:var(--ck-text-secondary)] transition-colors hover:bg-white/5 hover:text-[color:var(--ck-text-primary)] gap-4 px-4 py-3" href="/tickets"><span aria-hidden="true"><span class="grid size-7 place-items-center text-[color:var(--ck-text-secondary)]" aria-hidden="true"><svg viewBox="0 0 24 24" class="h-6 w-6" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 7h16v4a2 2 0 0 1 0 4v4H4v-4a2 2 0 0 0 0-4z"></path></svg></span></span><span>Tickets</span></a><a title="Channels" class="flex items-center rounded-[var(--ck-radius-sm)] text-sm font-medium text-[color:var(--ck-text-secondary)] transition-colors hover:bg-white/5 hover:text-[color:var(--ck-text-primary)] gap-4 px-4 py-3" href="/channels"><span aria-hidden="true"><span class="grid size-7 place-items-center text-[color:var(--ck-text-secondary)]" aria-hidden="true"><svg viewBox="0 0 24 24" class="h-6 w-6" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 6h16"></path><path d="M4 12h16"></path><path d="M4 18h16"></path><path d="M7 9h0"></path></svg></span></span><span>Channels</span></a><a title="Goals" class="flex items-center rounded-[var(--ck-radius-sm)] text-sm font-medium text-[color:var(--ck-text-secondary)] transition-colors hover:bg-white/5 hover:text-[color:var(--ck-text-primary)] gap-4 px-4 py-3" href="/goals"><span aria-hidden="true"><span class="grid size-7 place-items-center text-[color:var(--ck-text-secondary)]" aria-hidden="true"><svg viewBox="0 0 24 24" class="h-6 w-6" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="9"></circle><path d="M12 7v5l3 3"></path></svg></span></span><span>Goals</span></a><a title="Cron jobs" class="flex items-center rounded-[var(--ck-radius-sm)] text-sm font-medium text-[color:var(--ck-text-secondary)] transition-colors hover:bg-white/5 hover:text-[color:var(--ck-text-primary)] gap-4 px-4 py-3" href="/cron-jobs"><span aria-hidden="true"><span class="grid size-7 place-items-center text-[color:var(--ck-text-secondary)]" aria-hidden="true"><svg viewBox="0 0 24 24" class="h-6 w-6" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="9"></circle><path d="M12 7v5"></path></svg></span></span><span>Cron jobs</span></a><a title="Runs" class="flex items-center rounded-[var(--ck-radius-sm)] text-sm font-medium text-[color:var(--ck-text-secondary)] transition-colors hover:bg-white/5 hover:text-[color:var(--ck-text-primary)] gap-4 px-4 py-3" href="/runs"><span aria-hidden="true"><span class="grid size-7 place-items-center text-[color:var(--ck-text-secondary)]" aria-hidden="true"><svg viewBox="0 0 24 24" class="h-6 w-6" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 19h16"></path><path d="M6 16l4-4 3 3 5-7"></path><circle cx="10" cy="12" r="1"></circle><circle cx="13" cy="15" r="1"></circle><circle cx="18" cy="8" r="1"></circle></svg></span></span><span>Runs</span></a><a title="Settings" class="flex items-center rounded-[var(--ck-radius-sm)] bg-white/10 text-sm font-medium text-[color:var(--ck-text-primary)] gap-4 px-4 py-3" href="/settings"><span aria-hidden="true"><span class="grid size-7 place-items-center text-[color:var(--ck-text-secondary)]" aria-hidden="true"><svg viewBox="0 0 24 24" class="h-6 w-6" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 15.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7Z"></path><path d="M19.4 15a7.9 7.9 0 0 0 .1-1l2-1.5-2-3.5-2.4.5a7.8 7.8 0 0 0-1.7-1L13.5 3h-4L8.6 6.5a7.8 7.8 0 0 0-1.7 1L4.5 7l-2 3.5 2 1.5a7.9 7.9 0 0 0 .1 1l-2 1.5 2 3.5 2.4-.5a7.8 7.8 0 0 0 1.7 1L10.5 21h4l.9-3.5a7.8 7.8 0 0 0 1.7-1l2.4.5 2-3.5-2-1.5Z"></path></svg></span></span><span>Settings</span></a></nav><div class="flex items-center justify-between gap-2 border-t border-[color:var(--ck-border-subtle)] p-2"><a href="https://github.com/JIGGAI/ClawRecipes/tree/main/docs" target="_blank" rel="noreferrer" class="rounded-[var(--ck-radius-sm)] px-3 py-2 text-sm font-medium text-[color:var(--ck-text-secondary)] hover:bg-white/5 hover:text-[color:var(--ck-text-primary)]" title="Docs">Docs</a><button type="button" class="grid h-9 w-9 place-items-center rounded-full border border-[color:var(--ck-border-subtle)] bg-[color:var(--ck-bg-glass)] text-[color:var(--ck-text-primary)] shadow-[var(--ck-shadow-1)] transition-colors hover:bg-[color:var(--ck-bg-glass-strong)]" aria-label="Switch to light mode" title="Switch to light mode"><span class="sr-only">Switch to light mode</span><svg class="h-4.5 w-4.5" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M21 14.2A7.8 7.8 0 0 1 9.8 3a7 7 0 1 0 11.2 11.2Z" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"></path></svg></button></div></aside><div class="min-w-0 flex-1"><main class="h-full overflow-auto p-4 md:p-6"><div class="ck-glass w-full p-6 sm:p-8"><h1 class="text-2xl font-semibold tracking-tight">Settings</h1><p class="mt-2 text-sm text-[color:var(--ck-text-secondary)]">Configuration that affects scaffold behavior and automation.</p><div class="mt-8"><h2 class="text-lg font-semibold tracking-tight">Cron installation</h2><p class="mt-2 text-sm text-[color:var(--ck-text-secondary)]">Recipes can declare cron jobs. This controls whether Kitchen installs/reconciles them during scaffold.<span class="mt-2 block text-[color:var(--ck-text-tertiary)]">Safety note: jobs can send messages / run automatically. Default should remain conservative.</span></p><div class="mt-4"><div class="space-y-3"><button type="button" disabled="" class="ck-glass w-full text-left px-4 py-3 transition-colors hover:bg-white/10 "><div class="flex items-baseline justify-between gap-3"><div class="font-medium">Off</div></div><div class="mt-1 text-sm text-[color:var(--ck-text-secondary)]">Never install or reconcile recipe-defined cron jobs.</div></button><button type="button" disabled="" class="ck-glass w-full text-left px-4 py-3 transition-colors hover:bg-white/10 border-[color:var(--ck-accent-red)]"><div class="flex items-baseline justify-between gap-3"><div class="font-medium">Prompt (default)</div><div class="text-xs font-medium text-[color:var(--ck-accent-red)]">Selected</div></div><div class="mt-1 text-sm text-[color:var(--ck-text-secondary)]">Ask at scaffold time. Default answer should be No; jobs are installed disabled unless you opt in.</div></button><button type="button" disabled="" class="ck-glass w-full text-left px-4 py-3 transition-colors hover:bg-white/10 "><div class="flex items-baseline justify-between gap-3"><div class="font-medium">On</div></div><div class="mt-1 text-sm text-[color:var(--ck-text-secondary)]">Install/reconcile jobs during scaffold (enabledByDefault controls new jobs).</div></button></div></div></div></div><!--$--><!--/$--></main></div></div><div aria-live="assertive" class="pointer-events-none fixed inset-0 z-[100] flex items-end px-4 py-6 sm:p-6"><div class="flex w-full flex-col items-start space-y-4"></div></div><script src="/_next/static/chunks/93719e85369dd453.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[49830,[\"/_next/static/chunks/b28737d6a10af30d.js\"],\"AppShell\"]\n3:I[39756,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"default\"]\n4:I[37457,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"default\"]\n5:I[39905,[\"/_next/static/chunks/b28737d6a10af30d.js\",\"/_next/static/chunks/e854e56ea8cb6236.js\"],\"default\"]\n6:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"OutletBoundary\"]\n7:\"$Sreact.suspense\"\n9:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"ViewportBoundary\"]\nb:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"MetadataBoundary\"]\nd:I[63491,[\"/_next/static/chunks/c84580993f22c17a.js\"],\"default\"]\n:HL[\"/_next/static/chunks/cfe32a0bce2eab2b.css\",\"style\"]\n:HL[\"/_next/static/media/797e433ab948586e-s.p.dbea232f.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"AKnetF2w3rOYqZBVpzsLP\",\"c\":[\"\",\"settings\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"settings\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/cfe32a0bce2eab2b.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/b28737d6a10af30d.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){try{var t=localStorage.getItem('ck-theme');var theme=(t==='light')?'light':'dark';document.documentElement.dataset.theme=theme;}catch(e){document.documentElement.dataset.theme='dark';}})();\"}}]}],[\"$\",\"body\",null,{\"suppressHydrationWarning\":true,\"className\":\"geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-2xl px-6 py-12\",\"children\":[[\"$\",\"h1\",null,{\"className\":\"text-xl font-semibold\",\"children\":\"Page not found\"}],[\"$\",\"p\",null,{\"className\":\"mt-2 text-sm text-[color:var(--ck-text-secondary)]\",\"children\":\"The page you requested does not exist.\"}]]}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"div\",null,{\"className\":\"ck-glass w-full p-6 sm:p-8\",\"children\":[[\"$\",\"h1\",null,{\"className\":\"text-2xl font-semibold tracking-tight\",\"children\":\"Settings\"}],[\"$\",\"p\",null,{\"className\":\"mt-2 text-sm text-[color:var(--ck-text-secondary)]\",\"children\":\"Configuration that affects scaffold behavior and automation.\"}],[\"$\",\"div\",null,{\"className\":\"mt-8\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-lg font-semibold tracking-tight\",\"children\":\"Cron installation\"}],[\"$\",\"p\",null,{\"className\":\"mt-2 text-sm text-[color:var(--ck-text-secondary)]\",\"children\":[\"Recipes can declare cron jobs. This controls whether Kitchen installs/reconciles them during scaffold.\",[\"$\",\"span\",null,{\"className\":\"mt-2 block text-[color:var(--ck-text-tertiary)]\",\"children\":\"Safety note: jobs can send messages / run automatically. Default should remain conservative.\"}]]}],[\"$\",\"div\",null,{\"className\":\"mt-4\",\"children\":[\"$\",\"$L5\",null,{}]}]]}]]}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/e854e56ea8cb6236.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@8\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L9\",null,{\"children\":\"$La\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lc\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$d\",[]],\"S\":true}\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"e:I[27201,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"IconMark\"]\n8:null\nc:[[\"$\",\"title\",\"0\",{\"children\":\"Claw Kitchen\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Local-first UI for authoring ClawRecipes recipes and scaffolding agents/teams.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"manifest\",\"href\":\"/manifest.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.0b3bf435.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\",\"sizes\":\"any\"}],[\"$\",\"link\",\"5\",{\"rel\":\"icon\",\"href\":\"/favicon-16x16.png\",\"sizes\":\"16x16\",\"type\":\"image/png\"}],[\"$\",\"link\",\"6\",{\"rel\":\"icon\",\"href\":\"/favicon-32x32.png\",\"sizes\":\"32x32\",\"type\":\"image/png\"}],[\"$\",\"link\",\"7\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-touch-icon.png\"}],[\"$\",\"$Le\",\"8\",{}]]\n"])</script></body></html>
@@ -11,7 +11,7 @@ d:I[63491,["/_next/static/chunks/c84580993f22c17a.js"],"default"]
11
11
  :HL["/_next/static/chunks/cfe32a0bce2eab2b.css","style"]
12
12
  :HL["/_next/static/media/797e433ab948586e-s.p.dbea232f.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
13
13
  :HL["/_next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
14
- 0:{"P":null,"b":"rZ9CCEgFiMjcIjsKtAtE0","c":["","settings"],"q":"","i":false,"f":[[["",{"children":["settings",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/cfe32a0bce2eab2b.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/b28737d6a10af30d.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"(function(){try{var t=localStorage.getItem('ck-theme');var theme=(t==='light')?'light':'dark';document.documentElement.dataset.theme=theme;}catch(e){document.documentElement.dataset.theme='dark';}})();"}}]}],["$","body",null,{"suppressHydrationWarning":true,"className":"geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","div",null,{"className":"mx-auto max-w-2xl px-6 py-12","children":[["$","h1",null,{"className":"text-xl font-semibold","children":"Page not found"}],["$","p",null,{"className":"mt-2 text-sm text-[color:var(--ck-text-secondary)]","children":"The page you requested does not exist."}]]}],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"className":"ck-glass w-full p-6 sm:p-8","children":[["$","h1",null,{"className":"text-2xl font-semibold tracking-tight","children":"Settings"}],["$","p",null,{"className":"mt-2 text-sm text-[color:var(--ck-text-secondary)]","children":"Configuration that affects scaffold behavior and automation."}],["$","div",null,{"className":"mt-8","children":[["$","h2",null,{"className":"text-lg font-semibold tracking-tight","children":"Cron installation"}],["$","p",null,{"className":"mt-2 text-sm text-[color:var(--ck-text-secondary)]","children":["Recipes can declare cron jobs. This controls whether Kitchen installs/reconciles them during scaffold.",["$","span",null,{"className":"mt-2 block text-[color:var(--ck-text-tertiary)]","children":"Safety note: jobs can send messages / run automatically. Default should remain conservative."}]]}],["$","div",null,{"className":"mt-4","children":["$","$L5",null,{}]}]]}]]}],[["$","script","script-0",{"src":"/_next/static/chunks/e854e56ea8cb6236.js","async":true,"nonce":"$undefined"}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L9",null,{"children":"$La"}],["$","div",null,{"hidden":true,"children":["$","$Lb",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":"$Lc"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$d",[]],"S":true}
14
+ 0:{"P":null,"b":"AKnetF2w3rOYqZBVpzsLP","c":["","settings"],"q":"","i":false,"f":[[["",{"children":["settings",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/cfe32a0bce2eab2b.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/b28737d6a10af30d.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"(function(){try{var t=localStorage.getItem('ck-theme');var theme=(t==='light')?'light':'dark';document.documentElement.dataset.theme=theme;}catch(e){document.documentElement.dataset.theme='dark';}})();"}}]}],["$","body",null,{"suppressHydrationWarning":true,"className":"geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","div",null,{"className":"mx-auto max-w-2xl px-6 py-12","children":[["$","h1",null,{"className":"text-xl font-semibold","children":"Page not found"}],["$","p",null,{"className":"mt-2 text-sm text-[color:var(--ck-text-secondary)]","children":"The page you requested does not exist."}]]}],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"className":"ck-glass w-full p-6 sm:p-8","children":[["$","h1",null,{"className":"text-2xl font-semibold tracking-tight","children":"Settings"}],["$","p",null,{"className":"mt-2 text-sm text-[color:var(--ck-text-secondary)]","children":"Configuration that affects scaffold behavior and automation."}],["$","div",null,{"className":"mt-8","children":[["$","h2",null,{"className":"text-lg font-semibold tracking-tight","children":"Cron installation"}],["$","p",null,{"className":"mt-2 text-sm text-[color:var(--ck-text-secondary)]","children":["Recipes can declare cron jobs. This controls whether Kitchen installs/reconciles them during scaffold.",["$","span",null,{"className":"mt-2 block text-[color:var(--ck-text-tertiary)]","children":"Safety note: jobs can send messages / run automatically. Default should remain conservative."}]]}],["$","div",null,{"className":"mt-4","children":["$","$L5",null,{}]}]]}]]}],[["$","script","script-0",{"src":"/_next/static/chunks/e854e56ea8cb6236.js","async":true,"nonce":"$undefined"}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L9",null,{"children":"$La"}],["$","div",null,{"hidden":true,"children":["$","$Lb",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":"$Lc"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$d",[]],"S":true}
15
15
  a:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
16
16
  e:I[27201,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"IconMark"]
17
17
  8:null
@@ -11,7 +11,7 @@ d:I[63491,["/_next/static/chunks/c84580993f22c17a.js"],"default"]
11
11
  :HL["/_next/static/chunks/cfe32a0bce2eab2b.css","style"]
12
12
  :HL["/_next/static/media/797e433ab948586e-s.p.dbea232f.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
13
13
  :HL["/_next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
14
- 0:{"P":null,"b":"rZ9CCEgFiMjcIjsKtAtE0","c":["","settings"],"q":"","i":false,"f":[[["",{"children":["settings",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/cfe32a0bce2eab2b.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/b28737d6a10af30d.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"(function(){try{var t=localStorage.getItem('ck-theme');var theme=(t==='light')?'light':'dark';document.documentElement.dataset.theme=theme;}catch(e){document.documentElement.dataset.theme='dark';}})();"}}]}],["$","body",null,{"suppressHydrationWarning":true,"className":"geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","div",null,{"className":"mx-auto max-w-2xl px-6 py-12","children":[["$","h1",null,{"className":"text-xl font-semibold","children":"Page not found"}],["$","p",null,{"className":"mt-2 text-sm text-[color:var(--ck-text-secondary)]","children":"The page you requested does not exist."}]]}],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"className":"ck-glass w-full p-6 sm:p-8","children":[["$","h1",null,{"className":"text-2xl font-semibold tracking-tight","children":"Settings"}],["$","p",null,{"className":"mt-2 text-sm text-[color:var(--ck-text-secondary)]","children":"Configuration that affects scaffold behavior and automation."}],["$","div",null,{"className":"mt-8","children":[["$","h2",null,{"className":"text-lg font-semibold tracking-tight","children":"Cron installation"}],["$","p",null,{"className":"mt-2 text-sm text-[color:var(--ck-text-secondary)]","children":["Recipes can declare cron jobs. This controls whether Kitchen installs/reconciles them during scaffold.",["$","span",null,{"className":"mt-2 block text-[color:var(--ck-text-tertiary)]","children":"Safety note: jobs can send messages / run automatically. Default should remain conservative."}]]}],["$","div",null,{"className":"mt-4","children":["$","$L5",null,{}]}]]}]]}],[["$","script","script-0",{"src":"/_next/static/chunks/e854e56ea8cb6236.js","async":true,"nonce":"$undefined"}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L9",null,{"children":"$La"}],["$","div",null,{"hidden":true,"children":["$","$Lb",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":"$Lc"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$d",[]],"S":true}
14
+ 0:{"P":null,"b":"AKnetF2w3rOYqZBVpzsLP","c":["","settings"],"q":"","i":false,"f":[[["",{"children":["settings",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/cfe32a0bce2eab2b.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/b28737d6a10af30d.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"(function(){try{var t=localStorage.getItem('ck-theme');var theme=(t==='light')?'light':'dark';document.documentElement.dataset.theme=theme;}catch(e){document.documentElement.dataset.theme='dark';}})();"}}]}],["$","body",null,{"suppressHydrationWarning":true,"className":"geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","div",null,{"className":"mx-auto max-w-2xl px-6 py-12","children":[["$","h1",null,{"className":"text-xl font-semibold","children":"Page not found"}],["$","p",null,{"className":"mt-2 text-sm text-[color:var(--ck-text-secondary)]","children":"The page you requested does not exist."}]]}],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"className":"ck-glass w-full p-6 sm:p-8","children":[["$","h1",null,{"className":"text-2xl font-semibold tracking-tight","children":"Settings"}],["$","p",null,{"className":"mt-2 text-sm text-[color:var(--ck-text-secondary)]","children":"Configuration that affects scaffold behavior and automation."}],["$","div",null,{"className":"mt-8","children":[["$","h2",null,{"className":"text-lg font-semibold tracking-tight","children":"Cron installation"}],["$","p",null,{"className":"mt-2 text-sm text-[color:var(--ck-text-secondary)]","children":["Recipes can declare cron jobs. This controls whether Kitchen installs/reconciles them during scaffold.",["$","span",null,{"className":"mt-2 block text-[color:var(--ck-text-tertiary)]","children":"Safety note: jobs can send messages / run automatically. Default should remain conservative."}]]}],["$","div",null,{"className":"mt-4","children":["$","$L5",null,{}]}]]}]]}],[["$","script","script-0",{"src":"/_next/static/chunks/e854e56ea8cb6236.js","async":true,"nonce":"$undefined"}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L9",null,{"children":"$La"}],["$","div",null,{"hidden":true,"children":["$","$Lb",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":"$Lc"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$d",[]],"S":true}
15
15
  a:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
16
16
  e:I[27201,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"IconMark"]
17
17
  8:null
@@ -3,4 +3,4 @@
3
3
  3:I[97367,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"MetadataBoundary"]
4
4
  4:"$Sreact.suspense"
5
5
  5:I[27201,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"IconMark"]
6
- 0:{"buildId":"rZ9CCEgFiMjcIjsKtAtE0","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Claw Kitchen"}],["$","meta","1",{"name":"description","content":"Local-first UI for authoring ClawRecipes recipes and scaffolding agents/teams."}],["$","link","2",{"rel":"manifest","href":"/manifest.webmanifest"}],["$","link","3",{"rel":"icon","href":"/favicon.ico?favicon.0b3bf435.ico","sizes":"256x256","type":"image/x-icon"}],["$","link","4",{"rel":"icon","href":"/favicon.ico","sizes":"any"}],["$","link","5",{"rel":"icon","href":"/favicon-16x16.png","sizes":"16x16","type":"image/png"}],["$","link","6",{"rel":"icon","href":"/favicon-32x32.png","sizes":"32x32","type":"image/png"}],["$","link","7",{"rel":"apple-touch-icon","href":"/apple-touch-icon.png"}],["$","$L5","8",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false}
6
+ 0:{"buildId":"AKnetF2w3rOYqZBVpzsLP","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Claw Kitchen"}],["$","meta","1",{"name":"description","content":"Local-first UI for authoring ClawRecipes recipes and scaffolding agents/teams."}],["$","link","2",{"rel":"manifest","href":"/manifest.webmanifest"}],["$","link","3",{"rel":"icon","href":"/favicon.ico?favicon.0b3bf435.ico","sizes":"256x256","type":"image/x-icon"}],["$","link","4",{"rel":"icon","href":"/favicon.ico","sizes":"any"}],["$","link","5",{"rel":"icon","href":"/favicon-16x16.png","sizes":"16x16","type":"image/png"}],["$","link","6",{"rel":"icon","href":"/favicon-32x32.png","sizes":"32x32","type":"image/png"}],["$","link","7",{"rel":"apple-touch-icon","href":"/apple-touch-icon.png"}],["$","$L5","8",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false}
@@ -3,4 +3,4 @@
3
3
  3:I[39756,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"default"]
4
4
  4:I[37457,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"default"]
5
5
  :HL["/_next/static/chunks/cfe32a0bce2eab2b.css","style"]
6
- 0:{"buildId":"rZ9CCEgFiMjcIjsKtAtE0","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/cfe32a0bce2eab2b.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/b28737d6a10af30d.js","async":true}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"(function(){try{var t=localStorage.getItem('ck-theme');var theme=(t==='light')?'light':'dark';document.documentElement.dataset.theme=theme;}catch(e){document.documentElement.dataset.theme='dark';}})();"}}]}],["$","body",null,{"suppressHydrationWarning":true,"className":"geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[["$","div",null,{"className":"mx-auto max-w-2xl px-6 py-12","children":[["$","h1",null,{"className":"text-xl font-semibold","children":"Page not found"}],["$","p",null,{"className":"mt-2 text-sm text-[color:var(--ck-text-secondary)]","children":"The page you requested does not exist."}]]}],[]]}]}]}]]}]]}],"loading":null,"isPartial":false}
6
+ 0:{"buildId":"AKnetF2w3rOYqZBVpzsLP","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/cfe32a0bce2eab2b.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/b28737d6a10af30d.js","async":true}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"(function(){try{var t=localStorage.getItem('ck-theme');var theme=(t==='light')?'light':'dark';document.documentElement.dataset.theme=theme;}catch(e){document.documentElement.dataset.theme='dark';}})();"}}]}],["$","body",null,{"suppressHydrationWarning":true,"className":"geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[["$","div",null,{"className":"mx-auto max-w-2xl px-6 py-12","children":[["$","h1",null,{"className":"text-xl font-semibold","children":"Page not found"}],["$","p",null,{"className":"mt-2 text-sm text-[color:var(--ck-text-secondary)]","children":"The page you requested does not exist."}]]}],[]]}]}]}]]}]]}],"loading":null,"isPartial":false}
@@ -1,4 +1,4 @@
1
1
  :HL["/_next/static/chunks/cfe32a0bce2eab2b.css","style"]
2
2
  :HL["/_next/static/media/797e433ab948586e-s.p.dbea232f.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
3
3
  :HL["/_next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
4
- 0:{"buildId":"rZ9CCEgFiMjcIjsKtAtE0","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"settings","paramType":null,"paramKey":"settings","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300}
4
+ 0:{"buildId":"AKnetF2w3rOYqZBVpzsLP","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"settings","paramType":null,"paramKey":"settings","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300}
@@ -2,5 +2,5 @@
2
2
  2:I[39905,["/_next/static/chunks/b28737d6a10af30d.js","/_next/static/chunks/e854e56ea8cb6236.js"],"default"]
3
3
  3:I[97367,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"OutletBoundary"]
4
4
  4:"$Sreact.suspense"
5
- 0:{"buildId":"rZ9CCEgFiMjcIjsKtAtE0","rsc":["$","$1","c",{"children":[["$","div",null,{"className":"ck-glass w-full p-6 sm:p-8","children":[["$","h1",null,{"className":"text-2xl font-semibold tracking-tight","children":"Settings"}],["$","p",null,{"className":"mt-2 text-sm text-[color:var(--ck-text-secondary)]","children":"Configuration that affects scaffold behavior and automation."}],["$","div",null,{"className":"mt-8","children":[["$","h2",null,{"className":"text-lg font-semibold tracking-tight","children":"Cron installation"}],["$","p",null,{"className":"mt-2 text-sm text-[color:var(--ck-text-secondary)]","children":["Recipes can declare cron jobs. This controls whether Kitchen installs/reconciles them during scaffold.",["$","span",null,{"className":"mt-2 block text-[color:var(--ck-text-tertiary)]","children":"Safety note: jobs can send messages / run automatically. Default should remain conservative."}]]}],["$","div",null,{"className":"mt-4","children":["$","$L2",null,{}]}]]}]]}],[["$","script","script-0",{"src":"/_next/static/chunks/e854e56ea8cb6236.js","async":true}]],["$","$L3",null,{"children":["$","$4",null,{"name":"Next.MetadataOutlet","children":"$@5"}]}]]}],"loading":null,"isPartial":false}
5
+ 0:{"buildId":"AKnetF2w3rOYqZBVpzsLP","rsc":["$","$1","c",{"children":[["$","div",null,{"className":"ck-glass w-full p-6 sm:p-8","children":[["$","h1",null,{"className":"text-2xl font-semibold tracking-tight","children":"Settings"}],["$","p",null,{"className":"mt-2 text-sm text-[color:var(--ck-text-secondary)]","children":"Configuration that affects scaffold behavior and automation."}],["$","div",null,{"className":"mt-8","children":[["$","h2",null,{"className":"text-lg font-semibold tracking-tight","children":"Cron installation"}],["$","p",null,{"className":"mt-2 text-sm text-[color:var(--ck-text-secondary)]","children":["Recipes can declare cron jobs. This controls whether Kitchen installs/reconciles them during scaffold.",["$","span",null,{"className":"mt-2 block text-[color:var(--ck-text-tertiary)]","children":"Safety note: jobs can send messages / run automatically. Default should remain conservative."}]]}],["$","div",null,{"className":"mt-4","children":["$","$L2",null,{}]}]]}]]}],[["$","script","script-0",{"src":"/_next/static/chunks/e854e56ea8cb6236.js","async":true}]],["$","$L3",null,{"children":["$","$4",null,{"name":"Next.MetadataOutlet","children":"$@5"}]}]]}],"loading":null,"isPartial":false}
6
6
  5:null
@@ -1,4 +1,4 @@
1
1
  1:"$Sreact.fragment"
2
2
  2:I[39756,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"default"]
3
3
  3:I[37457,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"default"]
4
- 0:{"buildId":"rZ9CCEgFiMjcIjsKtAtE0","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false}
4
+ 0:{"buildId":"AKnetF2w3rOYqZBVpzsLP","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false}
@@ -1,2 +1,2 @@
1
1
  globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {};
2
- globalThis.__RSC_MANIFEST["/teams/[teamId]/workflows/[workflowId]/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/next/dist/esm/client/components/layout-router.js <module evaluation>":{"id":39756,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/layout-router.js":{"id":39756,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js <module evaluation>":{"id":37457,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":37457,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js <module evaluation>":{"id":47257,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js":{"id":47257,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js <module evaluation>":{"id":92825,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js":{"id":92825,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js <module evaluation>":{"id":68017,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":68017,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js <module evaluation>":{"id":27201,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":27201,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js <module evaluation>":{"id":97367,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":97367,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/src/app/global-error.tsx <module evaluation>":{"id":63491,"name":"*","chunks":["/_next/static/chunks/c84580993f22c17a.js"],"async":false},"[project]/src/app/global-error.tsx":{"id":63491,"name":"*","chunks":["/_next/static/chunks/c84580993f22c17a.js"],"async":false},"[project]/src/components/AppShell.tsx <module evaluation>":{"id":49830,"name":"*","chunks":["/_next/static/chunks/b28737d6a10af30d.js"],"async":false},"[project]/src/components/AppShell.tsx":{"id":49830,"name":"*","chunks":["/_next/static/chunks/b28737d6a10af30d.js"],"async":false},"[project]/src/app/teams/[teamId]/workflows/[workflowId]/workflows-editor-client.tsx <module evaluation>":{"id":87090,"name":"*","chunks":["/_next/static/chunks/b28737d6a10af30d.js","/_next/static/chunks/c27f767f683b017a.js","/_next/static/chunks/8683ed0404be8cb7.js"],"async":false},"[project]/src/app/teams/[teamId]/workflows/[workflowId]/workflows-editor-client.tsx":{"id":87090,"name":"*","chunks":["/_next/static/chunks/b28737d6a10af30d.js","/_next/static/chunks/c27f767f683b017a.js","/_next/static/chunks/8683ed0404be8cb7.js"],"async":false}},"ssrModuleMapping":{"39756":{"*":{"id":2420,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d4cb2ba._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"37457":{"*":{"id":24017,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d4cb2ba._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"47257":{"*":{"id":77682,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d4cb2ba._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"92825":{"*":{"id":97296,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d4cb2ba._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"68017":{"*":{"id":61660,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d4cb2ba._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"27201":{"*":{"id":60704,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d4cb2ba._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"97367":{"*":{"id":90574,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d4cb2ba._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"63491":{"*":{"id":37006,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__9e1ab064._.js"],"async":false}},"49830":{"*":{"id":15149,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__471bc2e7._.js","server/chunks/ssr/node_modules_ea845e5f._.js","server/chunks/ssr/node_modules_next_920e7746._.js"],"async":false}},"87090":{"*":{"id":13833,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__471bc2e7._.js","server/chunks/ssr/node_modules_ea845e5f._.js","server/chunks/ssr/node_modules_next_920e7746._.js","server/chunks/ssr/_1ee3bd7b._.js","server/chunks/ssr/b1a17_app_teams_[teamId]_workflows_[workflowId]_workflows-editor-client_tsx_5e714aa2._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"39756":{"*":{"id":26768,"name":"*","chunks":[],"async":false}},"37457":{"*":{"id":17910,"name":"*","chunks":[],"async":false}},"47257":{"*":{"id":92977,"name":"*","chunks":[],"async":false}},"92825":{"*":{"id":48552,"name":"*","chunks":[],"async":false}},"68017":{"*":{"id":83919,"name":"*","chunks":[],"async":false}},"27201":{"*":{"id":40771,"name":"*","chunks":[],"async":false}},"97367":{"*":{"id":24150,"name":"*","chunks":[],"async":false}},"63491":{"*":{"id":30269,"name":"*","chunks":[],"async":false}},"49830":{"*":{"id":43297,"name":"*","chunks":[],"async":false}},"87090":{"*":{"id":49752,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/src/app/favicon.ico":[],"[project]/src/app/global-error":[],"[project]/src/app/layout":[{"path":"static/chunks/cfe32a0bce2eab2b.css","inlined":false}],"[project]/src/app/teams/[teamId]/workflows/[workflowId]/page":[{"path":"static/chunks/cfe32a0bce2eab2b.css","inlined":false}]},"entryJSFiles":{"[project]/src/app/favicon.ico":["static/chunks/ff1a16fafef87110.js","static/chunks/d2be314c3ece3fbe.js"],"[project]/src/app/global-error":["static/chunks/c84580993f22c17a.js"],"[project]/src/app/layout":["static/chunks/b28737d6a10af30d.js"],"[project]/src/app/teams/[teamId]/workflows/[workflowId]/page":["static/chunks/b28737d6a10af30d.js","static/chunks/c27f767f683b017a.js","static/chunks/8683ed0404be8cb7.js"]}}
2
+ globalThis.__RSC_MANIFEST["/teams/[teamId]/workflows/[workflowId]/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/next/dist/esm/client/components/layout-router.js <module evaluation>":{"id":39756,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/layout-router.js":{"id":39756,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js <module evaluation>":{"id":37457,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":37457,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js <module evaluation>":{"id":47257,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js":{"id":47257,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js <module evaluation>":{"id":92825,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js":{"id":92825,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js <module evaluation>":{"id":68017,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":68017,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js <module evaluation>":{"id":27201,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":27201,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js <module evaluation>":{"id":97367,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":97367,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"async":false},"[project]/src/app/global-error.tsx <module evaluation>":{"id":63491,"name":"*","chunks":["/_next/static/chunks/c84580993f22c17a.js"],"async":false},"[project]/src/app/global-error.tsx":{"id":63491,"name":"*","chunks":["/_next/static/chunks/c84580993f22c17a.js"],"async":false},"[project]/src/components/AppShell.tsx <module evaluation>":{"id":49830,"name":"*","chunks":["/_next/static/chunks/b28737d6a10af30d.js"],"async":false},"[project]/src/components/AppShell.tsx":{"id":49830,"name":"*","chunks":["/_next/static/chunks/b28737d6a10af30d.js"],"async":false},"[project]/src/app/teams/[teamId]/workflows/[workflowId]/workflows-editor-client.tsx <module evaluation>":{"id":87090,"name":"*","chunks":["/_next/static/chunks/b28737d6a10af30d.js","/_next/static/chunks/c27f767f683b017a.js","/_next/static/chunks/42b3230688d0834c.js"],"async":false},"[project]/src/app/teams/[teamId]/workflows/[workflowId]/workflows-editor-client.tsx":{"id":87090,"name":"*","chunks":["/_next/static/chunks/b28737d6a10af30d.js","/_next/static/chunks/c27f767f683b017a.js","/_next/static/chunks/42b3230688d0834c.js"],"async":false}},"ssrModuleMapping":{"39756":{"*":{"id":2420,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d4cb2ba._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"37457":{"*":{"id":24017,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d4cb2ba._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"47257":{"*":{"id":77682,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d4cb2ba._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"92825":{"*":{"id":97296,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d4cb2ba._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"68017":{"*":{"id":61660,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d4cb2ba._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"27201":{"*":{"id":60704,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d4cb2ba._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"97367":{"*":{"id":90574,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__0d4cb2ba._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"63491":{"*":{"id":37006,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__9e1ab064._.js"],"async":false}},"49830":{"*":{"id":15149,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__471bc2e7._.js","server/chunks/ssr/node_modules_ea845e5f._.js","server/chunks/ssr/node_modules_next_920e7746._.js"],"async":false}},"87090":{"*":{"id":13833,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__471bc2e7._.js","server/chunks/ssr/node_modules_ea845e5f._.js","server/chunks/ssr/node_modules_next_920e7746._.js","server/chunks/ssr/_1ee3bd7b._.js","server/chunks/ssr/b1a17_app_teams_[teamId]_workflows_[workflowId]_workflows-editor-client_tsx_5e714aa2._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"39756":{"*":{"id":26768,"name":"*","chunks":[],"async":false}},"37457":{"*":{"id":17910,"name":"*","chunks":[],"async":false}},"47257":{"*":{"id":92977,"name":"*","chunks":[],"async":false}},"92825":{"*":{"id":48552,"name":"*","chunks":[],"async":false}},"68017":{"*":{"id":83919,"name":"*","chunks":[],"async":false}},"27201":{"*":{"id":40771,"name":"*","chunks":[],"async":false}},"97367":{"*":{"id":24150,"name":"*","chunks":[],"async":false}},"63491":{"*":{"id":30269,"name":"*","chunks":[],"async":false}},"49830":{"*":{"id":43297,"name":"*","chunks":[],"async":false}},"87090":{"*":{"id":49752,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/src/app/favicon.ico":[],"[project]/src/app/global-error":[],"[project]/src/app/layout":[{"path":"static/chunks/cfe32a0bce2eab2b.css","inlined":false}],"[project]/src/app/teams/[teamId]/workflows/[workflowId]/page":[{"path":"static/chunks/cfe32a0bce2eab2b.css","inlined":false}]},"entryJSFiles":{"[project]/src/app/favicon.ico":["static/chunks/ff1a16fafef87110.js","static/chunks/d2be314c3ece3fbe.js"],"[project]/src/app/global-error":["static/chunks/c84580993f22c17a.js"],"[project]/src/app/layout":["static/chunks/b28737d6a10af30d.js"],"[project]/src/app/teams/[teamId]/workflows/[workflowId]/page":["static/chunks/b28737d6a10af30d.js","static/chunks/c27f767f683b017a.js","static/chunks/42b3230688d0834c.js"]}}
@@ -1,3 +1,3 @@
1
- module.exports=[90736,e=>{"use strict";var t=e.i(47909),r=e.i(74017),o=e.i(96250),a=e.i(59756),n=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),b=e.i(85067),x=e.i(41674),I=e.i(40317),E=e.i(76509),R=e.i(5003),j=e.i(7367),C=e.i(63715),N=e.i(56995);let O=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 T(e,t){(0,N.assertSafeWorkflowId)(t);let r=await (0,j.getTeamWorkspaceDir)(e);return A.default.join(r,O)}function q(e){return`${e}.run.json`}async function P(e,t){let r=(0,N.assertSafeWorkflowId)(t),o=await T(e,r),a=[];try{for(let t of(await v.default.readdir(o,{withFileTypes:!0})).filter(e=>e.isDirectory()).map(e=>e.name).sort()){let n=A.default.join(o,t,"run.json");try{let o=await v.default.readFile(n,"utf8"),i=JSON.parse(o);D(e,r,i,t).workflowId===r&&a.push(t)}catch{}}}catch{}try{let{files:t}=await (0,C.readdirFiles)(o,".run.json",!0);for(let n of t){let t=n.replace(/\.run\.json$/i,"");try{let i=await v.default.readFile(A.default.join(o,n),"utf8"),s=JSON.parse(i);D(e,r,s,t).workflowId===r&&a.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)a.push(e.replace(/\.run\.json$/i,""))}catch{}return{ok:!0,dir:o,runIds:Array.from(new Set(a)).sort().reverse()}}async function F(e,t,r){let o=(0,N.assertSafeWorkflowId)(t),a=_(r),n=await T(e,o),i=A.default.join(n,a,"run.json");try{let t=await v.default.readFile(i,"utf8"),r=JSON.parse(t),s=D(e,o,r,a);if(Array.isArray(s.nodes)&&s.nodes.length){let e=A.default.join(n,a,"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 a=t[1];if(!a)continue;let n=r.get(a)??[];n.push(A.default.join(e,o)),r.set(a,n)}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(n,q(a));try{let t=await v.default.readFile(s,"utf8"),r=JSON.parse(t);return{ok:!0,path:s,run:D(e,o,r,a)}}catch(t){if(t&&"object"==typeof t&&"ENOENT"===t.code){let t=A.default.join(n,o,q(a)),r=JSON.parse(await v.default.readFile(t,"utf8"));return{ok:!0,path:t,run:D(e,o,r,a)}}throw t}}async function $(e,t,r){let o=(0,N.assertSafeWorkflowId)(t),a=_(r.id),n=await T(e,o);await v.default.mkdir(n,{recursive:!0});let i=A.default.join(n,q(a)),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(n,o);await v.default.mkdir(e,{recursive:!0}),s=A.default.join(e,q(a))}}catch{}let l={...r,schema:"clawkitchen.workflow-run.v1",id:a,workflowId:o,teamId:e};return await v.default.writeFile(s,JSON.stringify(l,null,2)+"\n","utf8"),{ok:!0,path:s}}function D(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 a=r.workflow&&"object"==typeof r.workflow?r.workflow:{},n="string"==typeof a.file?a.file:"",i=n?A.default.basename(n).replace(/\.workflow\.json$/i,""):"",s="string"==typeof a.id&&a.id?a.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,a=["pending","running","waiting","success","error","skipped"].includes(o)?o:"pending",n="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:a,...i?{startedAt:i}:{},...s?{endedAt:s}:{},...void 0!==e.output?{output:e.output}:{},...void 0!==n?{error:n}:{}}}).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 B(){return new Date().toISOString()}async function M(e,t,r){let o=(0,j.assertSafeRelativeFileName)(t),a=await (0,j.getTeamWorkspaceDir)(e),n=A.default.join(a,o);return await v.default.mkdir(A.default.dirname(n),{recursive:!0}),await v.default.appendFile(n,r,"utf8"),{full:n}}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 a=t&&t.length?t:e.split(/\s+/).filter(Boolean),n=a[0],i=a.slice(1);return await new Promise((e,t)=>{let a=(0,S.spawn)(n,i,{cwd:r,shell:!1,stdio:["ignore","pipe","pipe"]}),s="",l="";a.stdout?.on("data",e=>{s.length<65536&&(s+=e.toString("utf8").slice(0,65536-s.length))}),a.stderr?.on("data",e=>{l.length<65536&&(l+=e.toString("utf8").slice(0,65536-l.length))});let d=setTimeout(()=>{a.kill("SIGKILL")},Math.max(0,o));a.on("error",e=>{clearTimeout(d),t(e)}),a.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:a,endedAt:n}){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:n,"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:a,endedAt:n,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,j.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,E.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,I.errorMessage)(e)))i=await K({command:h,argv:k,cwd:r,timeoutMs:1e3*g.timeout});else throw e}return{nodeId:o,status:"success",startedAt:a,endedAt:n,output:{tool:l,command:h,result:i}}}return{nodeId:o,status:"success",startedAt:a,endedAt:n,output:{tool:l,result:"(no-op: tool not implemented)"}}}async function L({teamId:e,workflow:t,run:r,approvalNodeId:o,decidedAt:a}){let n=Array.isArray(t.nodes)?t.nodes:[],i=n.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=n.findIndex(e=>e.id===o.nodeId);if(!(s>=0&&s>i)||"pending"!==o.status)return o;let l=s>=0?n[s]:void 0,d=o.startedAt??a;if(l?.type==="tool")try{return await J({teamId:e,workflow:t,run:r,nodeId:o.nodeId,startedAt:d,endedAt:a})}catch(e){return{...o,status:"error",startedAt:d,endedAt:a,output:{error:(0,I.errorMessage)(e)}}}return{...o,status:"success",startedAt:d,endedAt:a,output:o.output??{note:"(resumed after approval)"}}})):[];return{...r,nodes:s}}async function z(e){return(0,x.handleWorkflowRunsGet)(e,F,P)}async function G(e){let t=await (0,b.parseJsonBody)(e);if(t instanceof y.NextResponse)return t;let{body:r}=t,o=String(r.teamId??"").trim(),a=String(r.workflowId??"").trim(),n=String(r.mode??"").trim(),i=String(r.action??"").trim(),s=String(r.runId??"").trim(),l="string"==typeof r.note?r.note:void 0,d="string"==typeof r.decidedBy?r.decidedBy:void 0;if(!o)return y.NextResponse.json({ok:!1,error:"teamId is required"},{status:400});if(!a)return y.NextResponse.json({ok:!1,error:"workflowId is required"},{status:400});try{if(i){if(!s)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 F(o,a,s)).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=B(),n="approve"===i?"approved":"request_changes"===i?"changes_requested":"canceled",u="approved"===n?"success":"canceled"===n?"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"===n?"success":"canceled"===n?"error":"waiting",endedAt:"changes_requested"===n?e.endedAt:r,output:{...t,decision:n,note:l,decidedBy:d}}}return"canceled"===n&&"pending"===e.status?{...e,status:"skipped",startedAt:e.startedAt??r,endedAt:r,output:e.output??{note:"skipped due to cancel"}}:e}):[],p={...e,status:u,endedAt:"success"===u||"canceled"===u?r:e.endedAt,approval:{nodeId:t,state:n,requestedAt:e.approval?.requestedAt,decidedAt:"changes_requested"===n?void 0:r,note:l,decidedBy:d},nodes:c},f=p;if("approve"===i)try{let e=(await (0,N.readWorkflow)(o,a)).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,b.jsonOkRest)({...await $(o,a,f),runId:e.id})}let e=`run-${B().replace(/[:.]/g,"-")}-${k.default.randomBytes(3).toString("hex")}`.toLowerCase(),t="sample"===n?await (async()=>{let t=(await (0,N.readWorkflow)(o,a)).workflow,r=Date.now(),n=t.meta&&"object"==typeof t.meta&&"templateId"in t.meta?t.meta.templateId:void 0,i="marketing-cadence-v1"===n,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=t.nodes.findIndex(e=>"human_approval"===e.type),d=l>=0?t.nodes[l]?.id:void 0,u=t.nodes.map((e,t)=>{let o=new Date(r+350*t).toISOString(),a=new Date(r+350*t+200).toISOString(),n=l<0||t<l,u=!!d&&e.id===d,c={nodeId:e.id,status:n?"success":l>=0&&t>l?"pending":u?"waiting":"success",startedAt:o,endedAt:n?a:void 0};if("llm"===e.type){let t=n&&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:n?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:n?{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:e,workflowId:a,startedAt:new Date(r).toISOString(),endedAt:d?void 0:new Date(r+350*t.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:e,target:r}=await U({workflow:t});if(r)try{await H({teamId:o,workflow:t,run:p,approvalNodeId:d}),p.approval={...p.approval,outbound:{provider:e,target:r,sentAt:B()}}}catch(t){p.approval={...p.approval,outbound:{provider:e,target:r,error:(0,I.errorMessage)(t),attemptedAt:B()}}}}return p})():await (async()=>{let e=n||"enqueue";if(!["execute","enqueue","run_now","sample"].includes(e))throw Error(`Unsupported mode: ${e}`);let t=(await (0,N.readWorkflow)(o,a)).workflow,r=(Array.isArray(t.nodes)?t.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(r.length)throw Error(`All nodes must be assigned to an agent. Missing agentId on: ${r.join(", ")}`);let i=`${a}.workflow.json`,s=await (0,R.runOpenClaw)(["recipes","workflows","run","--team-id",o,"--workflow-file",i]);if(!s.ok)throw Error(s.stderr||s.stdout||"Failed to enqueue workflow run");let l=JSON.parse(String(s.stdout??"{}")),d=String(l.runId??"").trim();if(!d)throw Error("Enqueue succeeded but did not return runId");if("run_now"===e){let e=await (0,R.runOpenClaw)(["agents","list","--json"]);if(!e.ok)throw Error(e.stderr||e.stdout||"Failed to list agents");let r=JSON.parse(String(e.stdout??"[]")),a=new Set(r.map(e=>String(e.id??"").trim()).filter(Boolean)),n=(Array.isArray(t.nodes)?t.nodes:[]).filter(e=>e&&"object"==typeof e&&"start"!==e.type&&"end"!==e.type&&"human_approval"!==e.type).map(e=>{let t=e.config,r=t&&"object"==typeof t&&!Array.isArray(t)?t:{};return String(r.agentId??"").trim()}).filter(Boolean),i=Array.from(new Set(n)),s=i.filter(e=>!a.has(e));if(s.length)throw Error(`Unknown agentId(s) in workflow node assignments: ${s.join(", ")}. These must match real OpenClaw agent ids (see openclaw agents list).`);let l=await (0,R.runOpenClaw)(["recipes","workflows","runner-once","--team-id",o]);if(!l.ok)throw Error(l.stderr||l.stdout||"Failed to run runner-once");for(let e of i){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:d,workflowId:a,teamId:o,startedAt:B(),status:"running",summary:"run_now"===e?"Queued + kicked runner/workers":"Queued for workflow runner",nodes:Array.isArray(t.nodes)?t.nodes.map(e=>({nodeId:String(e.id),status:"pending"})):[]}})();return(0,b.jsonOkRest)({...await $(o,a,t),runId:e})}catch(t){let e=(0,I.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,a.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:b,isDraftMode:x,prerenderManifest:I,routerServerContext:E,isOnDemandRevalidate:R,revalidateOnlyGenerated:j,resolvedPathname:C,clientReferenceManifest:N,serverActionsManifest:O}=k,_=(0,s.normalizeAppPath)(y),T=!!(I.dynamicRoutes[_]||I.routes[C]),q=async()=>((null==E?void 0:E.render404)?await E.render404(e,t,b,!1):t.end("This page could not be found"),null);if(T&&!x){let e=!!I.routes[C],t=I.dynamicRoutes[_];if(t&&!1===t.fallback&&!e){if(S.experimental.adapterPath)return await q();throw new g.NoFallbackError}}let P=null;!T||X.isDev||x||(P="/index"===(P=C)?"/":P);let F=!0===X.isDev||!T,$=T&&!F;O&&N&&(0,i.setManifestsSingleton)({page:y,clientReferenceManifest:N,serverActionsManifest:O});let D=e.method||"GET",B=(0,n.getTracer)(),M=B.getActiveScopeSpan(),U={params:A,prerenderManifest:I,renderOpts:{experimental:{authInterrupts:!!S.experimental.authInterrupts},cacheComponents:!!S.cacheComponents,supportsDynamicResponse:F,incrementalCache:(0,a.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:S.cacheLife,waitUntil:o.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,o,a)=>X.onRequestError(e,t,o,a,E)},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=B.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=`${D} ${o}`;e.setAttributes({"next.route":o,"http.route":o,"next.span_name":t}),e.updateName(t)}else e.updateName(`${D} ${y}`)}),s=!!(0,a.getRequestMeta)(e,"minimalMode"),l=async a=>{var n,l;let d=async({previousCacheEntry:r})=>{try{if(!s&&R&&j&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await i(a);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(!T)return await (0,p.sendResponse)(H,W,n,U.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(n.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:n.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:$,isOnDemandRevalidate:R})},!1,E),t}},u=await X.handleResponse({req:e,nextConfig:S,cacheKey:P,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:I,isRoutePPREnabled:!1,isOnDemandRevalidate:R,revalidateOnlyGenerated:j,responseGenerator:d,waitUntil:o.waitUntil,isMinimalMode:s});if(!T)return null;if((null==u||null==(n=u.value)?void 0:n.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"),x&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let g=(0,f.fromNodeOutgoingHttpHeaders)(u.value.headers);return s&&T||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 B.withPropagatedContext(e.headers,()=>B.trace(u.BaseServerSpan.handleRequest,{spanName:`${D} ${y}`,kind:n.SpanKind.SERVER,attributes:{"http.method":D,"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:$,isOnDemandRevalidate:R})},!1,E),T)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),a=e.i(59756),n=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),b=e.i(85067),x=e.i(41674),E=e.i(40317),I=e.i(76509),R=e.i(5003),j=e.i(7367),C=e.i(63715),N=e.i(56995);let O=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 T(e,t){(0,N.assertSafeWorkflowId)(t);let r=await (0,j.getTeamWorkspaceDir)(e);return A.default.join(r,O)}function q(e){return`${e}.run.json`}async function P(e,t){let r=(0,N.assertSafeWorkflowId)(t),o=await T(e,r),a=[];try{for(let t of(await v.default.readdir(o,{withFileTypes:!0})).filter(e=>e.isDirectory()).map(e=>e.name).sort()){let n=A.default.join(o,t,"run.json");try{let o=await v.default.readFile(n,"utf8"),i=JSON.parse(o);D(e,r,i,t).workflowId===r&&a.push(t)}catch{}}}catch{}try{let{files:t}=await (0,C.readdirFiles)(o,".run.json",!0);for(let n of t){let t=n.replace(/\.run\.json$/i,"");try{let i=await v.default.readFile(A.default.join(o,n),"utf8"),s=JSON.parse(i);D(e,r,s,t).workflowId===r&&a.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)a.push(e.replace(/\.run\.json$/i,""))}catch{}return{ok:!0,dir:o,runIds:Array.from(new Set(a)).sort().reverse()}}async function F(e,t,r){let o=(0,N.assertSafeWorkflowId)(t),a=_(r),n=await T(e,o),i=A.default.join(n,a,"run.json");try{let t=await v.default.readFile(i,"utf8"),r=JSON.parse(t),s=D(e,o,r,a);if(Array.isArray(s.nodes)&&s.nodes.length){let e=A.default.join(n,a,"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 a=t[1];if(!a)continue;let n=r.get(a)??[];n.push(A.default.join(e,o)),r.set(a,n)}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(n,q(a));try{let t=await v.default.readFile(s,"utf8"),r=JSON.parse(t);return{ok:!0,path:s,run:D(e,o,r,a)}}catch(t){if(t&&"object"==typeof t&&"ENOENT"===t.code){let t=A.default.join(n,o,q(a)),r=JSON.parse(await v.default.readFile(t,"utf8"));return{ok:!0,path:t,run:D(e,o,r,a)}}throw t}}async function $(e,t,r){let o=(0,N.assertSafeWorkflowId)(t),a=_(r.id),n=await T(e,o);await v.default.mkdir(n,{recursive:!0});let i=A.default.join(n,q(a)),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(n,o);await v.default.mkdir(e,{recursive:!0}),s=A.default.join(e,q(a))}}catch{}let l={...r,schema:"clawkitchen.workflow-run.v1",id:a,workflowId:o,teamId:e};return await v.default.writeFile(s,JSON.stringify(l,null,2)+"\n","utf8"),{ok:!0,path:s}}function D(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 a=r.workflow&&"object"==typeof r.workflow?r.workflow:{},n="string"==typeof a.file?a.file:"",i=n?A.default.basename(n).replace(/\.workflow\.json$/i,""):"",s="string"==typeof a.id&&a.id?a.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,a=["pending","running","waiting","success","error","skipped"].includes(o)?o:"pending",n="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:a,...i?{startedAt:i}:{},...s?{endedAt:s}:{},...void 0!==e.output?{output:e.output}:{},...void 0!==n?{error:n}:{}}}).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 B(){return new Date().toISOString()}async function M(e,t,r){let o=(0,j.assertSafeRelativeFileName)(t),a=await (0,j.getTeamWorkspaceDir)(e),n=A.default.join(a,o);return await v.default.mkdir(A.default.dirname(n),{recursive:!0}),await v.default.appendFile(n,r,"utf8"),{full:n}}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 a=t&&t.length?t:e.split(/\s+/).filter(Boolean),n=a[0],i=a.slice(1);return await new Promise((e,t)=>{let a=(0,S.spawn)(n,i,{cwd:r,shell:!1,stdio:["ignore","pipe","pipe"]}),s="",l="";a.stdout?.on("data",e=>{s.length<65536&&(s+=e.toString("utf8").slice(0,65536-s.length))}),a.stderr?.on("data",e=>{l.length<65536&&(l+=e.toString("utf8").slice(0,65536-l.length))});let d=setTimeout(()=>{a.kill("SIGKILL")},Math.max(0,o));a.on("error",e=>{clearTimeout(d),t(e)}),a.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:a,endedAt:n}){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:n,"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:a,endedAt:n,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,j.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,I.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:a,endedAt:n,output:{tool:l,command:h,result:i}}}return{nodeId:o,status:"success",startedAt:a,endedAt:n,output:{tool:l,result:"(no-op: tool not implemented)"}}}async function L({teamId:e,workflow:t,run:r,approvalNodeId:o,decidedAt:a}){let n=Array.isArray(t.nodes)?t.nodes:[],i=n.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=n.findIndex(e=>e.id===o.nodeId);if(!(s>=0&&s>i)||"pending"!==o.status)return o;let l=s>=0?n[s]:void 0,d=o.startedAt??a;if(l?.type==="tool")try{return await J({teamId:e,workflow:t,run:r,nodeId:o.nodeId,startedAt:d,endedAt:a})}catch(e){return{...o,status:"error",startedAt:d,endedAt:a,output:{error:(0,E.errorMessage)(e)}}}return{...o,status:"success",startedAt:d,endedAt:a,output:o.output??{note:"(resumed after approval)"}}})):[];return{...r,nodes:s}}async function z(e){return(0,x.handleWorkflowRunsGet)(e,F,P)}async function G(e){let t=await (0,b.parseJsonBody)(e);if(t instanceof y.NextResponse)return t;let{body:r}=t,o=String(r.teamId??"").trim(),a=String(r.workflowId??"").trim(),n=String(r.mode??"").trim(),i=String(r.action??"").trim(),s=String(r.runId??"").trim(),l="string"==typeof r.note?r.note:void 0,d="string"==typeof r.decidedBy?r.decidedBy:void 0;if(!o)return y.NextResponse.json({ok:!1,error:"teamId is required"},{status:400});if(!a)return y.NextResponse.json({ok:!1,error:"workflowId is required"},{status:400});try{if(i){if(!s)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 F(o,a,s)).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=B(),n="approve"===i?"approved":"request_changes"===i?"changes_requested":"canceled",u="approved"===n?"success":"canceled"===n?"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"===n?"success":"canceled"===n?"error":"waiting",endedAt:"changes_requested"===n?e.endedAt:r,output:{...t,decision:n,note:l,decidedBy:d}}}return"canceled"===n&&"pending"===e.status?{...e,status:"skipped",startedAt:e.startedAt??r,endedAt:r,output:e.output??{note:"skipped due to cancel"}}:e}):[],p={...e,status:u,endedAt:"success"===u||"canceled"===u?r:e.endedAt,approval:{nodeId:t,state:n,requestedAt:e.approval?.requestedAt,decidedAt:"changes_requested"===n?void 0:r,note:l,decidedBy:d},nodes:c},f=p;if("approve"===i)try{let e=(await (0,N.readWorkflow)(o,a)).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,b.jsonOkRest)({...await $(o,a,f),runId:e.id})}let e=`run-${B().replace(/[:.]/g,"-")}-${k.default.randomBytes(3).toString("hex")}`.toLowerCase(),t="sample"===n?await (async()=>{let t=(await (0,N.readWorkflow)(o,a)).workflow,r=Date.now(),n=t.meta&&"object"==typeof t.meta&&"templateId"in t.meta?t.meta.templateId:void 0,i="marketing-cadence-v1"===n,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=t.nodes.findIndex(e=>"human_approval"===e.type),d=l>=0?t.nodes[l]?.id:void 0,u=t.nodes.map((e,t)=>{let o=new Date(r+350*t).toISOString(),a=new Date(r+350*t+200).toISOString(),n=l<0||t<l,u=!!d&&e.id===d,c={nodeId:e.id,status:n?"success":l>=0&&t>l?"pending":u?"waiting":"success",startedAt:o,endedAt:n?a:void 0};if("llm"===e.type){let t=n&&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:n?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:n?{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:e,workflowId:a,startedAt:new Date(r).toISOString(),endedAt:d?void 0:new Date(r+350*t.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:e,target:r}=await U({workflow:t});if(r)try{await H({teamId:o,workflow:t,run:p,approvalNodeId:d}),p.approval={...p.approval,outbound:{provider:e,target:r,sentAt:B()}}}catch(t){p.approval={...p.approval,outbound:{provider:e,target:r,error:(0,E.errorMessage)(t),attemptedAt:B()}}}}return p})():await (async()=>{let e=n||"enqueue";if(!["execute","enqueue","run_now","sample"].includes(e))throw Error(`Unsupported mode: ${e}`);let t=(await (0,N.readWorkflow)(o,a)).workflow,r=(Array.isArray(t.nodes)?t.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(r.length)throw Error(`All nodes must be assigned to an agent. Missing agentId on: ${r.join(", ")}`);let i=`${a}.workflow.json`,s=await (0,R.runOpenClaw)(["recipes","workflows","run","--team-id",o,"--workflow-file",i]);if(!s.ok)throw Error(s.stderr||s.stdout||"Failed to enqueue workflow run");let l=JSON.parse(String(s.stdout??"{}")),d=String(l.runId??"").trim();if(!d)throw Error("Enqueue succeeded but did not return runId");if("run_now"===e){let e=await (0,R.runOpenClaw)(["agents","list","--json"]);if(!e.ok)throw Error(e.stderr||e.stdout||"Failed to list agents");let r=JSON.parse(String(e.stdout??"[]")),n=new Set(r.map(e=>String(e.id??"").trim()).filter(Boolean)),i=(Array.isArray(t.nodes)?t.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=>!n.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 F(o,a,d),t=e.status;if(t&&"queued"!=String(t))break}catch{}await new Promise(e=>setTimeout(e,250))}try{let{run:e}=await F(o,a,d),t=e.status;if("queued"===String(t))throw Error(`Run now enqueued runId=${d}, 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:d,workflowId:a,teamId:o,startedAt:B(),status:"running",summary:"run_now"===e?"Queued + kicked runner/workers":"Queued for workflow runner",nodes:Array.isArray(t.nodes)?t.nodes.map(e=>({nodeId:String(e.id),status:"pending"})):[]}})();return(0,b.jsonOkRest)({...await $(o,a,t),runId:e})}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,a.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:b,isDraftMode:x,prerenderManifest:E,routerServerContext:I,isOnDemandRevalidate:R,revalidateOnlyGenerated:j,resolvedPathname:C,clientReferenceManifest:N,serverActionsManifest:O}=k,_=(0,s.normalizeAppPath)(y),T=!!(E.dynamicRoutes[_]||E.routes[C]),q=async()=>((null==I?void 0:I.render404)?await I.render404(e,t,b,!1):t.end("This page could not be found"),null);if(T&&!x){let e=!!E.routes[C],t=E.dynamicRoutes[_];if(t&&!1===t.fallback&&!e){if(S.experimental.adapterPath)return await q();throw new g.NoFallbackError}}let P=null;!T||X.isDev||x||(P="/index"===(P=C)?"/":P);let F=!0===X.isDev||!T,$=T&&!F;O&&N&&(0,i.setManifestsSingleton)({page:y,clientReferenceManifest:N,serverActionsManifest:O});let D=e.method||"GET",B=(0,n.getTracer)(),M=B.getActiveScopeSpan(),U={params:A,prerenderManifest:E,renderOpts:{experimental:{authInterrupts:!!S.experimental.authInterrupts},cacheComponents:!!S.cacheComponents,supportsDynamicResponse:F,incrementalCache:(0,a.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:S.cacheLife,waitUntil:o.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,o,a)=>X.onRequestError(e,t,o,a,I)},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=B.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=`${D} ${o}`;e.setAttributes({"next.route":o,"http.route":o,"next.span_name":t}),e.updateName(t)}else e.updateName(`${D} ${y}`)}),s=!!(0,a.getRequestMeta)(e,"minimalMode"),l=async a=>{var n,l;let d=async({previousCacheEntry:r})=>{try{if(!s&&R&&j&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await i(a);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(!T)return await (0,p.sendResponse)(H,W,n,U.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(n.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:n.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:$,isOnDemandRevalidate:R})},!1,I),t}},u=await X.handleResponse({req:e,nextConfig:S,cacheKey:P,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,isRoutePPREnabled:!1,isOnDemandRevalidate:R,revalidateOnlyGenerated:j,responseGenerator:d,waitUntil:o.waitUntil,isMinimalMode:s});if(!T)return null;if((null==u||null==(n=u.value)?void 0:n.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"),x&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let g=(0,f.fromNodeOutgoingHttpHeaders)(u.value.headers);return s&&T||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 B.withPropagatedContext(e.headers,()=>B.trace(u.BaseServerSpan.handleRequest,{spanName:`${D} ${y}`,kind:n.SpanKind.SERVER,attributes:{"http.method":D,"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:$,isOnDemandRevalidate:R})},!1,I),T)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